Saya ingin menggunakan aturan filter untuk menangkap hanya paket ack atau syn. Bagaimana saya melakukan ini?
Saya ingin menggunakan aturan filter untuk menangkap hanya paket ack atau syn. Bagaimana saya melakukan ini?
Jawaban:
The sintaks pcap filter yang digunakan untuk tcpdump harus bekerja dengan cara yang sama pada wireshark capture filter.
Dengan tcpdump saya akan menggunakan filter seperti ini.
tcpdump "tcp[tcpflags] & (tcp-syn|tcp-ack) != 0"
Lihatlah halaman manual tcpdump , dan perhatikan dengan cermat tcpdag.
Pastikan juga untuk memeriksa bagian-bagian dalam Wireshark Wiki tentang menangkap dan menampilkan filter. Sayangnya kedua jenis filter ini menggunakan sintaks yang sama sekali berbeda, dan nama yang berbeda untuk hal yang sama.
Jika Anda menginginkan filter tampilan alih-alih menangkap filter, Anda mungkin perlu membuat ekspresi yang menggabungkan tcp.flags.ack, dan tcp.flags.syn. Saya jauh lebih terbiasa dengan filter tangkap, jadi Anda harus mengatasinya sendiri.
Walaupun jawaban @ Zoredache bagus dan lengkap, perhatikan bahwa sintaks akan menghasilkan paket yang memiliki set TCP SYN atau flag TCP ACK, termasuk paket yang tidak hanya paket "TCP SYN" atau "TCP ACK", karena mereka juga memiliki set bendera lainnya. Ini mungkin atau mungkin bukan apa yang Anda (atau pembaca masa depan) maksudkan. Misalnya, sintaks itu juga akan menangkap paket TCP SYN-ACK, TCP FIN-ACK, dll. Jika Anda hanya menginginkan paket TCP SYN atau TCP ACK (yaitu HANYA salah satu dari flag yang ditetapkan), sintaksis filter capture yang tepat adalah:
'tcp[tcpflags] == tcp-syn or tcp[tcpflags] == tcp-ack'
Setara:
'tcp[13] == 2 or tcp[13] == 16'
Tepuk tangan!
Saya membuat skrip untuk melihat "synners" teratas. Untuk itu, saya hanya mempertimbangkan paket syn awal (paket pertama dari tiga paket jabat tangan). Yaitu, 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/
Maju
Anda juga dapat memfilter berdasarkan bagian tertentu dari paket, serta menggabungkan beberapa kondisi ke dalam grup. Yang pertama berguna ketika mencari hanya SYN
s atau RST
s, misalnya, dan yang terakhir untuk isolasi lalu lintas yang lebih maju.
UAP RSF
[Petunjuk: Anagram untuk bendera TCP: Penyerang Tidak Terampil Pester Real Security Folk]
memo Anda: ...
Tunjukkan semua URG
paket URGENT ( ) ...
tcpdump 'tcp[13] & 32 != 0'
Tunjukkan semua ACK
paket ACKNOWLEDGE ( ) ...
tcpdump 'tcp[13] & 16 != 0'
Tunjukkan semua PSH
paket PUSH ( ) ...
tcpdump 'tcp[13] & 8 != 0'
Tunjukkan semua RST
paket RESET ( ) ...
tcpdump 'tcp[13] & 4 != 0'
Tunjukkan semua SYN
paket SYNCHRONIZE ( ) ...
tcpdump 'tcp[13] & 2 != 0'
Tunjukkan semua FIN
paket FINISH ( ) ...
tcpdump 'tcp[13] & 1 != 0'
Tunjukkan semua paket SYNCHRONIZE / ACKNOWLEDGE ( SYNACK
) ...
tcpdump 'tcp[13] = 18'
[ Catatan: Hanya PSH
, RST
, SYN
, dan FIN
bendera ditampilkan dalam output bidang bendera tcpdump ini. URG
s dan ACK
s ditampilkan, tetapi ditampilkan di tempat lain di output daripada di bidang bendera]
Saya hanya ingin mendapatkan paket SYN sendiri, saya menggunakan perintah berikut:
tcpdump -i eth7 'tcp[13] & 2 != 0'
Ini seharusnya bekerja untuk Anda secara langsung.
tcpdump -s SIZE
. Header TCP bisa panjang variabel, jadi menangkap-s 128
mungkin akan mendapatkan semua header yang mungkin dan mungkin sedikit data.