
취약한 커널 드라이버의 물리 메모리 읽기 프리미티브를 통해 LSASS를 덤프
서명된 취약 드라이버의 물리 메모리 읽기 프리미티브를 통해 MmMapIoSpace를 악용하여 물리 메모리에서 직접 LSASS 자격 증명을 추출하여, 기존 사용자 모드 탐지 기능을 우회합니다.
이 도구는 Julian Peña와 Eric Esquivel의 협력으로 개발되었습니다.
이번 GhostKatz 릴리스는 이미 공개적으로 취약하다고 알려진 드라이버를 사용합니다. 최상의 결과를 위해 GhostKatz는 메모리 읽기 프리미티브 취약점을 노출하고 로딩 중 차단되지 않거나 공개적으로 알려진 커널 드라이버와 함께 작동하도록 설계되었습니다. 이 공개 릴리스는 이전에 공개되지 않은 드라이버에 대한 익스플로잇을 포함하지 않습니다. 대신, 이 프로젝트는 모듈식이고 확장 가능하도록 설계되어 사용자가 자신의 드라이버를 연구하고 utils.c의 메모리 읽기 프리미티브 함수를 확장하여 통합할 수 있습니다. 내부적으로는 탐색 및 익스플로잇 프로세스를 자동화했으며, 익스플로잇이 작성된 여러 서명된 커널 드라이버를 유지 관리하고 있습니다.
기여하고 싶다면 기여 문서를 참조하세요.
우리는 커널 드라이버를 익스플로잇하는 방법을 배우기 시작하고 싶었고, 이것이 멋진 프로젝트가 될 것이라고 생각했습니다. 또한 Outflank의 KernelKatz 도구를 보고 영감을 받아 사용하고 싶었지만, 우리는 학생이기 때문에 Outflank를 가지고 있지 않습니다. 그래서 우리만의 도구를 만들었습니다.
make를 실행하여 BOF를 컴파일합니다.
ghostkatz.cna Aggressor Script를 Script Manager에 로드합니다.
GhostKatz를 실행하려면 ghostkatz [logonpasswords/wdigest] -prv <provider id> 명령을 사용하세요.
Beacon 콘솔에서 help ghostkatz 명령을 실행하여 도움말을 볼 수 있습니다.
beacon> help ghostkatz
Synopsis: ghostkatz [logonpasswords/wdigest] -prv <provider id>
Description:
Dump credentials from LSASS by using signed kernel drivers to read physical memory.
Examples:
ghostkatz logonpasswords -prv 1
ghostkatz wdigest

이는 우리가 수동으로 스트레스 테스트한 버전입니다. 1607과 같은 주요 버전은 마이너 빌드 업데이트 간에 호환성이 깨지지 않아야 합니다.
[!WARNING] GhostKatz는 철저히 테스트되었지만, 프로덕션 환경에 배포할 때는 주의를 기울여야 합니다. GhostKatz는 취약한 커널 드라이버를 활용합니다. 오류로 인해 BSOD가 발생할 수 있습니다.
GhostKatz로 익스플로잇할 수 있는 드라이버
| Id | 공급업체 | 드라이버 이름 | SHA256 |
|---|---|---|---|
| 1 | Toshiba | TPwSav | 011df46e94218cbb2f0b8da13ab3cec397246fdc63436e58b1bf597550a647f6 |
| 2 | TechPowerUp | ThrottleStop | 16f83f056177c4ec24c7e99d01ca9d9d6713bd0497eeedb777a3ffefa99c97f0 |
ch3rn0byl과 Cedric님께 감사드립니다. 커널, 드라이버 및 Superfetch에 대한 우리의 어리석은 질문에 시간을 내어 답변해 주셨습니다.