Skills Assessment - Análisis Forense con Windows Event Logs
Objetivo: RDP al host objetivo, revisar C:\Logs\* (especialmente C:\Logs\DLLHijack) y determinar qué proceso realizó un secuestro de DLL. Respuesta esperada: nombre_proceso.exe (p. ej. calc.exe).
🖥️ Preparación — Conexión al laboratorio
-
RDP a:
10.129.62.95(ACADEMY-SFUND-WIN10) -
Usuario:
Administrator -
Contraseña:
HTB_@cad3my_lab_W1n10_r00t!@0 -
Abre PowerShell como Administrador en la máquina objetivo.
Si usas xfreerdp (desde Pwnbox) o el cliente RDP de tu SO, pega la IP y credenciales. Asegúrate de tener permisos para leer C:\Logs\*.
🖥️ Laboratorio — DLL Hijacking
🎯 Objetivo
C:\Logs\DLLHijack
Características de un ataque real:
-
🚨 Proceso ejecutándose desde ubicación inusual
-
📂 DLL cargada desde ruta sospechosa (Temp, AppData, ProgramData)
-
🔒 DLL sin firma digital (
Signed: false) -
📝 Metadatos genéricos/falsos
.\chainsaw_x86_64-pc-windows-msvc.exe hunt "C:\Logs\DLLHijack\DLLHijack.evtx" --sigma .\possible_windows_dll_hijacking.yml --mapping .\mappings\sigma-event-logs-all.yml
⚠️ Limitación de Chainsaw
Comando inicial:
.\chainsaw_x86_64-pc-windows-msvc.exe hunt "C:\Logs\DLLHijack\DLLHijack.evtx" --sigma .\possible_windows_dll_hijacking.yml --mapping .\mappings\sigma-event-logs-all.yml
DismCore.dll).Solución:
-
⚡ Usar PowerShell con filtros manuales
-
✍ Crear reglas Sigma personalizadas

🔍 Metodología efectiva
1️⃣ Buscar eventos ID 7 (DLL cargada
Get-WinEvent -Path "C:\Logs\DLLHijack\DLLHijack.evtx" | Where-Object { $_.Id -eq 7 }
2️⃣ Filtrar DLLs sin firma
Get-WinEvent -FilterHashtable @{Path='C:\Logs\DLLHijack\DLLHijack.evtx'; ID=7} | Select-Object TimeCreated, ID, ProviderName, LevelDisplayName, Message | Where-Object {$_.Message -match 'Signed: false'}
Resultado:

📝 Indicadores de Compromiso (IOCs)
| Tipo | Nombre / Ruta | Observación |
|---|---|---|
| 🖥 Proceso | C:\ProgramData\Dism.exe |
Ubicación incorrecta, carga DLL maliciosa |
| 🧩 DLL | C:\ProgramData\DismCore.dll |
Sin firma digital, metadatos falsos |
💡 Tips extra
-
🔍 Revisar siempre la ruta de ejecución y la firma digital de las DLLs
-
🛡️ Combinar filtros por ID de evento, propiedades XML, y rutas inusuales para detectar ataques no cubiertos por reglas genéricas
🧩 Laboratorio 2 — Detección de PowerShell No Administrado (.NET Injection)
🎯 Objetivo
Determinar el proceso que ejecutó código PowerShell no administrado (.NET) en memoria.
Logs: C:\Logs\PowershellExec
🔬 Metodología
1️⃣ Analizar eventos de carga de DLL (clr.dll, clrjit.dll)
Estas DLLs son del Common Language Runtime (CLR).
Si un proceso inusual las carga, indica ejecución de código .NET o PowerShell embebido.

🧠 Análisis
-
🧮
Calculator.exe→ aplicación UWP (Windows Store App) -
🚫 Normalmente no carga
clr.dll -
⚔️ Indica inyección de código .NET/PowerShell dentro de la Calculadora
🧾 Conclusión
Proceso que ejecutó código PowerShell no administrado:
🧪 Laboratorio 3 — Inyección que ejecutó PowerShell no gestionado
Objetivo: Revisar los logs en C:\Logs\PowershellExec y determinar qué proceso inyectó en el proceso que finalmente ejecutó código PowerShell no gestionado (unmanaged).
Respuesta esperada: nombre del proceso en formato _.exe.
🔎 Método 1 — Filtrado con PowerShell (Sysmon Event ID 8)
Get-WinEvent -Path 'C:\Logs\PowershellExec\*' | Where-Object{$_.ID -like "8"} | Where-Object{$_.Message -like "*Calculator.exe*"} | Select-Object TimeCreated, ID, ProviderName, LevelDisplayName, Message

Event ID 8 (CreateRemoteThread) en Sysmon indica que un proceso creó un hilo en otro proceso — técnica típica de inyección.
🔎 Método 2 — Filtrado visual / manual en el visor de eventos
-
Abrir Event Viewer en la máquina donde se almacenan los logs (
C:\Logs\PowershellExec\). -
Ir a Applications and Services Logs → Microsoft → Windows → Sysmon → Operational.
-
Aplicar filtro por Event ID = 8 (CreateRemoteThread).
-
Buscar visualmente en la columna Message procesos inusuales que creen hilos remotos hacia
Calculator.exe.

CreateRemoteThread es una función de Windows API frecuentemente usada por actores maliciosos para inyectar código en otro proceso.
Event ID 8 captura detalles de este tipo de actividad: SourceImage (proceso que inyecta) y TargetImage (proceso objetivo).
🧾 Extracto relevante del log (resumen)
-
Evento: CreateRemoteThread (Sysmon ID 8)
-
Fuente (SourceImage):
C:\Windows\System32\rundll32.exe(SourceProcessId: 8364) -
Objetivo (TargetImage):
Calculator.exe(TargetProcessId: 3776) -
Timestamps:
2022-04-28 01:59:42.176y2022-04-28 02:00:13.593(dos inyecciones en el mismo proceso) -
Usuario: DESKTOP-R4PEEIF\waldo
Calculator.exe es una app UWP que normalmente NO carga clr.dll, por lo que la carga de CLR indica ejecución de código .NET/PowerShell embebido (inyección).
🔍 Análisis clave
-
🧩 El proceso rundll32.exe (ubicado en
C:\Windows\System32\rundll32.exe) creó hilos remotos dentro deCalculator.exe. -
⚠️ Esto es comportamiento típico de inyección de código (CreateRemoteThread).
-
🔎 Correlacionando con la detección previa de
clr.dllenCalculator.exe, confirmamos que la inyección permitió ejecutar PowerShell/CLR en el proceso objetivo.
🧪 Laboratorio 4 — Dump de LSASS
Objetivo: Analizar los logs en C:\Logs\Dump y determinar qué proceso realizó un volcado de LSASS (LSASS dump).
Respuesta esperada: nombre del proceso en formato _.exe.
🔎 Búsqueda recomendada (Sysmon Event ID 10 — ProcessAccess)
Usamos Sysmon Event 10 (ProcessAccess) para detectar procesos que intentaron acceder a lsass.exe.
Get-WinEvent -Path 'C:\Logs\Dump\*' | Where-Object{$_.ID -like "10"} | Where-Object{$_.Message -like "*TargetImage*lsass.exe*"} | Select-Object TimeCreated, ID, ProviderName, LevelDisplayName, Message
Event ID 10 suele dejar claro SourceImage (proceso que accede) y TargetImage (proceso objetivo: lsass.exe). Busca además RequestedAccess o GrantedAccess que indiquen SeDebugPrivilege u acceso a memoria.
🧾 Extractos relevantes (tu salida)
-
Se filtró por Event ID 10 y
TargetImageconteniendolsass.exe. -
Resultado (capturas incluidas): se observa que el SourceImage que accede a
lsass.exees ProcessHacker.exe.


🔍 Análisis
-
🕵️♂️
ProcessHacker.exeaccedió alsass.exe(ProcessAccess Event ID 10) — comportamiento consistente con volcado de memoria LSASS. -
🔐 Para completar la confirmación: buscar eventos adicionales (ProcessCreate, Event ID 1) que muestren argumentos de volcado o los módulos utilizados (
procdump,rundll32,comsvcs), y comprobar privilegios (SeDebugPrivilege).
🧾 Indicadores / acciones sugeridas
-
IOCs:
ProcessHacker.execomo SourceImage contralsass.exe -
Acciones inmediatas: aislar host, recolectar volcado de memoria forense, revisar usuarios y privilegios (
SeDebugPrivilege), comprobar persistencias y conexiones de red posteriores.
🧩 Parte 2 — ¿Hubo logins sospechosos tras el LSASS dump?
Tras un volcado de LSASS, un atacante puede intentar iniciar sesión usando las credenciales extraídas.
Vamos a correlacionar eventos de login (ID 4624) con el momento del volcado detectado 🔐
🧠 Tipos de inicio de sesión relevantes
| Tipo de Logon 🔢 | Descripción 💬 |
|---|---|
2 |
Interactive Logon (inicio local) |
10 |
RemoteInteractive Logon (inicio remoto, como RDP) |
Un atacante podría usar el tipo 10 (RDP) para reconectarse tras obtener credenciales del LSASS dump.
🧮 Script PowerShell de correlación
$suspiciousLogonTypes = @(2, 10)
$loginEvents = Get-WinEvent -FilterHashtable @{Path='C:\Logs\Dump\*'; Id=4624}
$lsassDumpEvents = Get-WinEvent -FilterHashtable @{Path='C:\Logs\Dump\*'; Id=10} |
Where-Object { $_.Message -match 'TargetImage:\s+C:\\Windows\\system32\\lsass.exe' -and $_.Message -notmatch 'SourceImage:\s+C:\\Windows\\system32\\svchost.exe' }
foreach ($lsassEvent in $lsassDumpEvents) {
$lsassTime = $lsassEvent.TimeCreated
$suspiciousLogins = $loginEvents | Where-Object {
$logonType = $_.Properties[8].Value
$suspiciousLogonTypes -contains $logonType -and $_.TimeCreated -gt $lsassTime
}
if ($suspiciousLogins) {
Write-Output "⚠️ LSASS dump detected at $($lsassTime)"
$suspiciousLogins | Select-Object TimeCreated, Id, Message
} else {
Write-Output "✅ LSASS dump detected at $($lsassTime) — No suspicious logins after dump."
}
}
Este script:
-
🔍 Busca eventos 4624 (logons) posteriores al volcado LSASS
-
📊 Filtra los tipos
2(local) y10(RDP) -
🕒 Compara la hora del dump con los logins posteriores
📈 Resultado del análisis
📅 Hora del LSASS dump: 2022-04-28 01:59:42.176
📋 Proceso implicado: ProcessHacker.exe
✅ No se detectaron inicios de sesión sospechosos (tipos 2 o 10) después del volcado de LSASS.
Esto sugiere que el atacante extrajo las credenciales pero no las reutilizó inmediatamente en el sistema.
🛡️ Conclusiones
-
💀 Ataque detectado: Dump de LSASS realizado por
ProcessHacker.exe -
🧾 Evidencia: Sysmon Event ID 10 (ProcessAccess → TargetImage: lsass.exe)
-
🛡️ No se observan logins posteriores sospechosos
-
🔍 Recomendaciones:
-
Analizar hash del binario
ProcessHacker.exe -
Revisar actividad de
SeDebugPrivilege -
Comprobar si existen dumps en
C:\Users\Publico%TEMP% -
Añadir alerta SIEM: “ProcessAccess → lsass.exe desde proceso no firmado / no del sistema”
-
🧪 Laboratorio 5 — Proceso sospechoso que lanza cmd.exe
Objetivo: Analizar eventos (Sysmon / Event Log) y determinar el proceso anómalo que ejecutó cmd.exe y corrió whoami.
🔎 Búsqueda inicial (Event ID 1 — Process Create)

En muchas instalaciones la propiedad exacta con la línea de comando aparece en Properties[...] — usa Get-WinEvent ... | Select -First 1 | Select -Expand Properties para descubrir el índice correcto.
✅ Hallazgo (resumen de tu salida)
-
🧾 Proceso padre/ejecutor anómalo:
WerFault.exe(Windows Error Reporting) -
🧩 No debería lanzar
cmd.exeen condiciones normales -
🖥️ Comando ejecutado:
whoami(reconocimiento) -
📂 Directorio actual:
C:\ProgramData\(ubicación sospechosa — no es el path de WerFault legítimo) -
🔍 Implicación: uso de
WerFault.execomo LOLBin o proceso manipulado (spawned/abused) para ejecutar órdenes — técnica típica de evasión o post-explotación.
WerFault.exe es un binario legítimo de Windows (Windows Error Reporting). Si lanza shells o comandos, puede ser: ejecución desde ruta no estándar, hijacking, parent PID spoofing o proceso reemplazado. Verifica ruta y firma digital.
🧩 Interpretación técnica
-
WerFault.exeejecutandocmd.exe+whoami→ indicio de actividad de reconocimiento tras ejecución inicial. -
C:\ProgramData\como directorio de trabajo sugiere que el ejecutable pudo ser lanzado desde ubicación no estándar (persistencia, staging, o drop). -
Posibles técnicas: LOLBins (Living off the Land), ejecución encubierta, hijack de binario, o ejecución por un actor que creó WerFault en
ProgramData.
🧾 Indicadores de Compromiso (IOCs) — plantilla
-
Proceso sospechoso:
WerFault.exe(ejecutándose desdeC:\ProgramData\WerFault.exe) -
Proceso hijo:
cmd.exeejecutandowhoami -
Directorio de ejecución:
C:\ProgramData\ -
Acción: ejecución interactiva / reconocimiento