YARA es una herramienta diseñada para ayudar a los investigadores de malware a identificar y clasificar las muestras del mismo. Se ha llamado la navaja suiza del emparejamiento de los modelos de investigación de la seguridad. Es multiplataforma y se puede utilizar tanto desde su interfaz de línea de comandos como a través de sus propios scripts de Python.
La herramienta permite realizar detección de malware basada en firmas, algo similar a lo que las soluciones antivirus hacen por nosotros.
Como usamos las reglas YARA
Para utilizar este método, necesitamos una regla y un archivo que queramos comprobar. Por ejemplo, para ejecutarlo desde la línea de comandos, utilizaríamos:
Esto devolverá una salida si la regla dada coincide con el archivo proporcionado. Si no existe salida y no hemos utilizado la opción negate, significa que ninguna regla coincide.
Podemos iniciarlo con un número de switches de configuración;
Estos son los dos más importantes:
-n : Imprimir sólo reglas no satisfechas (negar).
-r: Recursivamente buscar en directorios.
Reglas YARA
Una regla es un conjunto de cadenas y alguna forma de lógica, escrita en expresiones booleanas.
Hay soporte para tres tipos diferentes de cadenas:
- Cadenas hexadecimales, que son útiles para definir bytes en crudo;
- Cadenas de texto;
- Expresiones regulares.
Las condiciones son expresiones booleanas que se reconocerán a partir de lenguajes de programación regulares de alto nivel. Podemos trabajar en cualquiera de las cadenas dadas, pero también en variables especiales incorporadas, como el tamaño del archivo o en variables externas que se definen fuera de la regla, ademas de existir soporte para el uso de módulos externos, como Cuckoo, para ampliar las características que se pueden utilizar en las condiciones.
Pero el gran beneficio de YARA viene cuando se le proporciona una gran cantidad de conjuntos de reglas, pudiendo escribir las nuestras propias u obtenerlas de otros proveedores.
Escribiendo nuestras reglas en YARA
Escribir nuestras propias reglas no es tan difícil si consideramos una serie de pautas:
- Los criterios que utilizamos en la búsqueda deben ser necesariamente una parte del comportamiento del malware.
- Los criterios de búsqueda deben ser suficientes para distinguir la familia de programas maliciosos ya probados de otras familias de programas maliciosos.
- El criterio de búsqueda tiene que ser una parte común en diferentes muestras.
Una vez analizado el malware y extraído los datos útiles y reconocibles del mismo, podemos transformar la información en cadenas o reglas YARA y combinarlas con algún tipo de lógica.
Cadenas YARA externas
Como YARA utiliza firmas similares a las soluciones de antivirus, tendría sentido reutilizar estas firmas como una base de datos de reglas. Con el uso del script clamav_to_yara.py , podemos convertir la base de datos de firmas ClamAV en nuestro propio conjunto de reglas.
Otra fuente de reglas es el repositorio Github YaraRules. Este es un conjunto de reglas bajo la licencia GNU-GPLv2 mantenido por un gran grupo de expertos en seguridad, dividido por categorías y actualizado con frecuencia.
O podemos añadir plataformas externas de intercambio de inteligencia de amenazas, como MISP y ThreatConnect , las cuales también admiten YARA, permitiendo crear reglas basadas en nuestra propia información de amenaza recopilada de terceros.
General Cadenas Para automaticamente
Con el uso del generador de reglas de
Joe Sandbox, podemos crear firmas para Windows basadas en datos de comportamiento estático y dinámico. Debemos tener en cuenta que estamos aplicando las mismas reglas que cuando usamos cajas de seguridad de análisis de malware en línea. Por ello, considerar que estamos subiendo archivos a un servicio de la nube externo, teniendo especial cuidado con los archivos sensibles o los datos que contienen.
Casos adicionales
He mencionado que podemos convertir la base de datos ClamAV a un conjunto de reglas utilizable, pero esto también podemos hacerlo al revés. Supongamos que tenemos un conjunto de reglas ya creadas. Podríamos configurar ClamAV para ampliar su conjunto de funciones con las reglas proporcionadas y dar soporte a YARA . Esto permite hacer coincidir las reglas en archivos comprimidos o empaquetados. O por ejemplo, podríamos usar la API privada de VirusTotal donde tenemos la función de poder introducir nuestras propias reglas y hacer que se activen cuando se cargue una muestra coincidente.
La protección basada en la firma no es suficiente
Sólo basarnos en la protección basada en firmas ya no es suficiente. Los atacantes han desarrollado contramedidas que usan para evitar este método. Con el uso de varios servicios de encriptación, empaquetadores y polimorfismo, pueden generar fácilmente malware que es lo suficientemente diferente para que ya no coincida con las firmas existentes anteriores.
Estos inconvenientes no hacen obsoleta la detección basada en firmas. La comunidad de seguridad es grande y productiva en el intercambio de nuevos indicadores de amenaza, por lo que este tipo de herramientas seguirá siendo un activo importante en el arsenal de seguridad.
Por ello, aunque la detección basada en firmas con YARA tiene sus límites, es una forma fácil y bastante sencilla de detectar malware en nuestros entornos. No sería prudente confiar en un sistema basado en firmas como la única medida de protección contra amenazas , pero dado el uso directo, no sería buena idea perder esta herramienta. Malware nuevo, podría tener trazar de malware anterior, como hemos podido ver con el código de Lazarus y WannaCry.