A sua infraestrutura de rede é fundamental para o funcionamento da sua empresa. É crucial ter um entendimento claro do que se passa nos bastidores.
O ambiente dos negócios digitais passou por uma transformação significativa. O que começou com simples Scripts CGI em Perl, evoluiu para implementações complexas e automatizadas em clusters usando Kubernetes e outras plataformas de orquestração (desculpe o jargão, mas essa é a realidade atual!).
Uma aplicação web moderna típica, distribuída em contêineres (fonte: medium.com)
Apesar das mudanças, é interessante notar que os princípios fundamentais permanecem os mesmos desde os anos 70.
Toda a nossa tecnologia é construída sobre camadas de abstrações, sustentadas por cabos físicos que formam a base da rede (e também redes virtuais, mas o conceito é o mesmo). Podemos dividir a rede em camadas de acordo com o modelo OSI, mas no final, estamos sempre a lidar com Protocolos TCP/IP (preparar-se para uma leitura densa!), pings e routers, tudo com o objetivo comum de transmitir pacotes de dados.
O Que é um Pacote de Rede?
Independentemente da atividade – seja comunicação, streaming de vídeo, jogos ou compras online – tudo se resume a uma troca de pacotes de dados entre computadores (ou redes). Um “pacote” é a menor unidade de informação que circula em uma rede, e existe um método específico para a sua criação e verificação (assunto complexo, mas pode saber mais aqui).
Fluxo de pacotes em uma rede (fonte: training.ukdw.ac.id)
Cada pacote representa uma etapa no processo e é transmitido na origem e verificado no destino. Mesmo se for apenas um único pedido, o processo aguarda até que todos os pacotes, na ordem correta, sejam recebidos. Só então eles são reunidos para formar os dados originais (por exemplo, uma imagem).
Agora que compreendemos o que é uma rede, é importante entender o papel de um analisador de rede. Esta ferramenta permite examinar pacotes específicos na sua rede.
Mas, qual a utilidade disso? É o que vamos explorar a seguir.
Por Que Analisar Pacotes?
Pacotes são os blocos de construção do tráfego de dados, tal como os átomos são os blocos básicos da matéria (ok, não são partículas fundamentais, mas a analogia funciona). Ao analisar materiais, raramente nos preocupamos com o que um átomo individual está a fazer. Então, porque nos preocuparmos com um único pacote de rede? O que podemos aprender que já não sabemos?
É difícil convencer da importância da análise de pacotes até que se enfrente um problema, mas vou tentar.
Analisar pacotes é como investigar minuciosamente para identificar a causa raiz de um problema. Geralmente, esta análise torna-se necessária quando todas as outras soluções falham. Isso inclui situações como:
- Perda inexplicável de dados confidenciais, sem indícios de violação;
- Diagnóstico de aplicações lentas sem causa aparente;
- Garantir que um sistema/rede não foi comprometido;
- Verificar se alguém está a utilizar o seu Wi-Fi indevidamente;
- Identificar por que um servidor está lento, apesar do tráfego baixo.
Em resumo, a análise de pacotes é útil para obter provas concretas. Se souber como realizar esta análise e tiver os dados certos, poderá evitar ser acusado injustamente de um ataque ou ser rotulado como um desenvolvedor ou administrador de rede incompetente.
É tudo uma questão de análise! (fonte: dailydot.com)
Num caso real, um comentário encontrado aqui resume bem a importância da análise de pacotes:
“Uma aplicação essencial para a minha empresa apresentava problemas de desempenho, causando falhas em várias instalações de clientes. Era uma aplicação de preços de ações usada em empresas financeiras em todo o mundo. A análise detalhada do TCP permitiu-me descobrir que o problema era na implementação do TCP do fornecedor do sistema operacional. O sistema não conseguia recuperar-se do controle de congestionamento, levando a janelas de envio muito pequenas. Demorou algum tempo para convencer o fornecedor do sistema operacional que o problema não estava na aplicação, mas na sua implementação do TCP. Descobri que um bug fazia com que os ACKs recebidos com dados fossem considerados DUPACKs quando a pilha estava sob controle de congestionamento. Eventualmente, um patch foi lançado e o problema resolvido.”
O programador explicou que o erro causava que os ACKs recebidos *com payloads* fossem incorretamente classificados como DUPACKs quando a pilha estava em controle de congestionamento.
Isto não aconteceria com aplicações half-duplex como o HTTP, mas a aplicação que eu estava a suportar enviava dados bidirecionalmente no socket o tempo todo.
Na época, não tinha muito suporte da gestão (o meu gestor até gritava comigo por “estar sempre a querer usar um sniffer” para corrigir problemas), e ninguém além de mim estava a considerar a implementação TCP do fornecedor do sistema operacional como a fonte do problema. Lutar sozinho pela correção com o fornecedor do sistema operacional tornou esta vitória particularmente gratificante, deu-me muita confiança para defender as minhas ideias e levou-me a trabalhar em problemas mais interessantes.
Em resumo, este profissional enfrentava problemas de desempenho que eram atribuídos à sua aplicação, com pouca ajuda da gestão. Apenas uma análise detalhada de pacotes provou que o problema era no sistema operacional, e não na aplicação!
A solução não foi um ajuste na aplicação, mas sim um patch dos desenvolvedores do sistema operacional! 😮
Sem a análise de pacotes, este profissional teria sido injustamente culpado. Se isso não o convence da importância da análise de pacotes (também conhecida como “packet sniffing”), nada mais o fará. 🙂
Agora que sabe que a análise de pacotes é um superpoder, a boa notícia é que não é difícil usá-la!
Com ferramentas de análise de pacotes avançadas e fáceis de usar, obter informações detalhadas sobre a rede pode ser tão simples quanto ler um relatório. Claro, é preciso um conhecimento básico sobre o funcionamento de uma rede, mas não é nada de outro mundo.
Se começar a usar uma destas ferramentas e a consultar a documentação, em pouco tempo tornar-se-á um especialista. 😀
Wireshark
Wireshark é um projeto de longa data (desde 1998) que se tornou a referência no setor para análise de redes. É notável que seja um projeto gerido por voluntários, com alguns patrocinadores. O Wireshark é de código aberto (o código pode ser encontrado aqui) e até tem uma conferência anual.
O Wireshark oferece:
- Suporte para centenas de protocolos de rede;
- Compatibilidade com diversos formatos de arquivo (tcpdump (libpcap), Pcap NG, Catapult DCT2000, Cisco Secure IDS iplog, Microsoft Network Monitor, Network General Sniffer® (compactado e descompactado), Sniffer® Pro e NetXray®, entre outros);
- Disponibilidade em várias plataformas (Linux, Windows, macOS, Solaris, FreeBSD, etc.);
- Leitura de dados em tempo real de Ethernet, IEEE 802.11, PPP/HDLC, ATM, Bluetooth, USB, Token Ring, e mais;
- Descompressão gzip em tempo real;
- Suporte para descriptografia de protocolos (WPA/WPA2, SNMPv3, etc.);
- Análise detalhada de VoIP;
- Regras de cores para facilitar a análise visual.
Consulte este excelente curso online para aprender a dominar o Wireshark.
Para usar o Wireshark no terminal, experimente o Termhark.
tcpdump
Para os entusiastas da linha de comando, o tcpdump é a ferramenta ideal.
É uma utilidade clássica do Linux, tão relevante como sempre, que serve de base para outras ferramentas mais avançadas. Não tem interface gráfica, mas compensa com a sua funcionalidade.
Instalá-lo pode ser um pouco complicado; embora o tcpdump venha com a maioria das distribuições Linux, poderá ter de instalar a partir da fonte.
Os comandos tcpdump são simples e específicos:
- Exibir todas as interfaces disponíveis;
- Capturar apenas uma interface;
- Salvar pacotes capturados num ficheiro;
- Capturar apenas pacotes com falhas.
Se necessitar de uma análise rápida e simples, o tcpdump é uma ótima opção (especialmente se já estiver instalado). Consulte este artigo para exemplos de comandos tcpdump.
Tproxy
Tproxy é uma ferramenta de código aberto para fazer o proxy de conexões TCP na rede. Escrito em Go, ele vem como um binário que funciona em diversas plataformas Linux e macOS.
A imagem abaixo mostra o comando para monitorar conexões MySQL:
A sua função principal é fazer proxy de conexões HTTP e inspecionar o conteúdo de pedidos e respostas. Também pode fazer proxy de outros protocolos, como SOCKS ou TCP. É útil para depurar aplicações que usam TCP e para criar serviços proxy TCP.
O Tproxy pretende ser uma interface fácil de usar para o tcpdump, permitindo fazer proxy de conexões TCP e realizar análises de rede avançadas sem necessitar de conhecimentos profundos sobre o protocolo TCP.
A linha de comando abaixo exibe as conexões gRPC:
Ele funciona como um proxy TCP, permitindo-lhe conectar-se a serviços remotos como se estivessem na sua máquina local. Permite criar serviços TCP personalizados em hosts remotos, o que melhora a segurança, a resolução de problemas e o desempenho de aplicações que utilizam TCP.
O Tproxy também pode ser usado para:
- Depurar e otimizar conexões TCP;
- Compreender como funcionam outros programas de proxy como Burp Suite e ZAP;
- Fazer proxy de conexões TCP entre dois hosts ou entre um host e um serviço TCP remoto (banco de dados, serviços web);
- Monitorar conexões MySQL e gRPC, verificando a confiabilidade da conexão em termos de taxa de Retransmissão e RTT.
O Tproxy simplifica o fluxo de trabalho e permite análises de rede complexas sem alterações na aplicação ou na rede. A ferramenta pode ser descarregada no GitHub.
Network Miner
O Network Miner é uma ferramenta de análise forense de redes, capaz de analisar passivamente uma rede e oferecer uma interface gráfica intuitiva para analisar os dados, incluindo imagens e outros ficheiros transferidos.
O NetworkMiner oferece:
- Suporte IPv6;
- Análise de ficheiros PCAP;
- Extração de certificados X.509 de tráfego SSL;
- Pcap sobre IP;
- Compatibilidade com vários tipos de tráfego, como FTP, TFTP, HTTP, SMB, SMB2, SMTP, POP3, etc.;
- Identificação de SO;
- Localização geográfica de IPs;
- Suporte a scripts de linha de comando.
Algumas destas funcionalidades estão disponíveis apenas na versão comercial.
Fiddler
Ao contrário de outros sniffers passivos, o Fiddler atua como um intermediário entre o dispositivo e o exterior, exigindo alguma configuração. É uma ferramenta gratuita e personalizável (usando FiddlerScript) para inspecionar tráfego HTTP/HTTPS.
O Fiddler permite realizar diversas operações, especialmente para fins de segurança:
- Manipulação de sessão: Examinar e modificar cabeçalhos HTTP e dados de sessão;
- Testes de segurança: Simular ataques man-in-the-middle e descriptografar tráfego HTTPS;
- Testes de desempenho: Analisar tempos de carregamento de páginas e respostas de APIs, identificando gargalos.
A documentação do Fiddler é abrangente.
WinDump
Se procura a simplicidade do tcpdump no Windows, o WinDump é a solução. Uma vez instalado, pode executar comandos “tcpdump” na linha de comando, tal como no Linux.
O WinDump é um binário que pode ser executado diretamente, desde que tenha uma biblioteca Pcap instalada (o npcap é recomendado).
BruteShark
BruteShark é uma ferramenta de análise forense de redes (NFAT) que processa e inspeciona o tráfego de rede, incluindo ficheiros PCAP e dados capturados diretamente de interfaces.
Inclui reconstrução de sessões TCP, construção de mapas de rede, extração de hashes de senhas e conversão para o formato Hashcat, para ataques de força bruta offline.
O BruteShark foi criado para ajudar administradores de rede e pesquisadores de segurança a analisar o tráfego de rede e identificar vulnerabilidades.
Existem duas versões: uma aplicação GUI para Windows e uma ferramenta CLI para Linux e Windows. Alguns dos projetos podem ser usados separadamente para analisar o tráfego de rede em Windows e Linux.
O BruteShark também extrai consultas DNS, ficheiros, chamadas VoIP (SIP, RTP), cria diagramas de rede, extrai hashes de autenticação (NTLM, HTTP-Digest, CRAM-MD5, Kerberos, etc.) e recupera senhas e nomes de usuário.
Implementado com .Net Standard e .Net Core para suporte multiplataforma. Utiliza uma arquitetura de três camadas, incluindo PL, BLL e DAL em cada camada.
O DAL (Data Access Layer) lê ficheiros PCAP com drivers como WinPcap, libpcap e bibliotecas como SharpPcap. O BLL (Business Logic Layer) analisa informações de rede (TCP, pacotes, etc.), e o PL (Presentation Layer) interage com o BLL e o DAL.
OmniPeek
Para redes com grande volume de tráfego, o OmniPeek é uma boa opção. É uma ferramenta de análise forense e desempenho de rede, que oferece recursos de baixo nível e painéis abrangentes.
Fonte: sniffwifi.com
Capsa
Para quem usa Windows, o Capsa é um forte concorrente. Possui três versões: gratuita, standard e empresarial, cada uma com diferentes funcionalidades.
A versão gratuita já suporta mais de 300 protocolos e oferece alertas. A versão standard suporta mais de 1000 protocolos e permite analisar conversas e reconstruir fluxos de pacotes.
Em resumo, uma opção sólida para utilizadores do Windows.
EtherApe
Se procura visualizações poderosas e código aberto, o EtherApe é uma excelente opção. Os binários estão disponíveis para algumas distribuições Linux, mas o código fonte está disponível (no SourceForge e no GitHub), podendo ser compilado.
O EtherApe oferece:
- Monitorização de vários nós, codificada por cores;
- Suporte para diversos formatos de pacotes (ETH_II, 802.2, 803.3, IP, IPv6, ARP, X25L3, REVARP, ATALK, AARP, IPX, VINES, TRAIN, LOOP, VLAN, entre outros);
- Leitura de dados em tempo real ou a partir de ficheiros tcpdump;
- Suporte para resolução de nomes;
- GUI baseada em GTK3.
CommView
Para utilizadores exclusivos do Windows, o CommView é uma opção a considerar. É um analisador de tráfego de rede com recursos avançados, como análise VoIP e rastreamento remoto.
Destaca-se pela capacidade de exportar dados em formatos utilizados por vários programas, incluindo Sniffer®, EtherPeek™, AiroPeek™, Observer®, NetMon, Wireshark/Tcpdump, Wireshark/pcapng e até dumps hexadecimais simples.
Wifi Explorer
O Wifi Explorer, com versões gratuita para Windows e standard para Windows e macOS, é ideal para análise de redes WiFi. É uma ferramenta elegante e com funcionalidades para simplificar a análise de redes.
Menção honrosa: O Little Snitch é um analisador exclusivo para macOS, com um firewall integrado para controlar o tráfego.
O Próximo Passo?
Explore também softwares de monitorização de rede para ter melhor visibilidade da sua infraestrutura. Se pretende seguir uma carreira na área de redes e segurança, veja alguns dos melhores cursos online.