Exfiltração por DNS
Quem quer tirar dados de uma rede vigiada pode escondê-los nos nomes consultados ao DNS, um pedaço por consulta.
Exfiltrar é tirar dados de uma rede sem autorização. Muitas redes bloqueiam quase tudo que sai, mas deixam o DNS passar, porque sem ele nada funciona. Um programa malicioso aproveita isso: em vez de perguntar um nome de verdade, ele monta o nome com os dados que quer levar.
Funciona assim. O atacante controla um domínio, por exemplo chimango.example, e o servidor DNS desse domínio. A máquina infectada pega o texto senha, converte para hexadecimal (73656e6861) e consulta:
00.73656e6861.cdn.chimango.example
A consulta passa pelos resolvedores até chegar ao servidor do atacante, que anota o pedaço e responde qualquer coisa. Com centenas de consultas, sai um arquivo inteiro.
Detalhes que aparecem em casos reais:
- Codificação. O DNS não diferencia maiúsculas de minúsculas, e nomes de máquina aceitam só letras, números e hífen. Por isso os dados costumam ir em hexadecimal ou Base32, e não em Base64.
- Tamanho. Cada parte do nome, entre dois pontos, tem no máximo 63 caracteres, então os dados vão picados.
- Ordem. Cada pedaço leva um número de sequência, porque as consultas podem sair fora de ordem ou repetidas. Quem recebe ordena pelo número e descarta as repetições.
Os sinais na captura: muitas consultas para o mesmo domínio desconhecido, com uma parte longa que parece aleatória e muda a cada vez. Para remontar, liste os nomes consultados (tshark -r arquivo.pcap -Y "dns.flags.response == 0" -T fields -e dns.qry.name), ordene pelo número, tire as repetições, junte os pedaços e decodifique, por exemplo no CyberChef com From Hex.
Ferramentas de defesa procuram exatamente esses sinais, e por isso muitas empresas obrigam todas as máquinas a usar só o resolvedor interno.