Eu consideraria o uso de Wireshark ou da Microsoft Monitor de rede com um filtro de captura de granularidade suficiente para limitar a captura ao tráfego DNS que você está procurando. Depois de capturar os dados, você pode voltar e realizar análises.
Eu provavelmente usaria o programa de linha de comando tshark
no Wireshark para capturar o tráfego em arquivos relativamente pequenos e, em seguida, usar tshark
novamente em outra máquina para despejar os arquivos e grep através deles. Uma linha de comando de captura pode ser algo como:
tshark -i <inteface number here> -b filesize:32768 -w dns_capture udp and dst port 53 and dst host x.x.x.x
Você pode obter o número da interface da sua máquina usando tshark -D
. O argumento -b filesize:32768
especifica a captura em um buffer de 32.768 KB (32 MB) antes de iniciar um novo arquivo de captura. O -w dns_capture
especifica um nome de arquivo de saída base de dns_capture
(que terá uma contagem incremental e um registro de data e hora adicionados à medida que cada arquivo for preenchido). O udp and dst port 53 and dst host x.x.x.x
é um filtro de captura tcpdump que especifica que somente os pacotes udp com porta de destino 53 e um endereço de destino de x.x.x.x
(onde você deve substituir o endereço IP do servidor DNS) serão capturados.
Assim que tiver os arquivos, você poderá usar qualquer número de ferramentas de análise de arquivos PCAP. Pessoalmente, eu usaria apenas tshark
com o argumento -r
para ler arquivos e despejá-los como texto legível usando o argumento -T text
. Então eu apenas agitaria a saída. (Eu faria isso principalmente porque tenho todas as ferramentas prontas para usar. Há muitas outras maneiras de fazer isso também.)