[0x00] Overview

해당 챕터에서는 커널 디버깅을 탐지하는 기법들과 이를 우회하는 방법에 관한 내용이 포함되어 있습니다. 기본적으로 유저모드 디버깅에 대한 탐지 기법, 우회 기법을 알고 있다면 좀 더 쉽게 이해할 수 있습니다.

아래와 같은 챕터로 이루어져 있습니다.

  • Preferences : 간략한 가상머신 설정에 대한 설명입니다. VirtualKD를 이용하여 커널 디버깅을 준비합니다.
  • Anti Debugging : 실제 챕터에 들어가기 전에 안티 커널 디버깅에 대한 요약입니다.
  • Process Protect(1) : 커널 드라이버에서 프로세스 보호를 어떤 식으로 하는지에 대한 내용입니다.
  • Process Protect(2) : 커널 드라이버에서 프로세스 보호를 어떤 식으로 하는지에 대한 내용입니다.
  • Anti Kernel Debugging : 커널 드라이버를 이용한 안티 디버깅 기법에 대한 내용입니다.
  • Kernel Debugging : 커널 디버깅을 OS에서 어떻게 처리하는지에 관한 내용입니다.
  • Bypass : 커널 디버깅 중이라는 사실을 숨긴 채 디버깅을 하는 방법에 관한 내용입니다. ObRegisterCallbacks Bypass에 관한 내용이 추가적으로 존재합니다.
  • Control Debugger : 위의 내용들을 토대로 만든 커널 디버거를 제어하는 드라이버 입니다. 실제로 분석할 때 저는 자주 사용합니다.
  • Bonus : 코드 무결성(CI)에 관한 부록입니다.

[0x01] Requirements

제가 실습한 환경 및 도구에 대한 내용은 다음과 같습니다.

[-] Virtual Machine

가상머신에 대한 정보와 해당 머신에서 사용할 도구 목록입니다.

  • Guest OS : Windows 10 x64, 1809(OS Build 17763.973), Virtual Machine

  • Tools

    • VirtualKD(client)
    • OSRLoader(Driver Loader)
    • WKE( or PCHunter)
  • DbgView

[-] Host OS

실제 실습을 진행하는 운영체제와 사용할 도구 목록입니다.

  • Host OS : Windows 10 x64, 1803(OS Build 17134.1304)

  • Tools

    • Debugger & Disassembler : Windbg, x64dbg, IDA Pro
    • Visual Studio 2019 Community(드라이버 개발 환경, WDM)

[0x02] Feedback

수정해야 할 내용이 있거나 잘못된 내용이 있다면 상단에 Feedback 을 이용하여 메일을 주시면 감사하겠습니다.