Cómo escribir reglas efectivas con YARA para detectar malware y filtraciones de datos

En nuestro primer artículo sobre YARA, definimos qué tipo de herramienta era y en qué contexto se podía utilizar: la detección de malware en la red o en los puntos finales, ayudar en la respuesta a incidentes y monitoreo, clasificar archivos e incluso detectar filtraciones de datos sensibles. También mostramos cómo instalarlo. Ahora es el momento de escribir reglas para sacarle el máximo provecho.

Índice de Contenido
  1. Usar una plantilla vacía para comenzar
  2. Una primera regla
  3. Ejecutando la primera regla
  4. Cadenas más complejas
  5. Cadenas hexadecimales
  6. Expresiones regulares
  7. Condiciones más complejas
  8. Conclusión

Usar una plantilla vacía para comenzar

Las reglas de YARA son archivos de texto que siguen una sintaxis muy básica pero poderosa.

Las reglas de YARA siempre contienen tres partes:

  • La parte de meta: Esta parte contiene información general o específica que no se procesa pero ayuda al usuario a comprender de qué se trata.
  • La parte de cadenas: Esta parte contiene todas las cadenas que se deben buscar en los archivos.
  • La parte de condición: Esta parte define la condición para que coincida. Puede ser simplemente igualar una o varias cadenas, pero también puede ser más complejo como veremos más adelante en este artículo.

Por mi experiencia, se recomienda encarecidamente crear una plantilla vacía que siempre se utilizará para comenzar a escribir una nueva regla. De esta manera, solo necesita completar algunas variables y agregar las condiciones deseadas.

regla muestra
{
meta:
author="Cedric Pernet"
version="0.1"
date="2021/05/12"
reference="alguna referencia útil"
cadenas:
condición:
}

Usando esta plantilla, puede editar rápidamente los metadatos y el nombre de la regla (en nuestro ejemplo, se llama muestra). Los metadatos pueden ser cualquier cosa que el usuario desee colocar allí. En mi caso, siempre uso un número de versión, una fecha, una referencia que podría ser un hash de malware, o un informe de blog que mencione lo que quiero detectar, y un campo de autor.

Ahora que los metadatos están escritos, comencemos a escribir la primera regla.

Protección antivirus en línea: McAfee Clinic lleva la seguridad de tu PC al siguiente nivel

Una primera regla

Las reglas de YARA son una combinación de elementos de cadenas y condiciones. Las cadenas pueden ser cadenas de texto, cadenas hexadecimales o expresiones regulares.

Las condiciones son expresiones booleanas, al igual que en otros lenguajes de programación. Las más conocidas son AND, OR, NOT. También se pueden usar operadores relacionales, aritméticos y bit a bit.

Aquí hay una primera regla:

regla detección_netcat
{
meta:
author="Cedric Pernet"
version="0.1"
date="2021/05/12"
reference="netcat es una herramienta gratuita disponible en línea"
cadenas:
$cad1="gethostpoop fuxored" // esto es muy específico de la herramienta netcat
$cad2="nc -l -p port [opciones]"
condición:
$cad1 or $cad2
}

Entonces, expliquemos esta regla titulada detección_netcat.

Después de nuestros metadatos habituales, la división de cadenas contiene dos variables, cad1 y cad2, que por supuesto pueden tener cualquier nombre que queramos. Además, para ilustrar cómo agregar comentarios, la primera variable contiene un comentario al final.

La parte de la condición contiene la siguiente condición: Debe coincidir con cad1 o cad2.

Cómo proteger tu computadora de los virus: métodos y consejos

Esto podría haberse escrito de una manera más cómoda:

condición:
cualquiera de ($cad*)

Esto puede ser útil si tenemos muchas variables diferentes y queremos que coincida con cualquiera de ellas.

Ejecutando la primera regla

Ahora ejecutemos nuestra regla, que guardamos como un archivo llamado regla1.yar. Queremos ejecutarlo en una carpeta que contiene varios archivos diferentes, dos de ellos son las versiones de 32 y 64 bits del software netcat (Figura A). Nuestro sistema de prueba es una distribución de Ubuntu Linux, pero no importa, ya que Yara se puede instalar fácilmente en sistemas operativos Linux, Mac o Windows.

Figura A

Cómo escribir reglas efectivas con YARA para detectar malware y filtraciones de datos - Seguridad | Imagen 1 Newsmatic

Como se esperaba, YARA se ejecuta y devuelve los nombres de todos los archivos que coinciden con la regla.

¡Defiéndete! Protege tu seguridad en línea contra amenazas críticas

Por supuesto, se pueden agregar tantas reglas de YARA como se desee en un solo archivo, lo que lo hace más cómodo que tener muchos archivos de reglas diferentes.

Al ejecutar YARA con la opción -s, se muestran las cadenas exactas que han coincidido con esos archivos (Figura B):

Figura B

Cómo escribir reglas efectivas con YARA para detectar malware y filtraciones de datos - Seguridad | Imagen 2 Newsmatic

Por otro lado, encontrar herramientas como netcat en alguna parte de su red corporativa podría valer la pena investigarlo: esa herramienta básica no debería encontrarse en la computadora promedio del usuario, ya que permite que las computadoras se conecten e intercambien datos en puertos específicos y podría ser utilizada por atacantes. También podría ser utilizada por personal de IT o personal de un equipo de respuesta a incidentes ("red team"), de ahí la investigación para determinar por qué se encontró en una máquina de la red corporativa.

Cadenas más complejas

Encontrar una cadena básica puede ser suficiente para encontrar archivos dentro de los sistemas. Sin embargo, las cadenas pueden estar codificadas de manera diferente en diferentes sistemas o pueden haber sido ligeramente alteradas por atacantes. Un ligero cambio, por ejemplo, puede ser cambiar el caso de las cadenas utilizando mayúsculas y minúsculas aleatorias. Afortunadamente, YARA puede manejar esto fácilmente.

Protege tus contraseñas con PAM: Tu aliado para la seguridad

En la siguiente parte de las cadenas de YARA, una cadena coincidirá sin importar el caso que se use:

cadenas:
$cad1="thisisit" nocase

La condición $cad1 ahora coincidirá con cualquier caso utilizado: "ThisIsIt", "THISISIT", "thisisit", "ThIsIsiT", etc.

Si las cadenas están codificadas utilizando dos bytes por carácter, se puede usar el modificador "wide" y, por supuesto, se puede combinar con otro modificador:

cadenas:
$cad1="thisisit" nocase wide

Para buscar cadenas en la forma ASCII y amplia, se puede usar el modificador "ascii" en conjunto con "wide":

cadenas:
$cad1="thisisit" ascii wide

Cadenas hexadecimales

Las cadenas hexadecimales se pueden usar fácilmente:

cadenas:
$cad1={ 75 72 65 6C 6E 20 }
$cad2={ 75 72 65 6C ?? 20 }
$cad3={ 75 72 [2-4] 65 6C }

Aquí hay tres variables hexadecimales diferentes. El primero busca una secuencia exacta en cadenas hexadecimales. El segundo utiliza un comodín expresado con dos caracteres ?? y buscará cadenas con cualquier valor hexadecimal donde ?? esté presente.

Cómo configurar un servidor VPN para hacer conexiones a través de firewalls

La tercera cadena busca los dos primeros bytes, luego un salto de dos a cuatro caracteres y finalmente los dos últimos bytes. Esto es muy útil cuando algunas secuencias varían en diferentes archivos pero muestran un número predecible de bytes aleatorios entre dos conocidos.

Expresiones regulares

Las expresiones regulares, al igual que en cualquier lenguaje de programación, son muy útiles para detectar contenido particular que puede estar escrito de diferentes formas. En YARA, se definen mediante el uso de una cadena que comienza y termina con el carácter de barra (/).

Tomemos un ejemplo que tenga sentido.

En un archivo binario de malware, el desarrollador dejó información de depuración, en particular la famosa cadena PDB.

Lee:

D:workspaceMalware_v42Releasemalw.pdb

¡Alerta! Un nuevo gusano de Linux está propagándose

Ahora, la idea sería no solo crear una regla que coincida con este malware, sino con todas las diferentes versiones en caso de que el número de versión cambie. Además, decidimos excluir la unidad "D" de la regla, ya que el desarrollador también podría tenerlo en otra unidad.

Surgió la siguiente expresión regular (Figura C):

Figura C

Cómo escribir reglas efectivas con YARA para detectar malware y filtraciones de datos - Seguridad | Imagen 3 Newsmatic

Con fines de demostración, creamos un archivo llamado newmalwareversion.exe que contiene tres cadenas PDB diferentes, cada una con un número de versión diferente. Nuestra regla las coincide a todas.

Tenga en cuenta que los caracteres de nuestras cadenas se han duplicado, ya que es un carácter especial que debe escaparse, al igual que en el lenguaje C.

Cuánto cuesta instalar y mantener un firewall empresarial

Condiciones más complejas

Las condiciones pueden ser más inteligentes que simplemente coincidir con una sola cadena o varias. Puede usar condiciones para contar cadenas, especificar un desplazamiento en el que desea encontrar una cadena, coincidir con un tamaño de archivo o incluso usar bucles.

Aquí hay algunos ejemplos que he comentado para explicación:

condición:
2 de ($cad*) // coincidirá con 2 de varias cadenas que comienzan con cad seguido de un número
($cad1 or $cad2) and ($texto1 or $texto2) // ejemplo de operadores booleanos
#a == 4 and #b > 6 // la cadena a debe encontrarse exactamente cuatro veces y la cadena b debe encontrarse estrictamente más de seis veces
$cad en 100 // la cadena cad debe ubicarse dentro del archivo en el desplazamiento 100
$cad en (500..tamañodearchivo) // la cadena cad debe ubicarse entre el desplazamiento 500 y el final del archivo.
tamañodearchivo > 500KB // solo se considerarán los archivos que tengan más de 500KB

Conclusión

Este artículo muestra las capacidades más básicas de YARA. No pudimos documentar todo, por supuesto, ya que realmente es una especie de lenguaje de programación. Las posibilidades que ofrece YARA para encontrar archivos son casi infinitas. Cuanto más cómodo se sienta el analista con YARA, más comprenderá y mejorará sus habilidades para escribir reglas más eficientes.

Dado que el lenguaje es tan fácil de escribir y usar, es más una cuestión de saber lo que uno realmente quiere detectar. En los últimos años, se ha vuelto cada vez más común ver a investigadores de seguridad publicar reglas de YARA en apéndices de sus documentos de investigación y publicaciones de blogs, con el fin de ayudar a todos a encontrar contenido malicioso en sus computadoras o servidores. Las reglas de YARA también permiten encontrar contenido que no es malicioso pero que debe supervisarse cuidadosamente, como documentos internos, lo que convierte a YARA en una herramienta de detección de pérdida de datos además de un detector de contenido malicioso. No dude en consultar la documentación de YARA para ver todas las posibilidades que ofrece la herramienta.

Divulgación: Trabajo para Trend Micro, pero las opiniones expresadas en este artículo son mías.

Cómo protegerse del ingeniero social: consejos y técnicas para evitar ser manipulado.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Seguridad, allí encontraras muchos artículos similares a Cómo escribir reglas efectivas con YARA para detectar malware y filtraciones de datos , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.