La «otra manera» de identificar malware
Atendiendo a las cifras, la situación actual en el ámbito de la seguridad informática, en lo que a amenazas se refiere, resulta bastante inquietante:
- Hay alrededor de 170 millones de muestras de malware, de las cuales cerca de 70 millones han surgido en 2013.
- En el año 2012 el número de ficheros correspondientes a malware firmados digitalmente alcanzó los 2 millones.
- El cibercrimen ha generado pérdidas de 87.000 millones euros 2013.
- Kaspersky en el tercer trimestre del 2013 ha catalogado más de 120.000 muestras de malware para móviles.
- McAfee cataloga diariamente más de 100.000 muestras e identificó 200 nuevos ciberataques por minuto en 2013.
Es por ello que el enorme volumen de amenazas correspondientes a malware que surgen diariamente y la sofisticación de las mismas, como es el caso de las «Advanced Persistent Threat» (APTs), ha provocado la búsqueda de nuevas vías para proteger los sistemas y para poder comprobar si éstos se han visto comprometidos, al quedarse las protecciones convencionales obsoletas.
IOCs
Los Indicadores de Compromiso o «Indicators of Compromise» (IOCs) hacen referencia a una tecnología estandarizada que consiste en definir las características técnicas de una amenaza por medio de las evidencias existentes en un equipo comprometido, es decir, se identifican diferentes acciones como ficheros creados, entradas de registro modificadas, procesos o servicios nuevos, etc. de manera que puedan servir para identificar otros ordenadores afectados por la misma amenaza o prevenirlos de la misma.
De este modo, es posible realizar un intercambio sencillo y práctico de información con otras personas y grupos de gestión de incidentes e implementar las firmas en diferentes herramientas como:
- Sistemas de detección de intrusions o «Intrusion Detection System» (IDS).
- Sistemas de prevención de intrusions o «Intrusion Prevention System» (IPS).
- Sistema de detección de intrusiones en un Host o «Host-based intrusion detection system» (HIDS).
- Sistema de prevención de intrusiones en un Host o «Hostbased Intrusion Prevention System» (HIPS).
- Firewalls.
El valor real de la tecnología radica precisamente en ese intercambio de información ya que permite generar y compartir conocimiento a partir de análisis forenses, respuesta a incidentes o análisis de malware. IOC Bucket es uno de los repositorios de IOCs más conocidos que puede servir como fuente de conocimiento y por tanto utilizar los IOCs disponibles para proteger un sistema.
Existen varios sistemas estandarizados de intercambio de este tipo de información, es decir, varias definiciones sobre cómo deben documentarse los indicadores de compromiso. Algunos de los más conocidos son:
- Enumeración y caracterización de atributos de software malintencionado o «Malware Attribute Enumeration and Characterization» (MAEC).
- «Cyber Observable eXpression» (Cybox).
- Indicadores de compromiso abiertos o «Open Indicators of Compromise» (OpenIOC).
Caso práctico
A continuación se muestra un caso práctico con OpenIOC, al ser uno de los más utilizados por expertos en seguridad. OpenIOC permite describir las características técnicas que identifican a una amenaza conocida, la metodología de un atacante, o cualquier otra prueba del compromiso en una estructura XML.
Lógicamente, el paso previo es haber identificado una amenaza, haber analizado su comportamiento e identificado la manera en la que afecta al sistema comprometido mediante un análisis estático y dinámico de la misma. En este caso se utiliza el análisis realizado sobre el malware correspondiente a la APT conocida como Careto para generar el IOC.
Para crear la estructura se puede utilizar la herramienta gratuita IOC Editor de Mandiant, la cual posee un interface muy intuitivo. Mediante esta herramienta es posible especificar un gran número de características pertenecientes tanto al malware como al sistema, utilizando para ello los operadores lógicos AND y OR según corresponda:
- Atributos de los ficheros como nombre, md5 o sha1, tamaño, fecha de compilación, funciones exportadas o importadas, nombres de las secciones.
- Acciones del malware sobre el sistema:
- Registro: valores de las claves de registro, nombres asignados, fechas de modificación.
- Red: nombres de dominio o IPs resueltas, remitentes de correo electrónico, ficheros adjuntos, texto del asunto o del mensaje,
- Procesos y servicios: nombres, PIDs, hashes.
- Otros:
-
- Estado del sistema: versión de la BIOS, configuración IP, versión del Sistema Operativo.
- Ficheros Prefetch: última ejecución, ruta completa, número de veces ejecutado.
En el ejemplo correspondiente al Careto se especifican una serie de nombres característicos de los ficheros pertenecientes a esta amenaza.
Además, se indica la entrada de registro que crea en el equipo afectado.
Y finalmente, se especifican los dominios y las IPs con las que establece conexión remota.
De este modo se obtiene un fichero con extensión IOC y que corresponde a un XML con el siguiente aspecto:
El fichero generado puede servir como fuente de información para las herramientas anteriormente indicadas. Así mismo, es posible utilizarlo para comprobar si un sistema está comprometido mediante la utilidad gratuita IOC Finder.
Para ello, es necesario ejecutar primero, en el equipo sospechoso, la utilidad con el parámetro «collect» de manera que se recopilen datos como procesos o entradas de registro.
mandiant_ioc_finder.exe collect –o Indicadores
Se debe tener presente que el proceso de recolección es lento, variando el tiempo en base a aspectos como el tamaño ocupado del disco.
Posteriormente, se debe ejecutar la utilidad con el parámetro «report» para comparar las evidencias recopiladas con el IOC que se ha generado previamente.
mandiant_ioc_finder.exe report -s Indicadores -i careto.ioc -t html
El informe generado muestra las siguientes coincidencias:
De este modo se puede confirmar que el equipo analizado está comprometido con Careto.