Hur man Använder Wireshark Filter på Linux

0
295
Fredrik Prusakova/Shutterstock

Wireshark är ett world-class-paket analyzer finns på Linux, Windows och macOS. Dess filter är flexibla och sofistikerad, men ibland, bakvända. Vi kommer att förklara “gotchas” du behöver vara på jakt efter.

Paket Analys med Riktiga Bettet

Wireshark är en av juvelerna i open-source världen. Det är en programvara i världsklass verktyg, som används av proffs och amatörer för att undersöka och diagnostisera nätverk frågor. Utvecklare använda den för att lokalisera och karaktärisera fel i kommunikation rutiner. Säkerhet forskare använda den för att fånga och demontera skadlig aktivitet på ett nätverk.

Ett typiskt arbetsflöde är att köra Wireshark i Capture mode, så det register nätverkstrafik genom ett nätverkskort på datorn. Nätverkspaket visas i realtid, eftersom de är tagna. Men, det är i post-fånga analys att granulat i detalj vad som händer på nätet är avslöjade.

Den fångade paket som kallas spår. När importen är klar spår kan stegas igenom, paket med packet. Du har möjlighet att ta del av alla paket i minsta detalj kartlägga nätverk “samtal” mellan enheter och använda filter för att inkludera (eller exkludera) paket från din analys.

Wireshark är filtrering är oöverträffad, med stor flexibilitet och lösa makt. Det finns nyanser för att deras syntax som gör det enkelt att skriva ett filter och få ett resultat som inte uppfyller dina förväntningar.

Om du inte förstår hur filter fungerar i Wireshark, du kommer aldrig få i ettans växel och gas funktionerna i programvaran.

Installera Wireshark

När du installerar Wireshark, du frågade om alla som använder en icke-root-kontot bör kunna fånga nätverk spår. Att säga nej till detta kan vara en lockande idé. Du kanske inte vill att alla ska kunna se vad som händer på nätet. Men att installera Wireshark så att endast de som har root-privilegier kan använda det innebär att alla dess komponenter kommer att köra med förhöjd behörighet.

Wireshark innehåller över 2 miljoner rader komplicerad kod, och det interagerar med din dator på lägsta nivå. Bästa säkerhetsrutiner meddela att så lite kod som möjligt bör köra med förhöjda privilegier—särskilt när det verksamma på en så låg nivå.

Det är mycket säkrare att köra Wireshark med ett vanligt användarkonto. Vi kan fortfarande begränsa vem som har möjligheten att köra Wireshark. Detta kräver några extra inställningar steg, men det är det säkraste sättet att gå vidare. Data fånga delar av Wireshark kommer fortfarande köra med förhöjda privilegier, men resten av Wireshark körs som en normal process.

För att starta installationen på Ubuntu, typ:

sudo apt-get install wireshark

På Fedora, typ:

sudo dnf installera wireshark

Om Manjaro, använd detta kommando:

sudo pacman -Syu wireshark-qt

Under installationen, kommer du att se skärmen nedan, rekommenderar att du inte köra Wireshark som root. Tryck på Tabb för att flytta den röda markören till “<OK>” och tryck på Mellanslag.

På nästa skärm, tryck på Tab för att flytta den röda markören till “<JA>” och tryck på Mellanslag.

Att köra Wireshark, du måste vara medlem av “wireshark” grupp, som är skapade under installationen. Detta gör att du kan styra vem som kan köra Wireshark. Någon som inte är i “wireshark” gruppen kan inte köra Wireshark.

För att lägga till dig själv i “Wireshark” grupp använd detta kommando:

sudo usermod -a-G wireshark $USER

För att ditt nya medlemskap i gruppen för att få effekt, du kan logga ut och tillbaka i, eller använd följande kommando:

inloggningsprogrammet wireshark

För att se om du är i den nya koncernen, använda grupper kommandot:

grupper

Du bör se “wireshark” i listan över grupper.

Börjar Wireshark

Du kan starta Wireshark med kommandot nedan. Et-tecken (&) lanserar Wireshark som bakgrund uppgift, vilket innebär att du kan fortsätta att använda den terminal-fönstret. Du kan även stänga terminalfönster och Wireshark kommer att fortsätta att köra.

Skriv följande:

Wireshark &

RELATERAT: Hur att Driva och Styra Processer Bakgrund på Linux

Den Wireshark gränssnitt visas. Network interface-enheter finns i datorn finns med i listan, tillsammans med en del inbyggt i ett pseudo-enheter.

En vågig linje bredvid ett gränssnitt betyder att det är live och nätverk trafik passerar genom den. En rak linje innebär att det inte är någon aktivitet på gränssnittet. Det översta alternativet i listan är “enp0s3,” den trådburna anslutningen på den här datorn och, som förväntat, det visar aktivitet.

För att börja fånga paket, vi höger-klicka på “enp0s3” och välj sedan “Starta inspelning” i den sammanhangsberoende menyn.

Du kan ställa in filter för att minska mängden trafik Wireshark fångar. Vi föredrar att fånga allt och filtrera ut allt vi inte vill se när du gör en analys. På detta sätt vet vi att allt som har hänt är i spåret. Vill du inte av misstag missar en nätverket händelse som förklarar situationen du är intresserad av på grund av din capture filter.

Naturligtvis, för hög trafik nätverk, spår kan snabbt bli mycket stora, så filtrering på att fånga vettigt i det här fallet. Eller kanske du bara vill ha det på det sättet.

Observera att syntaxen för att fånga filter är något annorlunda än för bildskärmar.

Den markerade ikonerna i bilden ovan visar följande, från vänster till höger:

  • Shark fin: Om denna är blå, klicka på den kommer att starta ett packet capture. Om Wireshark är att fånga paket, denna ikon kommer att vara grå.
  • Kvadrat: Om detta är rött, klicka på det kommer att stoppa en kör packet capture. Om Wireshark är inte fånga paket, denna ikon kommer att vara grå.
  • Shark fin med rund pil: Om det är grönt, klicka på den kommer att stoppa körs spår. Detta ger dig möjlighet att spara eller radera fångat paket, och starta om spår. Om Wireshark är inte fånga paket, denna ikon kommer att vara grå.

Analysera Spår

Att klicka på den röda fyrkantiga ikonen kommer att sluta samla in data så att du kan analysera paket fångas i spår. Paketen presenteras i tidsordning, och färgkodade enligt protokollet av paketet. Information om det markerade för paketdataanslutning som visas i de två nedre rutorna i Wireshark gränssnitt.

Ett enkelt sätt att göra behandlingen spår är lättare att ha Wireshark ge meningsfulla namn för källa och destination IP-adresser för paket. För att göra detta, klicka på Visa > Name Resolution och välj “Lösa Nätverk Adresser.”

Wireshark att försöka lösa namn av de enheter som skickas och tas emot varje paket. Det kommer inte att kunna identifiera varje enhet, men de kan kommer att hjälpa dig att läsa den spår.

Bläddra i displayen till vänster kommer att avslöja fler kolumner till höger. Info kolumnen visar all information som Wireshark kan upptäcka från paketet. I exemplet nedan ser vi några ping-förfrågningar och svar.

Som standard, Wireshark visar alla paket i den ordning som de var spåras. Många enheter att skicka paket fram och tillbaka samtidigt. Det betyder en enda konversation mellan två enheter är sannolikt att ha paket från andra interlaced mellan dem.

För att undersöka en enda konversation, kan du isolera det av protokollet. Protokoll för varje paket visas i protokollet kolumn. De flesta av de protokoll som du ser hör till de TCP/IP-familjen. Du kan ange den exakta protokoll eller använd Ethernet-som en form av en catch-all.

Högerklicka på någon av paketen i den ordning du vill granska och klicka sedan på Konversation Filter – > Ethernet. I exemplet nedan har vi valt ut ett ping-begäran paket.

Sekvensen av paket visas utan andra mellan dem, som Wireshark auto-genererade ett filter för att göra detta. Det visas i filter bar och markerade i grönt, vilket anger syntaxen för filtret är korrekt.

För att ta bort filtret, klicka på “X” på filter bar.

Skapa Dina Egna Filter

Låt oss sätta ett enkelt filter på filter bar:

ip -.addr == 192.168.4.20

Detta väljer alla paket som har skickats från eller tas emot med enheten med IP-adress 192.168.4.20. Observera de dubbla lika med-tecken (==) med något mellanrum mellan dem.

För att se paket som skickas av en enhet (källa) kan du använda ip.src, för att se paket som har kommit till en enhet (destination), som du kan använda ip.sommartid, som visas nedan:

ip -.sommartid == 192.168.4.20 && ip.src == 192.168.4.28

Observera användningen av en dubbel-tecken (&&) för att ange logiska “och.” Detta filter för paket som kom på 192.168.4.20 från 192.168.4.28.

Personer som är nya till Wireshark filter tänker ofta ett filter som detta kommer att fånga alla paket mellan två IP-adresser, men det är inte fallet.

Vad det egentligen gör är filtrera alla paket till eller från IP-adress 192.168.4.20, oavsett var de kom ifrån eller vart de skulle skickas. Det gör det samma med alla paket från IP-adress 192.168.4.28. För att uttrycka det mer helt enkelt, det filtrerar all trafik till eller från någon IP-adress.

Du kan söka efter aktiviteter på andra program också. Du kan till exempel skriva detta filter för att leta efter HTTP-förfrågningar:

http.begäran

För att utesluta paket som antingen kom från eller skickas till en enhet, ska du använda ett utropstecken (!) och bifoga filtret i parentes [()]:

!(ip.addr == 192.168.4.14)

Detta filter utesluter alla paket som skickas till eller från 192.168.4.14.

Det är motsägelsefullt eftersom filtret innehåller jämställdhet operatör (==). Du kanske har förväntat mig att du skulle skriva detta filter så här:

ip -.addr !=192.168.4.14

Men detta kommer inte att fungera.

Du kan också söka efter strängar i paket, genom protokoll. Detta filtrera sökningar för Transmission Control Protocol (TCP) paket som innehåller strängen “youtube”:

tcp innehåller youtube

Ett filter som ser för vidaresändning är användbara som ett sätt att kontrollera om det är ett anslutningsproblem. Vidaresändning är paket som skickas igen eftersom de var skadade eller förlorade under den första överföring. Alltför många vidaresändning visar en långsam anslutning eller en enhet som är långsamma på att svara.

Skriv följande:

tcp.analysen.återutsändning

Födelse, Liv, Död och Kryptering

En nätverksanslutning mellan två enheter initieras när man kontaktar andra och skickar en SYN (synkronisera) paket. Den mottagande enheten skickar sedan en ACK (bekräftelse) – paket. Det visar om det kommer att acceptera anslutningen genom att skicka ett SYN-paket.

SYN-och ACK är faktiskt två flaggor i samma paket. Den ursprungliga enheten erkänner SYN genom att skicka ett ACK, och sedan enheter upprätta en nätverksanslutning.

Detta kallas three-way handshake:

EN -> SYN -> B

EN <- SYN, ACK <- B

EN -> ACK -> B

I skärmdumpen nedan, någon på datorn “nostromo.lokala” gör en SSH (Secure Shell) anslutning till datorn “ubuntu20-04.lokala.” Tre-vägs handskakning är den första delen av kommunikationen mellan två datorer. Observera att de två rader som innehåller SYN-paket är färgkodade i mörkt grå.

Bläddra i displayen för att visa kolumnerna till höger visar den SYN , SYN/ACK, och ACK handslag paket.

Du kommer att märka att paketet utbyte mellan de två datorer som växlar mellan TCP och SSH protokoll. Datapaket skickas genom en krypterad SSH-anslutning, men budskapet paket (som ACK) skickas via TCP. Vi kommer filter ut TCP-paket inom kort.

När nätverksanslutningen är inte längre behövs, det är kasserade. Paketet sekvens för att bryta en nätverksanslutning är en fyra-vägs handskakning.

Ena sidan skickar en FIN (avsluta) – paket. Den andra änden skickar ett ACK att erkänna FIN, och sedan skickar också en FIN för att visa att den håller anslutningen bör tas bort. Den första sidan skickar ett ACK för FIN det bara fick, och anslutningen är sedan demonteras.

Här är vad fyra-vägs handskakning ser ut som:

EN -> FIN -> B

EN <- FIN, ACK <- B

EN -> ACK -> B

Ibland, den ursprungliga FIN piggybacks på en ACK-paket som skulle skickas hur som helst, som visas nedan:

EN -> FIN, ACK -> B

EN <- FIN, ACK <- B

EN -> ACK -> B

Detta är vad som händer i detta exempel.

Om vi vill se bara SSH-trafik för detta samtal, kan vi använda ett filter som anger att protokollet. Vi skriver följande om du vill se alla trafik med hjälp av SSH-protokollet till och från fjärrdatorn:

ip -.addr == 192.168.4.25 && ssh

Detta filtrerar bort allt utom SSH-trafik till och från 192.168.4.25.

Andra Användbara Filter Mallar

När du skriver in ett filter i filtret bar, det kommer att förbli röd tills filtret är syntaktiskt korrekt. Det kommer att bli grön när filtret är korrekt och fullständig.

Om du skriver ett protokoll, såsom tcp, ip, udp, eller shh, följt av en punkt (.), en meny visas. Det kommer att lista de senaste filter som innehöll det protokollet, och alla de fält som kan användas i filtren för att protokollet namn.

Till exempel, med ip kan du använda ip.addr, ip.kontrollsumma, ip.src, ip.sommartid, ip.id, ip.värd, och dussintals andra.

Använd följande filter mallar som grund för dina filter:

  • Att bara visa en HTTP-protokollet paket: http
  • Att endast visa DNS-protokollet paket: dns
  • Att endast visa TCP-paket med 4000 som en källa eller destination port: tcp.port==4000
  • För att visa alla TCP reset-paket: http.begäran
  • För att filtrera ut ARP, ICMP, och DNS-paket: !(arp eller icmp dns -)
  • För att visa alla vidaresändningar i ett spår: tcp.analysen.återutsändning
  • För att filtrera flaggor (som SYN eller FIN): Du måste ange en jämförelse värde för dessa: 1 innebär att flaggan är inställd och 0 betyder att det inte är. Så, ett exempel skulle kunna vara: tcp.flaggor.syn – = = 1.

Vi har täckt några av de vägledande principerna och de grundläggande användning av display filter här, men naturligtvis finns det mycket mer.

För att uppskatta den fulla omfattningen och kraften i Wireshark filter, se till att kolla online referens.

LÄS NÄSTA

  • “6 Tips för att Organisera Din iPhone Apps
  • “Hur man Använder Wireshark Filter på Linux
  • “Windows-10 Kommer Snart att Visa Kant Flikar i Webbläsaren på Alt+Tabb
  • “Hur att Trådlöst koppla en Arenor Controller till en Android-Enhet
  • “Hur Öppna Microsoft Outlook konversationsvyn Efter Sortering en Mapp