Phoenix: Buscando Botnets DGA

En la anterior entrada hablamos sobre Pleiades para detectar malware basado en DGA, es decir, en algoritmos de generación de dominios (DGA). Pleiades principalmente se basa en la búsqueda de respuestas NXDomains analizando el tráfico DNS para detectar dominios maliciosos que son generados aleatoriamente. En esta entrada me gustaría escribir sobre un nuevo sistema llamado Phoenix desarrollado por la Politécnica de Milán, que se basa principalmente en la lingüística y la fonética para detectar dominios maliciosos generados automáticamente por equipos zombies para conectarse a su servidor de Command & Control (C&C).

El sistema Phoenix utiliza sensores pasivos de DNS, preservando la privacidad de los equipos infectados sin afectarle los mecanismos de compartición de IPs, como NAT, que utilizan los operadores de telecomunicaciones.

En primer lugar, Phoenix crea un modelo lingüístico de los dominios benignos. A continuación, los dominios que violan el modelo son considerados como generados automáticamente, es decir, dominios DGA. Después, Phoenix agrupa estos dominios de acuerdo a las relaciones existente entre la IP y el dominio. Por último, Phoenix etiqueta los grupos, ya que todos los dominios de un mismo grupo pertenecerán a la misma botnet. Las etiquetas son importantes para ver la evolución de la botnet (por ejemplo si el servidor de C&C se migra de un sistemas autónomo a otro), y para identificar servidores de C&C no conocidos, es decir, para generar nuevas listas negras.

El sistema Phoenix está dividido en tres módulos. El módulo principal es el módulo de Descubrimiento de DGA, el cual identifica y modela los DGAs extrayendo los caracteres y palabras de los dominios. El módulo de Detección de dominios maliciosos recibe uno o más nombres de dominio con su correspondiente tráfico DNS, y usa el modelo construido por el módulo de Descubrimiento para decir si el nombre de dominio ha sido automáticamente generado. Si es así, este módulo etiqueta el dominio indicando que probablemente se trate de un dominio generado mediante DGA. A continuación el módulo de Inteligencia, correlaciona y monitoriza los resultados de los otros módulos para extraer información significativa de los datos obtenidos (por ejemplo si una botnet basada en DGA aún desconocida se está migrando entre sistemas autónomos, si un dominio previamente ignorado pertenece a una familia en particular de DGA, etc).

 
El módulo de Descubrimiento de DGA recibe flujos de tráfico de DNS (solicitudes y respuestas) desde el sensor de DNS Pasivo, además de nombres de dominios maliciosos desde un sistema de reputación para identificar DGA conocidos. Esta información es públicamente accesible y puede ser obtenida fácilmente desde listas negras o sistemas de reputación de dominios y desde monitores pasivos de DNS públicos que mantienen la privacidad de los usuarios (por ejemplo ISC/SIE).

Este módulo sigue los siguientes tres pasos para reconocer dominios utilizados por botnets basadas en DGA.
  1. Filtrando DGA: Se extrae un conjunto de características lingüísticas desde los nombres de dominio. El objetivo es reconocer los nombres de dominio que parecen ser generados automáticamente. Por ejemplo, se puede diferenciar entre 5ybdiv.cn, que parece un DGA, y searchsmart.tk, que parece ser un dominio benigno o legítimo. Destacar que el sistema Phoenix está basado en la lingüística del idioma Inglés para la detección de DGAs. Ç
    La salida es un conjunto de dominios que han sido generados aleatoriamente, posiblemente generados por diferentes algoritmos.
    En este paso se supone que un dominio generado automáticamente tiene diferentes características lingüísticas que un dominio generado por un humano. Esta suposición es razonable ya que el objetivo principal de un dominio es que sea recordado fácilmente y pueda ser usado por los humanos.

  2. Agrupando los DGA: Se extraen características basadas en la IP, desde el sensor de DNS, de los dominios que se han recibido en el Paso 1. Se usan estas características para agrupar los DGAs que resuelven al mismo conjunto de direcciones IP, es decir que resuelven a los mismos servidores de C&C. Estas agrupaciones se realizarán observando las respuestas DNS. Por ejemplo, si el dominio 5ybdiv.cn y hy093.cn resuelven a la misma IP, se agrupan. Aquí se asume que dominios generados por diferentes algoritmos serán utilizados en distintas botnets, o distintas variantes de malware, o al menos por distintos botmasters, quienes han personalizado el algoritmo a su estrategia de C&C. Por lo tanto, esta partición y agrupación reflejará los distintos grupos de botnets existentes.

  3. Fingerprinting del DGA: Se extraen características de las agrupaciones de dominios realizadas en el paso 2 que definirán la huella o fingerprinting de los algoritmos DGAs. Es importante destacar que las características utilizadas son distintas a las del paso 2. El módulo de Detección usará estas huellas para buscar e identificar dominios aún no conocidos. Por ejemplo, los dominios epu.org y xmsyt.cn tendrán distinta huella.
El módulo de Detección de dominios maliciosos recibe nombres de dominios, lo cuales pueden ser benignos o maliciosos, y los hace pasar de nuevo por el filtrado para comprobar si han sido generados automáticamente. Los nombres de dominio que pasen este filtro se someten a otras comprobaciones, las cuales pueden hacer que finalmente no se categoricen como pertenecientes a un DGA (por ejemplo si no coincide con ninguna huella). Por lo tanto, en este paso, se puede llegar a etiquetar un dominio como benigno y no perteneciente a un DGA. Aunque es más importante no descartar dominios sospechosos. Por tanto, sólo para este módulo, se configura el filtrado con un umbral más bajo, para que no descartemos dominios que presenten, aunque ligeramente, las características lingüísticas que son típicamente de los dominios maliciosos. Es decir, si hay que monitorizar un dominio porque se piense que pueda ser malicioso se hará, en lugar de decidir y precisar si el dominio es maligno o no. Entonces, este módulo aprovecha las agrupaciones de dominios maliciosos y sus correspondientes huellas para encontrar nuevos algoritmos de generación de dominios maliciosos.

Una vez que un dominio ha sido etiquetado como malicioso, el módulo de Inteligencia puede registrar al dominio como perteneciente a un DGA conocido. Por lo tanto, la salida de los módulos anteriores permiten a este módulo extraer información simplificada y actualizada de los dominios. Con esta información, las direcciones de los servidores de C&C y las listas de dominios maliciosos se agrupan en pequeños conjuntos, lo que facilita el análisis considerándolas todas en una sola lista. Por ejemplo, si un analista sabe que 100 dominios son maliciosos, puede usar las etiquetas para dividirlos en conjuntos más pequeños: uno que contiene los nombres de dominios similares a 5ybdiv.cn y hy093.cn, y otro con dominios similares a epu.org. La similitud no significa que solamente tengan semejanzas lingüísticas, sino que también se considera otras características basadas en nombre de DNS e IP. El TLD tampoco es distintivo, aunque se usa como ejemplo. Con esta información, el analista puede rastrear por separado la evolución de las IPs de dos grupos de dominios distintos. Por ejemplo, detectar cuando un servidor de C&C se migra a un nuevo sistema autónomo es fácil cuando el conjunto de IPs y dominios es pequeño y las características del DGA son conocidas y uniformes.

Al igual que el sistema Pleiades tiene limitaciones, el sistema Phoenix también las tiene. En primer lugar, necesita previamente conocer dominios maliciosos generados aleatoriamente. Además, el estudio tan solo está hecho para la fonética y lingüística del idioma Inglés, lo que si intentamos analizar dominios de otras lenguas será ineficiente. Por último, si el dominio que genera el DGA es pronunciable, este sistema no lo detectaría como DGA.

Un saludo amigos y recuerda, los comentarios te esperan para cualquier idea que te surja.

Commentaires