Precisa de computação em nuvem? Comece agora mesmo

Famílias DGA com Dynamic Seeds: Comportamento inesperado no tráfego DNS

Akamai Wave Blue

escrito por

Connor Faulkner e Stijn Tilborghs

September 06, 2023

Connor Faulkner

escrito por

Connor Faulkner

Connor Faulkner tem formação em astrofísica e é movido pela curiosidade e pela paixão por decifrar sistemas complexos. Ele é um analista de dados exclusivo do Akamai Security Intelligence Group, que explora o cenário complexo da detecção de ameaças.

Foto de Stijn Tilborghs

escrito por

Stijn Tilborghs

Stijn Tilborghs é um engenheiro eletrônico que decidiu migrar para a ciência de dados em 2016. Sua renda nos primeiros meses na área foi competindo por prêmios em dinheiro em hackathons de machine learning. Depois de trabalhar como freelancer por alguns anos, ele agora faz parte da equipe de pesquisa de ameaças da Akamai, buscando soluções inovadoras para o cenário global e dinâmico das ameaças.

A closer look at the Pushdo and Necurs DGA families reveals that they output malicious domains both before and after their expected generation dates.

Editorial e comentários adicionais por Tricia Howard e Lance Rhodes 

Resumo executivo

  • Os pesquisadores da Akamai revelam e explicam por que, nos dados de tráfego do Domain Name System (DNS), observamos comportamento de famílias de algoritmo de geração de domínio, ou DGA (Domain Generation Algorithm) de inoculação dinâmica que é diferente do que seu algoritmo de engenharia reversa parece sugerir.

  • O comportamento modificado sugere que os agentes mal-intencionados estão tentando aumentar ainda mais a capacidade das famílias DGA de estender a vida útil de seus canais de comunicação de comando e controle (C2), protegendo assim seus botnets.

  • Os pesquisadores de segurança acham mais complexo prever os nomes de domínio gerados no futuro para DGAs propagados dinamicamente do que para DGAs propagados estaticamente. 

  • Uma análise mais detalhada das famílias Pushdo e Necurs DGA revela que elas produzem domínios mal-intencionados antes e depois de suas datas de geração esperadas.

Introdução

Nesta publicação no blog, daremos uma breve visão geral dos DGAs e, em seguida, compartilharemos algumas descobertas interessantes.

O Grupo de inteligência de segurança da Akamai é capaz de analisar registros anônimos de consultas DNS originadas de CacheServe DNS CacheServe. Como parte de nossos esforços de detecção de botnet, observamos e monitoramos o comportamento real de mais de 100 famílias conhecidas de DGA. 

Descobrimos que DGAs propagados dinamicamente (um subconjunto de DGAs) geralmente exibem um comportamento muito diferente do que algoritmo de DGA em engenharia reversa parece sugerir. Mais precisamente, vemos os nomes de domínio DGA sendo ativados antes da data de geração esperada. 

O que são algoritmos de geração de domínio? 

Malware, como botnets, geralmente precisam se comunicar com um servidor centralizado para receber comandos ou atualizações. 

DGAs são algoritmos usados em malware para gerar um grande número de nomes de domínio semialeatórios.

Um dispositivo infectado tentará conectar-se regularmente a todo o conjunto de domínios gerados por algoritmos fornecidos pelo DGA. Apenas um domínio precisa ser alcançado com êxito para estabelecer uma conexão com o servidor C2. Isso dificulta que os pesquisadores de segurança cibernética eliminem a comunicação de C2.

Como funciona

Por exemplo, imagine um botnet usando uma família ou variante hipotética de DGA que gera 500 nomes de domínio mal-intencionados por dia.

Um dispositivo infectado usando essa família DGA consultará todos os 500 nomes de domínio a cada dia. O servidor C2 do botnet gerará os mesmos 500 nomes de domínio em cada dia (presumimos que a mesma semente esteja sendo usada, mais adiante). No entanto, o agente mal-intencionado só precisa controlar 1 desses 500 domínios para que a comunicação com as máquinas infectadas (bots) seja estabelecida.

Às vezes, a semente muda, o que gera um novo conjunto de domínios, e o processo começa novamente. Isso dificulta que os pesquisadores de segurança bloqueiem o tráfego mal-intencionado à medida que os domínios mudam com frequência e, muitas vezes, são domínios de aparência aleatória, como "ghlidae[.]com".

Os domínios de nível superior, ou TLDs (Top-Level Domains), são codificados e, na maioria das vezes, limitados a TLDs que são baratos de adquirir.

Existem muitos DGAs diferentes. Quando a comunidade de segurança descobre um novo algoritmo (e às vezes consegue fazer engenharia reversa), normalmente recebe um “nome de família”. Algumas das famílias mais conhecidas de DGA são Conficker, Mirai, e CryptoLocker.

A história dos DGAs 

Malware como botnets, crimeware, e ransomware precisam se comunicar com seus dispositivos infectados. Antes de os DGAs existirem, os autores de malware simplesmente codificavam o domínio, ou uma lista de domínios, no código de malware. As máquinas infectadas tentariam conectar-se regularmente a esses domínios codificados para estabelecer comunicação com o servidor C2.

Depois que as equipes de segurança detinham o código-fonte do malware, era uma tarefa simples colocar todos esses domínios codificados em uma lista de bloqueios.

Pesquisadores: 1. Bandidos: 0.

A primeira família de malware a implementar DGAs foi a família Kraken no início de 2008. No entanto, mais tarde naquele ano, a família Conficker tornaria os DGAs populares.

Conficker.A gerou 250 nomes de domínio por dia. Conficker.C fez então ainda mais e gerou maciços 50.000 domínios por dia. Isso resultou em equipes de segurança que, de repente, precisavam detectar e bloquear inúmeros novos domínios todos os dias. Os agentes mal-intencionados, por outro lado, precisavam controlar apenas um desses nomes de domínio todos os dias.

Pesquisadores: 1. Bandidos: 1.

Aumento nas comunicações robustas de C2

Os DGAs tornaram possível aumentar a robustez da comunicação de C2, permitindo o desenvolvimento adicional de: 

  • Ataques de negação de serviço distribuída (DDoS)

  • Criptomineração

  • Venda de informações confidenciais de dispositivos comprometidos

  • Spyware

  • Publicidade e fraude de e-mail

  • Disseminação automática de malware

Estas são algumas das campanhas que continuam a prejudicar a comunidade de segurança virtual até hoje. Os DGAs têm se mostrado muito eficazes.

O que são Dynamic Seeds e Static Seeds?

Existem duas categorias principais de DGAs: Dynamic Seeds e Static Seeds. Para entender a diferença, devemos primeiro entender o conceito de “seed”, ou “semente”.

A semente é essencialmente uma entrada inicial para um gerador de números pseudoaleatórios, ou PRNG (Pseudorandom Number Generator). A semente tem um impacto direto na saída de qualquer algoritmo que usa um PRNG.

Por exemplo, uma família DGA específica usando uma semente de 42 sempre dará saída à mesma lista exata de nomes de domínio. Alterar a semente para outra coisa, como 50, levará a um resultado completamente diferente.

Como você pode imaginar, a semente desempenha um papel crítico para DGAs. Os dispositivos de botnet infectados não só precisam usar o mesmo algoritmo DGA que os servidores C2 com os quais precisam entrar em contato, mas também precisam usar a mesma semente.

As sementes de DGA podem ser geradas de várias formas e com base em várias fontes

Quando as sementes DGA não mudam com o tempo (muitas vezes codificadas), chamamos de DGAs propagados estaticamente.

Alguns DGAs usam sementes que mudam com o tempo. Chamamos esses DGAs de inoculação dinâmica.

DGAs propagados estaticamente

Sementes estáticas podem ser números aleatórios, nomes de celebridades, a Declaração da Independência, um dicionário de palavras ou qualquer coisa que um ator mal-intencionado possa trocar por algo mais com facilidade.

Essas sementes geralmente permanecem constantes por um longo período e geram uma sequência consistente de nomes de domínio.

Essas combinações de DGA e sementes permanecem eficazes apenas enquanto o algoritmo não for projetado de forma reversa e a semente não for descoberta por pesquisadores de cibersegurança. Quando esse ponto for atingido, todos os nomes de domínio gerados serão rapidamente colocados em listas de bloqueio. O agente mal-intencionado terá que alterar a semente para gerar uma nova lista de nomes de domínio.

Internamente, referimos DGAs estaticamente semeados como simplesmente “DGAs estáticos” e usaremos esse termo para o restante desta publicação.

DGAs propagados dinamicamente

DGAs propagados dinamicamente (ou simplesmente “DGAs dinâmicos”) tentam complicar ainda mais a vida dos pesquisadores de segurança.

DGAs dinâmicos usam sementes dependentes do tempo. A data atual é mais comumente usada. Há também DGAs que usam taxas de câmbio, temperaturas e até mesmo tópicos de tendências do Google Trends ou do Twitter.

Quando a semente é previsível, os pesquisadores de segurança podem prever quais nomes de domínio o DGA produzirá em um determinado momento no futuro. É claro que a condição é que a família DGA tenha sido reversa e bem-sucedida. 

Se a semente for baseada na data, geralmente vemos o mesmo conjunto de nomes de domínio em janelas de 24 horas (ou seja, a cada dia, logo após a meia-noite, um novo conjunto de domínios é gerado).

Saber quais domínios DGA serão ativados amanhã nos permite colocar de forma proativa esses domínios em nossas listas de bloqueio para proteger os usuários finais de botnets.

Infelizmente, esse cenário não é possível com sementes imprevisíveis, como Google Trends, temperaturas ou taxas de câmbio. Mesmo que tenhamos o código-fonte da família, não podemos prever corretamente nomes de domínio DGA gerados no futuro.

DGAs dinâmicos: Expectativa x Realidade

Nossa equipe de pesquisa observou e investigou comportamentos inesperados em mais de uma dúzia de DGAs. Vejamos os comportamentos de dois especialmente interessantes.

Ambos os exemplos são famílias DGA dinâmicas que usam a data como semente. Isso significa que, ao combinar a semente (a data) com a DGA de engenharia reversa, devemos ser capazes de prever quais nomes de domínio aparecerão, e quando, nos logs de consulta de DNS.

Compararemos nossas previsões com o que realmente vimos nos dados de tráfego de DNS.

Por razões de brevidade, ao longo do resto desta seção, vamos simplesmente utilizar “DGA” ou “família DGA” como abreviatura para as famílias “DGA dinâmicas que usam a data como semente”.

Unique number of domains seen in traffic Fig. 1: A generalized view of DGAs in traffic

Uma visão dos DGAs nos dados de tráfego

A Figura 1 nos dá uma visão generalizada dos DGAs em nossos dados de tráfego. Para transmitir corretamente a intuição por trás disso, precisamos de um pouco de contexto.

Primeiro, vamos definir os eixos.

  • O eixo x representa a diferença de tempo (medida em número de dias) entre a data esperada (a data de propagação) e a data observada em que vemos nomes de domínio da família DGA nos dados de tráfego DNS.

  • O eixo y é o número exclusivo dos domínios vistos nos dados de tráfego.

Esperamos que a semente mude a cada 24 horas; ou seja, todos os dias, logo após a meia-noite, o DGA ativará um novo conjunto de nomes de domínio a partir da nova semente. Isso sugere que temos uma janela com o mesmo conjunto de nomes de domínio por 24 horas e, em seguida, ele muda. Isso é representado pela plotagem vermelha. O barra vermelha mostra o que esperamos ver dessas famílias DGA em um mundo ideal sem latência.

À direita, representada pela barra roxa, está o que esperamos ver quando consideramos a latência em vários estágios, antes que os dados de DNS cheguem aos nossos sistemas. A maioria das latências só causará uma ligeira mudança para a direita, geralmente medida em minutos ou horas em vez de dias, a menos que seja por projeto.

À esquerda, no entanto, é algo inesperado, representado pela barra verde. O que está acontecendo aqui? Observamos os nomes de domínio do DGA antes de suas datas teóricas de geração!

Esse comportamento estranho sugere que os agentes mal-intencionados modificaram esses DGAs para complicar ainda mais a detecção e proteger suas atividades mal-intencionadas.

Tráfego da família Pushdo

Unique number of domains seen in traffic Fig. 2: Pushdo malware family

Para a família Pushdo, esperamos ver todos os domínios consultados em uma janela de 24 horas entre 0 e 1 dias no eixo x (Figura 2). Isso é representado pela área sombreada em vermelho.

O que realmente observamos é uma distribuição de nomes de domínio exclusivos no tráfego de -50 a +50 dias a partir da data esperada. O pico está em 10.000, logo antes da marca zero.

Parece que a semente (a data) foi deslocada até 50 dias através de algo que se parece com uma distribuição normal.

O código Python para isso pode ser algo como:

  import numpy as np
  import pandas as pd
  from datetime import datetime

seed = datetime.now().date()
shift = np.random.normal(loc=0, scale=15, size=1).astype(int)[0]
modified_seed = seed + pd.to_timedelta(f'{shift} days')

Interpretamos isso como uma tentativa de um ator mal-intencionado de frustrar ou confundir pesquisadores de segurança.

Felizmente, isso não nos confunde!  Nossos sistemas de detecção de DGA cobrem todo o espectro visível na Figura 2.

Tráfego de família Necurs

Unique number of domains seen in traffic Fig. 3: Necurs malware family

Para a família Necurs, vemos uma distribuição de nomes de domínio exclusivos de -7 a +7 dias (Figura 3). Há também um pico muito menor em torno da marca de mais de 12 dias, mas é grande o suficiente para ser considerado o produto do projeto.

Isso sugere que um subconjunto de agentes mal-intencionados está esperando por tempo suficiente para usar o mesmo conjunto de domínios, mas mudando seu uso até depois de 7 dias de sua data esperada, atrasando nomes de domínio por esses 7 dias.

Conclusão

Ao analisar a atividade de DGAs propagados dinamicamente em solicitações de DNS, observamos algum comportamento inesperado. Concluímos que essas anomalias podem ser atribuídas a agentes mal-intencionados que modificam as sementes de DGA de várias maneiras. Ambas as famílias DGA que examinamos, Pushdo e Necurs, produzem domínios maliciosos antes e depois da data de geração esperada, até 50 dias antes e depois da data de geração esperada.

Nossa análise sugere que isso está sendo feito como uma tentativa de evitar sistemas de detecção de DGA e complicar o trabalho das equipes de pesquisa de segurança. Embora agentes mal-intencionados continuem a procurar maneiras de proteger seus botnets e estender a vida útil de seus canais de comunicação de C2, é tarefa dos pesquisadores de segurança contrariar essas medidas e identificar melhor o que é real em comparação ao que é esperado.

Fique atento

Você pode encontrar nossa pesquisa de segurança em tempo real seguindo-nos no Twitter.



Akamai Wave Blue

escrito por

Connor Faulkner e Stijn Tilborghs

September 06, 2023

Connor Faulkner

escrito por

Connor Faulkner

Connor Faulkner tem formação em astrofísica e é movido pela curiosidade e pela paixão por decifrar sistemas complexos. Ele é um analista de dados exclusivo do Akamai Security Intelligence Group, que explora o cenário complexo da detecção de ameaças.

Foto de Stijn Tilborghs

escrito por

Stijn Tilborghs

Stijn Tilborghs é um engenheiro eletrônico que decidiu migrar para a ciência de dados em 2016. Sua renda nos primeiros meses na área foi competindo por prêmios em dinheiro em hackathons de machine learning. Depois de trabalhar como freelancer por alguns anos, ele agora faz parte da equipe de pesquisa de ameaças da Akamai, buscando soluções inovadoras para o cenário global e dinâmico das ameaças.