En guide til nettverkstrafikkanalyseverktøy TCPDump

En guide til nettverkstrafikkanalyseverktøy TCPDump

Tcpdump er en nettverkspakke som snuser kommandolinjeverktøyet. Det brukes ofte til feilsøkingsnettverk og testing av sikkerhetsproblemer. Til tross for fraværet av et grafisk brukergrensesnitt, er det det mest populære, kraftige og allsidige kommandolinjeverktøyet.

Det er hjemmehørende i Linux slik at de fleste av Linux -distribusjonene installerer den som en del av standard OS. TCPDump er et LibPCAP -grensesnittprogram, som er et bibliotek for nettverksdatagram Capture.

Denne artikkelen vil avmystifisere TCPDump ved å vise hvordan du kan fange, lese og analysere fanget nettverkstrafikk i dette verktøyet. Vi vil senere bruke vår forståelse for å inspisere datapakker med de avanserte TCP -flaggfiltrene.

TCPDUMP -installasjon

TCPDump standardinstallasjon i distroen din avhenger av alternativene som er valgt under installasjonsprosessen. Når det gjelder tilpasset installasjon, er det mulig at pakken ikke er tilgjengelig. Du kan sjekke tcpdump -installasjonen ved å bruke dpkg kommando med “-s”Alternativ.

ubuntu $ ubuntu: ~ $ dpkg -s tcpdump

Eller bruk kommandoen “sudo apt-get install tcpdump” for å installere tcpdump i Ubuntu Linux.

Fanger pakker i TCPDump:

For å begynne fangstprosessen, må vi først finne vårt arbeidsgrensesnitt ved å bruke "ifconfig”Kommando. Eller vi kan liste opp alle tilgjengelige grensesnitt ved hjelp av tcpdump kommando med “-D”Alternativ.

ubuntu $ ubuntu: ~ $ tcpdump -d

For å begynne fangstprosessen kan du bruke syntaksen;

tcpdump [-opsjoner] [uttrykk]

For eksempel, i kommandoen nedenfor, bruker vi "-Jeg”Alternativ for å fange trafikk på“ENP0S3”Grensesnitt, med en“-c”Flagg for å begrense de fangede pakkene og skrive“-w”Det til en test_capture.PCAP fil.

ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 -w /tmp /test_capture.PCAP

Tilsvarende kan du bruke forskjellige filterkombinasjoner for å isolere trafikk i henhold til kravet ditt. Et slikt eksempel inkluderer å fange nettverksdata som forlater og ankommer verten ved hjelp av vert kommando for en spesifikk havn. Dessuten har jeg brukt “-n”Flagg for å forhindre at TCPDump fanger DNS -oppslag. Dette flagget er veldig nyttig i å mette trafikken mens du feilsøker nettverket.

ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 vert 10.0.2.15 og DST port 80 -w /tmp /test_capture1.PCAP
TCPDump: Lytter på ENP0S3, Link-Type EN10MB (Ethernet), Capture Size 262144 byte
20 pakker fanget
21 pakker mottatt av filter
0 pakker droppet med kjerne

Vi bruker “og”Kommando for bare å fange pakker som inneholder vert 10.0.2.15 og destinasjonsport 80. Tilsvarende kan forskjellige andre filtre brukes for å lette feilsøkingsoppgaver.

Hvis du ikke vil bruke "-c”Flagg for å begrense fangsttrafikken, kan du bruke et avbruddssignal, i.e., Ctrl+c, For å stoppe isolasjonsprosessen.

Leser TCPDump -filer

Å lese tcpdump fangede filer kan være mye overveldende. Som standard tildeler TCP navn til IP -adresser og porter. Vi vil bruke “-r”Flagg for å lese vår allerede fangede fil test_capture.PCAP lagret i /tmp mappe. Vi vil røre utgangen til awk kommando for bare å sende inn kilden IP -adresse og porter og røre den til kommandoen hode for bare å vise de første 5 oppføringene.

ubuntu $ ubuntu: ~ $ sudo tcpdump -r /tmp /test_capture1.PCAP | awk -f “” 'Print $ 3' | Hode -5
lesing fra fil /tmp /test_capture.PCAP, Link-type EN10MB (Ethernet)
Ip ubuntu.53298
Ip ubuntu.53298
Ip ubuntu.53298
Ip ubuntu.53298
Ip ubuntu.53298

Det anbefales imidlertid å bruke IP -adresser og porter i tall for å løse nettverksproblemer. Vi vil deaktivere IP -navnoppløsningen med "-n”Flagg- og portnavn med“-nn“.

ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -n
TCPDump: Verbose output undertrykt, bruk -V eller -VV for full protokollavkode
Lytter på ENP0S3, koblingstype EN10MB (Ethernet), fangststørrelse 262144 byte
20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: Flagg [P.], SEQ 1276027591: 1276027630, ACK 544039114, WIN 63900, lengde 39
20:08:22.146745 IP 10.0.2.15.43456> 54.204.39.132.443: Flagg [P.], SEQ 3381018839: 3381018885, ACK 543136109, WIN 65535, lengde 46
20:08:22.147506 IP 172.67.39.148.443> 10.0.2.15.54080: Flagg [.], ACK 39, WIN 65535, lengde 0
20:08:22.147510 IP 54.204.39.132.443> 10.0.2.15.43456: Flagg [.], ACK 46, WIN 65535, lengde 0
20:08:22.202346 IP 216.58.209.142.443> 10.0.2.15.41050: Flagg [P.], SEQ 502925703: 502925826, ACK 1203118935, WIN 65535, lengde 123
20:08:22.202868 IP 10.0.2.15.41050> 216.58.209.142.443: Flagg [P.], SEQ 1:40, ACK 123, WIN 65535, Lengde 39

Forståelse av fanget produksjon

TCPDump fanger mange protokoller, inkludert UDP, TCP, ICMP, etc. Det er ikke lett å dekke dem alle her. Det er imidlertid viktig å forstå hvordan informasjonen vises og hvilke parametere den inkluderer.

TCPDump viser hver pakke i en linje, med en tidsstempel og informasjon med hensyn til protokollen. Generelt er formatet til en TCP -protokoll som følger:

. > .: , , , , ,

La oss forklare et av de fangede pakkefeltene etter felt:

20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: Flagg [P.], SEQ 1276027591: 1276027630, ACK 544039114, WIN 63900, lengde 39
  • 20:08:22.146354: tidsstempel av den fangede pakken
  • IP: Nettverkslagsprotokoll.
  • 10.0.2.15.54080: Dette feltet inneholder kilden IP -adresse og kildeport.
  • 172.67.39.148.443: Dette feltet representerer destinasjons -IP -adressen og portnummeret.
  • Flagg [s.]/: Flaggene representerer tilkoblingsstatus. I dette tilfellet [P.] indikerer push -godkjenningspakken. Flaggfeltet inkluderer også noen andre verdier som:
    1. S: Syn
    2. P: Push
    3. [.]: Ack
    4. F: Fin
    5. [S.]: Syn_ack
    6. R: RST
  • SEQ 1276027591: 1276027630: Sekvensnummeret i det første: Det siste formatet betegner antall data i pakken. Ekskluderer den første pakken der tallene er i absolutt, har de påfølgende pakkene relative tall. I dette tilfellet betyr tallene her at pakken inneholder databyte fra 1276027591 til 1276027630.
  • ACK 544039114: Bekreftelsesnummeret skildrer neste forventede datasekvensnummer.
  • Vinn 63900: Vindusstørrelsen viser antall tilgjengelige byte i den mottatte bufferen.
  • Lengde 39: Lengde på nyttelastdata, i byte.

Avanserte filtre

Nå kan vi bruke noen avanserte overskriftsfilteralternativer for å vise og analysere bare datapakker. I hvilken som helst TCP -pakke begynner TCP -flaggene fra den 14. byte slik at PSH og ACK er representert av 4. og 5. biter.

Vi kan bruke denne informasjonen ved å slå på disse bitene 00011000 eller 24 å vise datapakker med bare PSH- og ACK -flagg. Vi sender dette nummeret til tcpdump med filteret “TCP [13] = 24“Merk at matrisindeksen i TCP begynner på null.

Vi vil filtrere ut denne pakken fra vår TEXT_CAPTURE.PCAP fil og bruk -EN Alternativ for å vise alle pakkedetaljene for deg.

Tilsvarende kan du filtrere ut noen andre flaggpakker ved hjelp av “TCP [13] = 8” og “TCP [13] = 2” for bare PSH- og SYN -flagg, etc.

ubuntu $ ubuntu: ~ $ sudo tcpdump -a 'tcp [13] = 24' -r /tmp /test_capture.PCAP
lesing fra fil /tmp /test_capture.PCAP, Link-type EN10MB (Ethernet)
19:26:17.827902 ip ubuntu.53298> 32.121.122.34.BC.GoogleUserContent.com.http: flagg [s.], SEQ 4286571276: 4286571363, ACK 252096002, WIN 64240, lengde 87: http: get / http / 1.1
E ...:?@[email protected].
... "Zy .2.P… P… få / http / 1.1
Vert: Tilkoblingssjekk.Ubuntu.com
Aksepterer: */*
Tilkobling: Lukk

Konklusjon

I denne artikkelen har vi introdusert deg for noen av de viktigste temaene i TCPDump. TCPDump, kombinert med kraften til CLI, kan være til stor hjelp i nettverksfeilsøking, automatisering og sikkerhetsstyring. Når de er studert og kombinert, kan filtre og kommandolinjealternativer bidra mye til din daglige feilsøking og automatiseringsoppgaver og generell forståelse av nettverket.