Túnel por DNS: quando a saída de dados se disfarça de consulta
Toda consulta de DNS transporta texto. Um túnel transforma esse texto em canal de saída, e o resultado parece uma sequência normal de perguntas.
Como o túnel é construído
O dados a ser retirado da máquina é codificado e dividido em pedaços. Cada pedaço vira um nome de domínio, do tipo um-pedaço-de-dados.tunel.exemplo. O resolvedor responde normalmente e a resposta traz de volta o que a outra ponta queria dizer.
Como o endereço tem a forma de um nome qualquer, tudo parece uma consulta comum. O servidor que recebe os dados e devolve as respostas é um domínio comum, com resolve normalmente. O túnel funciona porque o DNS permite carregar texto em uma direção e outro, e quase ninguém filtra esse caminho.
Por que passa despercebido
O tráfego tem a forma de DNS, vai para a porta 53 ou para o endereço de um servidor de DNS sobre HTTPS, e ninguém olha. Mesmo quando o conteúdo da consulta é inspecionado, o que está dentro vem criptografado, o que deixa de fora a leitura simples.
O volume também ajuda a esconder: saída de dados costuma ser pequena e espalhada ao longo de horas, misturada com o tráfego normal do aparelho. Uma consulta de dez em dez segundos parece muito menos suspeito do que um envio grande em um instante.
Como reduzir a superfície
Bloquear os domínios conhecidos de túnel resolve parte do caso, mas listas desses domínios mudam o tempo todo. O que ajuda mais é observar: um dispositivo que faz muitos nomes que não existem, ou que consulta sempre o mesmo domínio com prefixos estranhos, está fazendo alguma coisa diferente do normal.
Na configuração, duas medidas fazem diferença. Restringir a saída de DNS para que só o resolvedor escolhido responda, e manter o registro de consultas por dispositivo para tornar o padrão visível. É o histórico, e não o filtro, que costuma mostrar por onde a saída estava acontecendo.