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.)