Oficinas em Wireshark

Julia Evans, autora do material que publicamos hoje, decidiu falar sobre uma de suas ferramentas de rede favoritas chamada Wireshark . Este é um programa poderoso e complexo, equipado com uma interface gráfica, projetada para analisar o tráfego nas redes de computadores. Julia diz que, na prática, ela usa apenas alguns dos recursos do Wireshark, mas eles geralmente são úteis. Aqui, ela deseja compartilhar com todos que desejam uma história sobre os métodos mais úteis para trabalhar com o programa e espera que sejam úteis não apenas para ela, mas também para todos que precisam resolver problemas de rede.



Instale o Wireshark


As distribuições do Wireshark para vários sistemas operacionais podem ser encontradas aqui . Para instalar o programa, você pode baixar e instalar o arquivo correspondente. Como alternativa, se você usa distribuições Linux baseadas no Debian, pode usar o comando sudo apt install wireshark . Se desejar, para encontrar a versão mais recente do programa, você pode consultar o arquivo pessoal dos pacotes wireshark-dev .

É assim que a interface do programa se parece.


Interface Wireshark

À primeira vista, tudo isso pode parecer muito complicado: uma longa lista de pacotes, um campo misterioso para inserir algum tipo de solicitação ... Como trabalhar com o Wireshark?

Análise de arquivos pcap


Eu normalmente uso o Wireshark para descobrir as causas dos problemas de rede. A sequência de ações executadas no curso da solução de tais problemas é semelhante a esta:

  1. Capture pacotes com o tcpdump (geralmente com um comando como sudo tcpdump port 443 -w output.pcap ).
  2. Copiando o arquivo pcap para um laptop em funcionamento ( scp host:~/output.pcap . ).
  3. Abrindo um arquivo pcap usando o Wireshark ( wireshark output.pcap ).

Como você pode ver, tudo é muito simples. No entanto, após a abertura do arquivo pcap no programa, você pode ter uma pergunta lógica sobre o que fazer com tudo isso. Vamos conversar sobre isso.

Análise de conexão TCP


Frequentemente, quando analiso uma determinada situação no Wireshark, preciso verificar alguma conexão TCP específica, com a qual, por algum motivo, algo está errado. Graças ao Wireshark, você pode analisar todo o ciclo de vida de uma conexão TCP individual e descobrir as causas do comportamento incorreto do sistema.

Você pode fazer isso clicando com o botão direito do mouse no pacote em que está interessado e escolhendo o comando Conversation filter > TCP no menu de contexto.


Iniciar análise de conexão TCP

Depois disso, o Wireshark mostrará outros pacotes da mesma conexão TCP à qual o pacote em que você clicou pertence. Na figura abaixo, você pode ver um exemplo de uma conexão SSL bem-sucedida - existem pacotes de client hello , service hello , certificate , server key exchange que são usados ​​para estabelecer conexões SSL.


Análise de conexão TCP

A técnica de análise de pacotes TCP discutida aqui eu tive que usar no dia em que este artigo foi escrito, no trabalho. Algumas conexões foram interrompidas e notei que, depois de enviar o pacote client hello do client hello , o client hello enviou o pacote FIN ACK , que encerrou a conexão TLS. O que eu consegui descobrir acabou sendo útil, pois ficou claro que o cliente e não o servidor estavam encerrando a conexão. Como resultado, descobri imediatamente que o problema está no cliente e preciso prestar atenção.

O acima é um esquema muito típico para mim de trabalhar com o Wireshark. Normalmente, o cliente e o servidor estão envolvidos na conexão, e algo dá errado no cliente ou no servidor. Pode ser, por exemplo, algum tipo de falha ou erro nas configurações do sistema. Como resultado, o Wireshark fornece uma ajuda inestimável para identificar o culpado dos problemas, ajudando a descobrir se é um cliente ou um servidor.

Decodificar como equipe


Para entender exatamente o que é um pacote específico, o Wireshark usa números de porta, e essa abordagem geralmente funciona. Por exemplo, se um programa vê algum tráfego na porta 80, decide que é tráfego HTTP e geralmente é.

No entanto, às vezes as conexões HTTP usam portas incomuns e, como resultado, o Wireshark precisa de dicas para reconhecê-las. Essas dicas podem ser dadas ao programa chamando o menu de contexto do pacote e selecionando o comando Decode as lá. Além disso, você pode dizer ao Wireshark qual protocolo é usado para transmitir pacotes usando uma determinada porta. Essas dicas simplificam a análise de dados.

Exibir conteúdo do pacote


No Wireshark, existe simplesmente um modo agradável para exibir informações detalhadas sobre um pacote, com o qual você pode entender o conteúdo de qualquer pacote. Pegue, por exemplo, o pacote com a mensagem client hello do client hello do exemplo anterior. Este é o primeiro pacote de conexão SSL, o cliente com sua ajuda como se dissesse: “Olá! Aqui estou eu!

O Wireshark oferece ao administrador da rede duas ferramentas incrivelmente úteis para examinar o conteúdo do pacote. O primeiro é um modo de visualização no qual você pode expandir os cabeçalhos disponíveis para o pacote (por exemplo, cabeçalho Ethernet, cabeçalho IP, cabeçalho TCP) e visualizar seu conteúdo.


Análise de cabeçalho de pacote

O segundo modo de visualizar pacotes é um verdadeiro milagre. Aqui você pode ver os dados brutos do pacote como uma sequência de bytes. E, o que é especialmente interessante, se você passar o mouse sobre um byte (por exemplo, na figura abaixo, o cursor está no byte incluído em tiles.services.mozilla.com ), o programa, na barra de status, informará a qual campo pertence. este byte (neste caso, é o campo Server Name do Server Name ) e sobre o nome de código usado pelo Wireshark para este campo (neste caso - ssl.handshake.extensions_server_name )


Análise de dados de pacotes brutos

Pesquisa de Pacotes


O Wireshark suporta uma poderosa linguagem de consulta. Isso simplifica bastante a busca por pacotes específicos nas listas. Normalmente, ao trabalhar com um programa, uso consultas muito simples. Aqui estão alguns exemplos:

  • O frame contains "mozilla" consulta frame contains "mozilla" permite procurar a linha do mozilla em qualquer lugar do pacote e listar os pacotes encontrados.
  • A solicitação tcp.port == 443 exibe pacotes usando a porta TCP 443.
  • A consulta dns.resp.len > 0 exibe todas as respostas DNS
  • A ip.addr == 52.7.23.87 exibe pacotes cujo endereço IP de origem ou destino é 52.7.23.87.

A linguagem de consulta do Wireshark possui recursos muito maiores do que a linguagem de consulta tcpdump (e, além disso, suporta o preenchimento automático pressionando a tecla TAB). Como resultado, costumo usar a seguinte sequência de ações: captura uma grande quantidade de pacotes usando o tcpdump (digamos, algo como todos os pacotes da porta 443) e os estudo cuidadosamente usando o Wireshark.

Exibir detalhes da duração da conexão TCP


Às vezes, preciso prestar atenção especial ao estudo de conexões TCP lentas. Como fazer isso, desde que no meu arquivo haja registros de milhares de pacotes? Como encontrar conexões TCP lentas?

Se você selecionar Statistics no menu principal do programa e o comando Conversations , o Wireshark fornecerá um conjunto maravilhoso de informações estatísticas.


Informação estatística

Em particular, aqui, na coluna Duration , você pode ver a duração das conexões TCP, identificar a mais longa delas e estudá-las cuidadosamente. Este é um recurso muito útil.

Atualização do Wireshark


Se você não atualiza o Wireshark há muito tempo, vale a pena fazer isso. Por exemplo, recentemente, em um laptop em funcionamento, eu estava pesquisando pacotes HTTP / 2. Não foi fácil para mim, então, e decidi examinar a documentação. Como se viu, eu tinha uma versão antiga do programa. Na atualização que instalei, o suporte ao HTTP / 2 foi seriamente aprimorado, ou seja, havia exatamente o que eu precisava naquele momento.

Usando o Wireshark para aprender protocolos de rede


Este artigo contém alguns termos que podem ser atribuídos a algo como o jargão dos especialistas em rede. Por exemplo - quadro, porta TCP (porta TCP), resposta DNS (resposta DNS), endereço IP de origem (endereço IP de origem), conexões SSL do pacote client hello (hello do cliente SSL). Uma das razões para usá-los é o fato de que o Wireshark definitivamente não está tentando proteger o usuário dos meandros da estrutura interna das tecnologias de rede. Para um iniciante, esse estado de coisas pode, inicialmente, fazer você pensar que o Wireshark não é um programa para ele, mas apenas para especialistas experientes em rede.

O foco do Wireshark nos mecanismos de rede de baixo nível, no entanto, tem uma grande vantagem. O fato é que, trabalhando com este programa, você pode aprender algo novo sobre protocolos de rede. Por exemplo, não sei muito sobre os mecanismos internos do protocolo TLS / SSL. No entanto, analisando o tráfego no Wireshark, notei que os dois primeiros pacotes da conexão SSL são o client hello e o server hello . Como resultado, o protocolo, que, se não se aprofundar nos detalhes de sua obra, parece misterioso e inacessível ao entendimento, passa a assumir uma forma mais compreensível, transforma-se em algo que pode ser entendido e analisado.

Sumário


O Wireshark tem enormes oportunidades. Aqui nós conversamos apenas sobre alguns deles. No entanto, os métodos de trabalho discutidos aqui, de acordo com o autor do material, são usados ​​em cerca de 95% das situações em que há necessidade do Wireshark. Portanto, esperamos que mesmo o pouco que você aprendeu hoje seja útil para você.

Caros leitores! Você usa o Wireshark?

Source: https://habr.com/ru/post/pt416537/


All Articles