Wireshark

En guide til Wireshark Command Line Interface “tshark”

En guide til Wireshark Command Line Interface “tshark”
I de tidligere tutorials til Wireshark har vi dækket grundlæggende emner på avanceret niveau. I denne artikel vil vi forstå og dække en kommandolinjegrænseflade til Wireshark, i.e., tshark. Terminalversionen af ​​Wireshark understøtter lignende indstillinger og er meget nyttig, når en grafisk brugergrænseflade (GUI) ikke er tilgængelig.

Selvom en grafisk brugergrænseflade teoretisk er meget lettere at bruge, understøtter ikke alle miljøer den, især servermiljøer med kun kommandolinjemuligheder. Derfor skal du på et eller andet tidspunkt som netværksadministrator eller sikkerhedsingeniør bruge en kommandolinjegrænseflade. Vigtigt at bemærke, at tshark undertiden bruges som erstatning for tcpdump. Selvom begge værktøjer næsten er ækvivalente i trafikfangstfunktionalitet, er tshark meget mere kraftfuld.

Det bedste du kan gøre er at bruge tshark til at oprette en port på din server, der videresender information til dit system, så du kan fange trafik til analyse ved hjælp af en GUI. Indtil videre lærer vi, hvordan det fungerer, hvad er dets egenskaber, og hvordan du kan udnytte det bedst muligt.

Skriv følgende kommando for at installere tshark i Ubuntu / Debian ved hjælp af apt-get:

[e-mail-beskyttet]: ~ $ sudo apt-get install tshark -y

Skriv nu tshark -hjælp at liste alle mulige argumenter med deres respektive flag, som vi kan overføre til en kommando tshark.

[e-mail-beskyttet]: ~ $ tshark --help | hoved -20
TShark (Wireshark) 2.6.10 (Git v2.6.10 pakket som 2.6.10-1 ~ ubuntu18.04.0)
Dump og analyser netværkstrafik.
Se https: // www.wireshark.org for mere information.
Anvendelse: tshark [optioner] ..
Capture interface:
-jeg grænseflades navn eller idx (def: første ikke-loopback)
-f pakkefilter i libpcap-filtersyntaks
-s pakke snapshot længde (def: passende maksimum)
-p fang ikke i promiskuøs tilstand
-Jeg optager i skærmtilstand, hvis den er tilgængelig
-B størrelse af kerne buffer (def: 2MB)
-y linklagstype (def: først passende)
--tidsstempel-type tidsstempel metode til interface
-D Udskriv liste over grænseflader og afslut
-L udskriv liste over linklagstyper af iface og exit
--liste-tidsstempel-typer udskriver liste over tidsstempeltyper til iface og exit
Betingelser for fangststop:

Du kan se en liste over alle tilgængelige muligheder. I denne artikel vil vi dække de fleste af argumenterne i detaljer, og du vil forstå styrken i denne terminalorienterede Wireshark-version.

Valg af netværksgrænseflade:

For at udføre live capture og analyse i dette værktøj skal vi først finde ud af vores arbejdsgrænseflade. Type tshark -D og tshark viser alle tilgængelige grænseflader.

[e-mail-beskyttet]: ~ $ tshark -D
1. enp0s3
2. nogen
3. lo (Loopback)
4. nflog
5. nfqueue
6. usbmon1
7. ciscodump (Cisco fjernoptagelse)
8. randpkt (tilfældig pakkegenerator)
9. sshdump (SSH fjernoptagelse)
10. udpdump (UDP Listener remote capture)

Bemærk, at ikke alle de listede grænseflader fungerer. Type ifconfig for at finde arbejdsgrænseflader på dit system. I mit tilfælde er det enp0s3.

Capture Traffic:

For at starte live capture-processen bruger vi tshark kommando med “-jeg”Mulighed for at starte opsamlingsprocessen fra arbejdsgrænsefladen.

[e-mail-beskyttet]: ~ $ tshark -i enp0s3

Brug Ctrl + C for at stoppe liveoptagelsen. I ovenstående kommando har jeg sendt den fangede trafik til Linux-kommandoen hoved for at få vist de første par fangede pakker. Eller du kan også bruge “-c ”Syntaks for at fange“n ” antal pakker.

[e-mail-beskyttet]: ~ $ tshark -i enp0s3 -c 5

Hvis du kun går ind tshark, Som standard begynder den ikke at fange trafik på alle tilgængelige grænseflader, og den lytter heller ikke til din arbejdsgrænseflade. I stedet fanger den pakker på den først anførte grænseflade.

Du kan også bruge følgende kommando til at kontrollere flere grænseflader:

[e-mail-beskyttet]: ~ $ tshark -i enp0s3 -i usbmon1 -i lo

I mellemtiden er en anden måde at live fange trafik på at bruge nummeret sammen med de anførte grænseflader.

[e-mailbeskyttet]: ~ $ tshark -i interface_nummer

I nærværelse af flere grænseflader er det imidlertid svært at holde styr på deres anførte numre.

Capture Filter:

Capture-filtre reducerer den optagne filstørrelse betydeligt. Tshark bruger Berkeley Packet Filter-syntaks -f”, Som også bruges af tcpdump. Vi bruger "-f" til kun at fange pakker fra port 80 eller 53 og bruge "-c" til kun at vise de første 10 pakker.

[e-mail-beskyttet]: ~ $ tshark -i enp0s3 -f "port 80 eller port 53" -c 10

Gemme fanget trafik i en fil:

Det vigtigste at bemærke i ovenstående skærmbillede er, at de viste oplysninger ikke gemmes, og derfor er de mindre nyttige. Vi bruger argumentet “-w”For at gemme den fangede netværkstrafik til test_fangst.pcap i / tmp folder.

[e-mail-beskyttet]: ~ $ tshark -i enp0s3 -w / tmp / test_capture.pcap

Der henviser til, .pcap er filtypenavnet Wireshark. Ved at gemme filen kan du gennemgå og analysere trafikken i en maskine med Wireshark GUI senere.

Det er en god praksis at gemme filen i /tmp da denne mappe ikke kræver nogen eksekveringsrettigheder. Hvis du gemmer det i en anden mappe, selvom du kører tshark med root-rettigheder, nægter programmet tilladelse af sikkerhedsmæssige årsager.

Lad os grave i alle de mulige måder, hvorpå du kan:

  • anvende grænser for at registrere data, sådan som spænding tshark eller automatisk standsning af optagelsesprocessen, og
  • output dine filer.

Autostop-parameter:

Du kan bruge “--en”-Parameter for at inkorporere tilgængelige flag såsom varighed filstørrelse og filer. I den følgende kommando bruger vi parameteren autostop med varighed flag for at stoppe processen inden for 120 sekunder.

[e-mail-beskyttet]: ~ $ tshark -i enp0s3 -a varighed: 120 -w / tmp / test_capture.pcap

Tilsvarende, hvis du ikke har brug for, at dine filer skal være ekstra store, filstørrelse er et perfekt flag til at stoppe processen efter nogle KB's grænser.

[e-mail-beskyttet]: ~ $ tshark -i enp0s3 -a filstørrelse: 50 -w / tmp / test_capture.pcap

Mest vigtigt, filer flag giver dig mulighed for at stoppe optagelsesprocessen efter et antal filer. Men dette kan kun være muligt efter oprettelse af flere filer, hvilket kræver udførelse af en anden nyttig parameter, capture output.

Capture Output Parameter:

Capture output, aka ringbuffer argument “-b“, Følger med de samme flag som autostop. Brug / output er dog en smule anderledes, dvs.e., flagene varighed og filstørrelse, da det giver dig mulighed for at skifte eller gemme pakker til en anden fil efter at have nået en bestemt tidsfrist i sekunder eller filstørrelse.

Nedenstående kommando viser, at vi fanger trafikken gennem vores netværksgrænseflade enp0s3, og fange trafik ved hjælp af opsamlingsfilteret “-f”Til tcp og dns. Vi bruger ringbuffer option “-b” med a filstørrelse flag for at gemme hver fil i størrelse 15 Kb, og brug også autostop-argumentet til at specificere antallet af filer, der bruger filer mulighed, så den stopper optagelsesprocessen efter generering af tre filer.

[e-mail-beskyttet]: ~ $ tshark -i enp0s3 -f "port 53 eller port 21" -b filstørrelse: 15 -a filer: 2 -w / tmp / test_capture.pcap

Jeg har delt min terminal i to skærme for aktivt at overvåge oprettelsen af ​​tre .pcap-filer.

Gå til din / tmp mappen og brug følgende kommando i den anden terminal til at overvåge opdateringer efter hvert sekund.

[e-mail-beskyttet]: ~ $ watch -n 1 "ls -lt"

Nu behøver du ikke at huske alle disse flag. Skriv i stedet en kommando tshark -i enp0s3 -f “port 53 eller port 21” -b filstørrelse: 15 -a i din terminal og tryk Tab. Listen over alle tilgængelige flag vil være tilgængelig på din skærm.

[e-mail-beskyttet]: ~ $ tshark -i enp0s3 -f "port 53 eller port 21" -b filstørrelse: 15 -a
varighed: filer: filstørrelse:
[e-mail-beskyttet]: ~ $ tshark -i enp0s3 -f "port 53 eller port 21" -b filstørrelse: 15 -a

Læsning .pcap-filer:

Vigtigst er det, at du kan bruge en-r”-Parameter for at læse test_capture.pcap-filer og rør den til hoved kommando.

[e-mail-beskyttet]: ~ $ tshark -r / tmp / test_capture.pcap | hoved

Oplysningerne, der vises i outputfilen, kan være lidt overvældende. For at undgå unødvendige detaljer og få en bedre forståelse af en bestemt destinations-IP-adresse bruger vi -r mulighed for at læse den pakkefangede fil og bruge en ip.addr filter for at omdirigere output til en ny fil med “-w" mulighed. Dette giver os mulighed for at gennemse filen og finjustere vores analyse ved at anvende flere filtre.

[e-mail-beskyttet]: ~ $ tshark -r / tmp / test_capture.pcap -w / tmp / omdirigeret_fil.pcap ip.dst == 216.58.209.142
[e-mail-beskyttet]: ~ $ tshark -r / tmp / omdirigeret_fil.pcap | hoved
1 0.000000000 10.0.2.15 → 216.58.209.142 TLSv1.2 370 Applikationsdata
2 0.000168147 10.0.2.15 → 216.58.209.142 TLSv1.2669 Applikationsdata
3 0.011336222 10.0.2.15 → 216.58.209.142 TLSv1.2 5786 Applikationsdata
4 0.016413181 10.0.2.15 → 216.58.209.142 TLSv1.2 1093 Applikationsdata
5 0.016571741 10.0.2.15 → 216.58.209.142 TLSv1.2 403 Applikationsdata
6 0.016658088 10.0.2.15 → 216.58.209.142 TCP 7354 [TCP-segment af en genmonteret PDU]
7 0.016738530 10.0.2.15 → 216.58.209.142 TLSv1.2 948 Applikationsdata
8 0.023006863 10.0.2.15 → 216.58.209.142 TLSv1.2 233 Applikationsdata
9 0.023152548 10.0.2.15 → 216.58.209.142 TLSv1.2669 Applikationsdata
10 0.023324835 10.0.2.15 → 216.58.209.142 TLSv1.2 3582 Applikationsdata

Valg af felter til output:

Kommandoerne ovenfor udsender et resumé af hver pakke, der indeholder forskellige overskriftsfelter. Tshark giver dig også mulighed for at se bestemte felter. For at specificere et felt bruger vi “-T-felt”Og udtræk felter efter vores valg.

Efter "-T-felt”-Knappen, bruger vi indstillingen“ -e ”til at udskrive de angivne felter / filtre. Her kan vi bruge Wireshark Display Filtre.

[e-mail-beskyttet]: ~ $ tshark -r / tmp / test_capture.pcap -T felter -e ramme.nummer -e ip.src -e ip.dst | hoved
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

Hent krypterede håndtryksdata:

Indtil videre har vi lært at gemme og læse outputfiler ved hjælp af forskellige parametre og filtre. Vi lærer nu, hvordan HTTPS initialiserer session tshark. De websteder, der er adgang til via HTTPS i stedet for HTTP, sikrer en sikker eller krypteret datatransmission over ledningen. For sikker transmission starter en Transport Layer Security-kryptering en håndtryksproces for at starte kommunikationen mellem klienten og serveren.

Lad os fange og forstå TLS-håndtrykket ved hjælp af tshark. Opdel din terminal i to skærme og brug en wget kommando til at hente en html-fil fra https: // www.wireshark.org.

[e-mailbeskyttet]: ~ $ wget https: // www.wireshark.org
--2021-01-09 18: 45: 14-- https: // www.wireshark.org /
Opretter forbindelse til www.wireshark.org (www.wireshark.org) | 104.26.10.240 |: 443 ... tilsluttet.
HTTP-anmodning sendt, afventer svar ... 206 Delvist indhold
Længde: 46892 (46K), 33272 (32K) tilbage [text / html]
Gemmer i: 'indeks.html '
indeks.html 100% [++++++++++++++ ================================== ==>] 45.79K 154KB / s i 0.2s
2021-01-09 18:43:27 (154 KB / s) - 'indeks.html 'gemt [46892/46892]

I en anden skærm bruger vi tshark til at fange de første 11 pakker ved hjælp af “-c”-Parameter. Under analysen er tidsstempler vigtige for at rekonstruere begivenheder, derfor bruger vi “-t annonce”, På en måde som tshark tilføjer tidsstempel ved siden af ​​hver fanget pakke. Endelig bruger vi værtskommandoen til at fange pakker fra den delte vært IP-adresse.

Dette håndtryk minder meget om TCP-håndtrykket. Så snart TCP-trevejshåndtrykket afsluttes i de første tre pakker, følger den fjerde til niende pakke et noget lignende håndtryksritual og inkluderer TLS-strenge for at sikre krypteret kommunikation mellem begge parter.

[e-mail beskyttet]: ~ $ tshark -i enp0s3 -c 11 -t annonce vært 104.26.10.240
Optagelse 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 60443 → 48512 [SYN, ACK] Seq = 0 Ack = 1 Win = 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 Win = 64240 Len = 0
4 2021-01-09 18:45:14.280593287 10.0.2.15 → 104.26.10.240 TLSv1 373 klient Hej
5 2021-01-09 18:45:14.281007512 104.26.10.240 → 10.0.2.15 TCP 60443 → 48512 [ACK] Seq = 1 Ack = 320 Win = 65535 Len = 0
6 2021-01-09 18:45:14.390272461 104.26.10.240 → 10.0.2.15 TLSv1.3 1466 Server Hello, Change Cipher Spec
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 Applikationsdata
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 Skift krypteringsspecifikation, applikationsdata
11 2021-01-09 18:45:14.394614735 104.26.10.240 → 10.0.2.15 TCP 60443 → 48512 [ACK] Seq = 2519 Ack = 400 Win = 65535 Len = 0
11 pakker fanget

Visning af hele pakken:

Den eneste ulempe ved et kommandolinjeprogram er, at det ikke har en GUI, da det bliver meget praktisk, når du har brug for at søge en masse internettrafik, og det tilbyder også et pakkepanel, der viser alle pakkeoplysninger inden for en øjeblikkelig. Det er dog stadig muligt at inspicere pakken og dumpe hele den pakkeinformation, der vises i GUI Packet Panel.

For at inspicere en hel pakke bruger vi en ping-kommando med indstillingen “-c” til at fange en enkelt pakke.

[e-mail-beskyttet]: ~ $ ping -c 1 104.26.10.240
PING 104.26.10.240 (104.26.10.240) 56 (84) databytes.
64 byte fra 104.26.10.240: icmp_seq = 1 ttl = 55 tid = 105 ms
--- 104.26.10.240 ping-statistikker ---
1 sendte pakker, 1 modtaget, 0% pakketab, tid 0 ms
rtt min / gennemsnit / max / mdev = 105.095/105.095/105.095/0.000 ms

I et andet vindue skal du bruge kommandoen tshark med et ekstra flag for at vise hele pakkeoplysningerne. Du kan bemærke forskellige sektioner, der viser Frames, Ethernet II, IPV og ICMP detaljer.

[e-mail-beskyttet]: ~ $ tshark -i enp0s3 -c 1 -V vært 104.26.10.240
Ramme 1: 98 byte på ledning (784 bit), 98 byte fanget (784 bit) på interface 0
Interface-id: 0 (enp0s3)
Interface navn: enp0s3
Indkapslingstype: Ethernet (1)
Ankomsttid: 9. jan. 2021 21:23:39.167581606 PKT
[Tidsskift for denne pakke: 0.000000000 sekunder]
Epoktid: 1610209419.167581606 sekunder
[Tidsdelta fra forrige fanget ramme: 0.000000000 sekunder]
[Tidsdelta fra forrige viste ramme: 0.000000000 sekunder]
[Tid siden reference eller første ramme: 0.000000000 sekunder]
Ramme nummer: 1
Rammelængde: 98 bytes (784 bit)
Optagelængde: 98 bytes (784 bit)
[Ramme er markeret: Falsk]
[Ramme ignoreres: 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)
Destination: 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 administreret adresse (dette er IKKE fabriksstandarden)
… 0… = IG bit: Individuel adresse (unicast)
Kilde: PcsCompu_17: fc: a6 (08: 00: 27: 17: fc: a6)
Adresse: PcsCompu_17: fc: a6 (08: 00: 27: 17: fc: a6)
Interface-id: 0 (enp0s3)
Interface navn: enp0s3
Indkapslingstype: Ethernet (1)
Ankomsttid: 9. januar 2021 21:23:39.167581606 PKT
[Tidsskift for denne pakke: 0.000000000 sekunder]
Epoke Time: 1610209419.167581606 sekunder
[Tidsdelta fra forrige fanget ramme: 0.000000000 sekunder]
[Tidsdelta fra forrige viste ramme: 0.000000000 sekunder]
[Tid siden reference eller første ramme: 0.000000000 sekunder]
Ramme nummer: 1
Rammelængde: 98 bytes (784 bit)
Optagelængde: 98 bytes (784 bit)
[Ramme er markeret: Falsk]
[Ramme ignoreres: 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)
Destination: 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 administreret adresse (dette er IKKE fabriksstandarden)
… 0… = IG bit: Individuel 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 (fabriksstandard)
… 0… = IG bit: Individuel adresse (unicast)
Type: IPv4 (0x0800)
Internetprotokol version 4, Src: 10.0.2.15, Dst: 104.26.10.240
0100… = Version: 4
… 0101 = Overskriftlængde: 20 bytes (5)
Differentieret servicefelt: 0x00 (DSCP: CS0, ECN: Ikke-ECT)
0000 00… = Differentierede tjenester Codepoint: Standard (0)
… 00 = Eksplicit overbelastningsmeddelelse: Ikke ECN-kapabel transport (0)
Samlet længde: 84
Identifikation: 0xcc96 (52374)
Flag: 0x4000, fragmenter ikke
0… = Reserveret bit: Ikke indstillet
.1 ... = Del ikke op: Indstil
… 0… = Flere fragmenter: Ikke indstillet
… 0 0000 0000 0000 = Fragment offset: 0
Tid til at leve: 64
Protokol: ICMP (1)
Overskriftssum: 0xeef9 [validering deaktiveret]
[Status for headerkontrolsum: Ikke bekræftet]
Kilde: 10.0.2.15
Destination: 104.26.10.240
Internet Control Message Protocol
Type: 8 (Echo (ping) anmodning)
Kode: 0
Kontrolsum: 0x0cb7 [korrekt]
[Kontrolsum status: God]
Identifikator (BE): 5038 (0x13ae)
Identifikator (LE): 44563 (0xae13)
Sekvensnummer (BE): 1 (0x0001)
Sekvensnummer (LE): 256 (0x0100)
Tidsstempel fra ICMP-data: 9. jan. 2021 21:23:39.000000000 PKT
[Tidsstempel fra icmp-data (relativ): 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…
[Længde: 48]

Konklusion:

Det mest udfordrende aspekt af pakkeanalyse er at finde de mest relevante oplysninger og ignorere de ubrugelige bits. Selvom grafiske grænseflader er lette, kan de ikke bidrage til automatiseret netværkspakkeanalyse. I denne artikel har du lært de mest nyttige tshark-parametre til at registrere, vise, gemme og læse netværkstrafikfiler.

Tshark er et meget praktisk værktøj, der læser og skriver de capture-filer, der understøttes af Wireshark. Kombinationen af ​​display- og capture-filtre bidrager meget, mens du arbejder på avancerede brugssager. Vi kan udnytte tsharks evne til at udskrive felter og manipulere data i henhold til vores krav til dybdegående analyse. Med andre ord er det i stand til at gøre næsten alt, hvad Wireshark gør. Vigtigst er det, det er perfekt til pakke sniffing eksternt ved hjælp af ssh, hvilket er et emne for en anden dag.

SuperTuxKart til Linux
SuperTuxKart er en fantastisk titel designet til at give dig Mario Kart-oplevelsen gratis på dit Linux-system. Det er ret udfordrende og sjovt at spil...
Kæmp om Wesnoth-vejledning
Slaget om Wesnoth er et af de mest populære open source-strategispil, som du kan spille på dette tidspunkt. Ikke kun har dette spil været under udvikl...
0 A.D. Vejledning
Ud af de mange strategispil derude, 0 A.D. formår at skille sig ud som en omfattende titel og et meget dybt, taktisk spil på trods af at det er open s...