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 SYNs lub RSTs, 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 URGpakiety PILNE ( ) ...
tcpdump 'tcp[13] & 32 != 0'
Pokaż mi wszystkie ACKpakiety ACKNOWLEDGE ( ) ...
tcpdump 'tcp[13] & 16 != 0'
Pokaż mi wszystkie PSHpakiety PUSH ( ) ...
tcpdump 'tcp[13] & 8 != 0'
Pokaż mi wszystkie RSTpakiety RESET ( ) ...
tcpdump 'tcp[13] & 4 != 0'
Pokaż mi wszystkie SYNpakiety SYNCHRONIZE ( ) ...
tcpdump 'tcp[13] & 2 != 0'
Pokaż mi wszystkie FINpakiety FINISH ( ) ...
tcpdump 'tcp[13] & 1 != 0'
Pokaż mi wszystkie SYNACKpakiety SYNCHRONIZE / ACKNOWLEDGE ( ) ...
tcpdump 'tcp[13] = 18'
[ Uwaga: Tylko PSH, RST, SYN, i FINflagi są wyświetlane w polu wyjścia flaga tcpdump. URGs i ACKs 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 128prawdopodobnie zapewni wszystkie możliwe nagłówki i może trochę danych.