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
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.