Opprinnelig ble det skrevet i 1988 av fire nettverksforskningsgruppearbeidere ved Lawrence Berkeley Laboratory i California. Det ble organisert elleve år senere av Micheal Richardson og Bill Fenner i 1999, som opprettet TCPDump -nettstedet. TCPDump fungerer på alle UNIX-lignende operativsystemer. Windows -versjonen av TCPDump kalles Windump og bruker WinPcap, Windows -alternativet for LibpCap.
Bruk SNAP for å installere TCPDump:
$ sudo snap installer tcpdump
Bruk pakkebehandleren din til å installere TCPDump:
$ sudo apt-get install tcpdump (debian/ubuntu)
$ sudo dnf installer tcpdump (centos/rhel 6 & 7)
$ sudo yum installer tcpdump (fedora/centos/rhel 8)
La oss se forskjellige bruksområder og utganger når vi utforsker tcpdump!
UDP
Tcpdump kan også dumpe UDP -pakker. Vi bruker et NetCat (NC) -verktøy for å sende en UDP -pakke og deretter dumpe den.
$ ekko -n "tcpdumper" | NC -w 1 -u Localhost 1337
I ovennevnte kommando sender vi en UDP-pakke bestående av strengen “Tcpdumper” til UDP -porten 1337 Via lokal vert. TCPDump fanger pakken som blir sendt over UDP -port 1337 og vil vise den.
Vi vil nå dumpe denne pakken ved hjelp av tcpdump.
$ sudo tcpdump -i lo udp port 1337 -vvv -x
Denne kommandoen vil fange opp og vise de fangede dataene fra pakkene i ASCII så vel som HEX -skjema.
TCPDump: Lytter på LO, Link-Type EN10MB (Ethernet), Snapshot Lengde 262144 Bytes
04:39:39.072802 IP (TOS 0x0, TTL 64, ID 32650, Offset 0, Flags [DF], Proto UDP (17), Lengde 37)
lokal vert.54574> Localhost.1337: [Bad UDP CKSUM 0XFE24 -> 0xeac6!] UDP, lengde 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
Som vi kan se, ble pakken sendt til port 1337, og lengden var 9 som streng tcpdumper er 9 byte. Vi kan også se at pakken er vist i HEX -format.
DHCP
TCPDump kan også gjennomføre undersøkelser på DHCP -pakker over nettverket. DHCP bruker UDP -port nr. 67 eller 68, så vi vil definere og begrense TCPDump for bare DHCP -pakker. Anta at vi bruker et WiFi -nettverksgrensesnitt.
Kommandoen som brukes her vil være:
$ sudo tcpdump -i wlan0 port 67 eller port 68 -e -n -vvv
TCPDUMP: Lytter på WLAN0, Link-Type EN10MB (Ethernet), Snapshot Lengde 262144 byte
03:52:04.004356 00: 11: 22: 33: 44: 55> 00: 11: 22: 33: 44: 66, Ethertype IPv4 (0x0800), lengde 342: (TOS 0x0, TTL 64, ID 39781, forskyvning 0, flagg [DF ], Proto UDP (17), lengde 328)
192.168.10.21.68> 192.168.10.1.67: [UDP Sum OK] BOOTP/DHCP, forespørsel fra 00: 11: 22: 33: 44: 55, lengde 300, xid 0xfeab2d67, flagg [Ingen] (0x0000)
Klient-IP 192.168.10.16
Klient-Ethernet-adresse 00: 11: 22: 33: 44: 55
Leverandør-RFC1048 Utvidelser
Magic Cookie 0x63825363
DHCP-Message (53), lengde 1: Utgivelse
Server-ID (54), lengde 4: 192.168.10.1
Vertsnavn (12), lengde 6: "Parrot"
Slutt (255), lengde 0
Pute (0), lengde 0, forekommer 42
Dns
DNS, også kjent som Domain Name System, bekrefter å gi deg det du leter etter ved å matche domenenavnet med domeneadressen. For å inspisere enhetens DNS -nivå kommunikasjon over Internett, kan du bruke TCPDump på følgende måte. DNS bruker UDP -port 53 for kommunikasjon.
$ sudo tcpdump -i wlan0 udp port 53
TCPDUMP: Lytter på WLAN0, Link-Type EN10MB (Ethernet), Snapshot Lengde 262144 byte
04:23:48.516616 IP (TOS 0x0, TTL 64, ID 31445, Offset 0, Flags [DF], Proto UDP (17), lengde 72)
192.168.10.16.45899> en.en.en.en.Domene: [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), Lengde 104)
en.en.en.en.Domene> 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), lengde 66)
192.168.10.16.34043> en.en.en.en.Domene: [UDP Sum OK] 40757+ PTR? 1.1.1.1.i addr.arpa. (38)
04:23:48.688731 IP (TOS 0x0, TTL 60, ID 56387, Offset 0, Flags [DF], Proto UDP (17), Lengde 95)
en.en.en.en.Domene> 192.168.10.16.34043: [UDP Sum OK] 40757 Q: PTR? 1.1.1.1.i addr.arpa. 1/0/0 1.1.1.1.i addr.arpa. [26m53s] PTR en.en.en.en. (67)
ARP
Adresseoppløsningsprotokoll brukes til å oppdage koblings-lagsadressen, for eksempel en MAC-adresse. Det er assosiert med en gitt internettlagsadresse, typisk en IPv4 -adresse.
Vi bruker tcpdump for å fange og lese dataene som er ført i ARP -pakkene. Kommandoen er så enkel som:
$ sudo tcpdump -i wlan0 arp -vvv
TCPDUMP: Lytter på WLAN0, Link-Type EN10MB (Ethernet), Snapshot Lengde 262144 byte
03:44:12.023668 ARP, Ethernet (Len 6), IPv4 (Len 4), forespørsel Who-Has 192.168.10.1 Fortell 192.168.10.2, lengde 28
03:44:17.140259 ARP, Ethernet (Len 6), IPv4 (Len 4), forespørsel Who-Has 192.168.10.21 Fortell 192.168.10.1, lengde 28
03:44:17.140276 ARP, Ethernet (Len 6), IPv4 (Len 4), Svar 192.168.10.21 IS-AT 00: 11: 22: 33: 44: 55 (OUI Ukjent), lengde 28
03:44:42.026393 ARP, Ethernet (Len 6), IPv4 (Len 4), forespørsel Who-Has 192.168.10.1 Fortell 192.168.10.2, lengde 28
ICMP
ICMP, også kjent som Internet Control Message Protocol, er en støttende protokoll i Internet Protocol Suite. ICMP brukes som en informasjonsprotokoll.
For å se alle ICMP -pakkene på et grensesnitt, kan vi bruke denne kommandoen:
$ sudo tcpdump icmp -vvv
TCPDUMP: Lytter på WLAN0, Link-Type EN10MB (Ethernet), Snapshot Lengde 262144 byte
04:26:42.123902 IP (TOS 0x0, TTL 64, ID 14831, Offset 0, Flags [DF], Proto ICMP (1), Lengde 84)
192.168.10.16> 192.168.10.1: ICMP Echo Request, ID 47363, SEQ 1, Lengde 64
04:26:42.128429 IP (TOS 0x0, TTL 64, ID 32915, Offset 0, Flags [Ingen], Proto ICMP (1), Lengde 84)
192.168.10.1> 192.168.10.16: ICMP Echo Svar, ID 47363, SEQ 1, Lengde 64
04:26:43.125599 IP (TOS 0x0, TTL 64, ID 14888, Offset 0, Flags [DF], Proto ICMP (1), Lengde 84)
192.168.10.16> 192.168.10.1: ICMP Echo Request, ID 47363, SEQ 2, Lengde 64
04:26:43.128055 IP (TOS 0x0, TTL 64, ID 32916, Offset 0, Flags [Ingen], Proto ICMP (1), Lengde 84)
192.168.10.1> 192.168.10.16: ICMP Echo Svar, ID 47363, SEQ 2, Lengde 64
Ntp
NTP er en nettverksprotokoll designet spesielt for å synkronisere tiden på et nettverk av maskiner. For å fange trafikk på NTP:
$ sudo tcpdump dst port 123
04:31:05.547856 IP (TOS 0x0, TTL 64, ID 34474, Offset 0, Flags [DF], Proto UDP (17), lengde 76)
192.168.10.16.NTP> Time-B-WWV.nist.Gov.NTP: [UDP Sum OK] NTPV4, klient, lengde 48
Leap Indicator: Clock Unsynchronized (192), Stratum 0 (uspesifisert), Poll 3 (8s), Precision -6
Rotforsinkelse: 1.000000, rotdispersjon: 1.000000, Reference-ID: (UNSPEC)
Referanse tidsstempel: 0.000000000
Opphavsmann tidsstempel: 0.000000000
Motta tidsstempel: 0.000000000
Send tidsstempel: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
Opphavsmann - Motta tidsstempel: 0.000000000
Originator - Overfør tidsstempel: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
04:31:05.841696 IP (TOS 0x0, TTL 56, ID 234, Offset 0, Flags [Ingen], Proto UDP (17), Lengde 76)
Time-B-WWV.nist.Gov.NTP> 192.168.10.16.NTP: [UDP Sum OK] NTPV3, server, lengde 48
Leap Indicator: (0), Stratum 1 (Primærreferanse), Poll 13 (8192s), Precision -29
Rotforsinkelse: 0.000244, rotdispersjon: 0.000488, referanse-id: nist
Referanse tidsstempel: 3825358208.000000000 (2021-03-21T23: 30: 08Z)
Originator Tidsstempel: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
Motta tidsstempel: 3825358275.028660181 (2021-03-21T23: 31: 15Z)
Send tidsstempel: 3825358275.028661296 (2021-03-21T23: 31: 15Z)
Originator - Motta tidsstempel: +9.480896026
Originator - overfør tidsstempel: +9.480897141
SMTP
SMTP eller enkel postoverføringsprotokoll brukes hovedsakelig til e -post. Tcpdump kan bruke dette til å trekke ut nyttig e -postinformasjon. For eksempel for å trekke ut e -postmottakere/avsendere:
$ sudo tcpdump -n -l port 25 | grep -i 'mail fra \ | rcpt til'
IPv6
IPv6 er "neste generasjon" av IP, og gir et bredt spekter av IP -adresser. IPv6 Hjelper med å oppnå den langsiktige helsen til Internett.
For å fange IPv6-trafikk, bruk IP6-filteret som spesifiserer TCP- og UDP-protokoller ved å bruke Proto 6 og Proto-17.
$ sudo tcpdump -n -i hvilken som helst ip6 -vvv
TCPDUMP: Data Link Type Linux_Sll2
TCPDump: Lytter på hvilken som helst Link-type Linux_Sll2 (Linux kokt V2), øyeblikksbilde lengde 262144 byte
04:34:31.847359 LO i IP6 (FlowLabel 0xc7cb6, HLIM 64, NEXT-Header UDP (17) nyttelastlengde: 40) :: 1.49395> :: 1.49395: [Bad UDP CKSUM 0x003B -> 0x3587!] UDP, lengde 32
04:34:31.859082 LO i IP6 (FlowLabel 0xc7cb6, HLIM 64, NEXT-Header UDP (17) nyttelastlengde: 32) :: 1.49395> :: 1.49395: [Bad UDP CKSUM 0x0033 -> 0xeaef!] UDP, lengde 24
04:34:31.860361 LO i IP6 (FlowLabel 0xc7cb6, HLIM 64, NEXT-Header UDP (17) nyttelastlengde: 40) :: 1.49395> :: 1.49395: [Bad UDP CKSUM 0x003B -> 0x7267!] UDP, lengde 32
04:34:31.871100 LO i IP6 (FlowLabel 0xc7cb6, HLIM 64, NEXT-Header UDP (17) nyttelastlengde: 944) :: 1.49395> :: 1.49395: [dårlig UDP cksum 0x03c3 -> 0xf890!] UDP, lengde 936
4 pakker fanget
12 pakker mottatt av filter
0 pakker droppet med kjerne
'-C 4' gir bare et pakketall på opptil 4 pakker. Vi kan spesifisere antall pakker til N og fange N -pakker.
Http
Hypertekstoverføringsprotokoll brukes til å overføre data fra en webserver til en nettleser for å se websider. HTTP bruker TCP -skjema kommunikasjon. Spesielt brukes TCP -port 80.
For å skrive ut alle IPv4 HTTP -pakker til og fra port 80:
TCPDUMP: Lytter på WLAN0, Link-Type EN10MB (Ethernet), Snapshot Lengde 262144 byte
03:36:00.602104 IP (TOS 0x0, TTL 64, ID 722, Offset 0, Flags [DF], Proto TCP (6), Lengde 60)
192.168.10.21.33586> 192.168.10.1.HTTP: Flags [S], CKSUM 0xA22B (Riktig), SEQ 2736960993, WIN 64240, Options [MSS 1460, Sackok, TS Val 389882294 ECR 0, NOP, WSCALE 10], Lengde 0
03:36:00.604830 IP (TOS 0x0, TTL 64, ID 0, Offset 0, Flags [DF], Proto TCP (6), Lengde 60)
192.168.10.1.http> 192.168.10.21.33586: Flagg [s.], CKSUM 0x2DCC (Riktig), SEQ 40897276666, ACK 2736960994, WIN 14480, Options [MSS 1460, Sackok, TS Val 30996070 ECR 389882294, nop, Wscale 3], lengde 0
03:36:00.604893 IP (TOS 0x0, TTL 64, ID 723, Offset 0, Flags [DF], Proto TCP (6), Lengde 52)
192.168.10.21.33586> 192.168.10.1.http: flagg [.], CKSUM 0x94E2 (Riktig), SEQ 1, ACK 1, WIN 63, Options [NOP, NOP, TS VAL 389882297 ECR 30996070], Lengde 0
03:36:00.605054 IP (TOS 0x0, TTL 64, ID 724, Offset 0, Flags [DF], Proto TCP (6), Lengde 481)
HTTP -forespørsler ..
192.168.10.21.33586> 192.168.10.1.http: flagg [s.], CKSUM 0x9E5D (Riktig), Seq 1: 430, ACK 1, Win 63, Options [NOP, NOP, TS VAL 389882297 ECR 30996070], Lengde 429: HTTP, Lengde: 429
Få / http / 1.1
Vert: 192.168.10.1
Bruker-agent: Mozilla/5.0 (Windows NT 10.0; RV: 78.0) Gecko/20100101 Firefox/78.0
Godta: tekst/html, applikasjon/xhtml+xml, applikasjon/xml; q = 0.9, image/webp,*/*; q = 0.8
Aksepterespråk: en-oss, en; q = 0.5
Akseptere koding: gzip, deflate
Dnt: 1
Tilkobling: Keep-Alive
Cookie: _TestCookiesUpport = 1; SID = C7CCFA31CFE06065717D24FB544A5CD588760F0CDC5AE2739E746F84C469B5FD
Oppgradering-Insecure-Requests: 1
Og svarene blir også fanget
192.168.10.1.http> 192.168.10.21.33586: Flagg [P.], CKSUM 0x84F8 (Riktig), Seq 1: 523, ACK 430, Win 1944, Options [NOP, NOP, TS VAL 30996179 ECR 389882297], Lengde 522: HTTP, Lengde: 522
Http/1.1 200 OK
Server: ZTE webserver 1.0 ZTE Corp 2015.
AKKOPT-GRANDER: BYTES
Tilkobling: Lukk
X-Frame-Options: Sameorigin
Cache-Control: No-Cache, No-Store
Innholdslengde: 138098
Set-Cookie: _TestCookiesUpport = 1; Bane =/; Httponly
Innholdstype: tekst/html; Charset = UTF-8
X-innholdstype-valg: Nosniff
Innholdssikkerhetspolicy: Frame-Ancestors 'Self' 'Unswee Inline' 'Usrygge-eval'; IMG-SRC 'Self' Data:;
X-XSS-beskyttelse: 1; modus = blokkering
Set-cookie: sid =; utløper = tors, 01-jan-1970 00:00:00 GMT; bane =/; Httponly
TCP
For å fange opp TCP-pakker, vil denne kommandoen gjøre alt det gode:
$ sudo tcpdump -i wlan0 tcp
TCPDUMP: Lytter på WLAN0, Link-Type EN10MB (Ethernet), Snapshot Lengde 262144 byte
04:35:48.892037 IP (TOS 0x0, TTL 60, ID 23987, Offset 0, Flags [Ingen], Proto TCP (6), Lengde 104)
TL-IN-F189.1E100.nett.https> 192.168.10.16.50272: Flagg [P.], CKSUM 0XC924 (Riktig), SEQ 1377740065: 1377740117, Ack 1546363399, Win 300, Options [NOP, NOP, TS Val 13149401 ECR 3051434098], lengde 52
04:35:48.892080 IP (TOS 0x0, TTL 64, ID 20577, Offset 0, Flags [DF], Proto TCP (6), Lengde 52)
192.168.10.16.50272> TL-IN-F189.1E100.nett.https: flagg [.], CKSUM 0xf898 (Riktig), SEQ 1, ACK 52, WIN 63, Options [NOP, NOP, TS VAL 3051461952 ECR 13149401], lengde 0
04:35:50.199754 IP (TOS 0x0, TTL 64, ID 20578, Offset 0, Flags [DF], Proto TCP (6), lengde 88)
192.168.10.16.50272> TL-IN-F189.1E100.nett.https: flagg [s.], CKSUM 0x2531 (Riktig), SEQ 1:37, ACK 52, WIN 63, Options [NOP, NOP, TS VAL 3051463260 ECR 13149401], lengde 36
04:35:50.199809 IP (TOS 0x0, TTL 64, ID 7014, Offset 0, Flags [DF], Proto TCP (6), lengde 88)
192.168.10.16.50434> HKG12S18-IN-F14.1E100.nett.https: flagg [s.], CKSUM 0xb21E (Riktig), SEQ 328391782: 328391818, ACK 3599854191, Win 63, Options [NOP, NOP, TS Val 3656137742 ECR 2564108387], lengde 36
4 pakker fanget
4 pakker mottatt av filter
0 pakker droppet med kjerne
Normalt resulterer TCP -pakkefangst i mye trafikk; Du kan i detalj spesifisere dine krav ved å legge filtre til fangsten, for eksempel:
Havn
Angir porten som skal overvåkes
$ sudo tcpdump -i wlan0 tcp port 2222
Kilde IP
Å se pakker fra en spesifisert kilde
$ sudo tcpdump -i wlan0 tcp src 192.168.10.2
Destinasjon IP
Å se pakker til et spesifisert reisemål
$ sudo tcpdump -i wlan0 tcp dst 192.168.10.2
Lagre pakkefangst i filer
For å lagre pakkefangsten for å gjøre analyse senere, kan vi bruke -w -alternativet til TCPDump som krever et parameter for filnavn. Disse filene lagres i en PCAP (pakkefangst) filformat, som kan brukes til å lagre eller sende pakkefangst.
For eksempel:
$ sudo tcpdump-w /fanget.PCAP
Vi kan legge til filtre om vi vil fange TCP, UDP eller ICMP -pakker osv.
Lesing av pakkefangst fra filer
Dessverre kan du ikke lese den lagrede filen via vanlige "lese fil" -kommandoer som katt osv. Utgangen er alt annet enn gibberisk, og det er vanskelig å si hva som er i filen. '-r' brukes til å lese pakkene som er lagret i .PCAP-fil, lagret tidligere av '-W' eller annen programvare som lagrer PCAPS:
$ sudo tcpdump -r/utganger.PCAP
Dette skriver ut dataene som er samlet inn fra fangede pakker på terminalskjermen i et lesbart format.
Tcpdump jukseark
TCPDump kan brukes med andre Linux -kommandoer som GREP, SED, etc., For å hente ut nyttig informasjon. Her er noen nyttige kombinasjoner og nøkkelord amalgamert i bruk med TCPDump for å få verdifull informasjon.
Pakk ut HTTP -brukeragenter:
$ sudo tcpdump -n | grep "bruker-agent:"
URLene som blir bedt om over HTTP, kan overvåkes ved hjelp av TCPDump som:
$ sudo tcpdump -v -n | Egrep -i "Post / | Få / | Vert:"
Du kan også Pakk ut HTTP -passord i postforespørsler
$ sudo tcpdump -nn -l | Egrep -i "Post /| Pwd = | PassWd = | Passord = | Vert:"
Server- eller klientsiden-informasjonskapsler kan trukket ut ved hjelp av:
$ sudo tcpdump -n | Egrep -I 'Set -Cookie | Vert: | Cookie:'
Fang DNS -forespørsler og svar ved å bruke:
$ sudo tcpdump -i wlp58s0 -s0 port 53
Skriv ut alle passord for vanlig tekst:
$ sudo tcpdump port http eller port ftp eller port smtp eller port imap eller port pop3 eller port telnet -l -a | Egrep -i -b5 'pass = | pwd = | log = | login = | bruker = | bruker | brukernavn = | pw = | passw = | passwd = | passord = | pass: | Bruker: | Brukernavn: | Passord: | Innlogging: | Pass '
Vanlige TCPDump -filtre
Opphør
TCPDump har vært et veldig mye brukt verktøy brukt i forskningen og anvendelsene av sikkerhet/nettverk. Den eneste ulempen Tcpdump har 'ingen gui', men den er for god til å holdes utenfor topplistene. Som Daniel Miessler skriver, “Protokollanalysatorer som Wireshark er flott, men hvis du virkelig vil mestre Packet-Fu, må du bli en med TCPDump først.”