Los algoritmos de generación de dominios (DGA) son algoritmos que se ven en varias familias de malware y que se utilizan para generar periódicamente una gran cantidad de nombres de dominio que pueden usarse como puntos de encuentro con sus servidores de comando y control . La gran cantidad de posibles puntos de encuentro dificulta que las fuerzas del orden apaguen eficazmente las botnets , ya que las computadoras infectadas intentarán comunicarse con algunos de estos nombres de dominio todos los días para recibir actualizaciones o comandos. El uso de criptografía de clave pública en el código de malware hace que sea inviable para las fuerzas del orden y otros actores imitar comandos de los controladores de malware, ya que algunos gusanos rechazarán automáticamente cualquier actualización que no esté firmada por los controladores de malware.
Por ejemplo, una computadora infectada podría crear miles de nombres de dominio como: www.<galimatías>.com e intentaría contactar con una parte de ellos con el fin de recibir una actualización o comandos.
Incrustar el DGA en lugar de una lista de dominios generados previamente (por los servidores de comando y control) en el binario no ofuscado del malware protege contra un volcado de cadenas que podría introducirse en un dispositivo de lista negra de red de manera preventiva para intentar restringir la comunicación saliente de los infectados. hosts dentro de una empresa.
La técnica fue popularizada por la familia de gusanos Conficker .a y .b que, al principio, generaban 250 nombres de dominio por día. Comenzando con Conficker.C, el malware generaría 50.000 nombres de dominio cada día, de los cuales intentaría contactar con 500, dando a una máquina infectada una posibilidad del 1% de ser actualizada cada día si los controladores de malware registraran sólo un dominio por día. Para evitar que las computadoras infectadas actualicen su malware, las autoridades habrían necesitado registrar previamente 50.000 nuevos nombres de dominio cada día. Desde el punto de vista del propietario de la botnet, sólo tiene que registrar uno o unos pocos dominios de los varios dominios que cada bot consultaría todos los días.
Recientemente, la técnica ha sido adoptada por otros autores de malware. Según la firma de seguridad de redes Damballa , las cinco familias de crimeware basadas en DGA más frecuentes son Conficker, Murofet, BankPatch, Bonnana y Bobax en 2011. [1]
DGA también puede combinar palabras de un diccionario para generar dominios. Estos diccionarios pueden estar codificados en malware o tomados de una fuente de acceso público. [2] Los dominios generados por el diccionario DGA tienden a ser más difíciles de detectar debido a su similitud con los dominios legítimos.
def generar_dominio ( año : int , mes : int , día : int ) -> str : """Generar un nombre de dominio para la fecha dada.""" dominio = "" para i en el rango ( 16 ): año = (( año ^ 8 * año ) >> 11 ) ^ (( año & 0xFFFFFFF0 ) << 17 ) mes = (( mes ^ 4 * mes ) >> 25 ) ^ 16 * ( mes & 0xFFFFFFFF8 ) día = (( día ^ ( día << 13 )) >> 19 ) ^ (( día & 0xFFFFFFFE ) << 12 ) dominio += chr ((( año ^ mes ^ día ) % 25 ) + 97 ) devolver dominio + ".com"
Por ejemplo, el 7 de enero de 2014, este método generaría el nombre de dominio intgmxdeadnxuyla.com
, mientras que al día siguiente devolvería axwscwsslmiagfah.com
. De hecho, este sencillo ejemplo fue utilizado por malware como CryptoLocker , antes de cambiar a una variante más sofisticada.
Los nombres de dominio DGA [3] se pueden bloquear mediante listas negras, pero la cobertura de estas listas negras es pobre (listas negras públicas) o tremendamente inconsistente (listas negras de proveedores comerciales). [4] Las técnicas de detección pertenecen a dos clases principales: reaccionarias y en tiempo real. La detección reaccionaria se basa en técnicas de agrupamiento no supervisadas e información contextual como respuestas de red NXDOMAIN, [5] información de WHOIS , [6] y DNS pasivo [7] para realizar una evaluación de la legitimidad del nombre de dominio. Los intentos recientes de detectar nombres de dominio DGA con técnicas de aprendizaje profundo han tenido mucho éxito, con puntuaciones F1 superiores al 99 %. [8] Estos métodos de aprendizaje profundo suelen utilizar arquitecturas LSTM y CNN , [9] aunque las incrustaciones profundas de palabras se han mostrado muy prometedoras para detectar DGA de diccionario. [10] Sin embargo, estos enfoques de aprendizaje profundo pueden ser vulnerables a técnicas adversas . [11] [12]