YARA es la herramienta que usan analistas de malware y equipos de seguridad para escribir patrones que identifican familias enteras de software malicioso. Las reglas YARA funcionan como firmas flexibles: describes cadenas de texto, secuencias de bytes o condiciones logicas, y YARA revisa ficheros, procesos o memoria buscando coincidencias. Si trabajas en deteccion de malware y todavia dependes solo del hash de VirusTotal, este YARA tutorial te va a cambiar el flujo de trabajo. Dominar YARA rules malware significa dejar de perseguir muestras una a una y empezar a cazar por comportamiento y estructura. Aqui va la version sin relleno: que es, como se escribe una regla que funcione, y como no acabar con un motor lleno de falsos positivos que te ladra por cada PDF inofensivo.
Que es YARA y por que lo usa todo el mundo
YARA nacio en VirusTotal de la mano de Victor Alvarez y hoy es el estandar de facto para clasificar e identificar malware. El nombre es un acronimo recursivo tan de hacker que da pereza: Yet Another Recursive Acronym.
La idea es simple. Un hash SHA-256 identifica un fichero exacto. Cambias un byte y el hash ya no sirve. Una regla YARA, en cambio, describe rasgos que comparten muchas variantes de una misma familia. Detectas la familia, no la muestra.
Se integra en casi todo el ecosistema defensivo: ClamAV, motores EDR, sandboxes como Cuckoo, plataformas de threat intelligence y el propio VirusTotal, donde puedes lanzar reglas retrohunt contra su corpus historico. Los repositorios publicos de Florian Roth (signature-base) y del proyecto YARA-Rules reunen miles de firmas listas para usar.
Anatomia de una regla YARA
Toda regla tiene tres bloques: meta, strings y condition. Solo la condicion es obligatoria, pero sin metadatos tu regla envejece fatal.
rule Detecta_Ransomware_Ejemplo
{
meta:
author = "Equipo Piqture Group"
date = "2026-07-19"
description = "Detecta nota de rescate generica"
reference = "https://virustotal.com"
strings:
$nota = "All your files have been encrypted" ascii wide
$ext = ".locked" nocase
$btc = /[13][a-km-zA-HJ-NP-Z1-9]{25,34}/
condition:
2 of them
}
Repasemos las piezas clave. Cada string lleva un identificador que empieza por $. Puedes definir tres tipos:
- Cadenas de texto:
$a = "cmd.exe /c". Modificadores utiles:nocase(ignora mayusculas),ascii,wide(UTF-16, tipico en binarios Windows) yfullword. - Cadenas hexadecimales:
$h = { 4D 5A 90 00 }. Ese ejemplo es la cabeceraMZde un ejecutable PE. Admiten comodines con??y saltos con[4-6]. - Expresiones regulares:
$re = /https?:\/\/[a-z0-9]{8}\.onion/. Potentes, pero pesan en rendimiento. Usalas con cabeza.
La condicion es donde vive la logica. Ahi decides cuantas cadenas deben aparecer y bajo que reglas. Operadores habituales: and, or, not, any of them, all of them, N of ($a*). Y ahora viene la parte que separa a quien copia reglas de quien las escribe.
Como escribir una regla que detecte de verdad (y no todo lo demas)
El error de novato numero uno: cadenas demasiado genericas. Si tu regla YARA busca la palabra "error", felicidades, acabas de marcar medio disco duro. La clave esta en anclar la deteccion a rasgos raros y especificos de la muestra.
Ancla al formato del fichero. El modulo pe te deja inspeccionar ejecutables Windows con precision quirurgica. Puedes filtrar por secciones, imports o el timestamp de compilacion:
import "pe"
rule Malware_PE_Import_Sospechoso
{
condition:
pe.is_pe and
pe.imports("wininet.dll", "InternetOpenUrlA") and
pe.number_of_sections < 4
}
Combina condiciones debiles para formar una fuerte. Tres cadenas comunes por separado no valen nada; las tres juntas en el mismo fichero ya son una senal. Ese es el sentido de 2 of them o 3 of ($s*).
Usa el offset cuando importe. La cabecera MZ solo tiene sentido al principio del fichero. $mz at 0 es mas honesto que buscar MZ en cualquier parte, porque esos dos bytes aparecen por azar en montones de sitios.
Aprovecha los modulos. Ademas de pe, tienes hash (para calcular MD5/SHA de secciones concretas), math (entropia, util para detectar packers y cifrado) y elf para binarios Linux. La entropia alta en una seccion es un clasico indicador de contenido empaquetado o cifrado, muy tipico en malware. Si administras servidores Linux, combinar YARA con un buen hardening basico del servidor te da defensa en profundidad de verdad.
Instalacion y primeros escaneos
En Debian o Ubuntu, arrancar es cuestion de un comando:
sudo apt install yara
# o la version mas reciente via pip:
pip install yara-python
La sintaxis de uso basica es directa. Escaneas un fichero o un directorio recursivo contra tu fichero de reglas:
yara mireglas.yar /ruta/sospechosa/— escaneo simple.yara -r reglas.yar /home/— recursivo por todo el arbol.yara -s reglas.yar muestra.exe— muestra que cadenas coincidieron y en que offset.yara -p 4 -r reglas.yar /var/— cuatro hilos para escaneos grandes.
Para uso serio, no reinventes la rueda. Descarga el paquete signature-base de Neo23x0 (Florian Roth) desde GitHub y tendras miles de reglas mantenidas por la comunidad. Combinalas con Loki o Thor, escaneres de IOCs que integran YARA de fabrica y anaden deteccion de rootkits y anomalias. Antes de ejecutar cualquier binario descargado, conviene ademas verificar el origen del enlace; una regla YARA no te salva si ya has abierto la puerta.
Errores frecuentes que arruinan tus reglas
La deteccion de malware con YARA falla casi siempre por las mismas razones. Aqui las trampas mas comunes y su antidoto.
| Error | Consecuencia | Solucion |
|---|---|---|
| Cadenas genericas | Falsos positivos masivos | Ancla a rasgos unicos y combina condiciones |
| Regex complejas por todas partes | Escaneos lentisimos | Filtra primero con cadenas fijas, luego regex |
| Sin metadatos | Reglas imposibles de mantener | Autor, fecha, descripcion y referencia siempre |
| No probar contra ficheros limpios | Ruido en produccion | Test con un corpus goodware antes de desplegar |
Un truco de rendimiento: YARA evalua la condicion de izquierda a derecha con cortocircuito. Pon primero las comprobaciones baratas (filesize < 500KB, uint16(0) == 0x5A4D) y deja las regex caras al final. El motor descarta la mayoria de ficheros antes de llegar a lo pesado.
Y si vas a compartir reglas o muestras con un colega, mandalas cifradas. Un contenedor con VeraCrypt evita que tu coleccion de firmas y binarios acabe donde no debe. Manejar malware real sin higiene digital es pedir un incidente.
Preguntas frecuentes
¿YARA detecta malware por si solo o necesita reglas?
Necesita reglas. YARA es un motor de comparacion de patrones: sin firmas cargadas, no detecta nada. Puedes escribir las tuyas o usar repositorios publicos mantenidos como signature-base de Florian Roth.
¿Cual es la diferencia entre YARA y un antivirus tradicional?
Un antivirus lleva su motor y sus firmas integrados y funciona en tiempo real. YARA es una herramienta de analisis flexible que tu controlas: defines los patrones, decides cuando escanear y adaptas las reglas a amenazas concretas. Muchos antivirus, como ClamAV, integran YARA internamente.
¿YARA sirve para malware en Linux o solo en Windows?
Sirve para ambos y para macOS. El modulo elf analiza binarios Linux y el modulo macho los de macOS, igual que pe hace con ejecutables Windows. YARA es agnostico al sistema; lo que importa son los patrones que definas.
¿Puedo escanear la memoria de un proceso en ejecucion?
Si. Pasando un PID en lugar de un fichero, YARA escanea la memoria del proceso. Es la tecnica estandar para detectar malware sin fichero (fileless) que solo existe en RAM, un tipo de amenaza que las firmas de disco no ven.
¿Es legal usar YARA para analizar malware?
Analizar muestras es legal y es la base del trabajo forense y de threat intelligence. Lo que regula la ley es la posesion con intencion maliciosa y la distribucion. Trabaja siempre en entornos aislados y bajo un marco autorizado, ya sea investigacion propia o un encargo profesional.
El siguiente paso
Descarga hoy mismo el repositorio signature-base desde GitHub, instala YARA con sudo apt install yara y lanza yara -r contra una carpeta de descargas antigua. Veras en dos minutos que tienes olvidado por el disco. Si gestionas la seguridad de una empresa y quieres integrar deteccion automatizada con IA en tu infraestructura, en Piqture montamos ese tipo de sistemas. Y si te ha picado el gusanillo de las herramientas defensivas, sigue explorando el resto de tutoriales del blog: hay tela que cortar.


