Um guia para o utilitário de análise de tráfego de rede tcpdump

Um guia para o utilitário de análise de tráfego de rede tcpdump

Tcpdump é um utilitário de linha de comando de sniffing de pacote de rede. É mais comumente usado para solucionar redes e testar problemas de segurança. Apesar da ausência de uma interface gráfica do usuário, é o utilitário de linha de comando mais popular, poderoso e versátil.

É nativo do Linux, de modo que a maioria das distribuições Linux o instale como parte do sistema operacional padrão. O TCPDUMP é um programa interfacido da libpcap, que é uma biblioteca para captura de datagrama de rede.

Este artigo desmistificará o tcpdump, mostrando como capturar, ler e analisar o tráfego de rede capturado neste utilitário. Mais tarde, usaremos nosso entendimento para inspecionar pacotes de dados com os filtros de sinalizadores TCP avançados.

Instalação do TCPDUMP

A instalação padrão do tcpdump em sua distro depende das opções selecionadas durante o processo de instalação. No caso de instalação personalizada, é possível que o pacote não esteja disponível. Você pode verificar a instalação do TCPDUMP usando o dpkg comando com o “-s”Opção.

ubuntu $ ubuntu: ~ $ dpkg -s tcpdump

Ou use o comando “sudo apt-get install tcpdump” para instalar o tcpdump no Ubuntu Linux.

Captura de pacotes no tcpdump:

Para iniciar o processo de captura, primeiro precisamos encontrar nossa interface de trabalho usando o “ifconfig”Comando. Ou podemos listar todas as interfaces disponíveis usando o tcpdump comando com o “-D”Opção.

ubuntu $ ubuntu: ~ $ tcpdump -d

Para iniciar o processo de captura, você pode usar a sintaxe;

tcpdump [-Options] [Expressão]

Por exemplo, no comando abaixo, usamos o “-eu”Opção para capturar tráfego no“ENP0S3”Interface, com uma“-c“Flag para limitar os pacotes capturados e escrever“-c”Para um test_capture.PCAP arquivo.

Ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 -w /tmp /test_capture.PCAP

Da mesma forma, você pode usar várias combinações de filtro para isolar o tráfego de acordo com a sua necessidade. Um exemplo inclui a captura de dados de dados de rede e chegar ao host usando o hospedar comando para um específico porta. Além disso, eu usei o “-n“Flag para impedir o TCPDUMP de capturar pesquisas de DNS. Esta bandeira é muito útil na saturação do tráfego enquanto soluciona a rede.

ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 host 10.0.2.15 e DST porta 80 -W /tmp /test_capture1.PCAP
TCPDUMP: Ouvindo ENP0S3, Link-Type En10MB (Ethernet), Capture Tamanho 262144 Bytes
20 pacotes capturados
21 pacotes recebidos por filtro
0 pacotes que foram lançados por kernel

Nós usamos o "e”Comando para capturar apenas pacotes contendo o host 10.0.2.15 e porta de destino 80. Da mesma forma, vários outros filtros podem ser aplicados para facilitar as tarefas de solução de problemas.

Se você não quiser usar o “-c“Flag para limitar o tráfego de captura, você pode usar um sinal de interrupção, eu.e., Ctrl+c, Para parar o processo de isolamento.

Lendo arquivos tcpdump

A leitura de arquivos capturados do tcpdump pode ser muito esmagadora. Por padrão, o TCP atribui nomes a endereços IP e portas. Vamos usar o “-r“Flag para ler nosso arquivo já capturado test_capture.PCAP salvo no /tmp pasta. Vamos colocar a saída para Awk Comando para produzir apenas o endereço IP da origem e as portas e tubá -lo para o comando cabeça Para exibir apenas as 5 primeiras entradas.

Ubuntu $ ubuntu: ~ $ sudo tcpdump -r /tmp /test_capture1.PCAP | awk -f “” 'print $ 3' | cabeça -5
Lendo a partir de arquivo /tmp /test_capture.PCAP, Link-Type En10MB (Ethernet)
IP Ubuntu.53298
IP Ubuntu.53298
IP Ubuntu.53298
IP Ubuntu.53298
IP Ubuntu.53298

No entanto, é recomendável usar endereços IP e portas em números para resolver problemas de rede. Desativaremos a resolução de nomes de IP com o “-n”Nomes de bandeira e portas com“-nn““.

Ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -n
TCPDUMP: saída detalhada suprimida, use -v ou -vv para decodificar protocolo completo
Ouvindo em ENP0S3, Link-Type En10MB (Ethernet), Capture Tamanho 262144 Bytes
20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: bandeiras [P.], SEQ 1276027591: 1276027630, ACK 544039114, Win 63900, comprimento 39
20:08:22.146745 IP 10.0.2.15.43456> 54.204.39.132.443: bandeiras [P.], SEQ 3381018839: 3381018885, ACK 543136109, WIN 65535, comprimento 46
20:08:22.147506 IP 172.67.39.148.443> 10.0.2.15.54080: bandeiras [.], ACK 39, WIN 65535, comprimento 0
20:08:22.147510 IP 54.204.39.132.443> 10.0.2.15.43456: bandeiras [.], ACK 46, Win 65535, comprimento 0
20:08:22.202346 IP 216.58.209.142.443> 10.0.2.15.41050: bandeiras [P.], SEQ 502925703: 502925826, ACK 1203118935, Win 65535, comprimento 123
20:08:22.202868 IP 10.0.2.15.41050> 216.58.209.142.443: bandeiras [P.], seq 1:40, ACK 123, Win 65535, comprimento 39

Compreensão da saída capturada

O TCPDUMP captura muitos protocolos, incluindo UDP, TCP, ICMP, etc. Não é fácil cobrir todos eles aqui. No entanto, é importante entender como as informações são exibidas e quais parâmetros incluem.

O tcpdump exibe cada pacote em uma linha, com um registro de data e hora e informações em relação ao protocolo. Geralmente, o formato de um protocolo TCP é o seguinte:

. > .: , , , , ,

Vamos explicar um dos campos de pacotes capturados por campo:

20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: bandeiras [P.], SEQ 1276027591: 1276027630, ACK 544039114, Win 63900, comprimento 39
  • 20:08:22.146354: Timestamp do pacote capturado
  • IP: protocolo de camada de rede.
  • 10.0.2.15.54080: Este campo contém o endereço IP de origem e a porta de origem.
  • 172.67.39.148.443: Este campo representa o endereço IP de destino e o número da porta.
  • Bandeiras [p.]/: As bandeiras representam o estado de conexão. Nesse caso, [P.] indica o pacote de reconhecimento de push. O campo de bandeira também inclui alguns outros valores como:
    1. S: syn
    2. P: Push
    3. [[.]: ACK
    4. F: Fin
    5. [S.]: Syn_ack
    6. R: Primeiro
  • SEQ 1276027591: 1276027630: O número da sequência no primeiro: o último formato denota o número de dados no pacote. Excluindo o primeiro pacote em que os números estão em absoluto, os pacotes subsequentes têm números relativos. Nesse caso, os números aqui significam que o pacote contém bytes de dados de 1276027591 a 1276027630.
  • ACK 544039114: O número de reconhecimento mostra o próximo número de sequência de dados esperados.
  • Win 63900: O tamanho da janela mostra o número de bytes disponíveis no buffer recebido.
  • Comprimento 39: Comprimento dos dados da carga útil, em bytes.

Filtros avançados

Agora podemos usar algumas opções avançadas de filtro de título para exibir e analisar apenas pacotes de dados. Em qualquer pacote TCP, os sinalizadores TCP começam no 14º byte, de modo que PSH e ACK sejam representados por 4º e 5º bits.

Podemos usar essas informações ativando esses bits 00011000 ou 24 Para exibir pacotes de dados com apenas bandeiras PSH e ACK. Passamos esse número para TCPDUMP com o filtro “TCP [13] = 24“, Observe que o índice de matriz no TCP começa em zero.

Vamos filtrar este pacote do nosso text_capture.PCAP Arquive e use o -A opção para exibir todos os detalhes do pacote para você.

Da mesma forma, você pode filtrar outros pacotes de sinalizador usando “TCP [13] = 8” e “TCP [13] = 2” apenas para bandeiras PSH e SYN, etc.

Ubuntu $ ubuntu: ~ $ sudo tcpdump -a 'tcp [13] = 24' -r /tmp /test_capture.PCAP
Lendo a partir de arquivo /tmp /test_capture.PCAP, Link-Type En10MB (Ethernet)
19:26:17.827902 IP Ubuntu.53298> 32.121.122.34.bc.GoogleUserContent.com.http: sinalizadores [p.], SEQ 4286571276: 4286571363, ACK 252096002, WIN 64240, comprimento 87: http: get / http / 1.1
E ...:?@[email protected].
... "Zy .2.P… P… Get / Http / 1.1
Host: Connectivity-check.Ubuntu.com
Aceitar: */*
Conexão: Feche

Conclusão

Neste artigo, apresentamos a você alguns dos tópicos mais importantes do tcpdump. O TCPDUMP, combinado com o poder da CLI, pode ser de grande ajuda na solução de problemas de rede, automação e gerenciamento de segurança. Uma vez estudados e combinados, seus filtros e opções de linha de comando podem contribuir muito para suas tarefas diárias de solução de problemas e automação e entendimento geral da rede.