Pessoalmente, eu não faria isso. Eu capturava todos os pacotes e depois filtrava os sinalizadores SYN e ACK posteriormente. Se você estiver solucionando problemas do TCP, quase sempre desejará ver uma conversa inteira, não apenas um aperto de mão ou um ACK. Se você não estiver interessado na carga útil real dos dados, poderá limitar o tamanho do pacote tcpdump -s SIZE. O cabeçalho TCP pode ter um comprimento variável; portanto, a captura -s 128provavelmente obterá todos os cabeçalhos possíveis e talvez um pouco de dados.
Suprjami
4
Talvez você não esteja solucionando problemas de TCP. Talvez você queira ver o quão falador é um programa e conte suas conexões de saída. Como eu agora.
Dan Pritts
Respostas:
81
A sintaxe do filtro pcap usada para tcpdump deve funcionar exatamente da mesma maneira no filtro de captura do wireshark.
Verifique também as seções no Wiki do Wireshark sobre filtros de captura e exibição. Infelizmente, os dois tipos de filtros usam uma sintaxe completamente diferente e nomes diferentes para a mesma coisa.
Se você quisesse um filtro de exibição em vez do filtro de captura, provavelmente precisaria criar uma expressão combinando tcp.flags.ack e tcp.flags.syn. Porém, eu estou muito mais familiarizado com os filtros de captura, então você terá que resolver isso sozinho.
Eu gosto mais da sua resposta. Parece que você se esforçou. Voto positivo para você.
ablue
4
Esta é uma ótima resposta com boas referências, mas observe que essa sintaxe irá capturar todos os pacotes com os sinalizadores SYN ou ACK definidos, mesmo se outros sinalizadores também estiverem definidos. Isso pode ou não ser o que o OP pretendia. Por favor, veja minha resposta abaixo para obter um filtro mais rigoroso, se apenas forem desejados pacotes TCP SYN ou ACK. Felicidades.
9119 JJC
14
Embora a resposta do @ Zoredache seja agradável e completa, observe que essa sintaxe produzirá todos os pacotes com o sinalizador TCP SYN ou TCP ACK definido, incluindo pacotes que não sejam estritamente pacotes "TCP SYN" ou "TCP ACK", porque eles também tem outros sinalizadores definidos. Isso pode ou não ser o que você (ou futuros leitores) pretendeu. Por exemplo, essa sintaxe também captura os pacotes TCP SYN-ACK, TCP FIN-ACK etc. Se você deseja apenas pacotes TCP SYN ou TCP ACK (por exemplo, APENAS um desses sinalizadores configurados), a sintaxe apropriada do filtro de captura é:
'tcp[tcpflags] == tcp-syn or tcp[tcpflags] == tcp-ack'
Eu criei um script para ver os principais "sincronizadores". Para isso, considero apenas o pacote syn inicial (o primeiro pacote do handshake de três pacotes). Ou seja, syn = 1, ack = 0
Esse é um bom exemplo. Você pode simplificar ainda mais o filtro de captura do tcpdump substituindo "'tcp [tcpflags] & (tcp-syn)! = 0' e 'tcp [tcpflags] e (tcp-ack) == 0'" por apenas 'tcp [tcpflags ] == tcp-syn '. Isso excluirá automaticamente os pacotes com o ACK definido. Felicidades!
Você também pode filtrar com base em partes específicas de um pacote, bem como combinar várias condições em grupos. O primeiro é útil ao procurar apenas SYNs ou RSTs, por exemplo, e o último para isolamento de tráfego ainda mais avançado.
UAP RSF
[Dica: um anagrama para os sinalizadores do TCP: invasores não qualificados incomodam a segurança real]
sua nota: ...
Mostre-me todos os URGpacotes URGENTES ( ) ...
tcpdump 'tcp[13] & 32 != 0'
Mostre-me todos os ACKpacotes RECONHECIMENTO ( ) ...
tcpdump 'tcp[13] & 16 != 0'
Mostre-me todos os PSHpacotes PUSH ( ) ...
tcpdump 'tcp[13] & 8 != 0'
Mostre-me todos os RSTpacotes RESET ( ) ...
tcpdump 'tcp[13] & 4 != 0'
Mostre-me todos os SYNpacotes SYNCHRONIZE ( ) ...
tcpdump 'tcp[13] & 2 != 0'
Mostre-me todos os FINpacotes FINISH ( ) ...
tcpdump 'tcp[13] & 1 != 0'
Mostre-me todos os SYNACKpacotes SYNCHRONIZE / RECONHECIMENTO ( ) ...
tcpdump 'tcp[13] = 18'
[ Nota: Apenas o PSH, RST, SYN, e FINbandeiras são exibidos na saída de campo a bandeira do tcpdump. URGs e ACKs são exibidos, mas são mostrados em outro lugar na saída e não no campo sinalizadores]
Isso capturará todos os pacotes com o conjunto de sinalizadores SYN, incluindo SYN, SYN-ACK, etc. Se você quiser apenas pacotes SYN, use 'tcp [13] == 2'. Felicidades!
tcpdump -s SIZE
. O cabeçalho TCP pode ter um comprimento variável; portanto, a captura-s 128
provavelmente obterá todos os cabeçalhos possíveis e talvez um pouco de dados.Respostas:
A sintaxe do filtro pcap usada para tcpdump deve funcionar exatamente da mesma maneira no filtro de captura do wireshark.
Com o tcpdump eu usaria um filtro como este.
Verifique a página do manual tcpdump e preste muita atenção às tcpflags.
Verifique também as seções no Wiki do Wireshark sobre filtros de captura e exibição. Infelizmente, os dois tipos de filtros usam uma sintaxe completamente diferente e nomes diferentes para a mesma coisa.
Se você quisesse um filtro de exibição em vez do filtro de captura, provavelmente precisaria criar uma expressão combinando tcp.flags.ack e tcp.flags.syn. Porém, eu estou muito mais familiarizado com os filtros de captura, então você terá que resolver isso sozinho.
fonte
Embora a resposta do @ Zoredache seja agradável e completa, observe que essa sintaxe produzirá todos os pacotes com o sinalizador TCP SYN ou TCP ACK definido, incluindo pacotes que não sejam estritamente pacotes "TCP SYN" ou "TCP ACK", porque eles também tem outros sinalizadores definidos. Isso pode ou não ser o que você (ou futuros leitores) pretendeu. Por exemplo, essa sintaxe também captura os pacotes TCP SYN-ACK, TCP FIN-ACK etc. Se você deseja apenas pacotes TCP SYN ou TCP ACK (por exemplo, APENAS um desses sinalizadores configurados), a sintaxe apropriada do filtro de captura é:
Equivalentemente:
Felicidades!
fonte
Eu criei um script para ver os principais "sincronizadores". Para isso, considero apenas o pacote syn inicial (o primeiro pacote do handshake de três pacotes). Ou seja, syn = 1, ack = 0
fonte
http://danielmiessler.com/study/tcpdump/
Avançado
Você também pode filtrar com base em partes específicas de um pacote, bem como combinar várias condições em grupos. O primeiro é útil ao procurar apenas
SYN
s ouRST
s, por exemplo, e o último para isolamento de tráfego ainda mais avançado.UAP RSF
[Dica: um anagrama para os sinalizadores do TCP: invasores não qualificados incomodam a segurança real]
sua nota: ...
Mostre-me todos os
URG
pacotes URGENTES ( ) ...Mostre-me todos os
ACK
pacotes RECONHECIMENTO ( ) ...Mostre-me todos os
PSH
pacotes PUSH ( ) ...Mostre-me todos os
RST
pacotes RESET ( ) ...Mostre-me todos os
SYN
pacotes SYNCHRONIZE ( ) ...Mostre-me todos os
FIN
pacotes FINISH ( ) ...Mostre-me todos os
SYNACK
pacotes SYNCHRONIZE / RECONHECIMENTO ( ) ...[ Nota: Apenas o
PSH
,RST
,SYN
, eFIN
bandeiras são exibidos na saída de campo a bandeira do tcpdump.URG
s eACK
s são exibidos, mas são mostrados em outro lugar na saída e não no campo sinalizadores]fonte
Eu queria obter apenas pacotes SYN, usei o seguinte comando:
tcpdump -i eth7 'tcp[13] & 2 != 0'
Isso deve funcionar para você imediatamente.
fonte
deve mostrá-los sem filtros ou argumentos.
fonte