{ "slug": "yara-reglas-deteccion-malware", "title": "YARA: Guía Completa de Reglas de Detección de Malware", "date": "2026-07-23", "categories": ["malware"], "tags": ["yara", "malware", "deteccion", "analisis-de-malware", "response-a-incidentes"], "cluster": "malware", "excerpt": "YARA es el estándar de facto para crear reglas de detección de malware. Aprende a escribir reglas efectivas, integrarlas con sandboxes y automatizar la detección.", "author": "CyberFlows", "featured": false, "readingTime": 16 }
YARA: Guía Completa de Reglas de Detección de Malware
Por qué YARA es esencial en ciberseguridad
YARA es el lenguaje de detección de malware más utilizado en la industria. Sandboxes como Cuckoo y Any.run lo usan para clasificar muestras. Los EDR/XDR lo aplican en endpoints. Los feeds de threat intelligence lo distribuyen como formato estándar.
Si trabajas en SOC, respuesta a incidentes o análisis de malware, YARA es una herramienta que debes dominar.
Estructura de una regla YARA
rule Nombre_de_la_Regla {
meta:
description = "Descripción de qué detecta"
author = "Tu nombre"
date = "2026-07-23"
severity = "high"
strings:
$texto1 = "cadena a buscar" ascii wide
$hex_pattern = { 8B 45 ?? 03 C1 89 45 }
$regex = /https?:\/\/[a-z]+\.[a-z]+\/gate/i
condition:
2 of them
}
Componentes:
- Metadatos: información descriptiva de la regla
- Strings: patrones de texto, bytes o regex que identifican el malware
- Condiciones: lógica que determina cuándo la regla aplica
Instalación
# Ubuntu/Debian
sudo apt install yara
# macOS
brew install yara
# Verificar
yara --version
Regla básica: detectar un servidor C2
rule Detect_C2_Server {
meta:
description = "Detecta malware que contacta evil-server.com"
severity = "high"
reference = "https://threat-intel.example.com/report"
strings:
$c2_url = "http://evil-server.com/beacon" ascii wide
$c2_path = "/gate.php" ascii
$mutex = "Global\\Mutex_Malware_v3" ascii
condition:
2 of them
}
Uso:
yara detect_c2.yar suspicious_file.exe
yara -r detect_c2.yar /tmp/samples/ # recursivo
yara -s detect_c2.yar file.exe # muestra strings que matchearon
Regla avanzada: detectar ransomware por comportamiento
import "pe"
rule Detect_Ransomware {
meta:
description = "Detección de ransomware por comportamiento"
severity = "critical"
strings:
$readme1 = "YOUR FILES ARE ENCRYPTED" ascii wide nocase
$readme2 = "DECRYPT" ascii wide nocase
$ext = ".locked" ascii
$vssadmin = "vssadmin delete shadows" ascii wide nocase
$bcdedit = "bcdedit /set {default} recoveryenabled no" ascii wide nocase
condition:
uint16(0) == 0x5A4D and
filesize < 10MB and
(
(2 of ($readme*) and 1 of ($ext, $vssadmin)) or
($vssadmin and $bcdedit)
)
}
Explicación de la condición:
uint16(0) == 0x5A4D: debe ser un ejecutable PE (MZ header)filesize < 10MB: exclusión de archivos legítimos grandes- Combinación de strings de ransomware con comportamiento destructivo
Reglas modulares con private rules
// base_rules.yar — strings comunes reutilizables
private rule Is_PE {
condition:
uint16(0) == 0x5A4D
}
private rule Has_Network {
strings:
$http = "http://" ascii
$https = "https://" ascii
$tor = ".onion" ascii
condition:
2 of them
}
// malware_rules.yar — reutiliza las reglas base
import "pe"
rule Malware_Generic {
strings:
$api1 = "CreateRemoteThread" ascii
$api2 = "VirtualAllocEx" ascii
$api3 = "WriteProcessMemory" ascii
condition:
Is_PE and
Has_Network and
2 of ($api*)
}
Uso en respuesta a incidentes
Escaneo de dumps de memoria
# Extraer dumps con Volatility
python vol.py -f imagen.raw windows.memmap --pid 1234 --dump-dir ./dumps/
# Escanear dumps con YARA
yara -r rules/ ./dumps/*.bin > vol_yara_results.txt
Escaneo de filesystem
# Buscar indicadores en todo el sistema
yara -r iocs_rules/ / --exclude-dir=proc 2>/dev/null > system_scan.txt
Integración con Cuckoo Sandbox
# Cuckoo ejecuta YARA automáticamente sobre muestras
# Configurar en /etc/cuckoo/conf/analysis.conf:
# [yara]
# enabled = yes
# rules_path = /opt/yara/rules/
Mejores prácticas
- Sé específico: mejor 3 strings específicos que 1 genérico
- Siempre incluye metadatos: descripción, autor, severidad, referencia
- Usa
private rulespara reutilizar strings comunes - Testea contra el sistema limpio: escanea
/usr/bin/y Windows/system32 - Versiona tus reglas en Git para mantener historial de cambios
- Evita falsos positivos con condiciones específicas y exclusiones
Automatización con scripts
#!/bin/bash
# Escáner YARA automatizado
RULES="/opt/yara/rules"
TARGETS=("/tmp/suspicious" "/mnt/evidence")
REPORT="/var/log/yara_$(date +%Y%m%d).log"
echo "=== ESCANEO YARA $(date) ===" > "$REPORT"
for dir in "${TARGETS[@]}"; do
yara -r "$RULES" "$dir" 2>/dev/null >> "$REPORT"
done
# Enviar alerta si hay coincidencias
if grep -q "^[a-z].*:" "$REPORT"; then
echo "ALERTA: Coincidencias YARA" | mail -s "YARA Alert" soc@empresa.com
fi
Certificaciones que evalúan YARA
- GREM (GIAC Reverse Engineering Malware): documentación y producción de firmas YARA
- GCIH (GIAC Certified Incident Handler): detección de malware durante incidentes
- GCFE (GIAC Certified Forensics Examiner): análisis forense con detección de malware
- eCDFP (Certified Digital Forensics Professional): análisis forense con herramientas de detección
Conclusión
YARA es una herramienta fundamental para cualquier equipo de ciberseguridad defensiva. Permite automatizar la detección de malware, compartir indicadores de amenazas y clasificar muestras de forma consistente.
La clave: empieza con reglas simples, testea contra colecciones conocidas y ve complejizándolas a medida que entiendas los patrones de las amenazas que enfrentas.
Herramientas relacionadas: Volatility (análisis forense de memoria), Wireshark (análisis de red)
Artículos relacionados: