
Volcar LSASS mediante primitivas de lectura de memoria física en controladores de kernel vulnerables
Extrae credenciales de LSASS directamente desde la memoria física abusando de controladores vulnerables firmados con primitivas de lectura de memoria física a través de MmMapIoSpace, evadiendo las capacidades tradicionales de detección en modo usuario.
Esta herramienta fue desarrollada en colaboración entre Julian Peña y Eric Esquivel.
Esta versión de GhostKatz utiliza controladores que ya han sido divulgados públicamente como vulnerables. Para obtener los mejores resultados, GhostKatz está diseñado para operar con controladores de kernel que exponen primitivas de vulnerabilidad de lectura de memoria y que no están bloqueados durante la carga o no son conocidos públicamente. Esta versión pública no incluye explotaciones para controladores previamente no divulgados. En cambio, el proyecto está diseñado para ser modular y extensible, permitiendo a los usuarios investigar sus propios controladores e integrarlos extendiendo las funciones primitivas de lectura de memoria en utils.c. Internamente, hemos automatizado el proceso de descubrimiento y explotación y mantenemos varios controladores de kernel firmados con exploits escritos.
Si deseas contribuir, consulta la documentación de contribución.
Queríamos empezar a aprender cómo explotar controladores de kernel y pensamos que este sería un proyecto interesante. También nos inspiramos cuando vimos la herramienta KernelKatz de Outflank y queríamos usarla, pero no tenemos Outflank porque somos estudiantes. Así que hicimos la nuestra.
Ejecuta make para compilar los BOFs.
Carga el script de Agresor ghostkatz.cna en tu Administrador de Scripts.
Para ejecutar GhostKatz, usa el comando ghostkatz [logonpasswords/wdigest] -prv <id del proveedor>.
Puedes ejecutar el comando de ayuda en tu consola Beacon con: 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

Estas son simplemente las versiones que probamos manualmente de forma intensiva. Las versiones principales como 1607 no deberían tener cambios drásticos en actualizaciones menores de compilación.
[!WARNING] Aunque GhostKatz ha sido probado exhaustivamente, debes tener discreción si lo implementas en producción. GhostKatz utiliza controladores de kernel vulnerables. Es posible que errores resulten en un BSOD.
Controladores que pueden ser explotados con GhostKatz
| Id | Proveedor | Nombre del controlador | SHA256 |
|---|---|---|---|
| 1 | Toshiba | TPwSav | 011df46e94218cbb2f0b8da13ab3cec397246fdc63436e58b1bf597550a647f6 |
| 2 | TechPowerUp | ThrottleStop | 16f83f056177c4ec24c7e99d01ca9d9d6713bd0497eeedb777a3ffefa99c97f0 |
Gracias a ch3rn0byl y Cedric por su tiempo respondiendo las preguntas tontas que teníamos sobre el kernel, los controladores y Superfetch.