como encontrar streams tcp sem a sequência final ack / fin em um arquivo enorme de captura de pacotes

2

Eu tenho um arquivo pcap enorme que contém um grande número de fluxos tcp individuais. Mas, fora desses, existem alguns fluxos inválidos que não possuem a sequência fin / ack final. Existe alguma maneira eu posso encontrar apenas esses fluxos usando wireshark? Existem outras ferramentas que me permitem pesquisar o pcaps dessa maneira?

Qualquer ajuda seria apreciada.

    
por woodstok 19.03.2012 / 10:26

2 respostas

0

O comando a seguir imprime cada meia conexão incompleta.

tcpdump -r pcap-file 'tcp[tcpflags] & (tcp-syn|tcp-fin) > 0' | 
sed -r 's/^.*IP (.*) > (.*):.*$/ /'|sort|uniq -u

A abordagem assume que cada par de soquetes é usado apenas uma vez durante todo o rastreamento.

Explicação

Para uma conexão entre

IP_A:PORT_A <--> IP_B:PORT_B

um tcpdump contém as metades

IP_A:PORT_A > IP_B:PORT_B, and
IP_B:PORT_B > IP_A:PORT_A

Para cada metade, o dump deve conter dois segmentos carregando um sinalizador SYN ou FIN. Então, o que o comando faz é:

  1. Colete os segmentos que carregam o sinalizador SYN ou FIN

    tcpdump -r pcap-file 'tcp[tcpflags] & (tcp-syn|tcp-fin) > 0

  2. Agregue o resultado por meia conexão, independentemente do sinalizador real (SYN ou FIN)

    2.1. Ordenar por meia conexão

    sed -r 's/^.*IP (.*) > (.*):.*$/ /'|sort

    2.2. Conte os segmentos envolvidos em cada meia conexão e filtre todas as meias conexões que envolvam corretamente dois segmentos

    uniq -u

por 29.06.2013 / 11:28
0

Aqui está outra maneira de fazer isso usando tshark . A idéia é a mesma que a resposta do @artistex - a diferença é que ela não olha para cada meia conexão para si mesma, e a saída é o número do fluxo TCP (do Wireshark / tshark) que pode ser mais fácil de se trabalhar quando você deseja abrir esse fluxo no Wireshark e continuar a processá-lo lá.

tshark -r pcap_file.pcap -R "tcp.flags & 0x03" -Tfields -etcp.stream | 
sort -n | uniq -c | awk -F ' ' '{ if ($1<4) print $1," ", $2 }'

O filtro de exibição faz o mesmo que o filtro de captura da outra resposta, ele usa o fato de que os bits SYN e FIN são dois dos bits menos significativos no campo flags do TCP, portanto, se ambos estiverem configurados, isso seria 0b11 ou 0x3 . AND -ing o campo tcp.flags com 0x3 forneceria valores diferentes de zero se um sinalizador estiver definido.

tshark gera o número do fluxo TCP para cada pacote aqui. Nós os classificamos e contamos os números únicos. O último passo imprime apenas as linhas em que o número de pacotes para esse fluxo é menor que 4 (1 SYN e 1 FIN para cada meia direção).

Então você pode abrir o Wireshark com

wireshark -r pcap-file -R "tcp.stream eq 1234"

em que 1234 é do comando anterior.

Bonita? Eu acho que não. Rápido? Não ...

    
por 13.02.2014 / 15:17