
Windows 커널 드라이버 유틸리티로, 취약한 서명된 드라이버(BYOVD)를 악용하여 DSE를 우회하고, 서명되지 않은 드라이버를 로드하며, 보호된 프로세스를 하이재킹하고, 프로세스 메모리를 덤프합니다.
이 도구의 목적은 광범위한 설정이나 로컬 디버거 없이 Windows 커널/구성 요소를 탐색할 수 있는 간단한 방법을 제공하는 것입니다. 다음 기능을 제공합니다:
예시:
Windows 11 24H2에서 실행*
Windows 10 20H2에서 실행*
Windows 8.1에서 컴파일 및 실행*
완전히 패치된 Windows 7 SP1에서 실행 (미리 컴파일된 버전)*
Windows 10 19H2에서 실행 (미리 컴파일된 버전, SecureBoot 활성화)*
표준 커널 로더를 사용하지 않고 이미 로드된 모듈을 셸코드로 덮어쓰는 비정상적인 로딩 방식으로 인해 몇 가지 제한 사항이 있습니다:
즉, DriverEntry에 지정된 매개변수를 사용할 수 없으며 유효하지 않습니다. 또한 어떤 드라이버든 로드할 수 있는 것이 아니라 특별히 설계된 드라이버만 로드할 수 있거나 셸코드 루틴을 수정해야 합니다.
x64에는 SEH 코드가 없습니다. 대신 PE 헤더의 포인터로 설명되는 try/except/finally 영역 테이블이 있습니다. 예외가 발생하면 BSOD가 발생할 수 있습니다.
매핑된 코드는 스스로 언로드할 수 없습니다; 그러나 매핑된 코드가 할당한 모든 리소스를 해제할 수 있습니다. DRIVER_OBJECT->DriverUnload는 NULL로 설정해야 합니다.
프로젝트에 다른 모듈 종속성이 필요한 경우 이 로더 부분을 다시 작성해야 합니다.
비정상적인 로딩 방식으로 인해 매핑된 드라이버는 PsLoadedModulesList에 포함되지 않습니다. 즉, 이러한 코드에 의해 등록된 모든 콜백의 핸들러는 이 목록 외부의 메모리에 위치하게 됩니다. PatchGuard가 이를 감지하고 시스템을 충돌시킬 수 있습니다.
일반적으로 커널에서 하지 말아야 할 것을 알고 싶다면 https://github.com/hfiref0x/KDU/tree/master/Source/Examples/BadRkDemo 를 참조하십시오. 여기에는 금지된 사항의 몇 가지 예가 포함되어 있습니다.
이 도구는 MmUnloadedDrivers 및/또는 PiDDBCacheTable의 내부 Windows 구조를 변경하지 않습니다 (그리고 앞으로도 변경하지 않을 것입니다). 그 이유는:
사용에 따른 책임은 사용자에게 있습니다. 일부 게으른 AV는 이 도구를 hacktool/malware로 플래그 지정할 수 있습니다.
모든 메타데이터를 포함한 전체 목록은 여기에서 확인할 수 있습니다:
향후 더 많은 제공자가 추가될 수 있습니다.
합법적인 소프트웨어의 알려진 취약한 (또는 설계상 웜홀) 드라이버를 사용하여 읽기/쓰기 기본 요소로 임의의 커널 메모리에 액세스합니다.
명령에 따라 KDU는 TDL/DSEFix로 작동하거나 커널 모드 프로세스 객체 (EPROCESS)를 수정합니다.
-map 모드에서 KDU는 대부분의 사용 가능한 제공자에 대해 기본적으로 SysInternals Process Explorer의 타사 서명된 드라이버를 사용하고 IRP_MJ_DEVICE_CONTROL 루틴 내부에 작은 로더 셸코드를 배치하여 하이재킹합니다.
KDU는 셸코드를 사용하여 입력 드라이버를 매핑하고 DriverEntry를 실행합니다. KDU에 내장된 몇 가지 셸코드 변형이 있습니다. 셸코드 V1, V2, V3는 타사 희생 드라이버 (Process Explorer 등)와 함께 사용됩니다.
KDU는 전체 소스 코드와 함께 제공됩니다. 소스에서 빌드하려면 Microsoft Visual Studio 2019 이상이 필요합니다. 드라이버 빌드의 경우 Microsoft Windows Driver Kit 10 이상이 필요합니다.
완전한 작동 바이너리에는 kdu.exe (주 실행 파일) 및 drv64.dll (드라이버 데이터베이스)이 포함됩니다. 이들은 kdu.exe에 대해 R/W 액세스가 활성화된 동일한 디렉터리에 있어야 합니다. 모든 바이너리는 시스템 영역에서 차단 해제되어야 합니다.
GenAsIo2Unlock은 AsIO2 드라이버 작업에 필요한 "잠금 해제" 리소스를 생성하는 데 사용되는 특수 유틸리티입니다. 이 유틸리티의 전체 소스는 Source\Utils\GenAsIo2Unlock에 포함되어 있습니다.
KDU를 타사 소프트웨어 또는 OS와 함께 사용하는 동안 버그나 비호환성을 경험하면 이슈를 작성해 주십시오. 그러나 이 비호환성이 귀하의 행동으로 인해 발생한 경우 이러한 보고는 무시됩니다.
안티치트, 안티멀웨어 비호환성은 무시됩니다, 이는 귀하의 책임입니다.
이 프로그램을 사용하면 BSOD와 함께 컴퓨터가 충돌할 수 있습니다. 컴파일된 바이너리와 소스 코드는 유용하기를 바라며 있는 그대로 제공되지만 어떠한 종류의 보증도 없습니다. KDU는 완전히 버그가 있고 취약한 드라이버에 의존하므로 가상 머신에서만 사용하는 것이 강력히 권장됩니다.
https://github.com/hfiref0x/KDU/tree/master/CHANGELOG.txt