IntermedioWazuhEDRSIEMXDRYARAdetección

Análisis de Malware con Wazuh: Guía para Analistas

Guía práctica para detectar y analizar malware con Wazuh: arquitectura, capacidades FIM/rootcheck/YARA/VirusTotal, reglas XML personalizadas, integración MITRE ATT&CK y mejores prácticas para analistas SOC.

MalwareIntel Research··5 min lectura
Serie: Defensa y EDR/XDR — Parte 5

Por qué Wazuh para detección de malware

Wazuh es una plataforma de seguridad open-source que combina SIEM, XDR y compliance. Para equipos con presupuesto limitado o que buscan soberanía sobre sus datos, Wazuh es una alternativa viable a soluciones comerciales: coste cero en licencias (Apache 2.0), agente para Windows/Linux/macOS, integración MITRE ATT&CK nativa, reglas XML personalizables, integraciones con VirusTotal y YARA, y active response para contención.

Arquitectura

WAZUH DASHBOARD (OpenSearch Dashboards)
        │
WAZUH INDEXER (OpenSearch)
        │
WAZUH MANAGER
  ├── Analysis Engine    ├── Rules Engine
  ├── CDB Lists (IOCs)  ├── Vuln Detector
  ├── Active Response    └── Integrations (VT, YARA, MISP)
        │ (puerto 1514/1515, cifrado AES)
  ┌─────┼─────┐
Agent   Agent  Agent
Win     Lin    macOS

Flujo de datos: el agente recopila eventos (ficheros, procesos, logs), los envía cifrados al manager, el motor de análisis evalúa contra las reglas, genera alertas si hay match, las indexa en el dashboard, y ejecuta active response si está configurado.

7 capacidades para detección de malware

1. FIM (File Integrity Monitoring)

Syscheck monitoriza cambios en ficheros. Primera línea de detección para malware.

<syscheck>
  <frequency>300</frequency>
  <!-- Directorios de alto riesgo en tiempo real -->
  <directories realtime="yes" check_sha256sum="yes"
    report_changes="yes">/tmp</directories>
  <directories realtime="yes" check_sha256sum="yes">
    C:\Users\*\AppData\Local\Temp</directories>
  <directories realtime="yes" check_sha256sum="yes">
    C:\Windows\Temp</directories>
  <!-- Puntos de persistencia -->
  <directories realtime="yes" check_sha256sum="yes">
    C:\Windows\System32\Tasks</directories>
  <ignore type="sregex">.swp$</ignore>
</syscheck>

Cuando detecta un fichero nuevo, genera una alerta con el hash SHA256 que se consulta contra VirusTotal o CDB lists.

2. Rootcheck

Busca rootkits conocidos, ficheros ocultos, puertos ocultos (comparando netstat vs /proc/net), interfaces en modo promiscuo y anomalías en binarios del sistema.

3. Active Response

Ejecuta acciones automatizadas ante condiciones específicas.

AcciónTriggerComando
Bloqueo de IPConexión a C2 conocidofirewall-drop
Aislamiento de agenteMalware confirmado (level 12+)agent-disconnect
Kill de procesoProceso maliciosocustom script
Cuarentena de ficheroHash en blacklistcustom script
<active-response>
  <command>agent-isolation</command>
  <location>local</location>
  <rules_id>100200,100201</rules_id>
  <timeout>3600</timeout>
</active-response>

4. Integración VirusTotal

Consulta hashes de ficheros nuevos contra la API de VirusTotal:

<integration>
  <name>virustotal</name>
  <api_key>TU_API_KEY</api_key>
  <rule_id>554,550</rule_id>
  <alert_format>json</alert_format>
</integration>

Regla para alertar cuando VirusTotal detecta el fichero:

<rule id="100092" level="12">
  <if_sid>87105</if_sid>
  <field name="virustotal.positives" type="pcre2">[1-9]\d*</field>
  <description>VirusTotal: fichero malicioso
    ($(virustotal.positives) motores)</description>
  <mitre><id>T1204</id></mitre>
  <group>virustotal,malware,</group>
</rule>

5. Integración YARA

YARA detecta patrones dentro de ficheros, más allá de hashes simples.

Flujo: FIM detecta fichero nuevo, active response ejecuta YARA scan, si hay match se genera alerta level 12.

<rule id="100100" level="12">
  <decoded_as>json</decoded_as>
  <field name="log_type">yara_scan</field>
  <match>MATCH</match>
  <description>YARA rule match en $(syscheck.path)</description>
  <mitre><id>T1059</id><id>T1204</id></mitre>
  <group>yara,malware,</group>
</rule>

6. Vulnerability Detector

Identifica software con CVEs conocidos. Combinado con CISA KEV, permite priorizar endpoints vulnerables a exploits activos.

7. SCA (Security Configuration Assessment)

Verifica configuración contra benchmarks CIS: PowerShell Constrained Language Mode, macros Office deshabilitadas, ASR rules, LSASS protection, SMBv1 deshabilitado.

Reglas personalizadas para malware

Ransomware

<!-- Múltiples cambios de fichero en ventana corta -->
<rule id="100110" level="10" frequency="20" timeframe="60">
  <if_matched_group>syscheck_file</if_matched_group>
  <description>Posible ransomware: 20+ ficheros modificados
    en 60 segundos</description>
  <mitre><id>T1486</id></mitre>
  <group>ransomware,malware,</group>
</rule>

<!-- Extensión típica de ransomware -->
<rule id="100111" level="12">
  <if_sid>554</if_sid>
  <field name="syscheck.path" type="pcre2">
    \.(encrypted|locked|crypt|lockbit|blackcat)$</field>
  <description>Extensión de ransomware: $(syscheck.path)</description>
  <mitre><id>T1486</id></mitre>
  <group>ransomware,malware,</group>
</rule>

Herramientas de ataque

<rule id="100120" level="14">
  <if_sid>61603</if_sid>
  <field name="win.eventdata.originalFileName" type="pcre2">
    (?i)(mimikatz|lazagne|procdump|sharpdump)</field>
  <description>Credential dumping tool:
    $(win.eventdata.originalFileName)</description>
  <mitre><id>T1003</id></mitre>
  <group>credential_access,malware,</group>
</rule>

LOLBins sospechosos

<!-- certutil descargando ficheros -->
<rule id="100130" level="10">
  <if_sid>61603</if_sid>
  <field name="win.eventdata.commandLine" type="pcre2">
    certutil.*(-urlcache|-split).*http</field>
  <description>certutil descargando desde URL externa</description>
  <mitre><id>T1105</id></mitre>
  <group>defense_evasion,lolbins,</group>
</rule>

<!-- PowerShell encoded -->
<rule id="100132" level="10">
  <if_sid>61603</if_sid>
  <field name="win.eventdata.commandLine" type="pcre2">
    (?i)powershell.*(-enc|-encodedcommand)</field>
  <description>PowerShell con comando codificado base64</description>
  <mitre><id>T1059.001</id><id>T1027</id></mitre>
  <group>execution,obfuscation,</group>
</rule>

Persistencia

<rule id="100141" level="10">
  <if_sid>61603</if_sid>
  <field name="win.eventdata.commandLine" type="pcre2">
    sc.*create.*binPath.*(temp|appdata|public)</field>
  <description>Servicio creado con binario en ruta sospechosa</description>
  <mitre><id>T1543.003</id></mitre>
  <group>persistence,malware,</group>
</rule>

CDB Lists para IOCs

Las CDB lists (Constant Database) permiten cargar IOCs para matching en milisegundos.

Fichero /var/ossec/etc/lists/malware_hashes:

44d88612fea8a8f36de82e1278abb02f:eicar_test
a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6:emotet_loader

Regla que consulta la lista:

<rule id="100150" level="14">
  <if_sid>554</if_sid>
  <list field="syscheck.sha256" lookup="match_key">
    etc/lists/malware_hashes</list>
  <description>Hash coincide con malware conocido</description>
  <mitre><id>T1204</id></mitre>
  <group>malware,ioc_match,</group>
</rule>

Las listas se actualizan automáticamente desde feeds (ThreatFox, Feodo Tracker) mediante cron.

Integración con Sigma rules

Las reglas Sigma se convierten a formato Wazuh XML. Ejemplo: proceso sospechoso hijo de Office.

Sigma original:

title: Suspicious Process Spawned by Office
detection:
  selection_parent:
    ParentImage|endswith: ['\WINWORD.EXE', '\EXCEL.EXE']
  selection_child:
    Image|endswith: ['\cmd.exe', '\powershell.exe', '\mshta.exe']
  condition: selection_parent and selection_child

Equivalente Wazuh:

<rule id="100160" level="12">
  <if_sid>61603</if_sid>
  <field name="win.eventdata.parentImage" type="pcre2">
    (?i)(WINWORD|EXCEL)\.EXE$</field>
  <field name="win.eventdata.image" type="pcre2">
    (?i)(cmd|powershell|mshta)\.exe$</field>
  <description>Proceso sospechoso lanzado por Office</description>
  <mitre><id>T1566.001</id><id>T1059</id></mitre>
  <group>execution,malware,</group>
</rule>

Dashboard MITRE ATT&CK

Wazuh 4.x incluye un dashboard ATT&CK que muestra cobertura de técnicas (heatmap), alertas mapeadas, tendencias temporales y top técnicas. Para maximizar su utilidad: asigna etiquetas MITRE a todas las reglas custom, revisa la cobertura semanalmente, prioriza reglas para técnicas no cubiertas.

Mejores prácticas

Configuración inicial. Agentes en todos los endpoints. FIM en tiempo real para directorios de riesgo. Integración VirusTotal activa. CDB lists con IOCs de feeds públicos. YARA en agentes con active response.

Operación diaria. Alertas nivel 10+ al inicio de turno. CDB lists actualizadas diariamente. Monitorizar agentes offline. Queries de hunting en OpenSearch. Correlacionar alertas entre agentes para detectar lateral movement.

Tuning. Nunca desactives una regla padre por FP. Crea reglas hijas con <if_sid> que excluyan el caso legítimo. Documenta cada exclusión.

<!-- Exclusión documentada -->
<rule id="100199" level="0">
  <if_sid>100130</if_sid>
  <field name="win.eventdata.parentImage" type="pcre2">
    sccm_client\.exe$</field>
  <description>certutil legítimo: SCCM gestionando certificados</description>
</rule>

Escalado (500+ agentes). Múltiples managers en cluster, worker nodes, filebeat al indexer, agentes segmentados por grupos (servidores, workstations, DMZ).


Fuentes y referencias

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.