Fazer a análise de tráfego é uma atribuição comum da administração de redes. Não por acaso, já apresentei, por meio dos artigos do blog, algumas ferramentas importantes em tarefas do tipo, tais como o comando tcpdump e o Traceroute, e, complementando-os, abordarei o Wireshark.
Antes de tudo: o que é o Wireshark e qual a sua função? Por definição, o Wireshark é um programa específico para análise de tráfego de rede. As suas funções, basicamente, assemelham-se às do tcpdump — até por isso as ferramentas se “rivalizam”, ainda que apresentem alguns contrastes.
Por que você precisa conhecer o Wireshark? Pois bem, estamos falando da solução de análise de protocolo de rede mais utilizada no mundo. Esteja você formando a carreira em TI no Brasil, esteja trabalhando no exterior, é grande a probabilidade de que sua (futura) empresa a utilize.
Sem mais delongas, vamos nos aprofundar mais no assunto? Ao longo deste artigo, elaborei uma breve introdução ao Wireshark, na qual elenquei os principais recursos, o procedimento de instalação e cinco exemplos de uso.
Conhecendo o Wireshark
Iniciado em 1998 por Gerald Combs, hoje diretor de projetos de código aberto, o Wireshark é um projeto open source desenvolvido pela vasta comunidade de usuários. De acordo com a página oficial, o programa é adotado por empresas (comerciais ou não), agências governamentais e instituições educacionais.
O que ele faz, exatamente? O Wireshark permite ao usuário analisar os pacotes transmitido na rede, exibindo as informações detalhadamente em uma interface gráfica. Com isso, é possível identificar, minuciosamente, tudo o que acontece na troca de dados entre cliente e host.
Aproveitando a menção à interface gráfica do programa, vale destacá-la como a principal diferença do Wireshark em relação ao tcpdump. Este último é o que chamamos de ferramenta CLI (Command-line Interface), ou seja, é executado por meio do terminal do Linux.
Dependendo do nível de conhecimento do usuário ou da situação em que se encontra, o Wireshark oferece uma série de facilidades em função dos recursos gráficos, sobretudo na hora de filtrar informações. Contudo, se preferir, também é possível executá-lo usando linhas de comandos.
Embora estejamos falando sobre diferenças, ambas as soluções têm em comum o uso da mesma biblioteca: a libpcap — específica para captura e envio de pacotes ou arquivos de uma rede. Logo, o Wireshark é compatível com documentos de captura do tcpdump.
Características do Wireshark
A vasta gama de funcionalidades e recursos presente no Wireshak é, sem dúvida alguma, o fator que impulsiona a sua popularidade. Tendo em vista não estender o tópico, vejamos, a seguir, algumas características em destaque.
Compatibilidade com outros formatos de captura
Falamos sobre a compatibilidade com arquivos do tcpdump, certo? Bom, digamos que isso seja apenas a ponta do iceberg. Quando analisamos o Wireshark mais profundamente, é difícil pensar em algum formato não suportado — confira a pequena lista, abaixo.
- Catapult DCT2000;
- Cisco Secure IDS iplog;
- Novell LANalyzer;
- Microsoft Network Monitor;
- Tektronix K12xx;
- Network General Sniffer®;
- Netscreen snoop; e
- RADCOM WAN/LAN Analyzer.
Observação: estes são apenas oito dos numerosos formatos que podem ser lidos pelo Wireshark.
Leitura de dados em tempo real
Todos os conteúdos de pacotes enviados / recebidos pelo servidor são captados em tempo real pelo Wireshark. Isso significa que a interação do usuário com a sua rede pode ser monitorada a qualquer momento — recurso fundamental para acompanhar eventos suspeitos.
Disponibilidade para múltiplos sistemas operacionais
Praticamente, todos os sistemas operacionais mais conhecidos, como Linux, Mac e Windows, têm uma versão do Wireshark compatível. Porém o mainstream não é o limite: a ferramenta está disponível, também, para FreeBSD, NetBDS, Solaris, HP-UX etc.
Instalando o Wireshark no Linux
Todas as versões do Wireshark estão disponíveis na seção “Downloads” do site oficial (wireshark.org/download.html) e baixar o arquivo tar. Se você pretende testá-lo no Windows, por exemplo, basta seguir as instruções do instalador.
O foco deste tópico, no entanto, é a instalação via terminal. Certo, então como vamos proceder? É muito simples. No Ubuntu (ou demais distros baseadas no Debian), execute as seguintes instruções:
$ sudo apt update $ sudo apt install wireshark
Assim que concluída a instalação, você poderá rodar o programa para, então, iniciar a configuração. A primeira tela a surgir se chama “Capture”, na qual selecionaremos qualquer uma das interfaces para captura de pacotes. Selecionou? Vá até o fim da lista e clique em Start.
A próxima tela já exibirá informações do tráfego envolvendo a interface escolhida, além, evidentemente, de todas as opções do programa. Ou seja, o Wireshark está funcionando! Se você quiser mexer nas configurações ou editar um filtro, clique nos ícones ilustrativos.
Utilizando as opções do Wireshark para análise de tráfego
Entre as coisas mais legais que podemos fazer no Wireshark é a aplicação de filtros de conteúdo. Por meio deles, tudo o que precisamos fazer é digitar os termos seguindo uma sintaxe ou, simplesmente, aplicar determinados filtros que facilitam o processo. Vejamos, adiante, cinco exemplos práticos de como inspecionar o tráfego detidamente.
Filtrar pacotes por IP de origem / destino
Deseja monitorar o tráfego a partir de um endereço de IP? No Wireshark, podemos fazer isso por meio do IP de origem e / ou destino, conforme os exemplos:
ip.src==192.168.1.15 ip.dst==192.168.16.8
Note que a sintaxe é simples e os filtros, intuitivos. No exemplo, src significa source (fonte), enquanto dst se refere a destiny (destino, obviamente).
Explorar o tráfego da rede local
Há um filtro muito útil para refirnarmos a pesquisa, restringindo-a ao tráfego da rede local, reduzindo, assim, a quantidade de informações exibidas nos resultados. Abaixo, aplicamos a condicional and, usando como referência o IP 192.168.0.0/24, comum das redes locais.
ip.src==192.168.0.0/24 and ip.dst==192.168.0.0/24
Pesquisar a partir de strings
Nem sempre é necessário recorrer aos campos de filtros como nos exemplos acima. O Wireshark tem a incrível capacidade de realizar buscas por strings (cadeia de caracteres), o que agiliza o trabalho consideravelmente.
Para isso, usamos o operador contains, o qual permite realizar esse tipo de busca. Detalhe: de acordo com a documentação da ferramenta, o contains só pode ser expressado em inglês.
Supondo que esteja à procura de um determinado pacote localizado num extenso conjunto de pacotes. Sabendo-se que a URL do nosso blog está presente na transação, você consegue utilizá-la como referência, digitando:
http contains "https://e-tinet.com"
Com isso, o Wireshark identificará os pacotes que contêm a string — para confirmar a existência, consulte o conteúdo interno do pacote.
Filtrar pacotes a partir de portas TCP ou UDP
Procurar pelos packages usando como referência a porta (TCP ou UDP) utilizada na transação é muito simples. No exemplo, abaixo, utilizamos o filtro port:
tcp.port==357 udp.port==4113
Monitorar o tráfego em redes Apache e MySQL
O Wireshark nos permite o emprego da condicional or para inspeção do tráfego usando múltiplas referências. Numa rede montada pelo conjunto LAMP, por exemplo, conseguimos monitorar o tráfego nas portas correspondentes ao servidor web (Apache) e banco de dados (MySQL ou MariaDB). Exemplo:
tcp.port==80||tcp.port==3306
Se você estiver interessado em mergulhar nos estudos dos filtros do Wireshark, recomendo que se baseie neste documento do site oficial, o qual contém todas as referências de elementos utilizáveis nos filtros. Preparado para usufruir dessa poderosa ferramenta de análise de tráfego?
É natural que em meio a tantos recursos e termos de filtragem cheguemos à questão: para que serve a maioria dos itens listados? Acesse a página Profissionais Linux e veja como deixar de conviver com dúvidas desse tipo.