Se você tem ambições de tornar-se um profissional especialista em Linux, certamente já pensou em trabalhar com ferramentas de monitoramento, gerenciamento e manutenção de redes, não é mesmo? Diante do contexto, aprender a utilizar o tcpdump é um requisito para a sua carreira.
Mas o que é tcpdump, afinal? É uma ferramenta de análise de tráfego de rede que, como o próprio nome evidencia, está ligada ao protocolo TCP/IP. Ademais, vale destacar que o tcpdump é um software livre de código aberto, executado pelo usuário a partir do terminal do Linux.
Vamos conhecer melhor esse ótimo utilitário open source? Neste conteúdo, abordarei, brevemente, o funcionamento do tcpdump, a sua instalação e, também, uma lista de seis comandos que você pode começar a experimentar. Acompanhe!
Como funciona o tcpdump?
Na prática, de acordo com a sua própria documentação, o tcpdump imprime na tela uma descrição dos conteúdos de pacotes em uma interface de rede que corresponde à expressão booleana.
Essa descrição tem como parâmetro o tempo, o que a leva, por padrão, à impressão de horas, minutos, segundos e frações de segundo, processo chamado time stamp, do inglês. Vamos a um exemplo:
16:35:15.9570010 IP 192.168.1.1.1008 > 225.255.255.250.1008: UDP, length 241
Em negrito, o horário em que a transmissão de pacotes aconteceu (o time stamp), seguido do endereço IP de origem, IP destino, protocolo (no exemplo, é o UDP) e o tamanho do pacote em bytes.
Comparação às ferramentas ping e traceroute
Um bom meio de entender a capacidade do tcpdump é a sua comparação a outros dois utilitários comuns do Linux: ping e traceroute. Enquanto o ping é utilizado para checar a conectividade entre origem e destino, o traceroute faz o mapeamento do caminho percorrido em uma requisição.
O tcpdump, por sua vez, faz uma análise mais aprofundada de um pacote. Com ele, é possível saber diversos detalhes sobre o tráfego, bem como as informações de uma determinada conexão.
Para que a “mágica” realmente aconteça, o tcpdump utiliza uma biblioteca chamada libpcap, a qual permite a captura e o envio de pacotes de uma rede ou arquivo. Ou seja, o libpcap realiza a busca por dispositivos (e deles extrai informações), captar dados de tráfego sem fio (wireless), processar pacotes e muito mais.
Quando os dados são coletados dos dispositivos que trafegam pela rede, o programa utilize de suas definições de protocolo internas para analisá-los e, então, entregá-los ao usuário como informação das características do pacote.
Nesse sentido, inclusive, o tcpdump é bastante utilizado em auditorias de rede e computação forense, ou seja, é possível investigar cibercrimes a partir das informações obtidas com o tcpdump — se você curte o assunto, recomendo a leitura dos artigos sobre hacking ético e Kali Linux.
Agora que já sabemos o básico sobre o seu funcionamento, vamos aos procedimentos de instalação do programa.
Como instalar o tcpdump?
Primeiramente, a instalação da ferramenta requer permissões de superusuário do sistema Linux em questão. Como o procedimento que ensinarei neste tópico se baseia no Ubuntu, usaremos o comando sudo — a regra vale para todas as distribuições baseadas no Debian.
Antes de baixá-lo, porém, é interessante verificar se o tcpdump já não está presente em seu sistema. Então digite a seguinte linha de comando no terminal:
$ which tcpdump /usr/sbin/tcpdump
Caso esteja instalado, o terminal retornará o diretório do programa conforme o exemplo acima. No entanto, se a instalação é necessária, prossiga com o comando:
$ sudo apt install tcpdump
Reiterando, o tcpdump precisa da biblioteca libpcap para funcionar, então ela deve estar instalada no computador. De qualquer maneira, ela é adicionada ao pacote automaticamente se não identificada pelo instalador.
Concluída a operação, o tcpdump acaba de ser instalado em sua máquina. Que tal fazermos alguns testes?
6 comandos para utilizar o tcpdump
Estão elencados neste tópico seis comandos do tcpdump que você já pode acionar para estudar melhor a ferramenta. Se você precisar de ajuda quanto aos comandos mais comuns — além dos que veremos, aqui —, digite o comando:
$ sudo man tcpdump
Isso fará com que o terminal imprima o manual da ferramenta. Nele, é explicada uma série de comandos e outras informações úteis para iniciantes. Talvez você tenha percebido que a sintaxe do tcpdump é bastante simples, certo? Ela se resume ao comando seguido de uma opção. Exemplo:
$ sudo tcpdump [opção]
Portanto os comandos a seguir são compostos do comando tcpdump + alguma das várias opções disponíveis. Agora, sem mais delongas, vamos à lista!
1. Exibir as interfaces disponíveis
Obviamente, se vamos analisar um pacote é necessário indicar ao tcpdump a interface que desejamos explorar. O que acontece se não declararmos? Por padrão, o programa vasculhará a interface eth0, a qual geralmente corresponde à placa de rede do dispositivo.
Para saber quais são as interfaces disponíveis, use o comando junto da opção -D (maiúsculo), como no exemplo a seguir:
$ sudo tcpdump -D
Ao teclar Enter, será impressa uma lista de dispositivos cujos pacotes podem ser analisados. Se você quiser que os pacotes de todas as interfaces sejam explorados, basta digitar a linha de comando tcpdump any.
2. Analisar pacotes de um dispositivo
Já sabemos quais são os dispositivos existentes, não é mesmo? Então vamos selecionar um deles para verificar pacotes, usando a opção -i seguida do nome do dispositivo. Exemplo:
$ sudo tcpdump -i d93828000ks
Confirme o comando digitando Enter e, então, a ferramenta iniciará a análise dos pacotes (se existirem). Se nada estiver aparecendo na tela, tente navegar em algum site no dispositivo ou, simplesmente, faça um ping. Caso tenha funcionado, aparecerá uma série de dados relacionados aos pacotes.
3. Determinar a quantidade de pacotes a ser analisada
Como a varredura costuma resultar no recebimento de dezenas / centenas de pacotes, convém, dependendo do caso, estabelecer limites. A opção -c, usada para encerrar a análise, seguida de uma variável (quantidade de pacotes) mais o comando -i, é um meio de fazermos isso. Exemplo:
$ sudo tcpdump -c 15 -i d93828000ks
Em resposta, o programa capturará somente os 10 primeiros pacotes encontrados.
4. Capturar apenas pacotes com protocolo TCP
Durante as varreduras é comum encontrarmos pacotes ligados a endereços de outros protocolos, como o UDP. Para criar um filtro, acrescente o termo tcp ao comando -i. Exemplo:
$ sudo tcpdump -i d93828000ks tcp
5. Analisar pacotes de uma determinada porta
É comum na rotina do administrador de sistemas verificar as portas de um servidor, por exemplo. Na análise de pacotes, o procedimento é feito de maneira simples, bastando acrescentar o número da porta. Exemplo:
$ sudo tcpdump -i d93828000ks port 49
6. Gravar informações de pacotes analisados
Se você quiser registrar os dados obtidos de uma análise de pacotes e salvá-los num arquivo, basta digitar a linha conforme o exemplo:
$ sudo tcpdump -i d93828000ks -w registro.cap
Por meio dessas instruções o tcpdump gravará as informações no recém-criado arquivo “registro.cap”.
Em suma, como vimos ao longo deste artigo, embora as funcionalidades do tcpdump sejam voltadas a atividades de relativa complexidade, os seus comandos são muito fáceis de utilizar. Como foram os testes no seu sistema operacional?
Vale lembrar que conteúdos de nível mais avançados sobre esse e outros assuntos estão disponíveis na página do Profissionais Linux. Confira!