
Volcador de memoria Lsass basado en PIC que utiliza identificadores clonados para evadir la detección, produciendo volcados ofuscados con una huella de memoria mínima para operaciones de equipo rojo.
Esta herramienta fue implementada como parte de nuestra charla en la conferencia Brucon2021 y demuestra el uso de manejos clonados hacia Lsass para crear un volcado de memoria ofuscado del mismo.
Se compila en un ejecutable que vive completamente en su segmento de texto. Por lo tanto, el segmento .text extraído del archivo PE es código completamente independiente de posición (=PIC), lo que significa que puede tratarse como cualquier shellcode.
La ejecución de HandleKatz en memoria tiene una huella muy pequeña, ya que no asigna más memoria ejecutable y, por lo tanto, puede combinarse eficientemente con conceptos como (Phantom)DLL-Hollowing descrito por @_ForrestOrr. Esto contrasta con los cargadores PIC PE, como Donut, SRDI o los cargadores reflectantes que, durante la carga del PE, asignan más memoria ejecutable. Adicionalmente, hace uso de una versión modificada de ReactOS MiniDumpWriteDumpA y evita los hooks de modo usuario usando RecycledGate.
Para información detallada, consulte el archivo PDF PICYourMalware.pdf en este repositorio.
Tenga en cuenta que diferentes compiladores (versiones) producen resultados diferentes. Esto podría generar un archivo PE con reubicaciones.
Todas las pruebas se realizaron usando x86_64-w64-mingw32-gcc mingw-gcc version 11.2.0 (GCC). El PIC producido se probó exitosamente en: Windows 10 Pro 10.0.17763. En otras versiones de Windows, los hashes de API pueden diferir.
Para usar el PIC, convierta un puntero al shellcode en memoria ejecutable y llámelo según la definición:
DWORD handleKatz(BOOL b_only_recon, char* ptr_output_path, uint32_t pid, char* ptr_buf_output);
Para la desofuscación del archivo de volcado, se puede usar el script Decoder.py.
Loader implementa un cargador de ejemplo para HandleKatz:
loader.exe --pid:7331 --outfile:C:\Temp\dump.obfuscated

Dado que se utilizan manejos clonados junto con código modificado de ReactOS, no se pueden observar eventos ProcessAccess en Lsass. Sin embargo, se pueden observar eventos ProcessAccess en programas que tienen un manejo a Lsass.
Los defensores pueden monitorear las máscaras ProcessAccess con PROCESS_DUP_HANDLE (0x0040) configurado para identificar el uso de esta herramienta.