Chcę użyć reguły filtrowania do przechwytywania tylko pakietów ack lub syn. Jak mam to zrobic?
Chcę użyć reguły filtrowania do przechwytywania tylko pakietów ack lub syn. Jak mam to zrobic?
Odpowiedzi:
Składnia filtr pcap wykorzystywane do tcpdump powinien działać dokładnie tak samo na filtrze przechwytywania Wireshark.
Z tcpdump użyłbym takiego filtra.
tcpdump "tcp[tcpflags] & (tcp-syn|tcp-ack) != 0"
Sprawdź stronę podręcznika tcpdump i zwróć szczególną uwagę na tcpflags.
Koniecznie sprawdź także sekcje na Wiki Wireshark dotyczące filtrów przechwytywania i wyświetlania. Niestety oba typy filtrów używają zupełnie innej składni i różnych nazw dla tej samej rzeczy.
Jeśli zamiast filtru przechwytującego chcesz mieć filtr wyświetlania, prawdopodobnie będziesz musiał zbudować wyrażenie łączące tcp.flags.ack i tcp.flags.syn. Jednak znacznie lepiej znam filtry przechwytywania, więc będziesz musiał je rozwiązać samodzielnie.
Chociaż odpowiedź @ Zoredache jest ładna i kompletna, pamiętaj, że ta składnia da wszystkie pakiety, które mają ustawioną flagę TCP SYN lub TCP ACK, w tym pakiety, które nie są wyłącznie zwykłymi pakietami „TCP SYN” lub „TCP ACK”, ponieważ mają także ustawione inne flagi. To może być lub nie być to, co zamierzali (lub przyszli czytelnicy). Na przykład ta składnia będzie również przechwytywać pakiety TCP SYN-ACK, TCP FIN-ACK itp. Jeśli chcesz tylko pakietów TCP SYN lub TCP ACK (tj. JUST jedna z tych ustawionych flag), właściwa składnia filtra przechwytywania to:
'tcp[tcpflags] == tcp-syn or tcp[tcpflags] == tcp-ack'
Równoważnie:
'tcp[13] == 2 or tcp[13] == 16'
Twoje zdrowie!
Zrobiłem skrypt, aby zobaczyć najlepszych „synnerów”. W tym celu rozważam tylko początkowy pakiet syn (pierwszy pakiet uzgadniania trzech pakietów). Oznacza to, że 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
tcpdump 'tcp[13] = 3'
http://danielmiessler.com/study/tcpdump/
zaawansowane
Możesz także filtrować na podstawie określonych części pakietu, a także łączyć wiele warunków w grupy. Pierwszy z nich jest przydatny, gdy na przykład szukasz tylko SYN
s lub RST
s, a drugi to jeszcze bardziej zaawansowanej izolacji ruchu.
UAP RSF
[Wskazówka: Anagram dla flag TCP: Niewykwalifikowani atakujący Pester Real Security Folk]
twoja notatka: ...
Pokaż mi wszystkie URG
pakiety PILNE ( ) ...
tcpdump 'tcp[13] & 32 != 0'
Pokaż mi wszystkie ACK
pakiety ACKNOWLEDGE ( ) ...
tcpdump 'tcp[13] & 16 != 0'
Pokaż mi wszystkie PSH
pakiety PUSH ( ) ...
tcpdump 'tcp[13] & 8 != 0'
Pokaż mi wszystkie RST
pakiety RESET ( ) ...
tcpdump 'tcp[13] & 4 != 0'
Pokaż mi wszystkie SYN
pakiety SYNCHRONIZE ( ) ...
tcpdump 'tcp[13] & 2 != 0'
Pokaż mi wszystkie FIN
pakiety FINISH ( ) ...
tcpdump 'tcp[13] & 1 != 0'
Pokaż mi wszystkie SYNACK
pakiety SYNCHRONIZE / ACKNOWLEDGE ( ) ...
tcpdump 'tcp[13] = 18'
[ Uwaga: Tylko PSH
, RST
, SYN
, i FIN
flagi są wyświetlane w polu wyjścia flaga tcpdump. URG
s i ACK
s są wyświetlane, ale są wyświetlane gdzie indziej na wyjściu, a nie w polu flagi]
Chciałem sam uzyskać tylko pakiety SYN, użyłem następującego polecenia:
tcpdump -i eth7 'tcp[13] & 2 != 0'
To powinno od razu zadziałać.
tcpdump -s SIZE
. Nagłówek TCP może mieć różną długość, więc przechwytywanie-s 128
prawdopodobnie zapewni wszystkie możliwe nagłówki i może trochę danych.