How to debug Windows Kernel Driver
2019-12-03 / z3r0d4y5

Windows Driver는 WinDbg를 이용해 분석 할 수 있습니다. 하지만 기존의 WinDbg는 CLI 기반이라 사용하는데 불편함이 따르기 때문에, 여기서는 WinDbg Preview를 이용한 분석 방법을 제시합니다.


1. WinDbg Preview 설치

2. VMware 설정 방법

  • image

    디버기 가상머신에 시리얼 포트를 추가합니다.

  • image (1)

    그리고 추가된 시리얼 포트를 위와 같이 설정합니다.

3. WinDbg를 가상머신에 연결

  • image

    “파일” 버튼을 클릭합니다.

  • image (2)

    “Attach to kernel” 버튼을 클릭합니다.

  • image (3)

    그리고 위와 같이 입력한 후 “OK” 버튼을 클릭하여 WinDbg를 윈도우 커널에 Attach합니다.

4. Breakpoint 설정 방법

  • image

    OSRLoader를 이용해서 드라이버를 로드한 후 lm 명령어를 통해 로드된 드라이버의 Base 주소를 알아냅니다. 이 사진에서는 0x8b6c9000 입니다.

  • image (1)

    그 다음 IDA를 켜서 BP를 걸고싶은 함수의 Offset을 알아냅니다. 이 사진에서는 0x4517E 입니다.

  • image (2)

    그리고 bp 명령어를 이용해서 위와 같이 BP를 걸어줍니다.

  • image (3)

    그리고 BP를 트리거하여 분석을 시작하면 됩니다. 위 사진은 HackSysExtremeVulnerableDriver의 Stack Overflow 예제를 Exploit하는 프로그램을 실행시켜서 BP를 트리거한 예제입니다.


    이렇게 Windows 드라이버 디버깅 환경을 구성하면, 루트킷이나 취약한 드라이버 등을 동적 분석할 수 있습니다.