Cazando con Inteligencia Artificial: Detección de dominios maliciosos (I)

Esta entrada y la serie en su conjunto ha sido elaborada conjuntamente con Ana Isabel Prieto, Sergio Villanueva y Luis Búrdalo.


Internet aporta un mundo de posibilidades para el desarrollo personal y la realización de muchas de las actividades diarias, siendo una pieza indispensable en la sociedad actual. En esta red existen cientos de millones de dominios a los que acceder, aunque por desgracia, no todos ellos son seguros. Los dominios maliciosos son aquellos utilizados por los cibercriminales con el fin de realizar conexiones con servidores command and control, robar credenciales a través de campañas de phishing o distribuir malware.

En muchas ocasiones, estos dominios comparten entre sí ciertas características léxicas que a simple vista pueden llamar la atención. Por ejemplo, en campañas de phishing son relativamente comunes los dominios con TLD xyz, top, space, info, email, entre otros. De igual manera, los atacantes utilizan técnicas DGA (Domain Generation Algorithm) para crear dominios aleatorios con los que exfiltrar información como, por ejemplo, istgmxdejdnxuyla[.]ru. Otras propiedades llamativas pueden ser un exceso de guiones, dominios de varios niveles o dominios que intentan suplantar organizaciones legítimas como sería el caso de amazon.ytjksb[.]com y amazon.getfreegiveaway[.]xyz.

Con la digitalización en auge, las organizaciones navegan a miles de dominios diferentes, lo cual dificulta la detección de dominios maliciosos entre tanto tráfico legítimo. En una organización de tamaño medio, se registra a diario tráfico de entre 3000 y 5000 dominios. Este volumen hace inviable llevar a cabo su análisis de manera manual. Tradicionalmente, parte de este proceso de detección se automatiza mediante reglas de búsqueda de patrones, por ejemplo, reglas para hallar dominios con TLD (Top Level Domain) utilizados en campañas de phishing, que contengan el nombre de grandes empresas y no sean los legítimos o que tengan más de X caracteres.

En los últimos años se ha popularizado el empleo de diversas técnicas y algoritmos de Inteligencia Artificial, especialmente aquellos relacionados con Machine Learning, para llevar a cabo algunas de las tareas del ámbito de la Ciberseguridad, como la detección de dominios maliciosos. A lo largo de tres artículos se verá un ejemplo de cómo se puede emplear este tipo de técnicas y algoritmos para reducir drásticamente la cantidad de información que los analistas de Seguridad han de procesar de manera manual, y automatizar en la medida de lo posible la labor de detección.

Antes de pasar al siguiente artículo, conviene recordar la diferencia entre algoritmos de aprendizaje supervisado y no supervisado. A grandes rasgos, esta diferencia consiste en que los algoritmos supervisados requieren de un conjunto de datos previamente etiquetados con los que ser entrenados para resolver el problema, mientras que los no supervisados no precisan de dicho etiquetado previo, puesto que basan su funcionamiento en la búsqueda de patrones ya existentes en los datos.

En el caso de este post, la detección de dominios se va a llevar a cabo empleando algoritmos no supervisados, de modo que no se necesita un conjunto de datos de entrenamiento en el que se haya llevado a cabo un etiquetado identificando qué dominios son maliciosos y cuáles no.

Para poder aplicar los algoritmos de clasificación no supervisada, es imprescindible construir una base de datos robusta, con una cantidad suficientemente grande y variada de dominios, junto con una serie de características o variables que los definan.

Para la caracterización de dominios se van a calcular una serie de métricas que definen las características léxicas, tanto de cada dominio completo, como de su dominio de nivel secundario (Second Level Domain – SLD) y su dominio de nivel superior (Top Level Domain – TLD). Dichas características léxicas se pueden agrupar en las siguientes categorías:

  • Número o recuento de tipos de caracteres que aparecen en el dominio completo, SLD y TLD. Por ejemplo: número de letras, de dígitos, de caracteres especiales, de puntos, de guiones, de caracteres en mayúscula y minúscula, etc.
  • Longitud del dominio completo, del SLD y del TLD.
  • Ratios entre distintas características ya calculadas, que permiten relacionar entre sí dichas características. Por ejemplo: el ratio entre el número de dígitos y letras de un determinado dominio.
  • Entropía de Shannon. Esta métrica mide el grado de desorden de una palabra, en este caso del nombre de un dominio. Los dominios maliciosos generados por ordenadores suelen ser muy aleatorios, por lo que pueden ser detectados al tener un valor alto de entropía de Shannon en comparación con los valores bajos que obtendrían los dominios legítimos.
  • Presencia de determinadas palabras en el nombre del dominio. Por ejemplo, la palabra “login” suele ser introducida por los atacantes para obtener la información del usuario, por lo que es importante identificar cuando aparezca.
  • Presencia del TLD en listas con los TLD más comunes y sospechosos.

Una vez caracterizado el conjunto de dominios de la base de datos con sus respectivas variables léxicas, en el siguiente artículo se expondrán con detalle los diferentes algoritmos de clasificación no supervisada que se utilizarán para detectar qué dominios tienen unas características léxicas significativamente diferentes del resto y, por tanto, pueden ser etiquetados como anómalos.

Ver también en:

Comments

  1. Mar Valls Núñez says

    Enhorabuena muy buen artículo 👌