Wireshark
Last updated
Last updated
Estamos sempre falando dos protocolos e camadas de rede, mas os vimos somente na teoria, ou com algumas ferramentas que não mostram o que ocorre por baixo dos panos. O wireshark é uma ferramenta que permite analisar os protocolos e dados trafegando, por exemplo, entre seu computador e a internet.
Geralmente o wireshark não vem instalado no sistema operacional por padrão - exceções são distribuições GNU/Linux voltadas para segurança da informação como o Kali. Portanto, se você quiser utilizar a ferramenta, terá que instalá-la no seu computador.
Na maioria das distribuições, o programa está nos repositórios padrões, então basta utilizar o gerenciador de pacotes da sua distro para instalar. Vocês também podem olhar o guia oficial de instalação do wireshark, o guia do usuário no capítulo de instalação, ou perguntarem no grupo de Telegram do Ping se tiverem mais dúvidas.
Aqui é o exemplo de instalação no Debian (execute o comando como superusuário - root):
No caso do Ubuntu, temos que utilizar o sudo
:
Para ver as informações que estão saindo do seu computador, basta iniciaro wireshark e selecionar de qual interface de rede capturará as informações. Essa [a interface de rede] é a porta de saída para os programas enviarem informações para a rede, ela pode ser cabeada (normalmente chamada de eth0
ou enp3s0
), ou wireless (então é wlan0
ou wlp3s0
), mas cada SO pode atribuir um nome específico. Para checar as interfaces, digite o seguinte comando:
Depois de selecionar a interface da qual capturará as informações, você deve iniciar a captura clicando no botão mostrado abaixo ("Start"), ou utilizando o atalho de teclado Ctrl+E. A partir de agora você estará gravando todos os pacotes trafegando entre a rede e o computador por a interface definida anteriormente. Se você apertar Ctrl+E novamente, ou clicar no botão de parada ("Stop"), a captura será encerrada e todos os pacotes capturados permanecerão na tela.
Agora que todos os pacotes estão na tela, você pode querer analisá-los, ou deixar para um outro momento. Caso opte pela segunda opção, poderá salvar os pacotes capturados como um arquivo com formato pcap. Esse é um ponto importante porque também é possível inicializar o wireshark lendo diretamente um arquivo pcap, isto também pode ser feito do terminal executando o seguinte comando:
Agora que já capturamos alguns pacotes, está na hora de analisá-los. Vamos ver juntos um exemplo de pacote, no caso, o primeiro pacote enviado quando há uma conexão SSL (faz a criptografia dos dados enviados). Nesse pacote inicial, o cliente envia um "oi" para o servidor dizendo que quer iniciar a conexão.
Nós temos duas opções de visualizações de pacotes, a primeira é a mostrada abaixo. Nela o programa nos mostra as camadas do pacote e os respectivos dados de cada uma de uma maneira bastante organizada e simples. Vemos que este conjunto de dados é um frame, o quadro da camada de enlace. Ele engloba os dados e cabeçalhos de todas as outras camadas, mas o wireshark permite ver as informações de cada cabeçalho separadamente. Isto é, podemos ver que temos o protocolo Ethernet com os MAC's de origem e destino, em seguida, o protocolo IP com os ip's de origem e destino, então o protocolo TCP com as portas de origem e destino e algumas outras informações do protocolo e finalmente o protocolo TLS que envia o "Client Hello"
.
A segunda maneira de visualizar os dados é mostrando os bytes crus. Temos acesso aos bytes de dados enviados ao lado esquerdo e aos valores decodificados para caracteres à direita. Então é possível passar o mouse sobre os caracteres e o wireshark indica os bytes correspondentes e vice-versa, e ainda indica a qual campo o dado pertence. No exemplo abaixo, tiles.services.mozilla.com
corresponde ao campo "Server Name".
Muitas vezes aparecem dados de diversas conexões TCP, mas estamos querendo ver somente uma. Para isso, o wireshark fornece uma forma simples de acompanhar uma conexão específica, basta clicar com o botão direito no pacote e selecionar "Conversation filter" -> "TCP".
O wireshark também permite que você utilize filtros para especificar aspectos dos pacotes mostrados. Alguns exemplos são mostrados abaixo, mas existem muitos outros que vocÊ aprenderá conforme for utilizando o wireshark.
frame contains "mozilla"
: filtra por pacotes que contenham a string "mozilla";
tcp.port == 443
: filtra por pacotes cuja porta de destino é a 443 (https);
dns.resp.len > 0
: mostra todas as respostas DNS;
ip.addr == 192.168.15.1
: mostra todos os pacotes com ip de origem ou destino igual a 192.168.15.1
.