Ir para conteúdo
Sh3rl0ck

DGA - Domain Generation Algorithm

Posts Recomendados

Sh3rl0ck    1

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora


×