Solucionar Problemas de Consultas DNS no Tshark

WiresharkBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a solucionar problemas de consultas DNS usando o utilitário Tshark do Wireshark através de exercícios práticos. Você capturará tráfego DNS com filtros "udp port 53", analisará consultas usando filtros de exibição como "dns.qry.name" e examinará estatísticas de tempo com a opção "dns,tree".

O laboratório guia você através de técnicas práticas para isolar pacotes DNS, visualizar o tempo das consultas e extrair informações detalhadas dos pacotes com a flag "-V". Ao concluir esses exercícios, você desenvolverá habilidades essenciais para diagnosticar problemas de DNS usando métodos profissionais de análise de pacotes.

Capturar DNS com -f "udp port 53"

Nesta etapa, você aprenderá como capturar tráfego DNS usando o filtro de captura do Wireshark. DNS (Domain Name System) é como a lista telefônica da internet, traduzindo nomes de domínio legíveis por humanos (como example.com) em endereços IP legíveis por máquinas. A maioria das consultas DNS usa a porta UDP 53 porque são pequenas e rápidas, enquanto respostas maiores podem usar TCP.

  1. Primeiro, abra um terminal em sua VM LabEx, se ainda não o fez. Todos os comandos serão executados no diretório de trabalho padrão ~/project. É aqui que salvaremos nossos arquivos de captura.

  2. Inicie o Wireshark a partir do terminal com o seguinte comando:

wireshark &

O símbolo & executa o Wireshark em segundo plano, permitindo que você continue usando o terminal enquanto o Wireshark permanece aberto. Isso é útil quando você precisa executar outros comandos durante sua análise de rede.

  1. Na interface principal do Wireshark:

    • Selecione sua interface de rede ativa (geralmente eth1). Isso informa ao Wireshark qual conexão de rede monitorar.
    • No campo de filtro de captura, insira: udp port 53. Este filtro garante que o Wireshark capture apenas o tráfego DNS, reduzindo a desordem de outras atividades de rede.
    • Clique no ícone da barbatana de tubarão para começar a capturar pacotes. Você verá a interface começar a exibir a atividade da rede.
  2. Para gerar algum tráfego DNS para teste, abra outro terminal e execute:

nslookup example.com

Este comando pede ao seu sistema para procurar o endereço IP de "example.com", criando o tráfego DNS que queremos capturar. Pense nisso como fazer uma chamada de teste para ver se nosso monitoramento está funcionando.

  1. No Wireshark, você deve ver pacotes DNS capturados. Estes aparecerão como linhas na janela principal, normalmente mostrando a consulta e a resposta. Pare a captura clicando no botão quadrado vermelho quando tiver visto tráfego suficiente.

  2. Salve o arquivo de captura para análise posterior:

    • Vá em File → Save As (Arquivo → Salvar como)
    • Salve-o como dns_capture.pcapng em seu diretório ~/project. Este formato de arquivo preserva todos os dados originais do pacote para exame detalhado.

Pontos-chave para entender:

  • -f "udp port 53" é um filtro de captura que registra apenas o tráfego DNS, semelhante a configurar um microfone especializado que ouve apenas conversas DNS.
  • DNS usa principalmente a porta UDP 53 porque é eficiente para consultas pequenas, enquanto TCP (Transmission Control Protocol) é usado para respostas maiores que precisam de entrega confiável.
  • O arquivo de captura contém pacotes de rede brutos em sua forma original, que analisaremos em etapas posteriores para entender exatamente o que está acontecendo durante a resolução DNS.

Filtrar Consultas com -Y "dns.qry.name"

Nesta etapa, você aprenderá como filtrar consultas DNS no Wireshark usando filtros de exibição. DNS (Domain Name System) é como a lista telefônica da internet, traduzindo nomes de domínio legíveis por humanos em endereços IP legíveis por máquinas. Ao solucionar problemas de rede, examinar o tráfego DNS pode revelar pistas importantes.

Vamos nos concentrar no campo dns.qry.name, que mostra especificamente os nomes de domínio que estão sendo solicitados em consultas DNS. Isso é particularmente útil quando você precisa examinar o tráfego relacionado a sites ou serviços específicos a partir da captura que criamos na etapa anterior.

  1. Primeiro, vamos abrir o arquivo de captura que salvamos anteriormente no Wireshark. O & no final executa o comando em segundo plano para que você possa continuar usando o terminal:
wireshark ~/project/dns_capture.pcapng &
  1. Na barra de filtro de exibição do Wireshark (o campo vazio logo abaixo da barra de ferramentas), insira este filtro exato para ver apenas as consultas DNS para "example.com":
dns.qry.name == "example.com"

Este filtro de igualdade estrita (==) mostrará apenas pacotes onde o domínio consultado corresponde exatamente a "example.com".

  1. Para ver todas as consultas DNS, independentemente do domínio solicitado, basta usar o nome do campo sozinho:
dns.qry.name

Isso exibe todos os pacotes que contêm nomes de consulta DNS, o que ajuda você a entender quais domínios estão sendo pesquisados em sua rede.

  1. Para uma visão mais completa mostrando consultas (solicitações) e respostas DNS, use este filtro que verifica a flag de resposta DNS:
dns.flags.response == 0 || dns.flags.response == 1

Aqui, dns.flags.response == 0 mostra consultas (solicitações), enquanto dns.flags.response == 1 mostra respostas.

  1. Às vezes, você pode querer encontrar todas as consultas relacionadas a uma determinada organização ou serviço. Tente filtrar por correspondências parciais de domínio usando o operador "contains":
dns.qry.name contains "example"

Isso corresponderá a qualquer domínio contendo "example", como "example.com", "test.example.org" ou "example.net".

Pontos-chave para entender:

  • -Y é a opção de filtro de exibição do Wireshark (equivalente a digitar na barra de filtro)
  • dns.qry.name é um campo específico em pacotes DNS que contém o nome de domínio que está sendo consultado
  • Os filtros de exibição ajudam você a se concentrar em padrões de tráfego específicos, ocultando pacotes não relacionados
  • Os filtros podem usar diferentes operadores de comparação:
    • == para correspondências exatas
    • != para exclusão
    • contains para correspondências parciais
  • O protocolo DNS inclui flags para distinguir entre consultas (response == 0) e respostas (response == 1)

Analisar Timing com -z dns,tree

DNS (Domain Name System) é como a lista telefônica da internet, traduzindo nomes de domínio legíveis por humanos em endereços IP legíveis por máquinas. Ao solucionar problemas de rede, analisar os tempos de resposta DNS pode revelar gargalos de desempenho. Nesta etapa, usaremos o recurso de estatísticas integrado do Wireshark com a opção -z dns,tree para medir a rapidez com que os servidores DNS respondem às consultas.

  1. Antes de começar, certifique-se de que o Wireshark não esteja em execução. Analisaremos um arquivo de tráfego DNS pré-capturado a partir do terminal. O & no final mantém seu terminal utilizável enquanto o Wireshark é executado:
wireshark -z dns,tree ~/project/dns_capture.pcapng &
  1. Uma nova janela rotulada como "DNS Statistics" (Estatísticas DNS) será aberta, exibindo três informações principais em uma estrutura de árvore:

    • Todas as consultas DNS e suas respectivas respostas
    • O tempo que cada consulta levou para obter uma resposta
    • Com que frequência cada domínio foi solicitado
  2. Vamos examinar as colunas de estatísticas cuidadosamente:

    • "Count" (Contagem) indica o número de vezes que seu sistema consultou cada domínio
    • "Average" (Média) mostra o tempo de resposta típico para cada domínio
    • "Min" (Mínimo) e "Max" (Máximo) revelam os melhores e piores tempos de resposta
  3. Para ver dados mais interessantes em nossa análise, vamos gerar novas consultas DNS. Abra uma nova janela de terminal e execute estes comandos de pesquisa comuns:

nslookup google.com
nslookup labex.io
  1. Após executar esses comandos, retorne à janela DNS Statistics e clique em "Reload" (Recarregar) para atualizar as estatísticas com as novas consultas que você acabou de gerar.

Conceitos-chave para lembrar:

  • O comando -z dns,tree ativa o modo de análise DNS especializado do Wireshark
  • As medições do tempo de resposta ajudam a identificar servidores DNS lentos ou atrasos na rede
  • A visualização em árvore agrupa consultas relacionadas para facilitar a análise
  • Sempre recarregue o arquivo de captura para ver as estatísticas mais recentes após nova atividade DNS

Mostrar Resultados com -V

Nesta etapa, exploraremos como examinar pacotes DNS em detalhes usando o modo verbose do Wireshark com a opção -V. Ao solucionar problemas de DNS, ver todos os detalhes do protocolo é crucial para entender exatamente o que está acontecendo no tráfego da sua rede.

  1. Antes de começar, certifique-se de fechar todas as janelas do Wireshark abertas para evitar confusão. Em seguida, execute este comando para abrir seu arquivo de captura com todos os detalhes do protocolo:
wireshark -V -r ~/project/dns_capture.pcapng &

A flag -V informa ao Wireshark para exibir a saída verbose, mostrando todas as informações do protocolo disponíveis, em vez de apenas o resumo básico do pacote.

  1. Na interface do Wireshark, concentre-se no painel do meio chamado "Packet Details" (Detalhes do Pacote). Veja como examinar as informações DNS:

    • Clique na seta ao lado de "Domain Name System" (Sistema de Nomes de Domínio) para expandi-lo
    • Você verá a estrutura completa da mensagem DNS, incluindo:
      • Se é uma consulta ou resposta
      • IDs de transação exclusivos que combinam solicitações com respostas
      • Flags de status indicando sucesso ou erros
      • Todos os registros de recursos que estão sendo trocados
  2. Ao olhar para um pacote de consulta DNS (geralmente enviado do cliente para o servidor), preste atenção especial a:

    • Query type (Tipo de consulta): Isso mostra que tipo de registro está sendo solicitado (A para IPv4, AAAA para IPv6, MX para servidores de e-mail)
    • Query class (Classe de consulta): Quase sempre "IN" para classe Internet
    • Transaction ID (ID da transação): Um número aleatório que ajuda a combinar esta consulta com sua resposta
  3. Para pacotes de resposta DNS (do servidor para o cliente), verifique estes campos importantes:

    • Response code (Código de resposta): "0" significa que nenhum erro ocorreu
    • Answer count (Contagem de respostas): Quantos registros foram retornados
    • Valores TTL: Por quanto tempo essas respostas DNS podem ser armazenadas em cache
    • Dados reais: Como endereços IP ao consultar registros A
  4. Para salvar esta análise detalhada para revisão posterior ou compartilhamento com colegas, execute este comando:

tshark -V -r ~/project/dns_capture.pcapng > ~/project/dns_analysis.txt

Isso cria um arquivo de texto contendo toda a saída verbose da sua captura.

Conceitos-chave para lembrar:

  • A opção -V revela a análise completa do protocolo de cada pacote
  • Você pode ver cada camada da pilha de protocolos DNS
  • Este nível de detalhe é necessário ao diagnosticar problemas complexos de DNS
  • Combine com filtros (como dns) para se concentrar em pacotes específicos, mantendo todos os detalhes

Resumo

Neste laboratório, você aprendeu como solucionar problemas de consultas DNS usando o utilitário Tshark do Wireshark. O exercício demonstrou a captura de tráfego DNS com filtros de porta UDP 53 e a análise de consultas por meio de filtros de exibição direcionados, como dns.qry.name.

Você praticou a geração de tráfego de teste com nslookup e salvou capturas para análise, obtendo insights sobre o comportamento do protocolo DNS e os poderosos recursos de filtragem do Wireshark para isolar solicitações de domínio específicas. Essas habilidades são essenciais para a solução de problemas de rede e investigações relacionadas ao DNS.