tcpdump

TCPDUMP Nybegynnerveiledning

TCPDUMP Nybegynnerveiledning
Tcpdump er en gratis og åpen kildekode trådløs datanettverkspakkeanalysator som fungerer på kommandolinjegrensesnittet. Det er det mest brukte CLI-verktøyet for å analysere nettverkstrafikk. Tcpdump lar brukerne se, lese eller fange nettverkstrafikk overført over et nettverk som er koblet til datamaskinen. Det er nyttig i systemadministrasjon, overvåking av nettverkstrafikk (for problemer eller annet).

Opprinnelig ble den skrevet i 1988 av fire Network Research Group-arbeidere 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 heter WinDump og bruker WinPcap, Windows-alternativet for libpcap.

Bruk snap for å installere tcpdump:

$ sudo snap installere tcpdump

Bruk pakkebehandleren til å installere tcpdump:

$ sudo apt-get install tcpdump (Debian / Ubuntu)
$ sudo dnf installere tcpdump (CentOS / RHEL 6 & 7)
$ sudo yum installere 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 vil bruke et netcat (nc) verktøy for å sende en UDP-pakke og deretter dumpe den.

$ echo -n "tcpdumper" | nc -w 1 -u localhost 1337

I den ovennevnte kommandoen sender vi en UDP-pakke som består av strengen “Tcpdumper” til UDP-porten 1337 via lokal vert. Tcpdump fanger pakken som sendes over UDP-port 1337 og viser 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 innsamlede data fra pakkene i ASCII så vel som hex-form.

tcpdump: lytter på lo, link-type EN10MB (Ethernet), øyeblikksbildelengde 262144 byte
04:39:39.072802 IP (tos 0x0, ttl 64, id 32650, offset 0, flagg [DF], proto UDP (17), lengde 37)
lokal vert.54574> lokal vert.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 har blitt vist i hex-format.

DHCP

Tcpdump kan også utfø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: lytte på wlan0, lenktype EN10MB (Ethernet), øyeblikksbildelengde 262144 byte
03:52:04.004356 00: 11: 22: 33: 44: 55> 00: 11: 22: 33: 44: 66, etertype IPv4 (0x0800), lengde 342: (tos 0x0, ttl 64, id 39781, offset 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)
Client-IP 192.168.10.16
Klient-Ethernet-adresse 00: 11: 22: 33: 44: 55
Leverandør-rfc1048-utvidelser
Magisk informasjonskapsel 0x63825363
DHCP-melding (53), lengde 1: Slipp
Server-ID (54), lengde 4: 192.168.10.1
Vertsnavn (12), lengde 6: "papegøye"
END (255), lengde 0
PAD (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: lytte på wlan0, koblingstype EN10MB (Ethernet), øyeblikksbildelengde 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.skyflare-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.skyflare-dns.com. 2/0/0 mozilla.skyflare-dns.com. [24s] A 104.16.249.249, mozilla.skyflare-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

Address Resolution Protocol brukes til å oppdage koblingslagsadressen, for eksempel en MAC-adresse. Det er knyttet til en gitt internettlagsadresse, vanligvis en IPv4-adresse.

Vi bruker tcpdump for å fange opp og lese dataene som bæres i arp-pakkene. Kommandoen er så enkel som:

$ sudo tcpdump -i wlan0 arp -vvv
tcpdump: lytte på wlan0, koblingstype EN10MB (Ethernet), øyeblikksbildelengde 262144 byte
03:44:12.023668 ARP, Ethernet (len 6), IPv4 (len 4), Be om hvem-har 192.168.10.1 fortelle 192.168.10.2, lengde 28
03:44:17.140259 ARP, Ethernet (len 6), IPv4 (len 4), Be om hvem som har 192.168.10.21 fortelle 192.168.10.1, lengde 28
03:44:17.140276 ARP, Ethernet (len 6), IPv4 (len 4), Svar 192.168.10.21 er-kl 00: 11: 22: 33: 44: 55 (oui Ukjent), lengde 28
03:44:42.026393 ARP, Ethernet (len 6), IPv4 (len 4), Be hvem som har 192.168.10.1 fortelle 192.168.10.2, lengde 28

ICMP

ICMP, også kjent som Internet Control Message Protocol, er en støtteprotokoll i Internet-protokollpakken. ICMP brukes som en informasjonsprotokoll.

For å se alle ICMP-pakkene på et grensesnitt, kan vi bruke denne kommandoen:

$ sudo tcpdump icmp -vvv
tcpdump: lytte på wlan0, koblingstype EN10MB (Ethernet), øyeblikksbildelengde 262144 byte
04:26:42.123902 IP (tos 0x0, ttl 64, id 14831, offset 0, flagg [DF], proto ICMP (1), lengde 84)
192.168.10.16> 192.168.10.1: ICMP ekkoforespørsel, id 47363, seq 1, lengde 64
04:26:42.128429 IP (tos 0x0, ttl 64, id 32915, offset 0, flagg [none], proto ICMP (1), lengde 84)
192.168.10.1> 192.168.10.16: ICMP-ekkosvar, id 47363, seq 1, lengde 64
04:26:43.125599 IP (tos 0x0, ttl 64, id 14888, offset 0, flagg [DF], proto ICMP (1), lengde 84)
192.168.10.16> 192.168.10.1: ICMP ekkoforespørsel, id 47363, seq 2, lengde 64
04:26:43.128055 IP (tos 0x0, ttl 64, id 32916, offset 0, flagg [none], proto ICMP (1), lengde 84)
192.168.10.1> 192.168.10.16: ICMP ekkosvar, id 47363, seq 2, lengde 64

NTP

NTP er en nettverksprotokoll designet spesielt for å synkronisere tiden i 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> tid-b-wwv.nist.Gov.ntp: [udp sum ok] NTPv4, klient, lengde 48
Sprangindikator: ur usynkronisert (192), stratum 0 (uspesifisert), avstemning 3 (8s), presisjon -6
Rotforsinkelse: 1.000000, rotdispersjon: 1.000000, referanse-ID: (unspec)
Referansetidsstempel: 0.000000000
Opprinnelig tidsstempel: 0.000000000
Motta tidsstempel: 0.000000000
Send tidsstempel: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
Opphavsmann - Motta tidsstempel: 0.000000000
Opphavsmann - Send tidsstempel: 3825358265.547764155 (2021-03-21T23: 31: 05Z)
04:31:05.841696 IP (tos 0x0, ttl 56, id 234, offset 0, flagg [none], proto UDP (17), lengde 76)
tid-b-wwv.nist.Gov.ntp> 192.168.10.16.ntp: [udp sum ok] NTPv3, Server, lengde 48
Sprangindikator: (0), stratum 1 (primær referanse), avstemning 13 (8192s), presisjon -29
Rotforsinkelse: 0.000244, Rootspredning: 0.000488, Referanse-ID: NIST
Referansetidsstempel: 3825358208.000000000 (2021-03-21T23: 30: 08Z)
Opprinners 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)
Opphavsmann - Motta tidsstempel: +9.480896026
Opphavsmann - Send tidsstempel: +9.480897141

SMTP

SMTP eller Simple Mail Transfer Protocol brukes hovedsakelig til e-post. Tcpdump kan bruke dette til å hente ut nyttig e-postinformasjon. For eksempel for å trekke ut e-postmottakere / avsendere:

$ sudo tcpdump -n -l port 25 | grep -i 'POST FRA \ | RCPT TIL'

IPv6

IPv6 er "neste generasjon" av IP, og tilbyr et bredt spekter av IP-adresser. IPv6 bidrar til å oppnå den langsiktige helsen til Internett.

For å fange IPv6-trafikk, bruk ip6-filteret som spesifiserer TCP- og UDP-protokollene ved hjelp av proto 6 og proto-17.

$ sudo tcpdump -n -i hvilken som helst ip6 -vvv
tcpdump: datalink type LINUX_SLL2
tcpdump: lytte på hvilken som helst, link-type LINUX_SLL2 (Linux-kokt v2), øyeblikksbildelengde 262144 byte
04:34:31.847359 lo I IP6 (flytetikett 0xc7cb6, hlim 64, neste topptekst UDP (17) nyttelastlengde: 40) :: 1.49395> :: 1.49395: [bad udp cksum 0x003b -> 0x3587!] UDP, lengde 32
04:34:31.859082 lo I IP6 (flytetikett 0xc7cb6, hlim 64, neste topptekst UDP (17) nyttelastlengde: 32) :: 1.49395> :: 1.49395: [bad udp cksum 0x0033 -> 0xeaef!] UDP, lengde 24
04:34:31.860361 lo I IP6 (flytetikett 0xc7cb6, hlim 64, neste topptekst UDP (17) nyttelastlengde: 40) :: 1.49395> :: 1.49395: [bad udp cksum 0x003b -> 0x7267!] UDP, lengde 32
04:34:31.871100 lo I IP6 (flytetikett 0xc7cb6, hlim 64, neste topptekst 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 av kjernen

'-C 4' gir bare en pakketelling på opptil 4 pakker. Vi kan spesifisere antall pakker som skal n og fange n pakker.

HTTP

Hypertext Transfer Protocol brukes til å overføre data fra en webserver til en nettleser for å vise websider. HTTP bruker TCP-formkommunikasjon. Spesielt brukes TCP-port 80.

Slik skriver du ut alle IPv4 HTTP-pakker til og fra port 80:

tcpdump: lytter på wlan0, lenktype EN10MB (Ethernet), øyeblikksbildelengde 262144 byte
03:36:00.602104 IP (tos 0x0, ttl 64, id 722, offset 0, flagg [DF], proto TCP (6), lengde 60)
192.168.10.21.33586> 192.168.10.1.http: Flags [S], cksum 0xa22b (correct), 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, flagg [DF], proto TCP (6), lengde 60)
192.168.10.1.http> 192.168.10.21.33586: Flagg [S.], cksum 0x2dcc (correct), seq 4089727666, 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, flagg [DF], proto TCP (6), lengde 52)
192.168.10.21.33586> 192.168.10.1.http: Flagg [.], cksum 0x94e2 (korrekt), 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, flagg [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
GET / HTTP / 1.1
Vert: 192.168.10.1
Brukeragent: 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, bilde / webside, * / *; q = 0.8
Godta-språk: no-US, en; q = 0.5
Godta-koding: gzip, deflater
DNT: 1
Tilkobling: hold deg i live
Informasjonskapsel: _TESTCOOKIESUPPORT = 1; SID = c7ccfa31cfe06065717d24fb544a5cd588760f0cdc5ae2739e746f84c469b5fd
Oppgradering-usikker-forespørsler: 1

Og svar fanges også

192.168.10.1.http> 192.168.10.21.33586: Flagg [s.], cksum 0x84f8 (correct), seq 1: 523, ack 430, win 1944, options [nop, nop, TS val 30996179 ecr 389882297], lengde 522: HTTP, lengde: 522
HTTP / 1.1200 OK
Server: ZTE webserver 1.0 ZTE corp 2015.
Aksept-områder: byte
Tilkobling: lukk
X-Frame-Options: SAMEORIGIN
Cache-kontroll: ikke-hurtigbuffer, ingen butikk
Innholdslengde: 138098
Sett-informasjonskapsel: _TESTCOOKIESUPPORT = 1; PATH = /; HttpBare
Innholdstype: tekst / html; charset = utf-8
Alternativer for X-innholdstype: nosniff
Innholdssikkerhetspolicy: ramme-forfedre 'selv' 'usikre inline' 'usikre eval'; img-src 'selv' data :;
X-XSS-beskyttelse: 1; modus = blokk
Set-Cookie: SID =; utløper = Thu, 01-Jan-1970 00:00:00 GMT; path = /; HttpBare

TCP

For å fange bare TCP-pakker, vil denne kommandoen gjøre alt godt:

$ sudo tcpdump -i wlan0 tcp
tcpdump: lytte på wlan0, koblingstype EN10MB (Ethernet), øyeblikksbildelengde 262144 byte
04:35:48.892037 IP (tos 0x0, ttl 60, id 23987, offset 0, flagg [none], proto TCP (6), lengde 104)
tl-in-f189.1e100.nett.https> 192.168.10.16.50272: Flagg [s.], cksum 0xc924 (correct), 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 (korrekt), 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, flagg [DF], proto TCP (6), lengde 88)
192.168.10.16.50272> tl-in-f189.1e100.nett.https: Flagg [s.], cksum 0x2531 (correct), 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 (correct), 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 av kjernen

Normalt resulterer TCP-pakkefangst i mye trafikk; du kan spesifisere dine krav i detalj ved å legge til filtre i fangsten, for eksempel:

Havn
Spesifiserer porten som skal overvåkes

$ sudo tcpdump -i wlan0 tcp port 2222

Kilde IP
For å vise pakker fra en spesifisert kilde

$ sudo tcpdump -i wlan0 tcp src 192.168.10.2

Destinasjon IP
For å vise pakker til et spesifisert mål

$ sudo tcpdump -i wlan0 tcp dst 192.168.10.2

Lagrer pakkefangst i filer

For å lagre pakkefangst for å gjøre analyser senere, kan vi bruke -w-alternativet til tcpdump som krever en filnavnparameter. Disse filene lagres i et pcap-filformat (packet capture), 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.

Lese pakkefangst fra filer

Dessverre kan du ikke lese den lagrede filen via vanlige 'lesefil'-kommandoer som katt osv. Resultatet er alt annet enn gibberish, 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 cheatsheet

Tcpdump kan brukes med andre Linux-kommandoer som grep, sed, etc., for å hente ut nyttig informasjon. Her er noen nyttige kombinasjoner og nøkkelord slått sammen i bruk med tcpdump for å få verdifull informasjon.

Pakk ut HTTP-brukeragenter:

$ sudo tcpdump -n | grep "Brukeragent:"

URL-ene som etterspørres via HTTP kan overvåkes ved hjelp av tcpdump, for eksempel:

$ sudo tcpdump -v -n | egrep -i "POST / | GET / | Vert:"

Du kan også Pakk ut HTTP-passord i POST-forespørsler

$ sudo tcpdump -nn -l | egrep -i "POST / | pwd = | passwd = | passord = | Vert:"

Server- eller klientsiden informasjonskapsler kan ekstraheres 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 ren 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: | pålogging: | pass '

Vanlige Tcpdump-filtre

  • -EN Viser pakker i ASCII-format.
  • -c Antall pakker som skal fanges.
  • -telle Skriv ut antall pakker bare når du leser en fanget fil.
  • -e Skriv ut MAC-adresser og overskrifter på koblingsnivå.
  • -h eller -hjelp Skriver ut versjons- og bruksinformasjon.
  • -versjon Vis kun versjonsinformasjonen.
  • -Jeg Spesifiser nettverksgrensesnittet du vil fange på.
  • -K Forhindre forsøk på å verifisere kontrollsummer for en hvilken som helst pakke. Legger til fart.
  • -m Spesifiser modulen som skal brukes.
  • -n Ikke konverter adresser (i.e., vertsadresser, portnumre osv.) til navnene.
  • -Nummer Skriv ut et valgfritt pakkenummer i begynnelsen av hver linje.
  • -s Forbud grensesnittet fra å gå i promiskuøs modus.
  • -Q Velg retning for pakkene som skal fanges. Send eller motta.
  • -q Stille / rask utgang. Skriver ut Mindre informasjon. Utgangene er kortere.
  • -r Brukes til å lese pakker fra en pcap .
  • -t Ikke skriv ut et tidsstempel på hver dumpelinje.
  • -v Skriver ut mer informasjon om utdata.
  • -w Skriv de rå pakkene som skal arkiveres.
  • -x Skriver ut ASCII-utdata.
  • -X Skriver ASCII med sekskant.
  • -liste-grensesnitt Viser alle tilgjengelige nettverksgrensesnitt der pakker kan fanges opp av tcpdump.

Opphør

Tcpdump har vært et veldig mye brukt verktøy som brukes i forskning og applikasjoner av sikkerhet / nettverk. Den eneste ulempen tcpdump har 'Ingen GUI', men det er for godt til å holdes utenfor topplistene. Som Daniel Miessler skriver, “Protokollanalysatorer som Wireshark er flott, men hvis du virkelig vil mestre pakke-fu, må du først bli en med tcpdump.”

Mus Hvordan reversere rulle retning for mus og styreplater i Windows 10
Hvordan reversere rulle retning for mus og styreplater i Windows 10
Mus og Pekeplates gjør ikke bare databehandling enkelt, men mer effektivt og mindre tidkrevende. Vi kan ikke forestille oss et liv uten disse enhetene...
Mus Hvordan endre musepekeren og markørstørrelse, farge og skjema på Windows 10
Hvordan endre musepekeren og markørstørrelse, farge og skjema på Windows 10
Musepekeren og markøren i Windows 10 er veldig viktige aspekter ved operativsystemet. Dette kan sies også for andre operativsystemer, så i sannhet er ...
Gratis og åpen kildekode-spillmotorer for utvikling av Linux-spill
Denne artikkelen vil dekke en liste over gratis og open source-spillmotorer som kan brukes til å utvikle 2D- og 3D-spill på Linux. Det er mange slike ...