본문 바로가기

정상을향해48

2. 드라이버 개발 환경 구축 간단한 샘플 드라이버 소스코드를 이용해 드라이버 컴파일 과정을 알아보자.드라이버 개발을 위해 가상머신 환경에서 WindowsXP를 이용했다. 1. DDK에서 'Windows XP Checked Build Environment'를 선택한다. 2. 해당 폴더로 이동한다.(폴더 안에는 드라이버 소스코드, MAKEFILE, SOURCES 이 3개의 파일이 포함되어 있어야 한다.) 3. build 한다.옵션이 여러가지 있는데 여기서는 BUILD -c를 사용했다.(-c : 모든 obj 파일을 삭제)아래 그림과 같은 결과가 나오면 컴파일에 성공한 것이다.정상적인 결과가 나온 경우 일반적으로2 files compiled1 executable built이 두 문장이 표시된다. 4. 드라이버 파일이 생성된 것을 확인할 수.. 2015. 3. 9.
1. 윈도우 디바이스 드라이버(Windows Device Driver) 윈도우 디바이스 드라이버(Windows Device Driver)를 개발하기 위한 환경을 구축하기에 앞서 몇몇 용어를 정리하는 것이 필요하다.개발에 필요한 도구와 관련되어 언급되는 용어에 대해 정리해보자. 윈도우의 디바이스 드라이버 모델은 여러가지가 있다.즉, 디바이스 드라이버 제작 방법과 사용환경에 따라 여러가지 형태를 지원하고 있다.예를 들어, 네트워크 디바이스 드라이버 개발자는 WDM(Windows Driver Model)보다는 NDIS(Network Driver Interface Specification) 드라이버 개발 방법을 공부해야 한다.멀티미디어를 위한 Direct Show 필터 드라이버를 개발하려는 경우에는 WDM Kernel Stream Driver를 개발하는 방법을 습득해야 한다.이와 .. 2014. 12. 16.
3장. 하드웨어 레벨의 지식 - 링 제로 (Ring Zero) 인텔 x86 계열의 마이크로 프로세서는 접근 제얼르 위해서 링(Ring)이라는 개념을 사용한다. 링은 링 0(Ring Zero)부터 링 3까지 총 네 가지 레벨이 있으며, 링 0가 가장 권한이 높고 링 3가 가장 권한이 낮은 것을 의미한다. 내부적으로 각각의 링은 숫자로 저장된다. 실제로 마이크로 칩에 물리적인 링이 존재하는 것은 아니다. 윈도우 운영체제의 모든 커널 코드는 링 0로 동작한다. 따라서 커널 안에서 동작하는 루트킷 또한 링 0로 동작하는 것이다. 커널 안에서 동작하지 않는 유저 모드 프로그램들은 링 3 프로그램이라고 부른다. 윈도우와 리눅스를 포함해서 많은 운영체제들이 링 1, 2는 이용하지 않고 링 0과 링 3만을 이용한다. (윈도우 아키텍처에서는 링 1, 2를 사용하지 않는다.) 링 0.. 2014. 1. 17.
2장. 커널 조작 - 재부팅시 자동 시작 루트킷 드라이버는 시스템이 부팅되는 시점에 로드되어야 한다. 이 문제에 대해 곰곰이 생각해 보면, 시스템이 부팅되는 시점에 로드되는 소프트웨어가 상당히 다양하고 많다는 사실을 깨닫게 될 것이다. 다음은 시스템에 부팅되는 시점에 루트킷을 로드할 수 있는 다양한 방법이다. Run 키를 이용 (오래된 신뢰할 수 있는 방법) Run 키를 이용하면 임의의 프로그램을 부팅 시점에 실행시킬 수 있다. Run 키에 의해 실행된 프로그램은 자신에게 삽입된 루트킷 파일을 생성해서 그것을 로드한다. 로드된 루트킷은 탐지되지 않기 위해 자신을 위한 Run 키의 값을 감출 수 있다. 모든 바이러스 스캐너는 Run 키를 검사하기 때문에 이 방법은 상당히 위험한 방법이다. 하지만 루트킷이 일단 로드되면 키 값은 보이지 않게 된다... 2014. 1. 15.