Como puedes imaginar, existen muchas herramientas diferentes para detectar amenazas en una red corporativa.
Algunas de estas herramientas de detección se basan en firmas de red, otras se basan en archivos o en el comportamiento de los terminales o servidores de la empresa.
La mayoría de estas soluciones utilizan reglas ya existentes para detectar amenazas, que con suerte se actualizan con frecuencia.
Pero, ¿qué ocurre cuando los responsables de seguridad quieren añadir reglas personalizadas para la detección o responder ellos mismos a incidentes en los endpoints utilizando reglas específicas?
Aquí es donde entra en juego YARA.
¿Qué es una regla YARA? ¿Cómo funciona? ¿Cuáles son sus usos en el mundo de la ciberseguridad (especialmente para analistas e investigadores)? Estas son algunas de las preguntas que intentaremos responder en este artículo.
Todo Sobre las Reglas YARA
¿Qué es una Regla Yara y Cómo Funciona?
YARA es una herramienta gratuita y de código abierto diseñada para ayudar a los responsables de seguridad a detectar y clasificar el malware, pero no se limita a ese objetivo.

Las reglas YARA también pueden ayudar a detectar archivos específicos o cualquier otro contenido que desees detectar.
YARA viene como un binario que puede ser ejecutado para auditar un fichero, tomando las reglas YARA como argumentos.
La herramienta funciona en los sistemas operativos Windows, Linux y Mac.
También puede utilizarse en scripts Python utilizando la extensión YARA-python.
Las reglas YARA son archivos de texto que contienen elementos y condiciones que activan la detección.
Estas reglas pueden ejecutarse en un único archivo, en una carpeta que contenga varios archivos o incluso en todo un sistema de archivos.
Ejemplo de regla Yara:
rule silent_banker : banker
{
meta:
description = "This is just an example"
threat_level = 3
in_the_wild = true
strings:
$a = {6A 40 68 00 30 00 00 6A 14 8D 91}
$b = {8D 4D B0 2B C1 83 C0 27 99 6A 4E 59 F7 F9}
$c = "UVODFRYSIHLNWPEJXQZAKCBGMT"
condition:
$a or $b or $c
}
En este proceso de identificación y clasificación del malware, se utiliza información como:
- el tamaño del archivo,
- el tipo de archivo,
- las cadenas,
- la fecha de creación y otras características de sus diferentes partes.
Al crear reglas YARA a partir de múltiples muestras procedentes de plataformas basadas en Internet como VirusTotal, los investigadores y analistas de ciberseguridad tienen una ventaja significativa a la hora de bloquear el malware antes de que se ejecute en una red.
Sobre todo porque se trata de una herramienta que no necesita esperar a que se ejecute un archivo para detectarlo.
Además de su facilidad de uso, una regla YARA puede aplicarse a ficheros inactivos. Esta es también una de las razones por las que se ha hecho tan popular en la comunidad de investigadores de ciberseguridad.
¿Para Qué Puede Utilizarse YARA?
Aquí tienes algunas formas de utilizar YARA.

Detección de malware
El uso principal de YARA, para el que se creó en 2008, es detectar malware.
Debes tener en cuenta que no funciona como los antivirus tradicionales.
Mientras que estos últimos detectan principalmente firmas estáticas de unos pocos bytes en archivos binarios o comportamientos sospechosos de archivos, YARA puede ampliar las capacidades de detección utilizando combinaciones específicas de componentes.
Así, es posible crear reglas YARA para detectar familias enteras de malware, en lugar de una única variante.
La posibilidad de utilizar condiciones lógicas para hacer coincidir una regla lo convierte en una herramienta muy flexible para detectar archivos maliciosos.
También hay que señalar que, en este contexto, es posible utilizar reglas YARA no sólo para archivos, sino también para volcados de memoria.
Gestión de incidentes
Durante los incidentes, los analistas de seguridad y amenazas a veces necesitan comprobar rápidamente si un archivo o contenido concreto está oculto en algún punto final o incluso en toda la red corporativa.
Una solución para localizar un fichero independientemente de su ubicación puede ser la creación y utilización de reglas YARA específicas.
Clasificación rápida de contenidos
El uso de reglas YARA puede hacer posible la clasificación de archivos en el mundo real cuando sea necesario.
La clasificación del malware por familias puede optimizarse utilizando reglas YARA.
Sin embargo, las reglas deben ser muy precisas para evitar falsos positivos.
Análisis de las conexiones de red entrantes
Puedes utilizar YARA en un contexto de red para detectar contenido malicioso que se envía a la red corporativa para obtener protección.
Las reglas YARA pueden ejecutarse en correos electrónicos y especialmente en sus archivos adjuntos, o en otras partes de la red, como conexiones HTTP en un servidor proxy inverso.
Por supuesto, también puede utilizarse como complemento del software de análisis existente.
Análisis de las comunicaciones salientes de la red
Las comunicaciones salientes pueden analizarse mediante reglas YARA para detectar mensajes salientes de malware, así como para detectar fugas de datos.
El uso de reglas YARA específicas basadas en reglas personalizadas creadas para detectar documentos legítimos de la empresa puede funcionar como un sistema de prevención de pérdida de datos y detectar posibles fugas de datos internos.
Integración EDR
YARA es un producto maduro, por lo que varias soluciones EDR (Endpoint Detection and Response) diferentes permiten la integración de reglas personalizadas de YARA, lo que facilita la ejecución de la detección en todos los puntos finales con un solo clic.
¿Cómo se Instala YARA?
YARA está disponible para varios sistemas operativos: macOS, Windows y Linux.
yara (este enlace se abre en una nueva ventana) por VirusTotal (este enlace se abre en una nueva ventana)
The pattern matching swiss knife
Cómo instalar YARA en macOS
YARA puede instalarse en macOS utilizando Homebrew.
Sólo tienes que escribir y ejecutar el comando:
brew install YARA
Después de esta operación YARA está listo para ser utilizado en la línea de comandos.
Cómo instalar YARA en Windows
YARA ofrece binarios para Windows para facilitar su uso: Ver Página de Versiones
Tras descargar el archivo zip de la página web, puedes descomprimirlo en cualquier carpeta y contiene dos archivos: Yara64.exe
y Yarac64.exe
(o Yara32.exe
y Yarac32.exe
si has seleccionado la versión de 32 bits de los archivos).
La herramienta estará lista para ejecutarse en la línea de comandos.
Cómo instalar YARA en sistemas Linux
YARA puede instalarse directamente desde el código fuente.
Descárgalo aquí haciendo clic en el enlace del código fuente (tar.gz), luego descomprime los archivos y compílalos.
Como ejemplo usaremos la versión 4.3.0 de YARA, la última versión en el momento de escribir esto, en un sistema Ubuntu.
Ten en cuenta que varios paquetes son obligatorios y deben instalarse antes de instalar YARA:
sudo apt install automake libtool make gcc pkg-config
A continuación, inicia la extracción del archivo y la instalación:
tar -zxf YARA-4.3.0.tar.gz
cd YARA-4.3.0
./bootstrap.sh
./configure
make
sudo make install
YARA es fácil de configurar – lo difícil es aprender a escribir reglas YARA efectivas, que trataremos a continuación.
Cómo Escribir Reglas Yara

Ahora toca escribir las reglas para sacarle el máximo partido.
Para empezar, utilizaremos una plantilla vacía
Plantilla vacía para regla YARA
Las reglas YARA son archivos de texto que siguen una sintaxis muy sencilla pero potente.
Las normas YARA siempre constan de tres partes:
- Parte
meta
: Esta parte contiene información general o específica que no se procesa, pero sirve al usuario para entender de qué se trata. - Parte
strings
: Esta parte contiene todas las cadenas que se deben buscar en los archivos. - Parte
condition
: Esta parte define la condición a buscar. Puede ser simplemente una coincidencia de una o más cadenas, pero también puede ser más compleja, como veremos más adelante en este artículo.
Según mi experiencia, es muy recomendable crear una plantilla vacía que se utilizará siempre para empezar a escribir una nueva regla.
De este modo, basta con rellenar algunas variables y añadir las condiciones necesarias.
rule regla_ejemplo
{
meta:
author="EsGeeks"
version="0.1"
date="2023/01/26"
reference="Cualquier referencia útil"
strings:
condition:
}
Con esta plantilla puedes editar rápidamente los metadatos y el nombre de la regla (llamada regla_ejemplo
en nuestro ejemplo).
Los metadatos pueden ser cualquier cosa que el usuario quiera poner ahí.
Ahora que los metadatos están escritos, empecemos a escribir la primera regla.
Reglas personalizadas de YARA
Las reglas YARA son una combinación de elementos de cadena y condiciones.
Las cadenas pueden ser de texto, hexadecimales o expresiones regulares.
Las condiciones son expresiones lógicas, como en otros lenguajes de programación.
Las más conocidas son AND, OR, NOT.
También pueden utilizarse operadores relacionales, aritméticos y bit a bit.
He aquí la primera regla personalizada:
rule netcat_detection
{
meta:
author="EsGeeks"
version="0.1"
date="2023/01/26"
reference="netcat es una herramienta gratuita disponible en línea"
strings:
$str1="gethostpoop fuxored" // esto es muy específico de la herramienta netcat
$str2="nc -l -p port [options]"
condition:
$str1 or $str2
}
Así pues, vamos a explicar esta regla llamada netcat_detection
.
Después de nuestros metadatos habituales, la sección de cadenas (strings) contiene dos variables, str1
y str2
, que por supuesto pueden llamarse como se quiera.
Además, para ilustrar cómo añadir comentarios, la primera variable contiene un comentario al final.
La parte de la condición (condition) contiene la siguiente condición: Debe coincidir con str1
o str2
.
Esto podría haberse escrito de forma más conveniente:
condition:
any of ($str*)
Esto puede ser útil si tenemos muchas variables diferentes y sólo queremos mapear cualquiera de ellas.
Ejecutar la primera personalizada
Ahora vamos a ejecutar nuestra regla que hemos guardado como un archivo llamado regla1.yar
.
Lo ejecutaremos en una carpeta que contiene varios archivos diferentes, dos de los cuales son versiones de 32 y 64 bits del programa netcat.
Nuestro sistema para las pruebas es un una macOS, pero eso no importa ya que Yara puede instalarse fácilmente en sistemas operativos Linux, Mac o Windows.
yara regla1.yar .
Como era de esperar, YARA se ejecuta y devuelve los nombres de todos los archivos que coinciden con la regla.
netcat_detection ./regla1.yar
netcat_detection ./nc64.exe
netcat_detection ./nc.exe
Por supuesto, puedes poner tantas reglas YARA como necesites en un solo archivo, lo cual es más conveniente que tener muchos archivos de reglas diferentes.

Al ejecutar YARA con la opción -s
se muestran las líneas exactas que coinciden con esos archivos.
netcat_detection ./nc64.exe
0x7267:$str1: gethostpoop fuxored
0x78a8:$str2: nc -l -p port [options]
netcat_detection ./regla1.yar
0xaf:$str1: gethostpoop fuxored
0x101:$str2: nc -l -p port [options]
netcat_detection ./nc.exe
0x6023:$str1: gethostpoop fuxored
0x6650:$str2: nc -l -p port [options]
Por supuesto, también podría ser utilizado por personal informático o de seguridad, por lo que es necesaria una investigación para determinar por qué se detectó en un ordenador de una red corporativa.
Cadenas más complejas
La coincidencia con una cadena base puede ser suficiente para encontrar archivos en un sistema.
Sin embargo, las cadenas pueden estar codificadas de forma diferente en distintos sistemas o pueden estar ligeramente alteradas por los atacantes.
Uno de estos cambios podría ser, por ejemplo, cambiar las mayúsculas y minúsculas de las cadenas de texto de forma aleatoria.
Afortunadamente, YARA maneja esto fácilmente.
En la siguiente parte de cadena YARA, la cadena coincidirá independientemente de la mayúscula o minúscula que utilice:
strings:
$str1="estoesalgo" nocase
La condición $str1 ahora coincidirá con cualquier mayúscula o minúscula utilizada: “EstoEsAlgo”, “ESTOESALGO”, “EstoesALgO”, etc.
strings:
$str1="thisisit" nocase wide
Para buscar cadenas tanto en formato ASCII como en formato wide, se puede utilizar el modificador “ascii” en combinación con wide.
strings:
$str1="thisisit" ascii wide
Cadenas hexadecimales
Las cadenas hexadecimales también pueden utilizarse fácilmente:
strings:
$str1={ 75 72 65 6C 6E 20 }
$str2={ 75 72 65 6C ?? 20 }
$str3={ 75 72 [2-4] 65 6C }
Aquí se presentan tres variables hexadecimales diferentes.
El primero busca la secuencia exacta en cadenas hexadecimales.
El segundo utiliza un comodín, expresado por dos caracteres ?, y buscará cadenas con cualquier valor hexadecimal en el que aparezca el carácter ?.
La tercera cadena busca los dos primeros bytes, luego salta de dos a cuatro caracteres y, a continuación, los dos últimos bytes.
Esto es muy útil cuando algunas secuencias son diferentes en distintos archivos, pero muestran un número predecible de bytes aleatorios entre dos conocidos.
Expresiones regulares
Las Expresiones Regulares, como en cualquier lenguaje de programación, son muy útiles para detectar contenidos específicos, que pueden estar escritos de diferentes maneras.
En YARA, se definen con una cadena que empieza y termina con un carácter de barra oblicua (/).
Veamos un ejemplo que tiene sentido.
El desarrollador dejó alguna información de depuración en el binario del malware, en particular la famosa cadena PDB.
Dice así:
D:\Analisis\Malware_v42\Release\malw.pdb
Ahora la idea es crear una regla que coincida no sólo con este malware, sino con todas las diferentes versiones del mismo en caso de que cambie el número de versión.
También decidimos excluir la unidad “D” de la regla, ya que el desarrollador puede tenerla también en otra unidad.
rule malware detection anyversion
{
meta:
author="EsGeeks"
version="0.1"
date="2023/01/26"
reference="any useful reference"
strings:
$stri=/Analisis\\Malware_v[0-9]{1,3}\\Release\\malw.pdb/
condition:
$stri
}
Condiciones más complejas
Las condiciones pueden ser más complejas que la simple coincidencia de una o varias cadenas.
Puedes utilizar condiciones para contar líneas, para especificar el desplazamiento en el que quieres encontrar una línea, para ajustar el tamaño del archivo o incluso para utilizar bucles.
Además de YARA, Otras Reglas Complementarias como IDS y Sigma
La regla Sigma es una herramienta que detecta el malware basándose en lo que HACE, cuando se ejecuta. También puede detectar cualquier actividad sospechosa, ya sea producida por un script o directamente por el atacante.
Las reglas Sigma se basan en el análisis de los logs, es decir, los rastros registrados de cada acción en la máquina. Para desplegarlo, la práctica consiste primero en ejecutar el malware en una máquina virtual, también llamada “Sandbox” y grabar cada una de estas acciones. A continuación se transcribe toda esta información grabada. En esta nueva etapa del proceso, el objetivo es proporcionar una descripción detallada de todas las acciones llevadas a cabo por el malware. Esto incluye información como
- El malware crea un archivo llamado “X o Y”.
- Crea una clave de registro “0000”.
- Modifica la configuración de la carpeta y borra todos los datos de la carpeta “Z”.
- Ejecuta dicho comando…
A su vez, esta información se configurará como regla sigma para detectar una posible presencia de malware, cuando un archivo -enviado por correo electrónico o ejecutado en una máquina- reproduzca las mismas acciones.
A diferencia de Sigma, la Regla IDS (Intrusion detection System) se utiliza para obtener información sobre la forma en que se comunica el malware. En este caso, nos interesan más en particular los servidores web, las direcciones IP desde las que se comunica el malware. Esto se denomina firma. A partir de esta información, los ciberexpertos crean una biblioteca de descripciones de estas firmas y la actualizan. En caso de actividad de conexión sospechosa entre la infraestructura de red de la empresa y una de las firmas de los atacantes, se activa automáticamente una alerta.
En este artículo hemos intentado explicar el funcionamiento básico de una regla YARA. Finalmente, hemos examinado sus diversas ventajas y usos en las cibercomunidades.
Las posibilidades que ofrece YARA para la correspondencia de archivos son absolutamente ilimitadas.
Cuanto más trabaje el analista con YARA, mejor se familiarizará con él y mejorará sus habilidades para escribir reglas más eficaces.