Pada asalnya, ia ditulis pada tahun 1988 oleh empat pekerja Network Research Group di Lawrence Berkeley Laboratory di California. Ia dianjurkan sebelas tahun kemudian oleh Micheal Richardson dan Bill Fenner pada tahun 1999, yang membuat laman web tcpdump. Tcpdump berfungsi pada semua sistem operasi seperti Unix. Versi windows dari Tcpdump disebut WinDump dan menggunakan WinPcap, alternatif windows untuk libpcap.
Gunakan snap untuk memasang tcpdump:
$ sudo snap install tcpdumpGunakan pengurus pakej anda untuk memasang tcpdump:
$ sudo apt-get install tcpdump (Debian / Ubuntu)$ sudo dnf pasang tcpdump (CentOS / RHEL 6 & 7)
$ sudo yum pasang tcpdump (Fedora / CentOS / RHEL 8)
Mari lihat penggunaan dan output yang berbeza semasa kita meneroka tcpdump!
UDP
Tcpdump dapat membuang paket UDP juga. Kami akan menggunakan alat netcat (nc) untuk menghantar paket UDP dan kemudian membuangnya.
$ echo -n "tcpdumper" | nc -w 1 -u localhost 1337Dalam arahan yang diberikan di atas, kami menghantar paket UDP yang terdiri daripada rentetan "Tcpdumper" ke pelabuhan UDP 1337 melalui localhost. Tcpdump menangkap paket yang dihantar melalui port UDP 1337 dan akan memaparkannya.
Kami sekarang akan membuang paket ini menggunakan tcpdump.
$ sudo tcpdump -i lo udp port 1337 -vvv -XPerintah ini akan menangkap dan menunjukkan data yang diambil dari paket dalam ASCII dan juga bentuk hex.
tcpdump: mendengar pada lo, EN10MB jenis pautan (Ethernet), panjang tangkapan gambar 262144 bait04:39:39.072802 IP (tos 0x0, ttl 64, id 32650, offset 0, flags [DF], proto UDP (17), panjang 37)
localhost.54574> localhost.1337: [buruk udp cksum 0xfe24 -> 0xeac6!] UDP, panjang 9
0x0000: 4500 0025 7f8a 4000 4011 bd3b 7f00 0001 E…%… @.@…;…
0x0010: 7f00 0001 d52e 0539 0011 fe24 7463 7064… 9… $ tcpd
0x0020: 756d 7065 72 umper
Seperti yang kita lihat, paket itu dihantar ke port 1337, dan panjangnya adalah 9 sebagai tali tcpdumper ialah 9 bait. Kita juga dapat melihat bahawa paket tersebut telah dipaparkan dalam format hex.
DHCP
Tcpdump juga dapat melakukan penyiasatan pada paket DHCP melalui rangkaian. DHCP menggunakan port UDP no 67 atau 68, jadi kami akan menentukan dan membatasi tcpdump untuk paket DHCP sahaja. Andaikan kita menggunakan antara muka rangkaian wifi.
Perintah yang digunakan di sini adalah:
tcpdump: mendengar pada wlan0, jenis pautan EN10MB (Ethernet), panjang tangkapan gambar 262144 bait
03:52:04.004356 00: 11: 22: 33: 44: 55> 00: 11: 22: 33: 44: 66, ethertype IPv4 (0x0800), panjang 342: (tos 0x0, ttl 64, id 39781, offset 0, bendera [DF ], proto UDP (17), panjang 328)
192.168.10.21.68> 192.168.10.1.67: [udp sum ok] BOOTP / DHCP, Permintaan dari 00: 11: 22: 33: 44: 55, panjang 300, xid 0xfeab2d67, Bendera [tiada] (0x0000)
Pelanggan-IP 192.168.10.16
Pelanggan-Ethernet-Alamat 00: 11: 22: 33: 44: 55
Sambungan Vendor-rfc1048
Cookie Ajaib 0x63825363
DHCP-Mesej (53), panjang 1: Pelepasan
Pelayan-ID (54), panjang 4: 192.168.10.1
Nama Hos (12), panjang 6: "burung nuri"
TAMAT (255), panjang 0
PAD (0), panjang 0, berlaku 42
DNS
DNS, juga dikenali sebagai Domain Name System, mengesahkan untuk memberi anda apa yang anda cari dengan memadankan nama Domain dengan alamat domain. Untuk memeriksa komunikasi tahap DNS peranti anda melalui internet, anda boleh menggunakan tcpdump dengan cara berikut. DNS menggunakan port UDP 53 untuk komunikasi.
$ sudo tcpdump -i wlan0 udp port 53tcpdump: mendengar pada wlan0, jenis pautan EN10MB (Ethernet), panjang tangkapan gambar 262144 bait
04:23:48.516616 IP (tos 0x0, ttl 64, id 31445, offset 0, flags [DF], proto UDP (17), panjang 72)
192.168.10.16.45899> satu.satu.satu.satu.domain: [udp sum ok] 20852+ A? mozilla.cloudflare-dns.com. (44)
04:23:48.551556 IP (tos 0x0, ttl 60, id 56385, offset 0, flags [DF], proto UDP (17), panjang 104)
satu.satu.satu.satu.domain> 192.168.10.16.45899: [udp sum ok] 20852 q: A? mozilla.cloudflare-dns.com. 2/0/0 mozilla.cloudflare-dns.com. [24s] A 104.16.249.249, mozilla.cloudflare-dns.com. [24s] A 104.16.248.249 (76)
04:23:48.648477 IP (tos 0x0, ttl 64, id 31446, offset 0, flags [DF], proto UDP (17), panjang 66)
192.168.10.16.34043> satu.satu.satu.satu.domain: [udp sum ok] 40757+ PTR? 1.1.1.1.dalam-addr.arpa. (38)
04:23:48.688731 IP (tos 0x0, ttl 60, id 56387, offset 0, flags [DF], proto UDP (17), panjang 95)
satu.satu.satu.satu.domain> 192.168.10.16.34043: [udp sum ok] 40757 q: PTR? 1.1.1.1.dalam-addr.arpa. 1/0/0 1.1.1.1.dalam-addr.arpa. [26m53s] PTR satu.satu.satu.satu. (67)
ARP
Protokol Penyelesaian Alamat digunakan untuk mencari alamat lapisan pautan, seperti alamat MAC. Ini dikaitkan dengan alamat lapisan internet yang diberikan, biasanya alamat IPv4.
Kami menggunakan tcpdump untuk menangkap dan membaca data yang dibawa dalam paket arp. Perintahnya semudah:
$ sudo tcpdump -i wlan0 arp -vvvtcpdump: mendengar pada wlan0, jenis pautan EN10MB (Ethernet), panjang tangkapan gambar 262144 bait
03:44:12.023668 ARP, Ethernet (len 6), IPv4 (len 4), Minta siapa yang mempunyai 192.168.10.1 beritahu 192.168.10.2, panjang 28
03:44:17.140259 ARP, Ethernet (len 6), IPv4 (len 4), Minta siapa yang mempunyai 192.168.10.21 beritahu 192.168.10.1, panjang 28
03:44:17.140276 ARP, Ethernet (len 6), IPv4 (len 4), Balas 192.168.10.21 is-at 00: 11: 22: 33: 44: 55 (oui Tidak diketahui), panjang 28
03:44:42.026393 ARP, Ethernet (len 6), IPv4 (len 4), Minta siapa yang mempunyai 192.168.10.1 beritahu 192.168.10.2, panjang 28
ICMP
ICMP, juga dikenal sebagai Internet Control Message Protocol, adalah protokol sokongan dalam rangkaian protokol Internet. ICMP digunakan sebagai protokol maklumat.
Untuk melihat semua paket ICMP pada antara muka, kita dapat menggunakan perintah ini:
$ sudo tcpdump icmp -vvvtcpdump: mendengar pada wlan0, jenis pautan EN10MB (Ethernet), panjang tangkapan gambar 262144 bait
04:26:42.123902 IP (tos 0x0, ttl 64, id 14831, offset 0, flags [DF], proto ICMP (1), panjang 84)
192.168.10.16> 192.168.10.1: Permintaan gema ICMP, id 47363, seq 1, panjang 64
04:26:42.128429 IP (tos 0x0, ttl 64, id 32915, offset 0, flags [none], proto ICMP (1), panjang 84)
192.168.10.1> 192.168.10.16: Jawapan echo ICMP, id 47363, seq 1, panjang 64
04:26:43.125599 IP (tos 0x0, ttl 64, id 14888, offset 0, bendera [DF], ICMP proto (1), panjang 84)
192.168.10.16> 192.168.10.1: Permintaan gema ICMP, id 47363, seq 2, panjang 64
04:26:43.128055 IP (tos 0x0, ttl 64, id 32916, offset 0, flags [none], proto ICMP (1), panjang 84)
192.168.10.1> 192.168.10.16: Jawapan echo ICMP, id 47363, seq 2, panjang 64
NTP
NTP adalah protokol rangkaian yang dirancang khusus untuk menyegerakkan waktu pada rangkaian mesin. Untuk menangkap lalu lintas di ntp:
$ sudo tcpdump dst port 12304:31:05.547856 IP (tos 0x0, ttl 64, id 34474, offset 0, flags [DF], proto UDP (17), panjang 76)
192.168.10.16.ntp> masa-b-wwv.nist.gov.ntp: [udp sum ok] NTPv4, Pelanggan, panjang 48
Penunjuk lompatan: jam tidak diselaraskan (192), Stratum 0 (tidak ditentukan), tinjauan 3 (8s), ketepatan -6
Kelewatan Akar: 1.000000, Penyebaran akar: 1.000000, Rujukan-ID: (tidak spesifik)
Cap Masa Rujukan: 0.000000000
Cap Masa Pemula: 0.000000000
Terima Cap Masa: 0.000000000
Hantar Cap Waktu: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
Pemula - Terima Cap Masa: 0.000000000
Originator - Hantar Cap Waktu: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
04:31:05.841696 IP (tos 0x0, ttl 56, id 234, offset 0, flags [none], proto UDP (17), panjang 76)
masa-b-wwv.nist.gov.ntp> 192.168.10.16.ntp: [udp sum ok] NTPv3, Server, panjang 48
Penunjuk lompatan: (0), Stratum 1 (rujukan utama), tinjauan 13 (8192s), ketepatan -29
Kelewatan Akar: 0.000244, Penyebaran akar: 0.000488, ID Rujukan: NIST
Cap Waktu Rujukan: 3825358208.000000000 (2021-03-21T23: 30: 08Z)
Cap Waktu Pemula: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
Terima Cap Waktu: 3825358275.028660181 (2021-03-21T23: 31: 15Z)
Hantar Cap Waktu: 3825358275.028661296 (2021-03-21T23: 31: 15Z)
Pemula - Terima Cap Masa: +9.480896026
Originator - Hantar Cap Waktu: +9.480897141
SMTP
SMTP atau Simple Mail Transfer Protocol digunakan terutamanya untuk e-mel. Tcpdump boleh menggunakan ini untuk mengekstrak maklumat e-mel yang berguna. Contohnya, untuk mengekstrak penerima / pengirim e-mel:
$ sudo tcpdump -n -l port 25 | grep -i 'MAIL DARI \ | RCPT KE'IPv6
IPv6 adalah "generasi berikutnya" IP, menyediakan berbagai alamat IP. IPv6 membantu mencapai kesihatan Internet jangka panjang.
Untuk menangkap lalu lintas IPv6, gunakan penapis ip6 yang menentukan protokol TCP dan UDP menggunakan proto 6 dan proto-17.
$ sudo tcpdump -n -i mana-mana ip6 -vvvtcpdump: jenis pautan data LINUX_SLL2
tcpdump: mendengar pada apa-apa, jenis pautan LINUX_SLL2 (Linux dimasak v2), panjang tangkapan gambar 262144 bait
04:34:31.847359 lo In IP6 (flowlabel 0xc7cb6, hlim 64, UDP header seterusnya (17) panjang muatan: 40) :: 1.49395> :: 1.49395: [buruk udp cksum 0x003b -> 0x3587!] UDP, panjang 32
04:34:31.859082 lo In IP6 (flowlabel 0xc7cb6, hlim 64, UDP header seterusnya (17) panjang muatan: 32) :: 1.49395> :: 1.49395: [buruk udp cksum 0x0033 -> 0xeaef!] UDP, panjang 24
04:34:31.860361 lo In IP6 (flowlabel 0xc7cb6, hlim 64, UDP header seterusnya (17) panjang muatan: 40) :: 1.49395> :: 1.49395: [buruk udp cksum 0x003b -> 0x7267!] UDP, panjang 32
04:34:31.871100 lo In IP6 (flowlabel 0xc7cb6, hlim 64, UDP header seterusnya (17) panjang muatan: 944) :: 1.49395> :: 1.49395: [buruk udp cksum 0x03c3 -> 0xf890!] UDP, panjang 936
4 paket ditangkap
12 paket diterima oleh penapis
0 paket dijatuhkan oleh kernel
The '-c 4' menyediakan jumlah paket sehingga 4 paket sahaja. Kita dapat menentukan bilangan paket untuk n dan menangkap paket n.
HTTP
Hypertext Transfer Protocol digunakan untuk memindahkan data dari pelayan web ke penyemak imbas untuk melihat halaman web. HTTP menggunakan komunikasi bentuk TCP. Khususnya, port TCP 80 digunakan.
Untuk mencetak semua paket HTTP IPv4 ke dan dari port 80:
tcpdump: mendengar pada wlan0, jenis pautan EN10MB (Ethernet), panjang tangkapan gambar 262144 bait03:36:00.602104 IP (tos 0x0, ttl 64, id 722, offset 0, flags [DF], proto TCP (6), panjang 60)
192.168.10.21.33586> 192.168.10.1.http: Bendera [S], cksum 0xa22b (betul), seq 2736960993, menang 64240, pilihan [mss 1460, sackOK, TS val 389882294 ecr 0, nop, wscale 10], panjang 0
03:36:00.604830 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), panjang 60)
192.168.10.1.http> 192.168.10.21.33586: Bendera [S.], cksum 0x2dcc (betul), seq 4089727666, ack 2736960994, menang 14480, pilihan [mss 1460, sackOK, TS val 30996070 ecr 389882294, nop, wscale 3], panjang 0
03:36:00.604893 IP (tos 0x0, ttl 64, id 723, offset 0, bendera [DF], proto TCP (6), panjang 52)
192.168.10.21.33586> 192.168.10.1.http: Bendera [.], cksum 0x94e2 (betul), seq 1, ack 1, win 63, pilihan [nop, nop, TS val 389882297 ecr 30996070], panjang 0
03:36:00.605054 IP (tos 0x0, ttl 64, id 724, offset 0, flags [DF], proto TCP (6), panjang 481)
Permintaan HTTP…
192.168.10.21.33586> 192.168.10.1.http: Bendera [P.], cksum 0x9e5d (betul), seq 1: 430, ack 1, win 63, pilihan [nop, nop, TS val 389882297 ecr 30996070], panjang 429: HTTP, panjang: 429DAPATKAN / HTTP / 1.1
Tuan rumah: 192.168.10.1
Ejen Pengguna: Mozilla / 5.0 (Windows NT 10.0; rv: 78.0) Gecko / 20100101 Firefox / 78.0
Terima: teks / html, aplikasi / xhtml + xml, aplikasi / xml; q = 0.9, gambar / laman web, * / *; q = 0.8
Terima-Bahasa: en-US, en; q = 0.5
Terima-Pengekodan: gzip, kempis
DNT: 1
Sambungan: terus hidup
Kuki: _TESTCOOKIESUPPORT = 1; SID = c7ccfa31cfe06065717d24fb544a5cd588760f0cdc5ae2739e746f84c469b5fd
Permintaan Naik Taraf-Tidak Selamat: 1
Dan tindak balas ditangkap juga
192.168.10.1.http> 192.168.10.21.33586: Bendera [Hlm.], cksum 0x84f8 (betul), seq 1: 523, ack 430, win 1944, pilihan [nop, nop, TS val 30996179 ecr 389882297], panjang 522: HTTP, panjang: 522HTTP / 1.1 200 OK
Pelayan: Pelayan web ZTE 1.0 ZTE corp 2015.
Terima-Julat: bait
Sambungan: tutup
Pilihan-Rangka-X: SAMEORIGIN
Cache-Control: tanpa cache, tanpa kedai
Panjang Kandungan: 138098
Set-Cookie: _TESTCOOKIESUPPORT = 1; PATH = /; HttpHanya
Jenis Kandungan: teks / html; carset = utf-8
X-Content-Type-Options: nosniff
Kandungan-Keselamatan-Dasar: bingkai-leluhur 'diri' 'tidak selamat-sebaris' 'tidak selamat-eval'; img-src 'diri' data:;
Perlindungan X-XSS: 1; mod = sekatan
Set-Cookie: SID =; tamat = Khamis, 01-Jan-1970 00:00:00 GMT; jalan = /; HttpHanya
TCP
Untuk menangkap paket TCP sahaja, arahan ini akan melakukan semua kebaikan:
$ sudo tcpdump -i wlan0 tcptcpdump: mendengar pada wlan0, jenis pautan EN10MB (Ethernet), panjang tangkapan gambar 262144 bait
04:35:48.892037 IP (tos 0x0, ttl 60, id 23987, offset 0, flag [none], proto TCP (6), panjang 104)
tl-dalam-f189.1e100.bersih.https> 192.168.10.16.50272: Bendera [Hlm.], cksum 0xc924 (betul), seq 1377740065: 1377740117, ack 1546363399, win 300, pilihan [nop, nop, TS val 13149401 ecr 3051434098], panjang 52
04:35:48.892080 IP (tos 0x0, ttl 64, id 20577, offset 0, flags [DF], proto TCP (6), panjang 52)
192.168.10.16.50272> tl-in-f189.1e100.bersih.https: Bendera [.], cksum 0xf898 (betul), seq 1, ack 52, win 63, pilihan [nop, nop, TS val 3051461952 ecr 13149401], panjang 0
04:35:50.199754 IP (tos 0x0, ttl 64, id 20578, offset 0, flags [DF], proto TCP (6), panjang 88)
192.168.10.16.50272> tl-in-f189.1e100.bersih.https: Bendera [Hlm.], cksum 0x2531 (betul), seq 1:37, ack 52, win 63, pilihan [nop, nop, TS val 3051463260 ecr 13149401], panjang 36
04:35:50.199809 IP (tos 0x0, ttl 64, id 7014, offset 0, flags [DF], proto TCP (6), panjang 88)
192.168.10.16.50434> hkg12s18-in-f14.1e100.bersih.https: Bendera [Hlm.], cksum 0xb21e (betul), seq 328391782: 328391818, ack 3599854191, win 63, pilihan [nop, nop, TS val 3656137742 ecr 2564108387], panjang 36
4 paket ditangkap
4 paket diterima oleh penapis
0 paket dijatuhkan oleh kernel
Biasanya tangkapan paket TCP menghasilkan banyak lalu lintas; anda dapat menentukan secara terperinci keperluan anda dengan menambahkan saringan pada tangkapan, seperti:
Pelabuhan
Menentukan port yang akan dipantau
IP sumber
Untuk melihat paket dari sumber yang ditentukan
IP Destinasi
Untuk melihat paket ke destinasi yang ditentukan
Menyimpan tangkapan paket ke dalam fail
Untuk menyimpan tangkapan paket untuk melakukan analisis kemudian, kita dapat menggunakan opsi -w tcpdump yang memerlukan parameter nama file. Fail-fail ini disimpan dalam format file pcap (packet capture), yang dapat digunakan untuk menyimpan atau mengirim tangkapan paket.
Sebagai contoh:
$ sudo tcpdumpKita boleh menambahkan penapis seolah-olah kita ingin menangkap paket TCP, UDP, atau ICMP, dll.
Membaca tangkapan paket dari fail
Malangnya, anda tidak dapat membaca fail yang disimpan melalui perintah 'baca fail' biasa seperti kucing, dll. Keluarannya hanyalah omong kosong, dan sukar untuk mengetahui apa yang ada di dalam fail. '-r' digunakan untuk membaca paket yang disimpan di .fail pcap, disimpan lebih awal oleh '-w' atau perisian lain yang menyimpan pcaps:
$ sudo tcpdump -rIni mencetak data yang dikumpulkan dari paket yang ditangkap pada skrin terminal dalam format yang dapat dibaca.
Tcpdump cheatsheet
Tcpdump boleh digunakan dengan perintah Linux lain seperti grep, sed, dll., untuk mengekstrak maklumat berguna. Berikut adalah beberapa kombinasi dan kata kunci yang berguna yang digabungkan dengan tcpdump untuk mendapatkan maklumat berharga.
Ekstrak Ejen Pengguna HTTP:
$ sudo tcpdump -n | grep "Ejen Pengguna:"URL yang diminta melalui HTTP dapat dipantau menggunakan tcpdump seperti:
$ sudo tcpdump -v -n | egrep -i "POST / | GET / | Host:"Anda juga boleh Ekstrak Kata Laluan HTTP dalam Permintaan POST
$ sudo tcpdump -nn -l | egrep -i "POST / | pwd = | passwd = | kata laluan = | Host:"Kuki pelayan atau pelanggan boleh diekstrak menggunakan:
$ sudo tcpdump -n | egrep -i 'Set-Cookie | Hos: | Cookie:'Tangkap permintaan dan respons DNS dengan menggunakan:
$ sudo tcpdump -i wlp58s0 -s0 port 53Cetak semua kata laluan teks biasa:
$ sudo tcpdump port http atau port ftp atau port smtp atau port imap atau port pop3 atau port telnet -l -A | egrep -i -B5 'pass = | pwd = | log = | login = | user = | pengguna | nama pengguna = | pw = | passw = | passwd = | kata laluan = | lulus: | pengguna: | nama pengguna: | kata laluan: | log masuk: | lulus 'Penapis Tcpdump biasa
- -A Menunjukkan paket dalam Format ASCII.
- -c Bilangan paket untuk ditangkap.
- -mengira Bilangan paket cetak hanya semasa membaca fail yang ditangkap.
- -e Cetak alamat MAC dan tajuk peringkat pautan.
- -h atau -membantu Mencetak versi dan maklumat penggunaan.
- -versi Tunjukkan maklumat versi sahaja.
- -i Tentukan antara muka rangkaian untuk menangkap.
- -K Cegah percubaan untuk mengesahkan checkums dari sebarang paket. Menambah kepantasan.
- -m
Tentukan Modul yang akan digunakan. - -n Jangan menukar alamat (i.e., alamat hos, nombor port, dll.ke nama.
- -nombor Cetak nombor paket pilihan pada awal setiap baris.
- -hlm Larang antara muka masuk ke mod yang tidak dapat dipisahkan.
- -Q Pilih arah untuk paket yang akan ditangkap. Hantar atau terima.
- -q Keluaran Tenang / Pantas. Cetak Maklumat kurang. Keluaran lebih pendek.
- -r
Digunakan untuk membaca paket dari pcap . - -t Jangan mencetak cap waktu pada setiap garis pembuangan.
- -v Mencetak lebih banyak maklumat mengenai output.
- -w
Tulis paket mentah untuk difailkan. - -x Mencetak output ASCII.
- -X Mencetak ASCII dengan hex.
- -senarai antara muka Menunjukkan semua antara muka rangkaian yang tersedia di mana paket dapat ditangkap oleh tcpdump.
Penghentian
Tcpdump telah menjadi alat yang sangat banyak digunakan dalam penyelidikan dan aplikasi Keamanan / Rangkaian. Satu-satunya kelemahan tcpdump mempunyai 'No GUI', tetapi terlalu bagus untuk tidak berada di tangga teratas. Seperti yang ditulis oleh Daniel Miessler, "Penganalisis Protokol seperti Wireshark sangat bagus, tetapi jika anda ingin benar-benar menguasai paket-fu, anda mesti menjadi satu dengan tcpdump terlebih dahulu."