Cuando hablamos de analizar amenazas en entornos corporativos tenemos un abanico amplio de posibilidades con respecto al tipo de herramientas que podemos utilizar. Hay una que particularmente se ha vuelto bastante útil y que muchos han empezado a utilizar: YARA, que permite identificar y clasificar muestras de códigos maliciosos.
Si se identifican instrucciones repetidas, se podría hacer una regla para identificar otras similares
Ya sea para detectar la fecha de compilación de un ejecutable, encontrar información de geolocalización en imágenes o para la clasificación de malware, YARA es un aliado importante en las tareas que llevamos en el día a día.
Muestra de la importancia de esta herramienta fue el workshop realizado por Jay DiMartino la semana pasada durante DEFCON 24, al cual asistí; vale la pena extraer algunas de la reglas y tips mencionados, que seguramente te pueden resultar muy útiles para analizar campañas maliciosas.
Detección de autoextraíbles y troyanos
Una de las técnicas que vienen utilizando los cibercriminales desde hace algún tiempo es la propagación de códigos maliciosos a través de archivos autoextraíbles. De esta manera, correos electrónicos o descargas en sitios web esconden el ejecutable en un archivo comprimido, que cuando el usuario trata de descomprimir, ejecuta automáticamente el archivo malicioso.
Utilizando la siguiente regla de YARA es posible identificar si el archivo que se está analizando corresponde a una amenaza con las características descritas anteriormente:
En el uso de YARA hay una serie de reglas bastante útiles y que se pueden encontrar en la documentación de la herramienta. Y es precisamente utilizando este tipo de reglas que podemos hacer sets para seguir familias de códigos maliciosos, como las detectadas por las soluciones de ESET como Win32/Korplug (también conocida como PlugX).
Por ejemplo, luego de identificar las cadenas de caracteres que tiene una familia de códigos maliciosos que se quiere seguir, se pueden generar reglas para hacer un seguimiento de las muestras con una regla como la que se muestra a continuación, en la cual, además, se especifica que estamos buscando sobre archivos ejecutables (0x5A4D se trata del encabezado MZ) y archivos con un tamaño menor a los 11KB:
Sin embargo, podemos llegar a casos en los cuales no basta con identificar solamente cadenas de caracteres, ya que puede darse lugar a que se incremente la cantidad de falsos positivos que queremos identificar. En este punto resulta mucho más útil identificar características particulares en el código de cada familia y a partir de esto generar reglas que faciliten mucho más el análisis.
Si luego del análisis se identifica que hay una secuencia de instrucciones que siempre se repite en las muestras analizadas, pues se podría hacer una regla para tratar de identificar otras variantes con características similares.
Así que en estos casos resulta bastante útil el uso de wildcards; se puede resumir en una regla de YARA una parte del comportamiento de un código malicioso.
Con esta poderosa herramienta, que ya es utilizada por servicios públicos como VirusTotal o sandbox como Cuckoo, es posible hacer una clasificación de códigos maliciosos basándos en distintas características que permitan identificar las más importantes de cada muestra, logrando simplificar el trabajo al momento de seguir este tipo de campañas.
A partir de la detección de cadenas de texto es posible identificar secuencias de instrucciones, expresiones regulares y otros patrones existentes dentro de los archivos maliciosos. Por ejemplo, como veíamos anteriormente, detectar si está comprimido o empaquetado, si contiene información para conectarse a una determinada dirección URL y demás. De esta manera, se podrán encontrar distintas variantes de un código malicioso que se estén propagando como parte de un ataque dirigido.