domingo, 24 de novembro de 2013

Wireshark na Análise de Tráfego e Protocolos em Redes

Olá Pessoal.

Esse é mais um artigo que escrevi atendendo a pedido de leitores do blog e temos, dessa vez, como temática da discussão o software Wireshark, uma ferramenta extremamente poderosa que deve fazer parte do arsenal técnico de todo profissional da área de redes de computadores. O Wireshark é um analisador de pacotes que, para tanto, tem capacidade de interceptar "todos" os pacotes que trafegam nas redes e de exibir detalhes das suas informações de controle (cabeçalhos) e conteúdo (payload). O software é gratuito, está disponível para Linux/Windows e pode ser baixado no link http://www.wireshark.org, sendo que o guia do usuário pode ser baixado aqui.


É claro que em  um artigo é impossível esgotar todas as funcionalidades dessa ferramenta fantástica, por isso esse artigo tem três objetivos principais: (i) contextualizar a operação do software, (ii) delinear algumas características técnicas do arranjo topológico físico/lógico da rede que podem interferir no processo de captura dos pacotes a serem analisados e (iii) trazer dois exemplos de interpretação das saídas de pacotes capturados.

1) Operação do Software Wireshark

Um primeiro conceito importante que o leitor deve ter em mente antes de começar a operar esse software é que seu objetivo é trazer informações detalhadas sobre pacotes que foram previamente capturados em um ambiente em que exista uma rede de computadores. A ação de capturar/interceptar pacotes caracteriza uma atividade de escuta dos dados que trafegam na rede, por isso seu uso deve ser realizado por pessoal autorizado para fazê-lo no ambiente em operação, seja para simples monitoramento de conteúdo (a exemplo de conversas telefônicas via VoIP) ou mesmo para a identificação de problemas na rede para fins de otimização do seu desempenho. Esses são os propósitos do software e ele não deve ser utilizado sem autorização como sniffer de rede, o que caracteriza um ataque passivo de interceptação ao conteúdo da rede de computadores.

Normalmente há muito tráfego que chega nas interfaces de uma rede por meio de broadcast (ou outras tecnologias de transmissão) e que não são de interesse de uma interface específica, por isso o comportamento padrão é que somente o tráfego de interesse das interfaces é aceito, de forma que todos os demais pacotes são descartados. Esse é um comportamento padrão baseado na confiança que pode ser alterado através de um método que coloca as interfaces em modo promíscuo, um estado em que elas passam a receber e processar todos os pacotes entrantes/saintes.

O Wireshark organiza as informações de controle contidas nos cabeçalhos dos pacotes para facilitar o processo de leitura e análise técnica, no entanto é necessário que esses pacotes sejam previamente capturados em alguma interface de rede. Para fazê-lo o software utiliza bibliotecas que são responsáveis por colocar as interfaces de rede em modo promíscuo.

2) Características Técnicas do Arranjo Topológico da Rede

Logo nas primeiras aulas de redes de computadores os alunos estudam conceitualmente os principais dispositivos de interconexão onde são apresentadas as principais diferenças entredois dispositivos concentradores: (i) HUB e (ii) Switch. Nessa ocasião os alunos aprendem que mesmo ambos os dispositivos sendo elementos centrais (concentradores) que criam uma topologia física de estrela, o modo de operação entre eles é distinto implicando em diferentes topologias lógicas, conforme pode ser observado na figura abaixo.


O HUB cria uma topologia lógica de barramento porque eletronicamente todas as suas portas estão ligadas em um mesmo barramento físico, o que implica na existência de um único dominío de colisão compartilhado entre todas as portas. Ele é um simples dispositivo repetidor que (i) recebe sinal em uma porta de entrada, (ii) amplifica esse sinal e (iii) despacha esse sinal para todas as demais portas de saída. Como ele é um dispositivo de camada física, não possui inteligência para analisar os cabeçalhos dos quadros.

Uma vez que a topologia lógica do HUB é de barramento, o sinal recebido em uma porta é retransmitido para TODAS as demais portas, o que é ruim do ponto de vista de desempenho e segurança. Por causa disso é muito simples interceptar o tráfego/conteúdo dessa rede através de algum software sniffer, já que todo sinal entre quaisquer máquinas é propagado para todas as portas. 

Por outro lado o Switch cria uma topologia lógica de estrela porque eletronicamente possui uma matriz (denominada matriz crossbar) que permite o chaveamento de circuitos ponto-a-ponto entre duas portas específicas, o que implica em um domínio de colisão para cada porta. Paraestabelecer esses circuitos entre duas portas os switches são dispositivos da camada de enlace e possuem inteligência para analisar os cabeçalhos dos quadros, motivo pelo qual eles utilizam o endereço físíco das interfaces (MAC) no processo de encaminhamento.

É comum o uso de softwares de interceptação de quadros/pacotes em redes de computadores para fins de monitoramento e análise da "saúde" da rede. O problema de utilizar esses softwares nas redes que possuem switch (diga-se de passagem quase todas atualmente), é que ao conectar o computador monitorador em uma porta qualquer do switch ele não será capaz de "escutar" nenhum tráfego entre os circuitos fechados nas demais portas. Por exemplo, uma comunicação entre dois computadores ligados nas portas 1 e 2 de um switch não será transmitida na porta 3 (nem em qualquer outra). 

É para resolver esse problema que existem as tecnologias de port-mirroring. Essa tecnologia de espelhamento consiste em configurar uma determinada porta do switch para espelhar todo o tráfego entre os circuitos das demais portas, daí no nome espelhamento. Ou seja, essa porta irá se tornar o "dedo-duro" da rede replicando todo o tráfego como se fosse um HUB. Naturalmente essa porta será aquela em que o computador monitorador estará executando o software de interceptação (sniffer). Essa discussão sobre port-mirroring já foi apresentada em outro artigo do blog intitulado "Configuração de Espelhamento de Portas em Switch", onde o leitor pode encontrar exemplos de configuração baseados em tecnologias Cisco.

3) Interpretação de Pacotes Capturados

Uma vez apresentados ao leitor os principais conceitos relacionados ao Wireshark, essa última parte do artigo tem por objetivo trazer dois exemplos de como as saídas geradas pelo software podem ser interpretadas para mostrar o que acontece nos "bastidores" de uma rede de computadores. Para fazê-lo estarei utilizando dois exemplos clássicos com vocês, ambos baseados no processo de resolução de endereços MAC do IPv4 (através do ARP) e do IPv6 (através do NDP/ICMPv6).

O procedimento para verificar a descoberta do endereço físico (MAC) de uma interface de rede é bastante simples com o uso do Wireshark. Uma vez que a ferramenta faz a captura dos pacotes das redes, bem como a ordenação dos mesmos por categoria de protocolos, fica fácil identificar toda a comunicação oriunda dos protocolos ARP (no IPv4) e NDP (no IPv6).

Através das opções "Capture | Interfaces | Start" do Wireshark é possível iniciar a captura dos pacotes que estão trafegando na rede. O software irá organizar a saída da maneira apresentada nas figuras abaixo. Observem que a parte superior da tela traz várias linhas (entradas) que representam pacotes individuais e na parte inferior existe o detalhamento das informações dos cabeçalhos e payload desses pacotes, dispostos em conformidade com as camadas do TCP/IP. Quando o usuário clica em qualquer uma das linhas/entradas da parte superior, então a tela inferior muda seu detalhamento.

3.1 Protocolo ARP na Resolução de Endereços IPv4 em MAC

Aqui cabe uma revisão relâmpago acerca do ARP e do processo de resolução de endereços físicos no contexto do IPv4. Quando uma máquina quer se comunicar com outra ela conhece, a princípio, apenas o endereço lógico (IP) do destino, no entanto é necessário saber seu endereço físico (MAC) para que as interfaces de rede possam se comunicar na camada de enlace (tecnologia de rede).

Os sistemas operacionais armazenam uma tabela com as associações entre endereços MAC e IP (chamada Tabela ARP) e quando não existe uma correspondência nessa tabela, então o protocolo ARP (Address Resolution Protocol) entra em ação, conforme pode ser observado na figura abaixo. Na primeira comunicação para um dado destino, a máquina envia uma mensagem de broadcast para toda a rede local perguntando qual é o endereço físico da máquina que possui um determinado IP. Todas as máquinas da rede irão receber e processar essa requisição, no entanto somente a máquina que possuir o endereço IP procurado irá responder com a informação do seu endereço físico.


Por exemplo, nas próximas duas figuras, extraídas do Wireshark, o leitor pode observar que as linhas destacadas são pacotes do protocolo ARP (request e reply), onde faço alguns destaques importantes que mostram ao leitor como interpretar essas informações para compreender a operação do protocolo. Aproveitem essa oportunidade para fazer sua análise das figuras abaixo, comparando as informações trazidas pelo software com a explicação anterior. Veja que as informações procedem, por isso o Wireshark é um software importante também para convencer os alunos e facilitar o entendimento dos protocolos que operam nas redes de computadores.



3.2 Protocolo NDP na Resolução de Endereços IPv6 em MAC

Uma mudança significativa da operação do IPv6 diz respeito ao processo de resolução dos endereços físicos, já que não existe o protocolo ARP no IPv6. No IPv6 a funcionalidade de resolução de endereços lógicos em endereços físicos é responsabilidade do NDP (Neighbor Discovery Protocol), por meio de mensagens ICMPv6 Tipo 135 NS (Neighbor Solicitation) e ICMPv6 Tipo 136 NA (Neighbor Advertisement). Cabe aos sistemas operacionais manterem uma tabela de vizinhança com as associações entre os endreços IPv6 <> MAC.


Com base na figura acima, quando o Host-A deseja se comunicar com o Host-B (2001:db8:cafe:1::1), ele envia uma mensagem a um "grupo" de máquinas para descobrir o endereço MAC da interface configurada com esse IPv6. Para tanto, a mensagem é destinada ao endereço multicast-solicited-node respectivo que, nesse exemplo, é o endereço ff02::1:ff00:1. O formato do endereço solicited-node é ff02::1:ffXX:XXXX, onde X representa os últimos 24 bits do IPv6 do destino.

O campo target do cabeçalho é preenchido com o endereço IPv6 a ser resolvido, o que evita a ambiguidade em caso de duas ou mais máquinas terem os mesmos 24 bits finais no seu endereço. Além disso, existe um campo de opções chamado source-link-layer-address, que é preenchido com o endereço MAC da origem para evitar que o destino, ao receber a mensagem, tenha que refazer esse processo de resolução de endereços para obter o MAC do vizinho antes de respondê-lo.


Na segunda etapa, assim que recebe uma NS com seu endereço IPv6 no campo target, o Host-B envia uma mensagem NA com o seu endereço MAC no campo target-link-layer-address (00:00:00:00:AA:00), destinado unicamente ao Host-A (origem da NS anterior). Quando a mensagem NA chega ao Host-A, já é capaz de criar uma nova associação na sua tabela de vizinhança e, portanto, aprendeu o endereço MAC 00:00:00:AA:00 do IPv6 2001:db8:cafe:1::1.


Caso o leitor tenha dúvidas a respeito do modus operandi do IPv6, recomendo a leitura do meu livro intitulado "IPv6 - O Novo Protocolo da Internet". As explicações trazidas nesse artigo tinham por objetivo subsidiar o entendimento de como interpretar as saídas do Wireshark, por isso não houve aprofundamento teórico.

Abraço.

Samuel.

24 comentários:

  1. Sou fã do blog!
    Muito conteudo bom!
    E o melhor de tudo, sempre você coloca os labs de como fazer.
    Abraços

    ResponderExcluir
  2. Ótimo! Que clareza na exposição.

    ResponderExcluir
  3. Comecei a ler o blog faz pouco tempo, e estou gostando muito, ja comprei até o guia prático do wireshark e gostaria de saber se o software tem traducao?

    ResponderExcluir
    Respostas
    1. Olá Ricardo.

      Acredito que o software exista apenas em inglês, desconheço algum patch de tradução. No entanto, nunca parei para procurar por um pacote de tradução, então não posso afirmar categoricamente.

      Abraço.

      Excluir
  4. Se importa se eu publicar em meu blog http://hercules-now.com , colocando referencia para o seu ?

    ResponderExcluir
    Respostas
    1. Olá Aldo,

      Fique à vontade para "reblogar" esse e qualquer outro artigo do Blog LabCisco, sempre fazendo referência à fonte original.

      Abraço.

      Excluir
    2. Ola Instrutor Samuel Brito
      Resido em Angola e tal como o Luciano Maia, sou um discipulo deste blog e quero saber como faço para comprar os livros publicado?

      Excluir
    3. Olá Toivo,

      Aqueles que residem fora do Brasil podem comprar os livros através da Livraria Cultura que eles fazem entrega internacional. Abaixo você encontra o link para o livro de IPv6, lembrando que a segunda edição do livro de Laboratórios Cisco estará disponível em breve:

      http://goo.gl/wNg4JJ (IPv6)

      Abraço.

      Excluir
  5. Olá, deixa eu ver se entendi, em uma rede com switch o Wireshark não pode ser usado para capturar os dados enviados? Se sim, e em rede Wireless é o mesmo conceito?

    ResponderExcluir
    Respostas
    1. Em redes que utilizam switches para conexão dos terminais o Wireshark somente irá capturar tráfego de broadcast, ou seja, aqueles destinados a todos. A exceção a essa regra é a configuração do recurso de espelhamento de portas abordado no artigo.

      Fique atento que o fato de muitas redes não serem projetadas em layer-2 e não possuírem VLANs, faz com que a quantidade de tráfego de broadcast seja grande, por exemplo as mensagens ARP e DHCP, o que prejudica o desempenho e implica em mais ameaças de segurança.

      Abraço.

      Excluir
    2. Em redes WiFi o AP normalmente opera como um HUB, ou seja, em half-duplex com meio compartilhado!!! Há APs que utilizam o recurso de MIMO (Multiple Input Multiple Output), caso em que são utilizados dois (ou mais) canais para as comunicações, por exemplo um específico para transmissão e outro para recepção (full duplex).

      Abraço.

      Excluir
  6. Se conectar uma vez na rede, e depois estiver conectada em outra... consigo capturar informaçoes sobre aquele IP, ou tem que estar conectado no momento?

    ResponderExcluir
    Respostas
    1. A captura de tráfego tem que ser realizada em tempo-real na rede específica. O que pode ser feito é salvar uma captura em arquivo externo para posterior análise em qualquer outra rede ou mesmo sem rede...

      Excluir
  7. Vcs sabem q isso eh foda e tal mas eh crime de invasão d privacidade ne ?!
    Pra mim, fds q eh crime kkkk

    ResponderExcluir
  8. Samuel, que tipo de informação eu posso conseguir, através dos pacotes capturados? e como analisar essas informações?

    ResponderExcluir
  9. Fiz um teste aqui em casa com 2 notebook usando rede sem fio, a ideia é pegar o tragefego do segundo notebook, com o wireshark no primeiro, só que na hora de interceptar, só aparecem pacotes llc arc e dns, nada de http e outros, o que pode estar acontecendo?

    obs: a rede esta configurada corretamente e a captura foi em modo promiscuo

    ResponderExcluir
  10. Obrigado pelo blog Samuel mas fiquei com uma duvida.. Se eu quiser fazer um port mirroring da conexao ate ao meu ISP como posso fazer? Obrigado

    ResponderExcluir
  11. Bom dia Samuel, minha primeira visita ao Blog...gostei muito o posteriormente vou acompanhar de mais perto...nesse momento estou pesquisando sobre um problema de mensagens arp na minha rede, preciso eliminar/diminuir essas mensagens da minha rede. Estou com um servidor fazendo diversas requisições arp (WHO) para IP´s que não existem na minha rede. A pergunta seria de como descobrir qual o software deste servidor que está requisitando essas mensagens ARP, poderia me passar alguma dica?

    Obrigado

    Wellington

    ResponderExcluir
    Respostas
    1. Se você já sabe qual é a máquina que está originando as mensagens, então não deve ser muito difícil isolar a aplicação responsável pelo trafego estranho, ainda que a busca seja manual. Em relação à questão do desempenho, a recomendação é criar VLANs e sub-redes associadas a elas.

      Excluir
  12. Tenho wifi é possivél aumentar para alta velocidade, alterando o protocolo e codigos...

    Alex Ferreira - ferreira197979@r7.com

    ResponderExcluir
  13. Tenho wifi é possivél aumentar para alta velocidade, alterando o protocolo e codigos...

    Alex Ferreira - ferreira197979@r7.com

    ResponderExcluir
  14. Tenho uma dúvida na leitura dos subcampos em hexadecimal no wireshark. Quando coloco minha placa de rede em modo monitor consigo capturar quadros tipo Beacon.
    (colocar em modo monitor: # iw dev wlan0 interface add mon0 type monitor && ifconfig mon0 up) Quando leio o primeiro Byte depois do RadioTap, que é o Type/Subtyte o formato em hexa é 0x08, mas quando vejo o pacote em hexa lá na parte de baixo onde só aparece os números em hexadecimal, vejo que este valor está em little-endian: 0x80. Porém, os endereços MAC não ocorre essa troca e aparecem no formato normal em big-endian. Já o Frame Check Sequence também aparece o valor trocado, em little-endian. Alguém sabe me explicar o porquê disso?

    ResponderExcluir
  15. Professor como efetuar ligações de torres no packettracer?

    ResponderExcluir