Algoritmos de Geração de Domínio (DGAs) são uma classe de algoritmos que geram periódica e dinamicamente um grande número de nomes de domínio. Normalmente, os domínios são usados por malware e botnets como pontos de encontro para facilitar o retorno de chamada para os servidores de comando e controle do agente malicioso. Os DGAs permitem que o malware gere dezenas de milhares de domínios por dia, a grande maioria deles não registrados. O enorme número de domínios não registrados é usado para mascarar os registrados, permitindo que os botnets infectados evitem a detecção e a dissuasão por sistemas de detecção de segurança baseados em assinatura ou reputação de IP.
A primeira família de malware conhecida a usar um DGA foi o Kraken em 2008. Mais tarde naquele ano, o worm Conflicker empurrou a tática DGA para a notoriedade. Mesmo depois de 10 anos, ainda é possível encontrar o Conflicker ou uma de suas variantes em algumas das redes atuais.
Junto com a proliferação crescente de malware, o uso de DGAs se tornou mais difundido.
Os objetivos da detecção de DGA
Como a atividade DGA é um indicador considerável de comprometimento, torna-se crítico detectar tais atividades em sua rede. Existem três níveis de detecção de DGA, com cada nível subsequente correlacionado a um aumento na gravidade. A detecção em níveis posteriores é mais difícil, mas mais crítica.
Se um DGA for detectado, isso significa que um ou mais de seus sistemas foram infectados por malware baseado em DGA e se tornaram botnets. Algumas ações precisam ser executadas. O primeiro objetivo é identificar os sistemas afetados, limpando-os adequadamente ou colocando-os em quarentena para evitar a escalada.
O próximo objetivo é determinar se um determinado nome de domínio DGA está registrado. Se o domínio estiver registrado, ele se tornou um servidor de Comando e Controle ativo, o que representa um grande risco para sua rede. Os sistemas infectados, agora botnets, podem usar esses servidores para ligar para casa e receber comandos do atacante malicioso. Portanto, o segundo componente de um sistema de detecção de DGA eficaz é a capacidade de diferenciar os domínios registrados dos não registrados.
Por exemplo, um DGA pode gerar 1000 domínios, de xyzwer1, xyzwer2…. para xyzwer1000. O hacker só precisa registrar um domínio, ou seja, xyzwer500, não os outros 999 domínios. Se o domínio registrado e seu IP associado puderem ser identificados, as informações podem ser usadas para bloquear o canal de comunicação entre o sistema de destino e o servidor de Comando e Controle. Além disso, a inteligência deve ser propagada para todos os outros sistemas de prevenção ou detecção em vigor para obstruir o retorno de chamada para esse servidor de qualquer sistema na rede.
O último, porém mais crítico, objetivo de um sistema de detecção DGA é determinar se o retorno de chamada foi bem-sucedido com os domínios registrados e se o contato foi feito entre o (s) sistema (s) infectado (s) e o servidor de Comando e Controle. Se tal atividade for detectada, algum dano pode já ter sido feito. Talvez o malware em sua rede tenha sido atualizado ou um novo malware tenha sido instalado. Os dados confidenciais podem ter sido filtrados.
Como funciona a detecção DGA?
A atividade DGA é detectada pela captura e análise de pacotes de rede, geralmente em cinco etapas gerais.
Etapa 1 - Detectar o aplicativo DNS
A detecção começa por meio de mensagens de solicitação e / ou resposta de DNS. DNS é um protocolo fundamental da Internet, e a maioria dos firewalls tem uma política que permite o tráfego de saída de DNS em sua porta 53 reservada. No entanto, um hacker pode aproveitar a porta 53 para enviar seu tráfego sem aderir ao formato de mensagem DNS padrão. Esse ataque é chamado de túnel DNS. Um mecanismo de inspeção profunda de pacotes (DPI) é recomendado para identificar os aplicativos DNS com mais precisão.
Etapa 2 - Extrair nomes de domínio
Depois que um aplicativo de rede é identificado como DNS, os nomes de domínio nas mensagens de consulta e resposta DNS precisam ser extraídos. Para extrair o nome de domínio correto, o conteúdo da mensagem DNS precisa ser analisado cuidadosamente e um mecanismo de DPI é necessário para executar essa tarefa.
Etapa 3 - detectar qualquer DGA
A análise precisa ser realizada nos domínios extraídos das mensagens DNS para determinar se eles são DGAs. Esta é talvez a etapa mais complicada. O desafio é reduzir os falsos positivos e também os falsos negativos. Os mecanismos de detecção evoluíram dramaticamente nos últimos 10+ anos.
Alguns mecanismos são baseados na relativamente simples Entropia de Shannon.
https://www.splunk.com/blog/2015/10/01/random-words-on-entropy-and-dns.html
Alguns mecanismos são baseados em Ngrams mais sofisticados, conforme apresentado por Fyodor na conferência Hitb
Ultimamente, com a popularização do aprendizado de máquina, suas metodologias também foram aplicadas à detecção de DGA. O aprendizado de máquina pode combinar os recursos de Ngrams, Shannon Entropy, bem como o comprimento dos nomes de domínio para influenciar as decisões. Vários modelos de aprendizado de máquina foram testados. Há uma postagem de blog muito boa de Jay Jacobs em 2014 que descreve o processo.
Aqui está outro detector DGA de código aberto baseado em Aprendizado de Máquina com Cadeia de Markov:
https://github.com/exp0se/dga_detector
Etapa 4 - Detectar domínios DGA registrados
Para detectar se um nome de domínio DGA está registrado, as respostas DNS precisam ser verificadas. Apenas rastrear as solicitações de DNS não é suficiente - o sistema de detecção deve rastrear toda a transação para facilitar a correlação entre as informações.
Etapa 5 - Detectar tráfego para domínios DGA registrados
Quando a maioria dos sistemas de detecção DGA existentes se concentra em detectar se um nome de domínio é um domínio DGA, eles geralmente esquecem a última pergunta, a mais importante: há algum tráfego que foi enviado para os domínios DGA registrados? Para detectar isso em tempo hábil, a detecção de domínio DGA deve estar intimamente associada à inspeção de tráfego de rede. Os resultados precisam ser ecoados de volta para o mecanismo de inspeção de tráfego imediatamente antes que qualquer dano seja feito.
Etapa 6 - Bloqueio do tráfego para domínios DGA registrados
Embora não seja tecnicamente uma parte da detecção, se houver uma integração com um sistema de prevenção como um Firewall ou IPS, uma regra deve ser inserida imediatamente para bloquear todo o tráfego para os domínios registrados.
Um ótimo sistema de detecção de DGA deve executar todas as 5 etapas. Um excelente sistema de detecção de DGA também deve incluir a Etapa 6. Infelizmente, a maioria dos sistemas de detecção de DGA atuais param na etapa 3 ou na etapa 4.
Conclusão
Como os DGAs são difíceis de detectar com sistema de prevenção ou detecção baseado em assinatura ou reputação, eles se tornaram bastante populares entre os desenvolvedores de malware.
Um sistema de detecção inteligente é necessário para realizar a detecção. Um excelente sistema de detecção de DGA deve extrair informações de nome de domínio de transações DNS, realizar análises completas para detectar o status de DGA, verificar o status de registro de domínios suspeitos, correlacionar-se com a inspeção de tráfego de rede para avaliar o nível de comprometimento e, idealmente, integrar-se com sistemas de prevenção para evitar mais compromisso. Para reduzir tanto os falsos positivos quanto os falsos negativos, o aprendizado de máquina deve ser considerado seriamente. Somente com inteligência abrangente e abrangente em cada estágio a ameaça pode ser realmente atenuada.
Recursos
O repositório no Github por Andrey Abakumove contém algoritmos para gerar nomes de domínio, bem como dicionários de nomes de domínio maliciosos.


