Je veux utiliser une règle de filtrage pour capturer uniquement les paquets ack ou syn. Comment dois-je m'y prendre ?
Je préfère votre réponse. On dirait que vous avez fait un effort. Un vote positif pour vous.
Je veux utiliser une règle de filtrage pour capturer uniquement les paquets ack ou syn. Comment dois-je m'y prendre ?
En syntaxe du filtre pcap utilisé pour tcpdump devrait fonctionner exactement de la même manière sur le filtre de capture de wireshark.
Avec tcpdump, j'utiliserais un filtre comme celui-ci.
tcpdump "tcp[tcpflags] & (tcp-syn|tcp-ack) != 0"
Consultez le page de manuel de tcpdump et faites bien attention aux tcpflags.
N'oubliez pas de consulter les sections du Wiki Wireshark sur les filtres de capture et d'affichage. Malheureusement, les deux types de filtres utilisent une syntaxe complètement différente, et des noms différents pour la même chose.
Si vous vouliez un filtre d'affichage au lieu d'un filtre de capture, vous devriez probablement construire une expression combinant tcp.flags.ack, et tcp.flags.syn. Je suis beaucoup plus familier avec les filtres de capture, donc vous devrez vous débrouiller tout seul.
Je préfère votre réponse. On dirait que vous avez fait un effort. Un vote positif pour vous.
Il s'agit d'une excellente réponse avec de bonnes références, mais veuillez noter que cette syntaxe capturera tous les paquets qui ont les drapeaux SYN ou ACK définis, même si d'autres drapeaux sont également définis. Cela peut être ou ne pas être ce que le PO voulait. Veuillez consulter ma réponse ci-dessous pour un filtre plus strict si seuls les paquets TCP SYN ou ACK sont souhaités. Merci.
Bien que la réponse de @Zoredache soit belle et complète, notez que cette syntaxe produira tous les paquets qui ont le drapeau TCP SYN ou TCP ACK activé, y compris les paquets qui ne sont pas strictement des paquets "TCP SYN" ou "TCP ACK", parce qu'ils également ont d'autres drapeaux activés. Cela peut être ou ne pas être ce que vous (ou les futurs lecteurs) vouliez. Par exemple, cette syntaxe capturera également les paquets TCP SYN-ACK, TCP FIN-ACK, etc. Si vous voulez uniquement TCP SYN ou TCP ACK (c'est-à-dire JUSTE l'un de ces drapeaux activé), la syntaxe correcte du filtre de capture est la suivante :
'tcp[tcpflags] == tcp-syn or tcp[tcpflags] == tcp-ack'
De manière équivalente :
'tcp[13] == 2 or tcp[13] == 16'
A la vôtre !
tcpdump 'tcp[13] = 3'
http://danielmiessler.com/study/tcpdump/
Avancé
Vous pouvez également filtrer sur la base de portions spécifiques d'un paquet, ainsi que combiner plusieurs conditions en groupes. La première option est utile lorsque vous recherchez uniquement SYN
ou RST
par exemple, et le dernier pour une isolation encore plus poussée du trafic.
UAP RSF
[ Indice : une anagramme pour les drapeaux TCP : Unskilled Attackers Pester Real Security Folk]
votre mémo : ...
Montrez-moi tous les URGENT ( URG
) paquets...
tcpdump 'tcp[13] & 32 != 0'
Montrez-moi tous les ACKNOWLEDGE ( ACK
) paquets...
tcpdump 'tcp[13] & 16 != 0'
Montrez-moi tous les PUSH ( PSH
) paquets...
tcpdump 'tcp[13] & 8 != 0'
Montrez-moi tous les RESET ( RST
) paquets...
tcpdump 'tcp[13] & 4 != 0'
Montrez-moi tous les SYNCHRONIZE ( SYN
) paquets...
tcpdump 'tcp[13] & 2 != 0'
Montrez-moi tous les FINISH ( FIN
) paquets...
tcpdump 'tcp[13] & 1 != 0'
Montrez-moi tout SYNCHRONISATION/ACKNOWLEDGE ( SYNACK
) paquets...
tcpdump 'tcp[13] = 18'
[ Nota: Seul le PSH
, RST
, SYN
y FIN
sont affichés dans le champ de sortie des drapeaux de tcpdump. URG
et ACK
sont affichés, mais ils sont affichés ailleurs dans la sortie plutôt que dans le champ flags ].
Le plagiat n'est pas autorisé Stack Exchange . Veuillez modifier ce message pour indiquer clairement que vous avez copié le contenu du site lié. Merci.
J'ai fait un script pour voir le top des "synners". Pour cela, je ne considère que le paquet syn initial (le premier paquet du handshake à trois paquets). C'est à dire, syn = 1, ack = 0
while :; do
date;
tcpdump -i eth1 -n -c 100 \
'tcp[tcpflags] & (tcp-syn) != 0' and
'tcp[tcpflags] & (tcp-ack) == 0' 2> /dev/null \
| awk '{ print $3}' \
| sort | uniq -c | sort | tail -5;
echo;
sleep 1
done
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.
0 votes
Personnellement, je ne le ferais pas. Je capturerais tous les paquets, puis je filtrerais sur les drapeaux SYN et ACK plus tard. Si vous dépannez TCP, vous voulez presque toujours voir une conversation complète, pas seulement un handshake ou un ACK. Si vous n'êtes pas intéressé par la charge utile des données, vous pouvez limiter la taille des paquets à l'aide de la fonction
tcpdump -s SIZE
. L'en-tête TCP peut être d'une longueur variable, de sorte que capturer-s 128
obtiendra probablement tous les en-têtes possibles et peut-être un peu de données.4 votes
Peut-être que vous ne dépannez pas le TCP. Peut-être que vous voulez voir à quel point un programme est bavard, et que vous voulez compter ses connexions sortantes. Comme moi, maintenant.
0 votes
Dans mon cas, j'avais besoin de compter les occurrences de retransmissions SYN dues à l'épuisement de la socket TIME_WAIT. Je n'avais besoin que des paquets SYN. Un cas d'utilisation légitime pour le PO, je dirais.
0 votes
En rapport : Capturer seulement les paquets TCP SYN-ACK avec tcpdump