A continuación les presento un programa que he realizado para identificar y clasificar muestras de malware utilizando reglas Yara, ya que los antivirus tradicionales no suelen comprobar ciertos aspectos importantes que puede contener un fichero, dado que para conseguir una velocidad de análisis óptima utilizan hashes que cruzan contra una base de datos de hashes de archivos maliciosos.
Yara en este aspecto nos facilita mucho el trabajo, ya que principalmente analiza los strings de los ficheros, con lo que podemos detectar webshells, archivos utilizados en las APT, cryptomineros, macros de office maliciosas, exploits, troyanos, incluso el ransomware más actual como CobalStrike, Ryuk, etc.
En su forma mas básica, la estructura de una regla Yara es la siguiente:
rule Nombre_de_la_regla
{
strings:
$test_string1= ”Testing”
$test_string2= {E1 D2 C3 B4}
Conditions:
$test_string1 or $test_string2
}
La regla se activará si las condiciones anteriores se cumplen.
Con Yara también podemos parsear archivos PE (Portable Executable), de la siguiente forma:
Import “PE”
Rule PE_Parse_Check
{
Strings:
$ string_pe=”abc” nocase
Condition:
pe.imports (“Kernel32.dll”,”CreateProcess”) and
pe.imports (“wininet.dll”,”httpsendrequest”) and
$ string_pe
}
Esta regla buscará el string "abc" y se activará si existe una creación de un proceso y un "http send request"
En general las reglas son independientes de la extensión de los archivos a analizar, es decir si tenemos un documento HTML con una webshell al que se le ha cambiado la extensión por PDF para ocultarlo o dificultar su análisis, al ser examinado por Yara se descubrirá la webshell maliciosa.
REQUISITOS PREVIOS
Descargar el archivo Yara64.exe desde aquí.
Tienen que guardar las reglas yara, que no son más que archivos de texto con la extensión ".yar" en la carpeta "reglasyar".
Existen en la red multitud de sitios desde donde descargarlas, sólo tienen que buscar en Google por "Yara rules download", para mí uno de los mejores es Yara Rules Project · GitHub
Los archivos que van a ser analizados hay que guardarlos en la carpeta "malware", aunque desde la red también se pueden descargar algunos archivos maliciosos de prueba desde aquí.
Al iniciar el programa se hace lo siguiente:
- Se comprueba que existen las carpetas "reglasyara" y "malware".
- Se leen las reglas y se muestran en pantalla.
Recomiendo ejecutar el programa como Administrador, para evitar problemas con los permisos en ficheros o carpetas.
Después hay que pulsar el botón "Iniciar comprobación" y en caso de match con una regla se mostrará en la caja "Resultados", tal como muestro en la imagen:
En este caso ha detectado que varios emails tienen imágenes y un archivo adjunto y una webshell en el archivo JFolder.jsp
MEJORAS
Dentro del código fuente, en la línea:
linea := 'yara64.exe -wf -p 20 ' + '.\reglasyar\' + regla + ' ' + DirSeleccionado;
se pueden añadir modificadores, p.ej.
-r (buscar recursivamente en todas las carpetas y subcarpetas)
-S (muestra estadísticas)
-m (muestra metadatos)
-w (ignora los warnings)
SOURCES
ESTRUCTURA DEL PROGRAMA
- Project1.exe
- [CARPETA] reglasyar (carpeta donde se almacenan los ficheros *.yar)
- [CARPETA] malware (esta es la carpeta donde se guardan los fichero que serán analizados)
La carpeta "reglasyara" almacenará todas las reglas que hayamos descargado de la red.
El análisis de ficheros con Yara debe ser un complemento al análisis con los antivirus tradicionales, sumando ambas técnicas se los pondremos más difícil a los actores maliciosos que andan por la red, al final esto de la ciberseguridad es como el juego del gato y el ratón, seguro que los creadores de malware ya estarán probando su software para evitar ser detectado por estas reglas, aunque si las estudian en profundidad y ven la potencia que tienen, la verdad es que lo tienen complicado.