Pôvodne to napísali v roku 1988 štyria pracovníci skupiny Network Research Group v laboratóriu Lawrence Berkeley v Kalifornii. Zorganizovali ju o jedenásť rokov neskôr Micheal Richardson a Bill Fenner v roku 1999, ktorí vytvorili web tcpdump. Tcpdump funguje na všetkých operačných systémoch podobných systému Unix. Windows verzia Tcpdump sa nazýva WinDump a používa WinPcap, alternatívu systému Windows pre libpcap.
Pomocou Snap nainštalujte tcpdump:
$ sudo snap nainštalovať tcpdumpPoužite svojho správcu balíkov na inštaláciu tcpdump:
$ sudo apt-get install tcpdump (Debian / Ubuntu)$ sudo dnf install tcpdump (CentOS / RHEL 6 a 7)
$ sudo yum install tcpdump (Fedora / CentOS / RHEL 8)
Poďme sa pozrieť na rôzne spôsoby použitia a výstupy, keď skúmame tcpdump!
UDP
Tcpdump dokáže vyložiť aj UDP pakety. Použijeme nástroj netcat (nc) na odoslanie UDP paketu a jeho následné vyhodenie.
$ echo -n "tcpdumper" | nc -w 1 -u localhost 1337Vo vyššie uvedenom príkaze pošleme UDP paket pozostávajúci z reťazca „Tcpdumper“ k portu UDP 1337 cez localhost. Tcpdump zachytáva paket odosielaný cez port UDP 1337 a zobrazí ho.
Teraz tento balík vyhodíme pomocou programu tcpdump.
$ sudo tcpdump -i lo udp port 1337 -vvv -XTento príkaz zachytí a zobrazí zachytené údaje z paketov v ASCII aj hexadecimálnej podobe.
tcpdump: počúva sa na lo, linkový typ EN10MB (Ethernet), dĺžka snímky 262144 bajtov04:39:39.072802 IP (tos 0x0, ttl 64, id 32650, offset 0, flags [DF], proto UDP (17), dĺžka 37)
localhost.54574> localhost.1337: [bad udp cksum 0xfe24 -> 0xeac6!] UDP, dĺžka 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 hodín
Ako vidíme, paket bol odoslaný na port 1337 a jeho dĺžka bola 9 ako reťazec tcpdumper je 9 bajtov. Vidíme tiež, že paket bol zobrazený v hexadecimálnom formáte.
DHCP
Tcpdump môže tiež vykonávať vyšetrovania na paketoch DHCP po sieti. DHCP používa UDP port č. 67 alebo 68, takže definujeme a obmedzíme tcpdump iba pre pakety DHCP. Predpokladajme, že používame sieťové rozhranie wifi.
Tu použitý príkaz bude:
tcpdump: počúvanie na wlan0, linkový typ EN10MB (Ethernet), dĺžka snímky 262144 bajtov
03:52:04.004356 00: 11: 22: 33: 44: 55> 00: 11: 22: 33: 44: 66, éterový typ IPv4 (0x0800), dĺžka 342: (tos 0x0, ttl 64, id 39781, offset 0, vlajky [DF ], proto UDP (17), dĺžka 328)
192.168.10.21.68> 192.168.10.1.67: [udp sum ok] BOOTP / DHCP, požiadavka od 00: 11: 22: 33: 44: 55, dĺžka 300, xid 0xfeab2d67, vlajky [žiadne] (0x0000)
Klient-IP 192.168.10.16
Klient-ethernetová adresa 00: 11: 22: 33: 44: 55
Rozšírenia Vendor-rfc1048
Magic Cookie 0x63825363
Správa DHCP (53), dĺžka 1: Vydanie
ID servera (54), dĺžka 4: 192.168.10.1
Názov hostiteľa (12), dĺžka 6: „papagáj“
END (255), dĺžka 0
PAD (0), dĺžka 0, vyskytuje sa 42
DNS
DNS, tiež známy ako Domain Name System, potvrdzuje, že vám poskytne to, čo hľadáte, a to tak, že priradí názov domény k adrese domény. Ak chcete skontrolovať komunikáciu na úrovni DNS vášho zariadenia cez internet, môžete použiť tcpdump nasledujúcim spôsobom. DNS používa na komunikáciu port UDP 53.
$ sudo tcpdump -i wlan0 port udp 53tcpdump: počúvanie na wlan0, linkový typ EN10MB (Ethernet), dĺžka snímky 262144 bajtov
04:23:48.516616 IP (tos 0x0, ttl 64, id 31445, offset 0, flags [DF], proto UDP (17), dĺžka 72)
192.168.10.16.45899> jeden.jeden.jeden.jeden.doména: [udp suma v poriadku] 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), dĺžka 104)
jeden.jeden.jeden.jeden.doména> 192.168.10.16.45899: [udp suma 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), dĺžka 66)
192.168.10.16.34043> jeden.jeden.jeden.jeden.doména: [súčet udp v poriadku] 40757+ PTR? 1.1.1.1.in-addr.arpa. (38)
04:23:48.688731 IP (tos 0x0, ttl 60, id 56387, offset 0, vlajky [DF], proto UDP (17), dĺžka 95)
jeden.jeden.jeden.jeden.doména> 192.168.10.16.34043: [udp suma ok] 40757 q: PTR? 1.1.1.1.in-addr.arpa. 1/0/0 1.1.1.1.in-addr.arpa. [26m53s] PTR jedna.jeden.jeden.jeden. (67)
ARP
Na zistenie adresy vrstvy prepojenia, napríklad adresy MAC, sa používa protokol Resolution Resolution Protocol. Je spojená s danou adresou internetovej vrstvy, zvyčajne s adresou IPv4.
Používame tcpdump na zachytávanie a čítanie údajov prenášaných v arp paketoch. Príkaz je rovnako jednoduchý ako:
$ sudo tcpdump -i wlan0 arp -vvvtcpdump: počúvanie na wlan0, linkový typ EN10MB (Ethernet), dĺžka snímky 262144 bajtov
03:44:12.023668 ARP, Ethernet (len 6), IPv4 (len 4), požadovať, kto má 192.168.10.1 povedz 192.168.10.2, dĺžka 28
03:44:17.140259 ARP, Ethernet (len 6), IPv4 (len 4), požadovať, kto má 192.168.10.21 povedz 192.168.10.1, dĺžka 28
03:44:17.140276 ARP, Ethernet (len 6), IPv4 (len 4), odpoveď 192.168.10.21 is-at 00: 11: 22: 33: 44: 55 (oui Unknown), dĺžka 28
03:44:42.026393 ARP, Ethernet (len 6), IPv4 (len 4), Vyžiadajte si, kto má 192.168.10.1 povedz 192.168.10.2, dĺžka 28
ICMP
ICMP, tiež známy ako Internet Control Message Protocol, je podporný protokol v balíku internetových protokolov. Ako informačný protokol sa používa protokol ICMP.
Na zobrazenie všetkých paketov ICMP na rozhraní môžeme použiť tento príkaz:
$ sudo tcpdump icmp -vvvtcpdump: počúvanie na wlan0, linkový typ EN10MB (Ethernet), dĺžka snímky 262144 bajtov
04:26:42.123902 IP (tos 0x0, ttl 64, id 14831, offset 0, flags [DF], proto ICMP (1), dĺžka 84)
192.168.10.16> 192.168.10.1: ICMP echo request, id 47363, seq 1, dĺžka 64
04:26:42.128429 IP (tos 0x0, ttl 64, id 32915, offset 0, vlajky [žiadne], proto ICMP (1), dĺžka 84)
192.168.10.1> 192.168.10.16: ICMP echo response, id 47363, seq 1, dĺžka 64
04:26:43.125599 IP (tos 0x0, ttl 64, id 14888, offset 0, flags [DF], proto ICMP (1), dĺžka 84)
192.168.10.16> 192.168.10.1: ICMP echo request, id 47363, seq 2, dĺžka 64
04:26:43.128055 IP (tos 0x0, ttl 64, id 32916, offset 0, vlajky [žiadne], proto ICMP (1), dĺžka 84)
192.168.10.1> 192.168.10.16: ICMP echo response, id 47363, seq 2, dĺžka 64
NTP
NTP je sieťový protokol navrhnutý špeciálne na synchronizáciu času v sieti strojov. Ak chcete zachytiť prenos na NTMP:
$ sudo tcpdump dst port 12304:31:05.547856 IP (tos 0x0, ttl 64, id 34474, offset 0, flags [DF], proto UDP (17), dĺžka 76)
192.168.10.16.ntp> time-b-wwv.nist.gov.ntp: [udp sum ok] NTPv4, klient, dĺžka 48
Indikátor skoku: hodiny nesynchronizované (192), vrstva 0 (nešpecifikované), anketa 3 (8 s), presnosť -6
Koreňové oneskorenie: 1.000000, koreňová disperzia: 1.000000, referenčné ID: (nešpecifikované)
Referenčná časová pečiatka: 0.000000000
Časová pečiatka pôvodcu: 0.000000000
Časová známka príjmu: 0.000000000
Časová pečiatka vysielania: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
Originátor - časová pečiatka prijatia: 0.000000000
Originator - Časová pečiatka vysielania: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
04:31:05.841696 IP (tos 0x0, ttl 56, id 234, offset 0, vlajky [žiadne], proto UDP (17), dĺžka 76)
time-b-wwv.nist.gov.ntp> 192.168.10.16.ntp: [udp sum ok] NTPv3, server, dĺžka 48
Indikátor skoku: (0), vrstva 1 (primárna referencia), anketa 13 (8192s), presnosť -29
Koreňové oneskorenie: 0.000244, koreňová disperzia: 0.000488, referenčné číslo: NIST
Referenčná časová pečiatka: 3825358208.000000000 (2021-03-21T23: 30: 08Z)
Časová pečiatka pôvodcu: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
Časová pečiatka prijatia: 3825358275.028660181 (2021-03-21T23: 31: 15Z)
Časová pečiatka vysielania: 3825358275.028661296 (2021-03-21T23: 31: 15Z)
Originátor - Časová známka prijatia: +9.480896026
Originator - Časová pečiatka vysielania: +9.480897141
SMTP
Pre e-maily sa používa hlavne protokol SMTP alebo protokol Simple Mail Transfer Protocol. Tcpdump to môže využiť na získanie užitočných e-mailových informácií. Napríklad na extrahovanie príjemcov / odosielateľov e-mailov:
$ sudo tcpdump -n -l port 25 | grep -i 'POŠTA Z \ | RCPT DO'IPv6
IPv6 je „ďalšou generáciou“ IP poskytujúcich širokú škálu IP adries. IPv6 pomáha dosiahnuť dlhodobé zdravie internetu.
Na zachytenie prenosu IPv6 použite filter ip6 so špecifikáciou protokolov TCP a UDP pomocou protokolov 6 a proto-17.
$ sudo tcpdump -n -i ľubovoľný ip6 -vvvtcpdump: typ dátového spojenia LINUX_SLL2
tcpdump: počúvanie na akomkoľvek linke typu LINUX_SLL2 (Linux varený v2), dĺžka snímky 262144 bajtov
04:34:31.847359 lo In IP6 (flowlabel 0xc7cb6, hlim 64, next-header UDP (17) payload length: 40) :: 1.49395> :: 1.49395: [chybný udp cksum 0x003b -> 0x3587!] UDP, dĺžka 32
04:34:31.859082 lo In IP6 (flowlabel 0xc7cb6, hlim 64, next-header UDP (17) payload length: 32) :: 1.49395> :: 1.49395: [bad udp cksum 0x0033 -> 0xeaef!] UDP, dĺžka 24
04:34:31.860361 lo In IP6 (flowlabel 0xc7cb6, hlim 64, next-header UDP (17) payload length: 40) :: 1.49395> :: 1.49395: [chybný udp cksum 0x003b -> 0x7267!] UDP, dĺžka 32
04:34:31.871100 lo V IP6 (štítok s tokom 0xc7cb6, hlim 64, dĺžka užitočného zaťaženia UDP (17) ďalšej hlavičky: 944) :: 1.49395> :: 1.49395: [chybný udp cksum 0x03c3 -> 0xf890!] UDP, dĺžka 936
Zachytené 4 pakety
12 paketov prijatých filtrom
0 paketov vyhodených z jadra
'-C 4' poskytuje počet paketov iba do 4 paketov. Môžeme určiť počet paketov na n a zachytiť n paketov.
HTTP
Hypertext Transfer Protocol sa používa na prenos údajov z webového servera do prehliadača na prezeranie webových stránok. HTTP používa komunikáciu prostredníctvom formulára TCP. Konkrétne sa používa TCP port 80.
Ak chcete tlačiť všetky pakety HTTP IPv4 na a z portu 80:
tcpdump: počúva na wlan0, linkový typ EN10MB (Ethernet), dĺžka snímky 262144 bajtov03:36:00.602104 IP (tos 0x0, ttl 64, id 722, offset 0, flags [DF], proto TCP (6), dĺžka 60)
192.168.10.21.33586> 192.168.10.1.http: Vlajky [S], cksum 0xa22b (správne), seq 2736960993, win 64240, možnosti [mss 1460, sackOK, TS val 389882294 ecr 0, nop, wscale 10], dĺžka 0
03:36:00.604830 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), dĺžka 60)
192.168.10.1.http> 192.168.10.21.33586: Vlajky [S.], cksum 0x2dcc (správne), seq 4089727666, ack 2736960994, win 14480, opcie [mss 1460, sackOK, TS val 30996070 ecr 389882294, nop, wscale 3], dĺžka 0
03:36:00.604893 IP (tos 0x0, ttl 64, id 723, offset 0, flags [DF], proto TCP (6), dĺžka 52)
192.168.10.21.33586> 192.168.10.1.http: Vlajky [.], cksum 0x94e2 (správny), seq 1, ack 1, win 63, opcie [nop, nop, TS val 389882297 ecr 30996070], dĺžka 0
03:36:00.605054 IP (tos 0x0, ttl 64, id 724, offset 0, flags [DF], proto TCP (6), dĺžka 481)
HTTP požiadavky ..
192.168.10.21.33586> 192.168.10.1.http: Vlajky [P.], cksum 0x9e5d (správny), seq 1: 430, ack 1, win 63, možnosti [nop, nop, TS val 389882297 ecr 30996070], dĺžka 429: HTTP, dĺžka: 429ZÍSKAŤ / HTTP / 1.1
Hostiteľ: 192.168.10.1
User-Agent: Mozilla / 5.0 (Windows NT 10.0; rv: 78.0) Gecko / 20100101 Firefox / 78.0
Prijať: text / html, application / xhtml + xml, application / xml; q = 0.9, obrázok / web, * / *; q = 0.8
Jazyk prijatia: en-US, en; q = 0.5
Accept-Encoding: gzip, deflate
DNT: 1
Pripojenie: keep-alive
Cookie: _TESTCOOKIESUPPORT = 1; SID = c7ccfa31cfe06065717d24fb544a5cd588760f0cdc5ae2739e746f84c469b5fd
Žiadosti o inováciu - nezabezpečené: 1
A odpovede sa tiež zachytávajú
192.168.10.1.http> 192.168.10.21.33586: Vlajky [P.], cksum 0x84f8 (správny), seq 1: 523, ack 430, win 1944, možnosti [nop, nop, TS val 30996179 ecr 389882297], dĺžka 522: HTTP, dĺžka: 522HTTP / 1.1 200 v poriadku
Server: webový server ZTE 1.0 ZTE corp 2015.
Rozsahy prijatia: bajty
Pripojenie: zavrieť
Možnosti X-Frame: SAMEORIGIN
Cache-Control: no-cache, no-store
Obsahová dĺžka: 138098
Nastavený súbor cookie: _TESTCOOKIESUPPORT = 1; CESTA = /; HttpOnly
Typ obsahu: text / html; charset = utf-8
Možnosti typu obsahu X: nosniff
Politika bezpečnosti obsahu: frame-predkovia „self“ „nebezpečné-inline“ „unsafe-eval“; img-src „self“ údaje :;
Ochrana X-XSS: 1; režim = blok
Nastavený súbor cookie: SID =; platnosť vyprší = Št, 1. januára 1970 00:00:00 GMT; cesta = /; HttpOnly
TCP
Ak chcete zachytiť pakety iba TCP, tento príkaz urobí všetko dobré:
$ sudo tcpdump -i wlan0 tcptcpdump: počúva na wlan0, linkový typ EN10MB (Ethernet), dĺžka snímky 262144 bajtov
04:35:48.892037 IP (tos 0x0, ttl 60, id 23987, offset 0, vlajky [žiadne], proto TCP (6), dĺžka 104)
tl-in-f189.1e100.sieť.https> 192.168.10.16.50272: Vlajky [str.], cksum 0xc924 (správny), seq 1377740065: 1377740117, ack 1546363399, win 300, opcie [nop, nop, TS val 13149401 ecr 3051434098], dĺžka 52
04:35:48.892080 IP (tos 0x0, ttl 64, id 20577, offset 0, flags [DF], proto TCP (6), dĺžka 52)
192.168.10.16.50272> tl-in-f189.1e100.sieť.https: Vlajky [.], cksum 0xf898 (správny), seq 1, ack 52, win 63, opcie [nop, nop, TS val 3051461952 ecr 13149401], dĺžka 0
04:35:50.199754 IP (tos 0x0, ttl 64, id 20578, offset 0, flags [DF], proto TCP (6), dĺžka 88)
192.168.10.16.50272> tl-in-f189.1e100.sieť.https: Vlajky [P.], cksum 0x2531 (správny), seq 1:37, potvrdenie 52, výhra 63, možnosti [nop, nop, TS val 3051463260 ecr 13149401], dĺžka 36
04:35:50.199809 IP (tos 0x0, ttl 64, id 7014, offset 0, flags [DF], proto TCP (6), dĺžka 88)
192.168.10.16.50434> hkg12s18-in-f14.1e100.sieť.https: Vlajky [P.], cksum 0xb21e (správny), seq 328391782: 328391818, ack 3599854191, výhra 63, možnosti [nop, nop, TS val 3656137742 ecr 2564108387], dĺžka 36
Zachytené 4 pakety
4 pakety prijaté filtrom
0 paketov vyhodených jadrom
Normálne vedie zachytávanie paketov TCP k veľkému prenosu; môžete podrobne určiť svoje požiadavky pridaním filtrov do záznamu, napríklad:
Prístav
Určuje port, ktorý sa má monitorovať
Zdrojová IP
Ak chcete zobraziť pakety zo zadaného zdroja
Cieľová IP
Ak chcete zobraziť pakety k určenému cieľu
Ukladanie zachytávania paketov do súborov
Aby sme zachytenie paketu uložili na vykonanie analýzy neskôr, môžeme použiť voľbu -w tcpdump, ktorá vyžaduje parameter názvu súboru. Tieto súbory sú uložené vo formáte súboru pcap (zachytenie paketu), ktorý je možné použiť na uloženie alebo odoslanie zachytenia paketu.
Napríklad:
$ sudo tcpdumpMôžeme pridať filtre, či chceme zachytiť pakety TCP, UDP alebo ICMP atď.
Čítanie zachytávania paketov zo súborov
Uložený súbor bohužiaľ nemôžete prečítať pomocou bežných príkazov „prečítať súbor“, ako je napríklad mačka, atď. Výstup je okrem gýča a je ťažké povedať, čo je v súbore. '-r' sa používa na čítanie paketov uložených v .súbor pcap, skôr uložený pomocou „-w“ alebo iného softvéru na ukladanie pcaps:
$ sudo tcpdump -rToto vytlačí údaje zhromaždené zo zachytených paketov na obrazovke terminálu v čitateľnom formáte.
Cheatsheet Tcpdump
Tcpdump sa dá použiť s inými príkazmi Linuxu, ako napríklad grep, sed, atď., získať užitočné informácie. Tu je niekoľko užitočných kombinácií a kľúčových slov zlúčených pri použití s tcpdump, aby získali cenné informácie.
Extrahujte agentov používateľov HTTP:
$ sudo tcpdump -n | grep "User-Agent:"Adresy URL požadované cez HTTP je možné monitorovať pomocou tcpdump, ako napríklad:
$ sudo tcpdump -v -n | egrep -i "POST / | GET / | Hostiteľ:"Môžete tiež Extrahujte heslá HTTP v požiadavkách POST
$ sudo tcpdump -nn -l | egrep -i "POST / | pwd = | passwd = | heslo = | hostiteľ:"Súbory cookie na serveri alebo na strane klienta je možné extrahovať pomocou:
$ sudo tcpdump -n | egrep -i 'Set-Cookie | Hostiteľ: | Cookie:'Zachyťte požiadavky a odpovede DNS pomocou:
$ sudo tcpdump -i wlp58s0 -s0 port 53Vytlačiť všetky heslá vo formáte obyčajného textu:
$ sudo tcpdump port http alebo port ftp nebo port smtp alebo port imap nebo port pop3 nebo port telnet -l -A | egrep -i -B5 'pass = | pwd = | log = | login = | user = | user | username = | pw = | passw = | passwd = | heslo = | pass: | užívateľ: | používateľské meno: | heslo: | prihlásenie: | prejsť 'Bežné filtre Tcpdump
- -A Zobrazuje pakety vo formáte ASCII.
- -c Počet paketov na zachytenie.
- -počítať Počet paketov tlačte iba pri čítaní zachyteného súboru.
- -e Vytlačte adresy MAC a hlavičky na úrovni odkazov.
- -h alebo -pomoc Vypíše informácie o verzii a použití.
- -verzia Zobraziť iba informácie o verzii.
- -i Zadajte sieťové rozhranie, na ktorom sa má zachytiť.
- -K Zabráňte pokusom o overenie kontrolných súčtov ľubovoľného paketu. Pridáva rýchlosť.
- -m
Zadajte modul, ktorý sa má použiť. - -n Neprevádzajte adresy (t.j.e., adresy hostiteľa, čísla portov atď.) na mená.
- -číslo Na začiatok každého riadku vytlačte voliteľné číslo paketu.
- -p Zakáže prechod rozhrania do promiskuitného režimu.
- -Q Vyberte smer paketov, ktoré sa majú zachytiť. Posielajte alebo prijímajte.
- -q Tichý / rýchly výstup. Vytlačí menej informácií. Výstupy sú kratšie.
- -r
Používa sa na čítanie paketov z pcap . - -t Netlačte časovú pečiatku na každý riadok výpisu.
- -v Vytlačí ďalšie informácie týkajúce sa výstupu.
- -w
Surové pakety zapíšte do súboru. - -X Vytlačí výstup ASCII.
- -X Vytlačí ASCII s hex.
- -zoznam rozhraní Zobrazuje všetky dostupné sieťové rozhrania, kde je možné zachytiť pakety pomocou tcpdump.
Ukončenie
Tcpdump bol veľmi široko používaný nástroj používaný pri výskume a aplikáciách zabezpečenia / sietí. Jedinou nevýhodou tcpdump je „Žiadne grafické užívateľské rozhranie“, ale je príliš dobré, aby sme sa držali mimo najlepších tabuliek. Ako píše Daniel Miessler: „Analyzátory protokolov, ako napríklad Wireshark, sú skvelí, ale ak chcete skutočne ovládať paketové fu, musíte sa najskôr stať tcpdump.“