Ir para conteúdo

DGA - Domain Generation Algorithm


Sh3rl0ck

Posts Recomendados

O DGA (Domain Generation Algorithm) é um algoritmo que tem como objetivo gerar domínios pseudo aleatórios, podendo fazer a variação tanto somente no nome do domínio e mantendo o Top Level Domain (.<domínio_gerado>.com) ou gerar variação de ambos os dois (<domínio_gerado>.<tld_gerado>). Em alguns casos não se utiliza um algoritmos de geração de string de forma pseudo aleatória e sim busca de uma word list online na Internet.

Este algorítimo é muito utilizado em malwares de vários tipos como worm, ransomware, botnets (que não são exatamente malware), dentre outros. Dentre os vários malwares que o utilizam pode-se citar o CryptoLocker e Zeus Trojan.

A saída desse algoritmo é utilizado para o comando e controle do malware, sendo que a estratégia aqui é que nem todos os domínios gerados vão funcionar, geralmente apenas um ou um pouco mais que isso vão ser domínios válidos para o comando e controle, além do fato de que mesmo esses domínios validos estarão sempre online, pois geralmente o atacante só necessita que eles fiquem ativos por um breve período de tempo em alguns casos.

Existe várias vantagem para o atacante em trabalhar desta forma:

  • Quem for analisar o malware de forma estática e realizar uma varredura por strings, não irá localizar as urls, pois somente serão criadas em tempo de execução;
  • Se um antivírus for realizar uma varredura no arquivo de forma estática, ele não vai identificar as urls e como alguns focam nessa etapa em verificar se tem urls maliciosas conhecidas se baseando em uma black list, o mesmo não irá identificar já que não foi gerado;
  • Dará um enorme trabalho para equipe de defesa identificar qual é a verdadeira, por exemplo, o algoritmo gera 50,000 domínios por dia e apenas 1 é o verdadeiro. Em alguns casos é importante descobrir a URL, tanto para achar a origem como em casos de necessitar bloquear ou registrar o domínio, que nem o caso do WannaCry, se ele usa-se esse algorítimo, teria se levado um tempo muito maior para parar o ataque;
  • Pode ocorrer de se conseguir identificar o verdadeiro link analisando o trafego da rede, o que nem todos fazem, mas em um caso atípico se o atacante precisa apenas receber uma informação e usar UDP, isso dificultará bastante a identificação, ainda mais se o servidor ficar ativo por um breve período receber a informação e ficar offline novamente.

 

É importante ter em mente o funcionamento desse algorítimos, pois as vezes passamos por ele em uma RE de um malware, vemos esse comportamento estranho e pode-se acabar passando despercebido, pois vendo isso sem entender o porquê tende-se a ignorar e seguir em frente, além disso esse método vem sendo disseminado entre os criadores de malware e a equipe de defesa deve estar igualmente alinhada sobre estar técnicas.

 

Um exemplo em Python retirado do Ransomware CryptoLocker:

def generate_domain(year, month, day):
    """Generates a domain name for the given date."""
    domain = ""

    for i in range(16):
        year = ((year ^ 8 * year) >> 11) ^ ((year & 0xFFFFFFF0) << 17)
        month = ((month ^ 4 * month) >> 25) ^ 16 * (month & 0xFFFFFFF8)
        day = ((day ^ (day << 13)) >> 19) ^ ((day & 0xFFFFFFFE) << 12)
        domain += chr(((year ^ month ^ day) % 25) + 97)

    return domain
Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...