TCPFLOW - Analisar e depurar tráfego de rede no Linux

TCPFLOW - Analisar e depurar tráfego de rede no Linux

TCPFLOW é uma ferramenta de linha de comando de código aberto e de código aberto e poderoso para analisar o tráfego de rede em sistemas semelhantes a UNIX, como o Linux. Ele captura dados recebidos ou transferidos por conexões TCP e o armazena em um arquivo para análise posterior, em um formato útil que permite análise de protocolo e depuração.

Leia também: 16 melhores ferramentas de monitoramento de largura de banda para analisar o uso da rede no Linux

Na verdade, é uma ferramenta do tipo tcpdump, pois processa pacotes do fio ou de um arquivo armazenado. Ele suporta as mesmas expressões poderosas de filtragem suportadas por sua contraparte. A única diferença é que o TCPFlow coloca todos os pacotes TCP em ordem e monta cada fluxo em um arquivo separado (um arquivo para cada direção do fluxo) para análise posterior.

Seu conjunto de recursos inclui um sistema avançado de plug-in para descomprimir conexões HTTP compactadas, desfazer a codificação de MIME ou invocar programas de terceiros para pós-processamento e muito mais.

Existem muitos casos de uso para TCPFlow que incluem entender os fluxos de pacotes de rede e também suporta para realizar forenses de rede e divulgar o conteúdo das sessões HTTP.

Como instalar o TCPFlow em sistemas Linux

TCPFLOW está disponível nos repositórios oficiais das distribuições GNU/Linux convencionais, você pode instalá -lo usando o gerenciador de pacotes, conforme mostrado.

$ sudo apt install tcpflow #debian/ubuntu $ sudo yum install tcpflow #centros/rhel $ sudo dnf install tcpflow #fedora 22+ 

Depois de instalar o TCPFlow, você pode executá -lo com privilégios de superusuário, caso contrário, use o Comando sudo. Observe que ele ouve a interface de rede ativa (por exemplo ENP0S3).

$ sudo tcpflow TCPFlow: ouvindo em ENP0S3 

Por padrão, o TCPFlow armazena todos Timestamp).

IP fonte.Fonteport-Destip.Destport 192.168.043.031.52920-216.058.210.034.00443 

Agora vamos fazer uma lista de diretórios para ver se o fluxo do TCP foi capturado em qualquer arquivo.

$ LS -1 total 20 -rw-r-r--. 1 raiz raiz 808 19 de setembro 12:49 192.168.043.031.52920-216.058.210.034.00443 -rw-r-r--. 1 raiz raiz 59 19 de setembro 12:49 216.058.210.034.00443-192.168.043.031.52920 

Como mencionamos anteriormente, cada fluxo TCP é armazenado em seu próprio arquivo. A partir da saída acima, você pode ver que existem três arquivos de transcrição, que indicam TCPFlow em duas direções opostas, onde o IP de origem no primeiro arquivo e o IP de destino no segundo arquivo e vice -versa.

O primeiro arquivo 192.168.043.031.52920-216.058.210.034.00443 contém dados transferidos do host 192.168.043.031 (o host local em que o TCPFlow foi executado) via porta 52920, para hospedar 216.058.210.034 (o host remoto) via porta 443.

E o segundo arquivo 216.058.210.034.00443-192.168.043.031.52920 contém dados enviados do host 216.058.210.034 (o host remoto) via porta 443 para hospedar 192.168.043.031 (o host local em que o TCPFlow foi executado) via porta 52920.

Há também um Xml Relatório gerado, que contém informações sobre o programa como como ele foi compilado e o computador em que foi executado e um registro de cada conexão TCP.

Como você deve ter notado, o TCPFlow armazena os arquivos de transcrição no diretório atual por padrão. O -o a opção pode ajudá -lo a especificar o diretório de saída onde os arquivos de transcrição serão gravados.

$ sudo tcpflow -o tcpflow_files $ sudo ls -l tcpflow_files Total de 32 -rw-r-r--. 1 raiz raiz 1665 19 de setembro 12:56 157.240.016.035.00443-192.168.000.103.45986 -rw-r-r--. 1 raiz raiz 45 set 19 12:56 169.044.082.101.00443-192.168.000.103.55496 -rw-r-r--. 1 raiz raiz 2738 19 de setembro 12:56 172.217.166.046.00443-192.168.000.103.39954 -RW-R-R--. 1 raiz raiz 68 set 19 12:56 192.168.000.102.00022-192.168.000.103.42436 -rw-r-r--. 1 raiz raiz 573 19 de setembro 12:56 192.168.000.103.39954-172.217.166.046.00443 -rw-r-r--. 1 raiz raiz 4067 19 de setembro 12:56 192.168.000.103.45986-157.240.016.035.00443 -rw-r-r--. 1 raiz raiz 38 set 19 12:56 192.168.000.103.55496-169.044.082.101.00443 -rw-r-r--. 1 raiz raiz 3159 19 de setembro 12:56 Relatório.xml 

Você também pode imprimir o conteúdo de pacotes para stdout como são recebidos, sem armazenar dados capturados em arquivos, usando o -c bandeira da seguinte maneira.

Para testar isso de maneira eficaz, abra um segundo terminal e execute um ping, ou navegar na internet. Você deve ver os detalhes do ping ou seus detalhes de navegação sendo capturados pelo TCPFlow.

$ sudo tcpflow -c 

É possível capturar todo o tráfego em uma porta específica, por exemplo, porta 80 (Http). No caso do tráfego HTTP, você poderá ver os cabeçalhos HTTP seguidos pelo conteúdo tudo no stdout ou em um arquivo se o -c O interruptor é removido.

$ sudo tcpflow porta 80 

Para capturar pacotes de uma interface de rede específica, use o -eu sinalizador para especificar o nome da interface.

$ sudo tcpflow -i eth0 porta 80 

Você também pode especificar um host de destino (os valores aceitos são endereço IP, nome do host ou domínios), como mostrado.

$ sudo tcpflow -c host 192.68.43.1 ou $ sudo tcpflow -c host www.Google.com 

Você pode ativar todo o processamento usando todos os scanners com o -a bandeira, isso é equivalente ao -e Todo o interruptor.

$ sudo tcpflow -a ou $ sudo tcpflow -e 

Um scanner específico também pode ser ativado; Os scanners disponíveis incluem MD5, HTTP, Netviz, TCPDemux e Wifiviz (Run tcpflow -h para visualizar informações detalhadas sobre cada scanner).

$ sudo tcpflow -e http ou $ sudo tcpflow -e md5 ou $ sudo tcpflow -e netviz ou $ sudo tcpflow -e tcpdemux ou $ sudo tcpflow -e wifiviz 

O exemplo seguinte mostra como ativar todos os scanners, exceto o tcpdemux.

$ sudo tcpflow -a -x tcpdemux 

O TCPFlow geralmente tenta colocar a interface de rede em modo promíscuo antes de capturar pacotes. Você pode impedir isso usando o -p bandeira como mostrado.

$ sudo tcpflow -p -i eth0 

Para ler pacotes de um arquivo pCAP tcpdump, use o -r bandeira.

$ sudo tcpflow -f arquivo.PCAP 

Você pode ativar o modo detalhado usando o -v ou -d 10 opções.

$ sudo tcpflow -v ou $ sudo tcpflow -d 10 

Importante: Uma limitação de TCPFLOW é que, atualmente, não entende fragmentos IP, portanto os dados transmitidos como parte das conexões TCP contendo fragmentos IP não serão capturados adequadamente.

Para mais informações e opções de uso, consulte o TCPFLOW página de homem.

$ man tcpflow 

Repositório do TCPFlow Github: https: // github.com/simsong/tcpflow

É tudo por agora! TCPFLOW é um poderoso gravador de fluxo TCP, que é útil para entender os fluxos de pacotes de rede e executar forense de rede e muito mais. Experimente e compartilhe seus pensamentos sobre isso conosco nos comentários.