En guide til Wireshark Command Line -grensesnittet “Tshark”

En guide til Wireshark Command Line -grensesnittet “Tshark”
I de tidligere opplæringsprogrammene for Wireshark har vi dekket grunnleggende til emner for avanserte nivåer. I denne artikkelen vil vi forstå og dekke et kommandolinjegrensesnitt for Wireshark, jeg.e., Tshark. Terminalversjonen av Wireshark støtter lignende alternativer og er mye nyttig når et grafisk brukergrensesnitt (GUI) ikke er tilgjengelig.

Selv om et grafisk brukergrensesnitt er teoretisk sett mye enklere å bruke, støtter ikke alle miljøer det, spesielt servermiljøer med bare kommandolinjealternativer. På et tidspunkt, som en nettverksadministrator eller sikkerhetsingeniør, må du bruke et kommandolinjegrensesnitt. Viktig å merke seg at Tshark noen ganger brukes som erstatning for TCPDump. Selv om begge verktøyene nesten er likeverdige i trafikkfangstfunksjonalitet, er Tshark mye kraftigere.

Det beste du kan gjøre er å bruke Tshark til å sette opp en port i serveren din som videresender informasjon til systemet ditt, slik at du kan fange trafikk for analyse ved hjelp av en GUI. Foreløpig vil vi imidlertid lære hvordan det fungerer, hva er dets attributter og hvordan du kan bruke det etter beste funksjoner.

Skriv inn følgende kommando for å installere Tshark i Ubuntu/Debian ved hjelp av apt-get:

ubuntu@ubuntu: ~ $ sudo apt -get install tshark -y

Skriv nå Tshark -hjelp For å liste opp alle mulige argumenter med sine respektive flagg som vi kan gi til en kommando Tshark.

ubuntu@ubuntu: ~ $ tshark --hjelp | Hode -20
Tshark (Wireshark) 2.6.10 (git v2.6.10 pakket som 2.6.10-1 ~ Ubuntu18.04.0)
Dumpe og analysere nettverkstrafikk.
Se https: // www.Wireshark.org for mer informasjon.
Bruk: Tshark [Alternativer] ..
Fangstgrensesnitt:
-Jeg Navn eller IDX av grensesnittet (DEF: Første ikke-loopback)
-f pakkefilter i libpcap -filtersyntaks
-s Packet Snapshot Lengde (DEF: Passende maksimum)
-P Ikke fang i promiskuøs modus
-Jeg fanger opp i skjermmodus, hvis tilgjengelig
-B Størrelse på kjernebuffer (DEF: 2MB)
-y Link Layer Type (DEF: Først passende)
--Tidsstempelmetode for tidsstempel Type for grensesnitt
-D Utskriftsliste over grensesnitt og utgang
-L Utskriftsliste over koblingslagstyper av IFACE og Exit
--Liste-tid-stempel-typer Utskriftsliste over tidsstempeltyper for IFACE og Exit
Fangst stoppforhold:

Du kan legge merke til en liste over alle tilgjengelige alternativer. I denne artikkelen vil vi dekke de fleste argumentene i detalj, og du vil forstå kraften i denne terminalorienterte Wireshark -versjonen.

Velge nettverksgrensesnitt:

For å gjennomføre live fangst og analyse i dette verktøyet, må vi først finne ut vårt arbeidsgrensesnitt. Type tshark -d og Tshark vil liste opp alle tilgjengelige grensesnitt.

ubuntu@ubuntu: ~ $ tshark -d
1. ENP0S3
2. noen
3. lo (loopback)
4. nflog
5. nfqueue
6. USBMON1
7. Ciscodump (Cisco Remote Capture)
8. RANDPKT (Random Packet Generator)
9. Sshdump (SSH Remote Capture)
10. UDPDump (UDP Listener Remote Capture)

Merk at ikke alle de listede grensesnittene fungerer. Type ifconfig å finne arbeidsgrensesnitt på systemet ditt. I mitt tilfelle er det ENP0S3.

Fang trafikk:

For å starte live -fangstprosessen, vil vi bruke Tshark kommando med “-Jeg”Alternativ for å begynne fangstprosessen fra arbeidsgrensesnittet.

ubuntu@ubuntu: ~ $ tshark -i enp0s3

Bruk Ctrl+c for å stoppe live -fangsten. I kommandoen ovenfor har jeg støttet den fangede trafikken til Linux -kommandoen hode for å vise de første fangede pakkene. Eller du kan også bruke "-c" -syntaksen for å fange opp "n ” antall pakker.

ubuntu@ubuntu: ~ $ tshark -i enp0s3 -c 5

Hvis du bare kommer inn Tshark, Som standard vil det ikke begynne å fange trafikk på alle tilgjengelige grensesnitt, og det vil heller ikke lytte til arbeidsgrensesnittet ditt. I stedet vil den fange pakker på det første listede grensesnittet.

Du kan også bruke følgende kommando for å sjekke flere grensesnitt:

ubuntu@ubuntu: ~ $ tshark -i enp0s3 -i usbmon1 -i lo

I mellomtiden er en annen måte å leve fangstrafikk å bruke nummeret ved siden av de listede grensesnittene.

ubuntu@ubuntu: ~ $ tshark -i interface_number

I nærvær av flere grensesnitt er det imidlertid vanskelig å følge med på de listede tallene deres.

Fangstfilter:

Fangstfilter reduserer den fangede filstørrelsen betydelig. Tshark bruker Berkeley Packet Filter Syntax -f “”, Som også brukes av TCPDump. Vi bruker alternativet “-f” for bare å fange pakker fra porter 80 eller 53 og bruke "-c" for å vise bare de 10 første pakkene.

ubuntu@ubuntu: ~ $ tshark -i enp0s3 -f "port 80 eller port 53" -c 10

Lagring av fanget trafikk til en fil:

Det viktigste å merke seg i skjermbildet ovenfor er at informasjonen som vises er ikke lagret, og derfor er den mindre nyttig. Vi bruker argumentet “-w”For å spare den fangede nettverkstrafikken til test_capture.PCAP i /tmp mappe.

ubuntu@ubuntu: ~ $ tshark -i enp0s3 -w /tmp /test_capture.PCAP

Mens, .PCAP er wireshark filtypen utvidelse. Ved å lagre filen, kan du gjennomgå og analysere trafikken i en maskin med Wireshark GUI senere.

Det er en god praksis å lagre filen i /tmp Siden denne mappen ikke krever noen utførelsesrettigheter. Hvis du lagrer den i en annen mappe, selv om du kjører Tshark med rotrettigheter, vil programmet nekte tillatelse på grunn av sikkerhetsgrunner.

La oss grave i alle mulige måter du kan:

  • Bruk grenser for å fange opp data, slik at de forlater Tshark eller automatisk stoppende fangstprosessen, og
  • send filene dine.

Autostop -parameter:

Du kan bruke “-en”Parameter for å innlemme tilgjengelige flagg som varighetsfilstørrelse og filer. I følgende kommando bruker vi autostop -parameteren med varighet flagg for å stoppe prosessen innen 120 sekunder.

ubuntu@ubuntu: ~ $ tshark -i enp0s3 -A varighet: 120 -w /tmp /test_capture.PCAP

Tilsvarende, hvis du ikke trenger filene dine for å være ekstra store, filstørrelse er et perfekt flagg for å stoppe prosessen etter noen KBs grenser.

ubuntu@ubuntu: ~ $ tshark -i enp0s3 -a filesize: 50 -w /tmp /test_capture.PCAP

Viktigst, filer Flaget lar deg stoppe fangstprosessen etter en rekke filer. Men dette kan bare være mulig etter å ha opprettet flere filer, som krever utførelse av en annen nyttig parameter, fange utgang.

Fangst utgangsparameter:

Fangst utgang, alias Ringbuffer -argument "-b“, Kommer sammen med de samme flaggene som autostop. Imidlertid er bruken/utgangen litt annerledes, jeg.e., flaggene varighet og filstørrelse, Ettersom det lar deg bytte eller lagre pakker i en annen fil etter å ha nådd en spesifisert tidsbegrensning i sekunder eller filstørrelse.

Under-kommando viser at vi fanger trafikken gjennom nettverksgrensesnittet ENP0S3, og fanger trafikk ved hjelp av fangstfilteret “-f”For TCP og DNS. Vi bruker Ringbuffer-alternativet “-b” med en filstørrelse flagg for å lagre hver størrelse fil 15 kb, og bruk også autostop -argumentet for å spesifisere antall filer ved hjelp av filer Alternativ slik at det stopper fangstprosessen etter å ha generert tre filer.

ubuntu@ubuntu: ~ $ tshark -i enp0s3 -f "port 53 eller port 21" -B FilSize: 15 -a filer: 2 -w /tmp /test_capture.PCAP

Jeg har delt terminalen min i to skjermer for aktivt å overvåke opprettelsen av tre .PCAP -filer.

Gå til din /tmp mappe og bruk følgende kommando i den andre terminalen for å overvåke oppdateringer etter hvert sekund.

ubuntu@ubuntu: ~ $ watch -n 1 "ls -lt"

Nå trenger du ikke huske alle disse flaggene. I stedet skriver du en kommando Tshark -i ENP0S3 -f “Port 53 eller Port 21” -B Filesize: 15 -A i terminalen din og trykk Tab. Listen over alle tilgjengelige flagg vil være tilgjengelig på skjermen.

ubuntu@ubuntu: ~ $ tshark -i enp0s3 -f "port 53 eller port 21" -B Filesize: 15 -A
Varighet: Filer: Filstørrelse:
ubuntu@ubuntu: ~ $ tshark -i enp0s3 -f "port 53 eller port 21" -B Filesize: 15 -A

Lesning .PCAP -filer:

Det viktigste er at du kan bruke en "-r”Parameter for å lese test_capture.PCAP -filer og rør den til hode kommando.

ubuntu@ubuntu: ~ $ tshark -r /tmp /test_capture.PCAP | hode

Informasjonen som vises i utdatafilen kan være litt overveldende. For å unngå unødvendige detaljer og få en bedre forståelse av en spesifikk destinasjons -IP -adresse, bruker vi -r Alternativ for å lese den fangede pakken og bruke en IP.addr Filtrer for å omdirigere utdataene til en ny fil med "-w”Alternativ. Dette vil tillate oss å gjennomgå filen og avgrense analysen vår ved å bruke ytterligere filtre.

ubuntu@ubuntu: ~ $ tshark -r /tmp /test_capture.pcap -w /tmp /omdirigert_fil.PCAP IP.DST == 216.58.209.142
ubuntu@ubuntu: ~ $ tshark -r /tmp /omdirigert_fil.PCAP | Hode
1 0.000000000 10.0.2.15 → 216.58.209.142 TLSV1.2 370 applikasjonsdata
2 0.000168147 10.0.2.15 → 216.58.209.142 TLSV1.2 669 Søknadsdata
3 0.011336222 10.0.2.15 → 216.58.209.142 TLSV1.2 5786 Søknadsdata
4 0.016413181 10.0.2.15 → 216.58.209.142 TLSV1.2 1093 Søknadsdata
5 0.016571741 10.0.2.15 → 216.58.209.142 TLSV1.2 403 Søknadsdata
6 0.016658088 10.0.2.15 → 216.58.209.142 TCP 7354 [TCP -segment av en satt sammen PDU]
7 0.016738530 10.0.2.15 → 216.58.209.142 TLSV1.2 948 Søknadsdata
8 0.023006863 10.0.2.15 → 216.58.209.142 TLSV1.2 233 Søknadsdata
9 0.023152548 10.0.2.15 → 216.58.209.142 TLSV1.2 669 Søknadsdata
10 0.023324835 10.0.2.15 → 216.58.209.142 TLSV1.2 3582 Søknadsdata

Velge felt til output:

Kommandoene ovenfor gir et sammendrag av hver pakke som inkluderer forskjellige overskriftsfelt. Tshark lar deg også se spesifiserte felt. For å spesifisere et felt, bruker vi “-T felt”Og trekke ut felt i henhold til vårt valg.

Etter "-T felt”Switch, vi bruker“ -e ”-alternativet for å skrive ut de spesifiserte feltene/filtrene. Her kan vi bruke Wireshark Display -filtre.

ubuntu@ubuntu: ~ $ tshark -r /tmp /test_capture.PCAP -t Fields -e ramme.NUMMER -E IP.src -e ip.dst | hode
1 10.0.2.15 216.58.209.142
2 10.0.2.15 216.58.209.142
3 216.58.209.142 10.0.2.15
4 216.58.209.142 10.0.2.15
5 10.0.2.15 216.58.209.142
6 216.58.209.142 10.0.2.15
7 216.58.209.142 10.0.2.15
8 216.58.209.142 10.0.2.15
9 216.58.209.142 10.0.2.15
10 10.0.2.15 115.186.188.3

Fangstkrypterte håndtrykkdata:

Så langt har vi lært å lagre og lese utgangsfiler ved hjelp av forskjellige parametere og filtre. Vi vil nå lære hvordan https initialiserer økt tshark. Nettstedene som er tilgjengelig via HTTPS i stedet for HTTP, sikrer en sikker eller kryptert dataoverføring over ledningen. For sikker overføring starter en transportlagsikkerhetskryptering en håndtrykkprosess for å starte kommunikasjonen mellom klienten og serveren.

La oss fange og forstå TLS -håndtrykk ved hjelp av Tshark. Del terminalen i to skjermer og bruk en WGET kommando for å hente en HTML -fil fra https: // www.Wireshark.org.

ubuntu@ubuntu: ~ $ wget https: // www.Wireshark.org
--2021-01-09 18: 45: 14-- https: // www.Wireshark.org/
Koble til www.Wireshark.org (www.Wireshark.org) | 104.26.10.240 |: 443 ... tilkoblet.
HTTP -forespørsel sendt, venter på svar ... 206 delvis innhold
Lengde: 46892 (46K), 33272 (32K) gjenværende [tekst/html]
Sparer til: 'Indeks.html '
indeks.HTML 100%[++++++++++++++ ============================================================================== ==>] 45.79k 154kb/s i 0.2s
2021-01-09 18:43:27 (154 kb/s)-'Indeks.HTML 'lagret [46892/46892]

På en annen skjerm vil vi bruke Tshark til å fange de 11 første pakkene ved å bruke "-c" parameter. Når man utfører analyse, er tidsstempler viktig for å rekonstruere hendelser, og derfor bruker vi “-t annonse”, På en måte som Tshark legger til tidsstempel sammen med hver fanget pakke. Til slutt bruker vi vertskommandoen til å fange pakker fra den delte verten IP adresse.

Dette håndtrykk er ganske likt TCP -håndtrykk. Så snart TCP-treveis håndtrykk avsluttes i de tre første pakkene, følger de fjerde til niende pakker et noe lignende håndtrykkritual og inkluderer TLS-strenger for å sikre kryptert kommunikasjon mellom begge parter.

ubuntu@ubuntu: ~ $ tshark -i enp0s3 -c 11 -t ad host 104.26.10.240
Fangst på 'ENP0S3'
1 2021-01-09 18:45:14.174524575 10.0.2.15 → 104.26.10.240 TCP 74 48512 → 443 [Syn] SEQ = 0 WIN = 64240 LEN = 0 MSS = 1460 SACK_PERM = 1 TSVAL = 2488996311 TSECR = 0 WS = 128
2 2021-01-09 18:45:14.279972105 104.26.10.240 → 10.0.2.15 TCP 60 443 → 48512 [Syn, ACK] SEQ = 0 ACK = 1 VINN = 65535 LEN = 0 MSS = 1460
3 2021-01-09 18:45:14.280020681 10.0.2.15 → 104.26.10.240 TCP 54 48512 → 443 [ACK] SEQ = 1 ACK = 1 VINN = 64240 LEN = 0
4 2021-01-09 18:45:14.280593287 10.0.2.15 → 104.26.10.240 TLSV1 373 klient hei
5 2021-01-09 18:45:14.281007512 104.26.10.240 → 10.0.2.15 TCP 60 443 → 48512 [ACK] SEQ = 1 ACK = 320 VINN = 65535 LEN = 0
6 2021-01-09 18:45:14.390272461 104.26.10.240 → 10.0.2.15 TLSV1.3 1466 Server Hei, endre chifferspesifikasjon
7 2021-01-09 18:45:14.390303914 10.0.2.15 → 104.26.10.240 TCP 54 48512 → 443 [ACK] SEQ = 320 ACK = 1413 WIN = 63540 LEN = 0
8 2021-01-09 18:45:14.392680614 104.26.10.240 → 10.0.2.15 TLSV1.3 1160 Søknadsdata
9 2021-01-09 18:45:14.392703439 10.0.2.15 → 104.26.10.240 TCP 54 48512 → 443 [ACK] SEQ = 320 ACK = 2519 WIN = 63540 LEN = 0
10 2021-01-09 18:45:14.394218934 10.0.2.15 → 104.26.10.240 TLSV1.3 134 Endre chifferspesifikasjon, applikasjonsdata
11 2021-01-09 18:45:14.394614735 104.26.10.240 → 10.0.2.15 TCP 60 443 → 48512 [ACK] SEQ = 2519 ACK = 400 WIN = 65535 LEN = 0
11 pakker fanget

Viser hele pakken:

Den eneste ulempen med et kommandolinjeverktøy er at det ikke har en GUI, da det blir veldig nyttig når du trenger å søke i mye internettrafikk, og det tilbyr også et pakkepanel som viser alle pakkedetaljene i en umiddelbar. Imidlertid er det fortsatt mulig å inspisere pakken og dumpe hele pakkeinformasjonen som vises i GUI -pakkepanel.

For å inspisere en hel pakke bruker vi en ping-kommando med "-c" -alternativet for å fange en enkelt pakke.

ubuntu@ubuntu: ~ $ ping -c 1 104.26.10.240
Ping 104.26.10.240 (104.26.10.240) 56 (84) Bytes av data.
64 byte fra 104.26.10.240: ICMP_SEQ = 1 TTL = 55 tid = 105 ms
--- 104.26.10.240 Ping -statistikk ---
1 pakker overført, 1 mottatt, 0% pakketap, tid 0ms
RTT Min/AVG/MAX/MDEV = 105.095/105.095/105.095/0.000 ms

I et annet vindu, bruk Tshark -kommandoen med et ekstra flagg for å vise hele pakkedetaljene. Du kan legge merke til forskjellige seksjoner, vise rammer, Ethernet II, IPV og ICMP detaljer.

ubuntu@ubuntu: ~ $ tshark -i enp0s3 -c 1 -v vert 104.26.10.240
Ramme 1: 98 byte på ledning (784 biter), 98 byte fanget (784 biter) på grensesnitt 0
Grensesnitt -ID: 0 (ENP0S3)
Grensesnittnavn: ENP0S3
Innkapslingstype: Ethernet (1)
Ankomsttid: 9. januar 2021 21:23:39.167581606 Pkt
[Tidsskift for denne pakken: 0.000000000 sekunder]
Epoch Tid: 1610209419.167581606 sekunder
[Time Delta fra tidligere fanget ramme: 0.000000000 sekunder]
[Time Delta fra tidligere vist ramme: 0.000000000 sekunder]
[Tid siden referanse eller første ramme: 0.000000000 sekunder]
Ramme nummer: 1
Rammelengde: 98 byte (784 biter)
Fangstlengde: 98 byte (784 biter)
[Rammen er merket: falsk]
[Ramme blir ignorert: falsk]
[Protokoller i ramme: ETH: Ethertype: IP: ICMP: Data]
Ethernet II, SRC: PCSCOMPU_17: FC: A6 (08: 00: 27: 17: FC: A6), DST: Realteku_12: 35: 02 (52: 54: 00: 12: 35: 02)
Destinasjon: Realteku_12: 35: 02 (52: 54: 00: 12: 35: 02)
Adresse: Realteku_12: 35: 02 (52: 54: 00: 12: 35: 02)
… 1… = LG BIT: Lokalt administrert adresse (dette er ikke fabrikkens standard)
… 0… = IG Bit: Individuell adresse (unicast)
Kilde: PCSCOMPU_17: FC: A6 (08: 00: 27: 17: FC: A6)
Adresse: PCSCOMPU_17: FC: A6 (08: 00: 27: 17: FC: A6)
Grensesnitt -ID: 0 (ENP0S3)
Grensesnittnavn: ENP0S3
Innkapslingstype: Ethernet (1)
Ankomsttid: 9. januar 2021 21:23:39.167581606 Pkt
[Tidsskift for denne pakken: 0.000000000 sekunder]
Epoch Tid: 1610209419.167581606 sekunder
[Time Delta fra tidligere fanget ramme: 0.000000000 sekunder]
[Time Delta fra tidligere vist ramme: 0.000000000 sekunder]
[Tid siden referanse eller første ramme: 0.000000000 sekunder]
Ramme nummer: 1
Rammelengde: 98 byte (784 biter)
Fangstlengde: 98 byte (784 biter)
[Rammen er merket: falsk]
[Ramme blir ignorert: falsk]
[Protokoller i ramme: ETH: Ethertype: IP: ICMP: Data]
Ethernet II, SRC: PCSCOMPU_17: FC: A6 (08: 00: 27: 17: FC: A6), DST: Realteku_12: 35: 02 (52: 54: 00: 12: 35: 02)
Destinasjon: Realteku_12: 35: 02 (52: 54: 00: 12: 35: 02)
Adresse: Realteku_12: 35: 02 (52: 54: 00: 12: 35: 02)
… 1… = LG BIT: Lokalt administrert adresse (dette er ikke fabrikkens standard)
… 0… = IG Bit: Individuell adresse (unicast)
Kilde: PCSCOMPU_17: FC: A6 (08: 00: 27: 17: FC: A6)
Adresse: PCSCOMPU_17: FC: A6 (08: 00: 27: 17: FC: A6)
… 0… = LG BIT: Globalt unik adresse (fabrikkstandard)
… 0… = IG Bit: Individuell adresse (unicast)
Type: IPv4 (0x0800)
Internett -protokollversjon 4, SRC: 10.0.2.15, DST: 104.26.10.240
0100… = versjon: 4
… 0101 = overskriftslengde: 20 byte (5)
Differensiert tjenestefelt: 0x00 (DSCP: CS0, ECN: NOT-ECT)
0000 00… = Differensierte tjenester CodePoint: Standard (0)
… 00 = Eksplisitt overbelastningsvarsel: Ikke ECN-kapabel transport (0)
Total lengde: 84
Identifikasjon: 0xcc96 (52374)
Flagg: 0x4000, ikke fragment
0… = reservert bit: ikke angitt
.1… = Ikke fragment: sett
… 0… = Flere fragmenter: Ikke angitt
… 0 0000 0000 0000 = fragment forskyvning: 0
Tid til å leve: 64
Protokoll: ICMP (1)
Header Checksum: 0xeef9 [Validering deaktivert]
[Header Checksum Status: Unverified]
Kilde: 10.0.2.15
Destinasjon: 104.26.10.240
Internett -kontrollmeldingsprotokoll
Type: 8 (Echo (Ping) forespørsel)
Kode: 0
Kontroller: 0x0cb7 [Riktig]
[Kontrollsumstatus: Bra]
Identifikator (BE): 5038 (0x13AE)
Identifikator (LE): 44563 (0xae13)
Sekvensnummer (BE): 1 (0x0001)
Sekvensnummer (LE): 256 (0x0100)
Tidsstempel fra ICMP -data: 9. januar 2021 21:23:39.000000000 pkt
[Tidsstempel fra ICMP -data (relativt): 0.167581606 sekunder]
Data (48 byte)
0000 91 8E 02 00 00 00 00 00 10 11 12 13 14 15 16 17 ..
0010 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 .. !"#$%& '
0020 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 ()*+,-./01234567
Data: 918E020000000000101112131415161718191A1B1C1D1E1F ..
[Lengde: 48]

Konklusjon:

Det mest utfordrende aspektet ved pakkeanalyse er å finne den mest relevante informasjonen og ignorere de ubrukelige bitene. Selv om grafiske grensesnitt er enkle, kan de ikke bidra til automatisert nettverkspakkeanalyse. I denne artikkelen har du lært de mest nyttige Tshark -parametrene for å fange, vise, lagre og lese nettverkstrafikkfiler.

Tshark er et veldig nyttig verktøy som leser og skriver fangstfilene støttet av Wireshark. Kombinasjonen av display- og fangstfilter bidrar mye mens du jobber med bruk av avanserte nivåer. Vi kan utnytte Tshark Evne til å skrive ut felt og manipulere data i henhold til våre krav til dybdeanalyse. Med andre ord, det er i stand til å gjøre praktisk talt alt som Wireshark gjør. Det viktigste er at det er perfekt for pakkesniffing eksternt ved hjelp av SSH, som er et tema for en annen dag.