Reglas YARA para respuesta a incidentes
YARA en respuesta a incidentes: alcance, escribir una regla a partir de una muestra, elegir cadenas únicas, puntuación de confianza, caza en toda la red y en memoria.
Durante un incidente, YARA convierte un artefacto analizado en una pregunta para todos los equipos: «¿dónde más está esto?». Las reglas escritas con prisa priorizan velocidad y precisión, pero los fundamentos son los mismos.
Alcance: qué escanear
- Archivos en disco: cargas, droppers, webshells, scripts y herramientas del atacante.
- Recolecciones de triaje (por ejemplo con Velociraptor o KAPE), mucho más pequeñas que una imagen completa.
- Memoria: implantes descifrados en ejecución, código inyectado, cargadores reflectivos.
- Archivos comprimidos y correo: adjuntos de phishing, ZIP e ISO.
Decide pronto si una coincidencia significa «confirmar y contener» o «investigar»: eso marca lo agresiva que puede ser la regla.
Escribir una regla a partir de una muestra
- Candidatas: pasa
strings(ASCII y UTF-16) o un desensamblador; busca mutex, rutas PDB, user agents, marcadores de configuración, comandos, mensajes de error y exports raros. - Quita el ruido: cadenas del runtime, la biblioteca estándar, empaquetadores o frameworks.
- Añade código cuando las cadenas estén cifradas: bucle de descifrado, parser de configuración o hashing de APIs en hex, con comodines en los operandos.
- Estructura la condición: tipo y tamaño primero, luego un indicador muy específico o varios débiles.
- Prueba con la muestra y con archivos limpios del entorno afectado.
rule MAL_IR_Example_Implant
{
meta:
= "Implante encontrado en FIN-WKS-07, caso 2026-042 (ejemplo)"
= "Equipo IR"
= "2026-09-29"
= 80
strings:
$x1 = "Global\\svc_backup_sync_mtx" ascii wide
$x2 = "C:\\build\\agent\\Release\\svcagent.pdb" ascii
$s1 = "/api/v2/beacon" ascii
$s2 = "Mozilla/5.0 (Windows NT 10.0; SvcAgent)" ascii
$s3 = { 8B 4D ?? 33 C0 8A 04 0E 34 5A 88 04 0F }
condition:
uint16(0) == 0x5A4D and filesize < 3MB and
(1 of ($x*) or 2 of ($s*))
}
Confianza y puntuación
Usa score (0–100), prefijos MAL_ frente a SUSP_/HUNT_ (ver convenciones) y etiquetas como memory para reglas solo de memoria.
Cazar en toda la red
Distribuye las reglas con lo que ya llega a tus equipos: IOC personalizados del EDR, escáneres tipo THOR o artefactos de Velociraptor como Windows.Detection.Yara.Process y Generic.Detection.Yara.Glob. Empieza con un grupo piloto y limita tamaños y rutas.
Memoria frente a disco
En memoria las cadenas suelen estar descifradas; las regiones no empiezan con cabeceras de archivo, así que uint16(0) == 0x5A4D y filesize no aplican igual: escribe reglas de memoria específicas y usa cadenas muy concretas.
Documentar y compartir
Añade descripción, referencia, hashes, fecha y licencia; elige un nivel TLP para uso interno y una licencia como la Detection Rule License para publicar (ver conjuntos de reglas públicos).
Iterar rápido
Pega la regla en el editor, arrastra la muestra al panel de prueba y ejecuta el escáner sobre un ZIP de archivos limpios. Todo en local, en el navegador.
FAQ
- ¿Cómo escribo una regla YARA a partir de una muestra de malware?
- Extrae cadenas y secuencias de código propias de la muestra, descarta lo que venga del compilador, del runtime o de bibliotecas comunes, combina unos pocos indicadores muy específicos con una comprobación de tipo de archivo y prueba contra archivos limpios.
- ¿Escaneo el disco o la memoria?
- Ambos si puedes. El disco revela archivos y persistencia; la memoria, implantes que solo existen descifrados dentro de los procesos.
- ¿Qué significa el campo meta score?
- Una convención, usada por YARA Forge y varios escáneres, que expresa de 0 a 100 cuánto indica una coincidencia actividad maliciosa.