Días atrás compartimos con ustedes una publicación sobre Honeypots, una alternativa para el análisis y captura de códigos maliciosos. Estas herramientas, entre otras características nos permiten capturar distintas amenazas que podrían afectar tanto a usuarios hogareños como a empresas u otras entidades. Hoy vamos a centrarnos en la clasificación de códigos maliciosos basándonos en distintas características que nos permiten identificar sus capacidades más importantes, logrando así, simplificar el trabajo de un equipo de seguridad o un analista de malware.
Para este cometido se puede utilizar YARA, una herramienta diseñada para identificar y clasificar malware mediante la creación de reglas que permiten detectar strings (cadenas de texto), secuencias de instrucciones, expresiones regulares y otros patrones existentes dentro de los archivos maliciosos. Por ejemplo, dependiendo del archivo bajo análisis es posible conocer si se encuentra empaquetado (identificar el packer) o no, si contiene información para conectarse a una determinada dirección URL o a un servidor IRC incluso hasta detectar distintas variantes de un código malicioso que se estén propagando como parte de un ataque dirigido.
YARA se puede descargar directamente desde su página web (http://code.google.com/p/yara-project/) e instalar en cualquier sistema operativo ya que es compatible con Windows, Linux y Mac OS X. De esta manera es posible ajustar la herramienta a nuestras necesidades y utilizar sus capacidades para clasificar códigos maliciosos directamente desde la línea de comando o a través de las API disponibles para distintos lenguajes de programación como Python, Ruby o C.
El concepto muy importante a tener en cuenta para la clasificación e identificación de códigos maliciosos con esta herramienta se basa en la creación de reglas. Una regla en YARA está compuesta principalmente por strings y conditions. Un string es una variable que representa a una cadena de texto, una secuencia de bytes o hasta la utilización de expresiones regulares que brindan una gran flexibilidad para poder representar patrones existentes dentro de las amenazas bajo análisis. Por otro lado, las conditions permiten especificar qué combinación de strings deben estar presentes en el archivo para que se lo clasifique como tal. Por ejemplo, la siguiente regla nos permite identificar si un archivo malicioso contiene información para conectarse a un servidor IRC:
Como se puede observar en la imagen anterior, las strings definen algunos de los comandos más comunes de IRC que son usados por algunos códigos maliciosos para recibir las órdenes del botmaster. Una vez que se definen las cadenas la condición necesaria para detectar un archivo como IRC es que se cumplan cuatro de las strings $irc_*. Detectar este tipo de funcionalidades en un momento previo al análisis detallado de un código malicioso permite realizar una estrategia más efectiva al momento de profundizar sobre el código malicioso.
Un problema que podría dificultar el análisis de códigos maliciosos son los packers, este tipo de herramientas suelen ser utilizadas por los cibercriminales para ocultar cierta información y evadir así algunos mecanismos de detección. Sin embargo, mediante la utilización de reglas en YARA es posible hacer también una identificación de packers y clasificar a los códigos maliciosos recibidos según este tipo de características:
En esta oportunidad podemos ver como se usan distintas secuencias de bytes para identificar algunas versiones de packers para UPX y Armadillo. Es posible encontrar un listado detallado de reglas para identificación de packers directamente desde la página de YARA. Aprender a identificar patrones dentro de las herramientas que utilizan los cibercriminales para ocultar sus acciones y na clasificación temprana al momento del análisis aumenta considerablemente la efectividad del especialista de seguridad.
La utilización de herramientas para la automatización de tareas de pre-análisis permiten optimizar los tiempos de trabajo y así lograr inferir mediante la información recopilada ciertas características comunes de los códigos maliciosos y sus variantes. Combinando distintas funcionalidades de algunas herramientas es posible capturar y recopilar información de las amenazas que afectan no solo a Latinoamérica sino también al resto del mundo. En otras palabras, mediante más información podamos recopilar acerca de las amenazas que atentan contra los usuarios o entornos corporativos seremos capaces de aumentar la protección de las distintas infraestructuras.
¿Para qué otras tareas creen que sería útil utilizar una herramienta como YARA?
Pablo Ramos
Security Researcher