tcpdump

En guide til nettverkstrafikkanalyseverktøy TCPDUMP

En guide til nettverkstrafikkanalyseverktøy TCPDUMP

Tcpdump er et nettverkspakke som snuser kommandolinjeprogrammet. Det brukes oftest til feilsøking av nettverk og testing av sikkerhetsproblemer. Til tross for fraværet av et grafisk brukergrensesnitt, er det det mest populære, kraftige og allsidige kommandolinjeprogrammet.

Det er innfødt i Linux slik at de fleste Linux-distribusjoner installerer det som en del av standard OS. Tcpdump er et libpcap-grensesnittprogram, som er et bibliotek for nettverksdatagramfangst.

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 til å inspisere datapakker med de avanserte TCP-flaggfiltrene.

Installasjon av Tcpdump

Tcpdump standardinstallasjon i distroen din avhenger av alternativene som er valgt under installasjonsprosessen. Ved tilpasset installasjon er det mulig at pakken ikke er tilgjengelig. Du kan sjekke tcpdump-installasjonen ved å bruke dpkg kommandoen med “-s”Alternativet.

ubuntu $ ubuntu: ~ $ dpkg -s tcpdump

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

Fange pakker i Tcpdump:

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

ubuntu $ ubuntu: ~ $ tcpdump -D

For å starte fangstprosessen kan du bruke syntaksen;

tcpdump [-alternativer] [uttrykk]

I kommandoen nedenfor bruker vi for eksempel "-Jeg”For å fange trafikk på“enp0s3”Grensesnitt, med et“-c”Flagg for å begrense de fangede pakkene og skrive“-w”Det til en test_fangst.pcap fil.

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

På samme måte kan du bruke forskjellige filterkombinasjoner for å isolere trafikk i henhold til dine krav. Et slikt eksempel inkluderer å fange nettverksdata som forlater og ankommer verten ved hjelp av vert kommando for en bestemt havn. Videre har jeg brukt-n”-Flagg for å forhindre tcpdump i å fange DNS-oppslag. Dette flagget er veldig nyttig for å mette trafikk mens du feilsøker nettverket.

ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 vert 10.0.2.15 og første port 80 -w / tmp / test_capture1.pcap
tcpdump: lytter på enp0s3, lenktype EN10MB (Ethernet), fangststørrelse 262144 byte
20 pakker fanget
21 pakker mottatt av filter
0 pakker droppet av kjernen

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 fangsttrafikk, kan du bruke et avbruddssignal, jeg.e., Ctrl + C, for å stoppe isolasjonsprosessen.

Lese Tcpdump Files

Å 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 den allerede fangede filen vår test_fangst.pcap lagret i / tmp mappe. Vi vil føre utgangen til kjipt kommando for kun å sende kilde-IP-adresse og porter og pipe den til kommandoen hode for å bare vise de 5 første oppføringene.

ubuntu $ ubuntu: ~ $ sudo tcpdump -r / tmp / test_capture1.pcap | awk -F “” 'skriv ut $ 3' | hodet -5
lesing fra fil / tmp / test_capture.pcap, koblingstype 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 oppløsningen av IP-navn med “-n”Flagg og portnavn med“-nn“.

ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -n
tcpdump: detaljert utdata undertrykt, bruk -v eller -vv for full protokollavkoding
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 [s.], se 1276027591: 1276027630, ack 544039114, vinn 63900, lengde 39
20:08:22.146745 IP 10.0.2.15.43456> 54.204.39.132.443: Flagg [s.], sek. 3381018839: 3381018885, ack 543136109, vinn 65535, lengde 46
20:08:22.147506 IP 172.67.39.148.443> 10.0.2.15.54080: Flagg [.], ack 39, seier 65535, lengde 0
20:08:22.147510 IP 54.204.39.132.443> 10.0.2.15.43456: Flagg [.], ack 46, vinne 65535, lengde 0
20:08:22.202346 IP 216.58.209.142.443> 10.0.2.15.41050: Flagg [s.], seq 502925703: 502925826, ack 1203118935, vinn 65535, lengde 123
20:08:22.202868 IP 10.0.2.15.41050> 216.58.209.142.443: Flagg [s.], se 1:40, ack 123, seier 65535, lengde 39

Forstå fanget utdata

Tcpdump fanger opp 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 inneholder.

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

. > .: , , , , ,

La oss forklare ett av de fangede pakkefeltene etter felt:

20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: Flagg [s.], seq 1276027591: 1276027630, ack 544039114, vinn 63900, lengde 39
  • 20:08:22.146354: Tidsstempel for den fangede pakken
  • IP: Nettverkslagsprotokoll.
  • 10.0.2.15.54080: Dette feltet inneholder kildens IP-adresse og kildeport.
  • 172.67.39.148.443: Dette feltet representerer destinasjonens IP-adresse og portnummer.
  • Flagg [s.] /: Flaggene representerer tilkoblingstilstanden. I dette tilfellet [P.] indikerer PUSH-bekreftelsespakken. Flaggfeltet inneholder 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 angir antall data i pakken. Med unntak av 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 databytes fra 1276027591 til 1276027630.
  • ack 544039114: Kvitteringsnummeret viser neste forventede datasekvensnummer.
  • vinn 63900: Vindusstørrelsen viser antall tilgjengelige byte i den mottatte bufferen.
  • lengde 39: Lengden på nyttelastdata, i byte.

Avanserte filtre

Nå kan vi bruke noen avanserte filterfilteralternativer for å vise og analysere bare datapakker. I en hvilken som helst TCP-pakke begynner TCP-flaggene fra 14. byte slik at PSH og ACK er representert med fjerde og femte bit.

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

Vi vil filtrere ut denne pakken fra vår tekst_fangst.pcap fil og bruk -EN alternativet for å vise alle pakkeopplysningene for deg.

På samme måte kan du filtrere ut noen andre flaggpakker ved hjelp av “Tcp [13] = 8” og “tcp [13] = 2” for bare PSH- og SYN-flagg osv.

ubuntu $ ubuntu: ~ $ sudo tcpdump -A 'tcp [13] = 24' -r / tmp / test_capture.pcap
lesing fra fil / tmp / test_capture.pcap, koblingstype EN10MB (Ethernet)
19:26:17.827902 IP ubuntu.53298> 32.121.122.34.bc.googlebrukerinnhold.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… GET / HTTP / 1.1
Vert: tilkoblingssjekk.ubuntu.com
Aksepterer: */*
Tilkobling: lukk

Konklusjon

I denne artikkelen har vi introdusert deg til noen av de viktigste temaene i tcpdump. Tcpdump, kombinert med kraften til CLI, kan være til stor hjelp i feilsøking, automatisering og sikkerhetsadministrasjon av nettverk. Når de er studert og kombinert, kan filtre og kommandolinjealternativer bidra mye til den daglige feilsøkings- og automatiseringsoppgaven og den generelle forståelsen av nettverket.

Hvordan bruke AutoKey til å automatisere Linux-spill
AutoKey er et desktopautomatiseringsverktøy for Linux og X11, programmert i Python 3, GTK og Qt. Ved å bruke skript og MACRO-funksjonalitet kan du aut...
Hvordan vise FPS-teller i Linux-spill
Linux-spill fikk et stort press da Valve kunngjorde Linux-støtte for Steam-klient og spillene deres i 2012. Siden den gang har mange AAA- og indiespil...
Hvordan laste ned og spille Sid Meier's Civilization VI på Linux
Introduksjon til spillet Civilization 6 er et moderne syn på det klassiske konseptet som ble introdusert i serien av Age of Empires-spillene. Ideen va...