La detección de las amenazas se realiza en buena parte a partir de indicadores de compromiso. Estos indicadores son observables que identificamos en la gestión de un incidente o en una investigación, que nos llegan de terceros en forma de feeds de inteligencia, que descargamos de plataformas como MISP, que compartimos entre grupos de trabajo… En definitiva, los descubrimos o nos los descubren. Pero ¿de dónde vienen estos indicadores? De una u otra forma los indicadores, parte fundamental para la caracterización de una amenaza (actor, operación…) provienen del análisis de inteligencia. En este post vamos a comentar el camino desde la adquisición de información hasta la generación de indicadores de compromiso para la detección de una amenaza. Este camino se resume en la figura siguiente:
Todos sabemos que las diferentes disciplinas de adquisición de inteligencia juegan un papel fundamental en la detección de amenazas en el ciberespacio. En este ámbito ciber cada una de estas disciplinas (simplificando, SIGINT, MASINT, HUMINT, OSINT y GEOINT) tiene un peso específico y aporta un valor determinado, conformando la base de lo que llamamos ciber inteligencia. Por ejemplo, el rol de la inteligencia de señales tiene habitualmente mucho más peso que el de la inteligencia geoespacial, y las fuentes humanas aportan mucha menos inteligencia que las señales, pero bien manejadas, de mucho más valor.
Todas las disciplinas de adquisición permiten generar inteligencia en tres niveles. En el más alto, el estratégico, encontramos inteligencia ligada a aspectos como la atribución de una operación hostil, los objetivos de un actor o la estrategia definida para lograrlos. Aunque evidentemente es muy relevante para caracterizar a una amenaza, esta inteligencia no es observable de forma directa, por lo que es difícil de convertir en inteligencia accionable.
Por debajo de la inteligencia estratégica encontramos la inteligencia operacional, en la que identificamos tácticas y técnicas de los actores hostiles y, por último, en el nivel inferior encontramos la inteligencia táctica, que permite identificar observables de bajo nivel ligados a una amenaza: direcciones IP, hashes… casi todo lo que habitualmente encontramos en un MISP. La inteligencia generada en ambos niveles ya puede convertirse en inteligencia accionable, inteligencia que permite una toma de decisiones ágil y eficiente (no entraremos en la calidad de la inteligencia de ninguno de los niveles, que es una discusión muuuuy larga para otro post).
A partir de esta inteligencia accionable, tanto de las tácticas y técnicas (inteligencia operacional) como de los observables de bajo nivel (inteligencia táctica), especificamos indicadores de compromiso que nos permiten detectar amenazas. Estos indicadores pueden ser tanto conductuales (los que especifican tácticas y técnicas) como de menor nivel (atómicos o computados). Evidentemente, los indicadores conductuales aportan mucho más valor a la detección que los indicadores de menor nivel. Tienen un mayor tiempo de vida y son más difíciles de modificar por parte del actor hostil, por lo que la capacidad de detección que proporcionan es mucho más valiosa.
El despliegue de indicadores de compromiso en nuestra infraestructura de seguridad, y el intercambio de los mismos con terceros, permiten la detección ágil de las amenazas. Aunque idealmente deberíamos trabajar con indicadores conductuales, en la práctica la mayor parte de IOC que encontramos en plataformas de intercambio, como MISP son indicadores de bajo nivel, sobre todo IP, dominios, mutexes…
Veamos un ejemplo que recorre el camino completo. El análisis de un código dañino nos proporciona el hash del ejecutable y una dirección IP de mando y control a la que conecta para recibir órdenes. En este caso, a partir de la inteligencia de fuentes técnicas (MASINT en nuestra clasificación) generamos una inteligencia táctica que especificamos de manera directa en forma de indicadores de compromiso. Podemos desplegar ambos indicadores de bajo nivel en nuestros sistemas de seguridad, por ejemplo, tanto el hash como la IP en nuestro XDR y adicionalmente la IP en los sistemas de seguridad perimetral. Con estos indicadores desplegados, ya somos capaces de detectar la presencia de este código dañino en nuestra organización (e incluso de bloquear su actividad). No obstante, si tenemos ese mismo código cambiando su hash o usando una IP diferente para mando y control, cambios triviales para el actor hostil, no somos capaces de detectarlo. Adicionalmente, el análisis de inteligencia técnica puede generar inteligencia operacional y proporcionarnos un indicador conductual: por ejemplo una secuencia de peticiones HTTPS para mando y control, en un intervalo específico o con un patrón determinado, sin importar el destino al que se envíe el tráfico. Si somos capaces de especificar este comportamiento, por ejemplo en nuestro SIEM, seremos capaces de detectar la actividad del código dañino incluso aunque cambie su IP de mando y control o su hash. De esta manera, si el actor hostil quiere pasar desapercibido, estamos obligándole a que modifique en mayor profundidad su código para que se comporte de forma diferente, lo que evidentemente es más caro que cambiar una IP o un hash.
Los indicadores de compromiso pueden ser cargados en los dispositivos de seguridad de las organizaciones y proporcionan resultados inmediatos. Ya hablamos en un post en Security Art Work, hace tres años, sobre los tipos de indicadores y de su utilidad. Pero, sobre todo, de la problemática de trabajar principalmente con indicadores de bajo nivel y no trabajar con indicadores conductuales. Simplificando, mientras sigamos trabajando con estos indicadores de bajo nivel (de nuevo, casi todo lo que podemos encontrar en un MISP: hashes, IP, nombres de dominio…) la detección de amenazas avanzadas es compleja; siempre lo es, pero si no somos capaces de especificar y compartir inteligencia operacional, lo tendremos más difícil todavía.