Reglas YARA
Las reglas YARA son utilizadas para identificar patrones específicos en archivos o procesos, especialmente en el análisis de malware. Una regla básica consta de tres secciones principales:
Meta: Información adicional como el nombre, autor y descripción de la regla.
Strings: Patrones o cadenas que YARA busca en un archivo o proceso.
Condition: Define cómo deben coincidir estos patrones para activar la detección.
En el caso de la regla que mencionas, detecta el DLL de TerraLoader, que es parte del servicio Golden Chickens MaaS y se utiliza para entregar el backdoor more_eggs. Esto implica que la regla probablemente contiene cadenas específicas relacionadas con el DLL y condiciones que verifican su presencia en los archivos analizados.
¿Qué es una regla YARA?
Las reglas YARA sirven como una herramienta crucial para que los expertos en seguridad cibernética detecten y analicen malware. Para aprovechar realmente su poder, hay que entender sus componentes centrales y su dinámica operativa.
En este artículo, profundizamos en las complejidades técnicas de las reglas de YARA. Desglosaremos sus cinco elementos críticos, como las cadenas de malware y las importaciones, dilucidaremos la mecánica subyacente de cómo funcionan las reglas YARA y proporcionaremos una guía detallada paso a paso para elaborar una regla YARA efectiva. Ideal para profesionales de la seguridad defensiva que buscan mejorar su comprensión y aplicación de YARA.
¿Qué es una regla YARA?
YARA, acuñado humorísticamente como "Otro acrónimo ridículo", es un marco dedicado a la coincidencia de patrones a gran escala, donde las reglas son su piedra angular. Estas reglas YARA están diseñadas para clasificar e identificar muestras de malware, construyendo descripciones de familias de malware arraigadas en patrones textuales o binarios.
Más allá de la mera detección de malware, son expertos en identificar una amplia gama de artefactos digitales, desde archivos comunes hasta intrincadas secuencias hexadecimales dentro de conjuntos de datos binarios.
Cada regla YARA está estructurado en torno a conjuntos de cadenas, expresiones regulares y lógica de condición. Estos componentes están meticulosamente diseñados para detectar secuencias de bytes o comportamientos específicos en las muestras analizadas. Debido a su precisión y adaptabilidad, el marco YARA es uno de los favoritos entre los profesionales de la ciberseguridad, los investigadores de malware y los analistas de amenazas, ya que ayuda tanto en las investigaciones forenses digitales como en la detección de amenazas en tiempo real.
Cinco elementos de YARA que debes saber antes de escribir una regla de YARA
Comprender los componentes principales de una regla YARA es crucial para cualquiera que busque aprovechar sus capacidades.
A continuación se presentan los cinco elementos principales de una regla YARA:
- Importación
- Metadatos
- Instrumentos de cuerda
- Condición
- Nombre de la regla
A continuación, verá una descripción detallada de cada elemento con un ejemplo correspondiente.
Importación
En YARA, la sección de importación permite que una regla utilice módulos externos que aumenten sus capacidades. Estos módulos proporcionan funciones o métodos adicionales, lo que permite que la regla acceda y evalúe tipos de datos o estructuras que no son compatibles de forma nativa con el lenguaje de reglas estándar de YARA.
Por ejemplo, el módulo PE permite que las reglas YARA analicen las estructuras internas de los archivos ejecutables portátiles, que se utilizan comúnmente en entornos Windows. Al importar este módulo, se pueden crear reglas que busquen características específicas dentro de los encabezados o secciones de un archivo PE.
La sintaxis para importar un módulo es sencilla:
Importar "PE" |
Una vez importado, puede acceder a las funciones y tipos de datos específicos de ese módulo dentro de las condiciones de su regla.
Metadatos de una regla YARA
Una regla YARA puede tener una sección de metadatos, que se refiere a la información adicional proporcionada por el autor de la regla, como:
- Autor
- Fuente
- Descripción
- Fecha.
A continuación, encontrará un ejemplo de regla YARA para AvosLocker Ransomware presentado por el Aviso de Ciberseguridad (CSA) conjunto de CISA [1].
rule NetMonitor |
Instrumentos de cuerda
Al analizar el comportamiento y los atributos de una muestra de malware, un paso crucial implica la extracción y el examen de las cadenas incrustadas. Estas cadenas pueden proporcionar información sobre las capacidades del malware,
Por ejemplo, si tiene el potencial de consultar o modificar el registro del sistema.
Figura 1. Cadenas enumeradas de un ejemplo de malware arbitrario
La figura anterior muestra un conjunto de cadenas extraídas de un ejemplo de malware, llamado "ABC" para nuestra discusión. Estas cadenas, como "RegCreateKeyA" o "CreatePipe", son indicativas de las posibles acciones que podría realizar el malware.
Por ejemplo:
Las cadenas relacionadas con "Reg" a menudo pertenecen a operaciones del Registro.
- "CreatePipe" podría ser un indicador de comunicación entre procesos.
- Las llamadas a "KERNEL32.dll" sugieren interacciones con las funciones principales de Windows.
El proceso de extracción:
Al embarcarse en el proceso de extracción, una de las herramientas útiles disponibles es strings.exe de Sysinternals Suite, que es reconocida por su eficacia en la extracción de cadenas legibles por humanos de archivos binarios.
Para usarlo, navegue hasta el directorio que contiene strings.exe:
C:\Usuarios\Escritorio\Herramientas\SysinternalSuites> |
A continuación, ejecute la herramienta en la muestra de malware de destino, en este caso, "ABC":
C:\Users\Desktop\Tools\SysinternalSuites>strings.exe "C:\Users\Desktop\Analysis\Examples\ABC" |
Al ejecutar este comando, la herramienta examina los datos binarios del archivo, buscando secuencias que se asemejen a cadenas legibles por humanos. El resultado puede ser una lista extensa, pero como se muestra en la figura 1, no todas las cadenas tienen la misma relevancia. Algunos, como los relacionados con las operaciones de registro, destacan como especialmente interesantes para un análisis más profundo.
Al comprender la importancia de estas cadenas y reconocer patrones entre ellas, los analistas pueden tomar decisiones informadas sobre el comportamiento potencial y la intención de la muestra de malware en cuestión.
Cadenas en una regla YARA
YARA, una poderosa herramienta en el arsenal de ciberseguridad, emplea reglas para clasificar archivos. Estas reglas dependen de patrones de discernimiento o características únicas en un archivo para determinar su intención, ya sea inofensiva o maliciosa.
Las cadenas, secuencias de caracteres que representan información, son parte integral tanto de la programación como de la representación de datos y, a menudo, desempeñan un papel crucial en esta determinación. Se pueden considerar como el ADN textual dentro de un programa. No son meras secuencias de caracteres; Narran la intención y la funcionalidad del software.
Estas cadenas pueden ir desde códigos de seguridad incrustados en archivos comprimidos hasta direcciones de criptomonedas que se encuentran en el ransomware. En YARA, las cadenas se pueden definir en varios formatos, incluyendo cadenas de texto, secuencias de bytes hexadecimales y expresiones regulares.
A continuación, se muestra una descripción general básica de cómo se estructura la sección de cadenas en una regla YARA:
rule ExampleRule { |
En este ejemplo:
- $a es una expresión regular que busca cualquiera de los términos "RegCreateKeyA", "CreatePipe" o "KERNEL32.dll".
La regla se considerará una coincidencia si el patrón de cadena $a (como se definió anteriormente) se encuentra dentro del archivo o los datos analizados. En términos más sencillos, si ejecuta un archivo a través de YARA con esta regla, YARA marcará el archivo como una coincidencia con "ExampleRule" si contiene alguna de las cadenas "RegCreateKeyA", "CreatePipe" o "KERNEL32. dll".
No se puede exagerar la importancia de la sección de cuerdas. La precisión y exactitud de estas cadenas determinan la eficacia de la regla. Las cadenas bien definidas pueden reducir drásticamente los falsos positivos y los falsos negativos, lo que convierte a la regla en una herramienta potente en la detección de malware y la búsqueda de amenazas.
Condiciones
En esta sección se proporciona la lógica que debe cumplirse para que la regla coincida.
En una alerta de CISA, AA23-129A, emitida por CISA titulada "Hunting Russian Intelligence 'Snake' Malware", hay una regla YARA específica y relativamente básica que podemos examinar para comprender el elemento de condición dentro de una regla YARA.
rule HighEntropy |
Analicemos la parte de la condición.
math.entropy(0, tamaño de archivo) |
Esto calcula la entropía de todo el archivo. La entropía es una medida de la aleatoriedad o imprevisibilidad de un conjunto de datos. En el contexto de archivos o flujos de datos, un valor de entropía alto suele indicar datos comprimidos, cifrados o empaquetados, ya que dichos datos parecen aleatorios.
>= 7.0 |
Esta condición comprueba si la entropía calculada es mayor o igual que 7,0. Normalmente, los valores de entropía oscilan entre 0 y 8 para los datos binarios. Un valor cercano a 8 indica una alta aleatoriedad (por ejemplo, datos cifrados), mientras que un valor cercano a 0 indica una baja aleatoriedad (por ejemplo, grandes bloques de bytes repetidos o nulos).
Nombre de la regla
El título se explica por sí mismo; el nombre de la regla en una regla YARA denota el nombre de la regla.
En el ejemplo que discutimos en la subsección "Condiciones", examinamos una regla que verifica la entropía de un archivo para determinar si está cifrado. En este caso, el nombre de la regla es "HighEntropy".
rule HighEntropy |
La estructura de una regla YARA
Las reglas YARA proporcionan una forma para que los investigadores identifiquen patrones dentro de los archivos, lo que las convierte en una poderosa herramienta para la detección de malware. El lenguaje de escritura de reglas patentado de YARA es intuitivo, pero exige una comprensión profunda de los patrones deseados.
Esenciales para cada comando YARA hay dos argumentos:
el archivo de reglas, y
el destino (archivo, directorio o ID de proceso).
Por ejemplo, supongamos que nuestro objetivo es aplicar la regla "threatDetect.yar" en un directorio llamado "suspiciousFiles". El comando apropiado sería:
yara threatDetect.yar suspiciousFiles |
Cada regla debe poseer un nombre único y una condición definitoria.
Por ejemplo, en la siguiente regla denominada "malwarePattern", la condición comprueba si un determinado patrón de cadena, "maliciousCode", está presente:
rule malwarePattern { |
Aquí, "malwarePattern" es el nombre único, y la presencia de la cadena "maliciousCode" sirve como su condición definitoria.
¿Cuál es un ejemplo de una regla YARA?
En este caso, exploraremos una regla YARA destinada a identificar acciones maliciosas asociadas con la vulnerabilidad MOVEit Transfer Zero Day.
Esta regla ha sido compartida por CISA en su CL0P Ransomware Gang Cybersecurity Advisory. Haga clic aquí para ver el aviso (con la alerta AA23-158A) y otras reglas de YARA.
regla CISA_10450442_01 : LEMURLOOT webshell communicates_with_c2 remote_access |
La regla YARA proporcionada está diseñada para detectar la presencia del webshell LEMURLOOT, que fue utilizado por el grupo TA505 en el ataque descrito [2].
Vamos a desglosar la regla:
meta:
Autor: El creador o mantenedor de la regla YARA, en este caso, "Código CISA y Análisis de Medios".
Incidente: Asociado al número de incidente "10450442".
Fecha y Last_Modified: Muestra cuándo se creó la regla y la última vez que se modificó.
Actor: Actualmente no especificado (n/a), podría actualizarse si se identifica el actor específico.
Familia: Familia de malware a la que se dirige esta regla, que es "LEMURLOOT".
Capacidades: De lo que es capaz el malware o la herramienta. En este caso, se está comunicando con su servidor de comando y control(C2).
Malware_Type: El tipo de malware que se está detectando; Aquí es un "webshell".
Tool_Type: Es una herramienta de "acceso remoto", lo que significa que se puede utilizar para acceder de forma remota a sistemas comprometidos.
Descripción: Proporciona un resumen sobre la regla. Este detecta "muestras de webshell ASPX".
SHA256_1: Un hash SHA-256 de una muestra conocida del malware o la herramienta. Esto podría utilizarse para una verificación adicional.
instrumentos de cuerda:
La sección de cadenas contiene secuencias de bytes, texto o expresiones regulares para que coincidan con los archivos:
- $s 1: Busca el patrón de bytes correspondiente a "MOVEit.DMZ", probablemente parte del código o de una biblioteca con la que interactúa el webshell.
La cadena "4d 4f 56 45 69 74 2e 44 4d 5a" es una secuencia de valores hexadecimales. Cada par de caracteres representa un byte, y cada byte se puede convertir a su representación ASCII para decodificar la cadena.
Aquí está la decodificación de nuestra cadena:
Hexadecimales de cadena | Conversión ASCII |
4d | M |
4f | O |
56 | V |
45 | E |
69 | Yo |
74 | t |
2e | . |
44 | D |
4d | M |
5 bis | Z |
Por lo tanto, la combinación de todos los caracteres ASCII juntos le da la cadena "MOVEit.DMZ".
- $s 2: Busca el patrón de bytes que se traduce en una declaración típica en archivos ASPX que establecen el idioma, posiblemente indicando una página ASPX.
- $s 3: Busca el patrón de bytes correspondiente a "MySQL", insinuando que el webshell interactúa con las bases de datos MySQL.
- $s 4: Busca el patrón de bytes correspondiente a "Azure", lo que sugiere que el webshell puede tener funcionalidades relacionadas con Azure.
- $s 5: Busca el patrón de bytes "X-siLock-", que podría estar relacionado con un encabezado HTTP específico o un parámetro que el webshell utiliza para la autenticación o la ejecución de comandos.
Condición:
Especifica en qué circunstancias la regla debe generar una alerta:
- todas: Esto significa que para que la regla genere una coincidencia, todas las cadenas anteriores ($s 1 a $s 5) deben estar presentes en el archivo analizado.
En resumen, esta regla YARA se activará si detecta un archivo (probablemente un archivo ASPX dados los indicadores) que contenga todas las cadenas mencionadas, lo que sugiere que es una instancia del webshell LEMURLOOT.
9 Mejores Prácticas para Escribir una Regla YARA
En esta sección, enumeramos nueve mejores prácticas principales para escribir una regla YARA.
1. Apuntando a grandes firmas:
No solo coincidiendo con muestras específicas, sino con otras similares del mismo autor o grupo.
Por ejemplo, en lugar de limitarse a detectar un error tipográfico como "Micorsoft Corportation", intente detectar patrones asociados con el autor del malware [3].
2. Complejidad de las reglas:
- Combine cadenas muy específicas con cadenas comunes para una detección más amplia pero precisa.
3. Uso de encabezados mágicos y tamaño de archivo:
Haga que el encabezado mágico sea la primera condición para el rendimiento.
Restrinja el tamaño de los archivos para evitar falsos positivos.
Por ejemplo, el tamaño del archivo > 200 KB y el tamaño del archivo < 600 KB [4].
4. Detección de ubicación específica:
Si el código de malware se encuentra en una ubicación inesperada, utilícelo como firma [4].
Por ejemplo, detectar cadenas relativas al final del archivo como $s 1 en (filesize-500.. tamaño del archivo)
5. Especificidad de la cadena:
Utilice cadenas que tengan menos probabilidades de ser modificadas por los atacantes en versiones futuras.
Por ejemplo, combinaciones de funciones en webshells que tienen menos probabilidades de cambiar que los nombres de las variables.
6. Optimización del rendimiento:
Siga las directrices para escribir reglas de Yara que utilicen menos ciclos de CPU.
Evite las comprobaciones intensivas de la CPU y emplee nuevos accesos directos para comprobar el estado.
7. Precaución con los nuevos módulos:
Evite el uso de módulos más nuevos y no probados en entornos de producción.
Por ejemplo, tener cuidado al usar el módulo PE hasta que se pruebe a fondo.
8. Utilice herramientas para la generación y el análisis de reglas:
yarGen para la creación de reglas con parámetros específicos.
yarAnalyzer para comprobar la cobertura de reglas y detectar reglas superpuestas.
9. Extracción y coloración de cuerdas:
Utilice herramientas o secuencias de comandos para revisar y colorear las cadenas de una muestra.
Por ejemplo, el uso de una concha de una línea para la extracción de cuerdas y un prisma para la coloración [4].
La incorporación de estas mejores prácticas con las mencionadas anteriormente garantizará un enfoque más completo y eficaz para la redacción de las reglas de Yara.
¿Qué significa YARA?
[1] “#StopRansomware: AvosLocker Ransomware (Update),” Cybersecurity and Infrastructure Security Agency CISA. Available: https://www.cisa.gov/news-events/cybersecurity-advisories/aa23-284a. [Accessed: Oct. 23, 2023]
[2] “#StopRansomware: CL0P Ransomware Gang Exploits CVE-2023-34362 MOVEit Vulnerability,” Cybersecurity and Infrastructure Security Agency CISA. Available: https://www.cisa.gov/news-events/cybersecurity-advisories/aa23-158a. [Accessed: Oct. 23, 2023]
[3] F. Roth, “How to Write Simple but Sound Yara Rules,” Feb. 16, 2015. Available: https://www.nextron-systems.com/2015/02/16/write-simple-sound-yara-rules/. [Accessed: Oct. 23, 2023]
[4] F. Roth, “How to Write Simple but Sound Yara Rules - Part 2 - Nextron Systems,” Oct. 17, 2015. Available: https://www.nextron-systems.com/2015/10/17/how-to-write-simple-but-sound-yara-rules-part-2/. [Accessed: Oct. 23, 2023]
No hay comentarios.:
Publicar un comentario