Wireshark-applikationstrafik. Wireshark: Trafikanalyse på Linux og Windows. Nøglefunktioner i Wireshark

Wireshark: hvordan bruges det?

Hej venner! I denne artikel vil jeg forsøge at forklare og tale om de mest væsentlige ting, du skal vide, når du bruger Wireshark på Linux, og vis en analyse af tre typer netværkstrafik. Denne manual gælder også for Wireshark under Windows.

Hvis du er ny inden for informationssikkerhed, og du udmærket forstår, hvad en sniffer (trafikanalysator) er, råder jeg dig til at læse artiklen, og først derefter læse denne artikel om, hvordan du bruger Wireshark.

Meget populær og ekstremt dygtig netværksprotokolanalysator, udviklet af Gerald Combs, blev Wireshark til i juni 2006, da Combs omdøbte et netværksværktøj, han også skabte, Ethereal, fordi han havde skiftet job og ikke længere kunne bruge det gamle navn. I dag bruger de fleste Wireshark, og Ethereal er blevet historie.

Wireshark: den bedste sniffer

Du spørger måske, hvordan Wireshark adskiller sig fra andre netværksanalysatorer - udover at være gratis - og hvorfor begynder vi ikke bare at promovere brugen af ​​tcpdump til pakkefangst?

Den største fordel ved Wireshark er, at det er en grafisk applikation. Indsamling af data og kontrol af netværkstrafik i brugergrænsefladen er en meget praktisk ting, da det giver dig mulighed for at håndtere komplekse netværksdata.

Hvordan bruger man Wireshark?

For at en nybegynder kan forstå Wireshark, skal de forstå netværkstrafik. I så fald er formålet med denne artikel at forklare dig det grundlæggende i TCP/IP, så du kan drage de rigtige konklusioner ud fra den netværkstrafik, du analyserer.


TCP-pakke og IP-pakkeformat.

Hvis du kører Wireshark som en normal bruger, vil du ikke være i stand til at bruge netværksgrænsefladerne til at indsamle data på grund af standard Unix-filtilladelserne på netværksgrænsefladerne. Det er mere bekvemt at køre Wireshark som root (sudo wireshark), når der indsamles data og som en normal bruger til dataanalyse.

Alternativt kan du indsamle netværksdata ved at bruge kommandolinjeværktøjet tcpdump som root og derefter analysere det ved hjælp af Wireshark. Vær opmærksom på, at indsamling af data med Wireshark på et stærkt belastet netværk kan gøre din computer langsommere, eller endnu værre, forhindre dig i at indsamle de data, du har brug for, fordi Wireshark kræver flere systemressourcer end et kommandolinjeprogram. I sådanne tilfælde er den mest rimelige løsning til at indsamle data om netværkstrafik at bruge tcpdump.

Optagelse af netværksdata med Wireshark

Den nemmeste måde at begynde at fange netværkspakkedata på er at vælge den grænseflade, du har brug for, efter at du har startet Wireshark og klikke på Start. Wireshark viser netværksdata på din skærm baseret på din netværkstrafik. Bemærk venligst, at der kan vælges mere end én grænseflade. Hvis du ikke ved noget om TCP, IP eller andre protokoller, kan du finde resultatet svært at læse og forstå.

For at stoppe optagelsesprocessen skal du vælge Capture > Stop fra menuen. Alternativt kan du klikke på det fjerde ikon fra venstre med den røde firkant (en forkortelse for "Stop capturing live data") i hovedværktøjslinjen (bemærk, at dens nøjagtige placering afhænger af den version af Wireshark, du har). Denne knap kan kun klikkes under netværksdataindsamling.

Når du bruger den beskrevne datafangstmetode, kan du ikke ændree, der er konfigureret i Wireshark. Du kan se og ændre Capture Options ved at vælge Capture > Options i menuen. Her kan du vælge netværksgrænsefladen(erne), se din IP-adresse, anvende dataindsamlingsfiltre, indstille dit netværkskort til at acceptere alle netværkspakker og gemme de indsamlede data i en eller flere filer. Du kan endda fortælle den, at den skal stoppe med at fange pakker, når den når et vist antal netværkspakker, eller en vis mængde tid eller en vis mængde data (i bytes).

Som standard gemmer Wireshark ikke de indsamlede data, men du kan altid gemme dem senere. Det anses generelt for bedste praksis at gemme og derefter undersøge netværkspakker først, medmindre du har en særlig grund til at gøre andet.

Wireshark giver dig mulighed for at læse og analysere allerede indsamlede netværksdata fra en lang række filformater, herunder tcpdump, libpcap, Sun's snoop, HP's nettl, K12 tekstfiler og mere. Kort sagt kan Wireshark læse næsten ethvert format af indsamlede netværksdata. På samme måde giver Wireshark dig mulighed for at gemme de indsamlede data i forskellige formater. Du kan endda bruge Wireshark til at konvertere en fil fra et format til et andet.

Du kan også eksportere en eksisterende fil som en almindelig tekstfil fra menuen Filer. Denne mulighed er hovedsageligt til at håndtere netværksdata manuelt eller indtaste dem i et andet program.

Der er mulighed for at printe dine pakker. Jeg har aldrig brugt det i det virkelige liv, men til uddannelsesformål kan det være meget nyttigt at printe pakker og deres fulde indhold.

Wireshark display filtre

Hvis capture-filtre anvendes under netværkscapture, ignorerer Wireshark netværkstrafik, der ikke matcher filteret; mens displayfiltre anvendes efter data er fanget og "skjuler" netværkstrafikken uden at fjerne den. Du kan altid slå Display-filteret fra og få dine skjulte data tilbage.

Displayfiltre anses i princippet for at være mere nyttige og alsidige end dataindsamlingsfiltre, fordi du næppe på forhånd ved, hvilken information du vil indsamle eller vælge at udforske. Brug af filtre til at fange data sparer dig dog tid og diskplads, hvilket er hovedårsagen til at bruge dem.

Wireshark fremhæver et syntaktisk korrekt filter med en lysegrøn baggrund. Hvis syntaksen indeholder fejl, bliver baggrunden lyserød.

Displayfiltre understøtter sammenligning og logiske operatorer. http.response.code visningsfilter


Tre pakker (SYN, SYN+ACK og ACK) af en trevejs TCP-forbindelsesopsætning

404 && ip.addr == 192.168.1.1 viser trafik, der enten kommer fra IP-adressen 192.168.1.1 eller går til IP-adressen 192.168.1.1, som også har en 404 (Ikke fundet) HTTP-svarkode i sig. Filteret!boo1p &&!ip &&!arp udelukker BOOTP-, IP- og ARP-trafik fra resultatet. Filter eth.addr == 01:23:45:67:89:ab && tcp.port == 25 viser trafik fra eller til netværksenhed med MAC-adresse 01:23:45:67:89:ab, der bruges i indgående og udgående forbindelser, TCP-portnummer 25.

Husk, at displayfiltre ikke på magisk vis løser problemer. Når de bruges rigtigt, er det yderst brugbare værktøjer, men du skal stadig tolke resultaterne, finde problemet og selv tænke på en passende løsning.

Artiklen fortsættes på næste side. For at gå til næste side skal du klikke på knappen 2, som er placeret under knapperne på sociale netværk.

Introduktion

Når man studerer netværksinteraktioner på niveau med individuelle pakker, datagrammer, segmenter og meddelelser på applikationsniveau, er det ofte nødvendigt at løse trafikfiltreringsproblemer. Essensen af ​​at anvende filtre er at søge efter og fremhæve grupper, såvel som individuelle transmissionsenheder, der er af interesse for yderligere analyse. Denne funktionalitet er yderst nyttig i værktøjer designet til at opfange og studere netværkstrafik (sniffere), og hjælper en systemadministrator eller med at finde en brøkdel af nyttig information i de intensive informationsstrømme i moderne netværk.

Den åbne multiplatform platform diskuteret i denne artikel wireshark protokol analysator har to undersystemer af filtre: tidspunkt for trafikaflytning (fangstfiltre) og display (visningsfiltre). Som det er kendt, er det første undersystem baseret på regelsproget i Pcap (Packet Capture) biblioteket. Især "tømning" af trafik under indsamling reducerer antallet af opsnappede pakker og sparer derved plads i hukommelsen eller på harddisken. Hvad angår displayfiltrene, er de, som er en indbygget funktion i Wireshark, designet til at "tilpasse" allerede opsnappet trafik i programmets grafiske grænseflade.


Om filtersprog

Evnen til at opsnappe trafik til overvågnings- og fejlretningsformål er til stede i netværksstakken i ethvert operativsystem. Det udføres ved hjælp af det såkaldte pakkefilter (Packet Filter), som er en del af systemkernen og modtager modtagne/afsendte pakker fra netværkskortdriveren. De bedst kendte pakkefiltre til Unix-lignende operativsystemer er BPF (Berkeley Packet Filter) og LSF (Linux Socket Filter).

Så sampling af trafik i henhold til specificerede kriterier i BPF Det er implementeret som et særligt sagsorienteret primitivt maskinsprog, hvor fortolkeren faktisk er pakkefilteret. Programmer på dette sprog kan udtrække fragmenter fra pakker, sammenligne de modtagne data med givne værdier, kontrollere individuelle bits, udføre aritmetiske operationer og derefter acceptere eller kassere pakker afhængigt af resultaterne af alle disse tests. "Lavt-niveau"-tilgangen er nyttig for programmører, der udvikler netværksfunktionsbiblioteker og forskellige hjælpeprogrammer.

Almindelige brugere bruger normalt "højt niveau" filtersprog. Et typisk applikationssprog, der bruges i en sniffer til at beskrive trafikregler, gør det muligt at konstruere udtryksprimitiver baseret på individuelle meddelelsesfelter i forskellige protokoller. I dette tilfælde kan forholdet mellem feltværdien og en bestemt værdi (lig med, større end, mindre end), værdiens overensstemmelse med skabelonen eller blot tilstedeværelsen af ​​feltet i meddelelsen tjene som et kriterium. Primitiver kan kombineres til et komplekst udtryk ved hjælp af logiske funktioner ("og", "eller", "ikke" osv.).

I open source-verdenen er den egentlige filtersprogstandard den syntaks, der bruges i Pcap-biblioteket. Det er grundlaget ikke kun for Wireshark, men også for andre open source-værktøjer, som for eksempel den velkendte tcpdump-konsolsniffer i Unix-verdenen. Faktisk er Pcap og tcpdump et fælles projekt. Det populære Snort-indtrængningsdetektionssystem bruger også Pcap-formatet i pakkefangsttilstand til at definere regler for filtrering af trafik.


Grundlæggende om Pcap-filter

Så, filter omfatter en eller flere primitiver. En primitiv består normalt af et objekt (nummer eller navn) og en eller flere specifikationer, der specificerer protokollen (ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp, udp), retning (src, dst, enhver, og etc.) og objekttype (vært, net, port osv.). For for eksempel at opsnappe pakker, hvor den udgående IP-adresse er 192.168.56.102, skal du bruge et filter som dette:

IP src-vært 192.168.56.102

Eller for at optage ARP-protokoltrafik, der involverer værter på 192.168.56.0-netværket:

Arp net 192.168.56

Hyppigt anvendte specifikationer er opsummeret i en tabel (valgfri komponenter er angivet med - , alternativer med |, objekter med -< >). En komplet liste kan findes i Pcap-dokumentationen (på Linux tilgængelig i brugermanualen ved hjælp af man pcap-filter-kommandoen).

For at kombinere flere primitiver til ét udtryk, bruges logiske funktioner: "og" (angivet med nøgleordet og eller &&), "eller" (eller eller ||), "ikke" (ikke eller!). For at opfange SSH-protokoltrafik for vært 192.168.56.102 er følgende konstruktion egnet:

TCP-port 22 og vært 192.168.56.102

Ved meget komplekse udtryk skal der bruges parenteser. For eksempel:

Net 192.168.56.0/24 og (tcp port 21 eller tcp port 22)

Pcap filtre ubegrænset

For dem, der er vant til at leve efter deres egne regler, giver Pcap-biblioteket tilfældig adgang til indholdet af netværkspakker ved at bruge OS-pakkefilterets fulde kraft. Dette gøres ved hjælp af en ret simpel syntaks:

proto[udg:størrelse]

hvor proto-parameteren er en af ​​de protokoller, der understøttes af Wireshark; exp er forskydningen i bytes i forhold til begyndelsen af ​​laget givet i proto, og størrelse er antallet af bytes, der skal udtrækkes.

I betragtning af, at sammenligningsoperationer kan bruges i primitiver i notationen af ​​programmeringssproget C (>, =,

Eksemplet har dog kun en metodisk betydning, da denne protokol let filtreres af standard icmp-reglen.

Men at vælge HTTP-anmodninger lavet af GET-metoden fra trafikken i farten er ikke så let en opgave for Pcap. Og løsningen foreslået i dokumentationen hævder at være original:

Port 80 og tcp[((tcp & 0xf0) >> 2):4] = 0x47455420

Dette filter kontrollerer tilstedeværelsen af ​​bytes "G", "E", "T" og "" (hexadecimale værdier 47, 45, 54 og 20) umiddelbart efter TCP-headeren, hvis længde beregnes af udtrykket "tcp & 0xf0) >> 2".

Som det kan ses af det sidste eksempel, er binære C-operatorer (+, -, *, /, &, |, >) udover sammenligningsoperationer også tilgængelige for brugeren direkte i primitiver.


Om displayfiltre

Apropos forskelle vise filtre fra Pcap-filtre, så ud over formatet af specificatorerne (protokolfelterne ser ud som . lig, le er mindre end eller lig med) og binære operatorer (og, eller, xor, ikke), samt understøttelse af understrenge.

Sampling af understrenge i felter svarer til at udtrække vilkårlige bytes fra en pakke i Pcap-filtre, men har en mere fleksibel syntaks. For eksempel vil et udtryk som dette kontrollere de første 4 bytes af kilde-MAC-adressefeltet for en Ethernet-ramme (svarende til ):

Eth.src[:4] == 00:1d:72:01

Forskellen mellem filtrene er naturligvis, at Pcap-reglerne bruges, når man opsnapper trafik; i den grafiske grænseflade er konfigureret i dialogboksen "Capture options" (det er i øvrigt muligt at huske ofte brugte udtryk). Og displayfiltre fungerer med pakker placeret på listen i hovedprogramvinduet:

Funktionelt er det indbyggede Wireshark-filtreringsundersystem meget mere brugervenligt. Det er især ikke nødvendigt at huske detaljerne i meddelelsesformatet (forskydninger, feltstørrelser osv.). Det nødvendige felt i meddelelsen for denne protokol kan nemt findes i vinduet til indstilling af visningsreglerne (Filterudtryk), samt vælg en betingelse og en foruddefineret værdi fra listen for dette felt, eller angiv din egen. For enhver af de mange protokoller, der understøttes af Wireshark, kan et displayfilter konfigureres på denne enkle måde.

Et næsten akademisk eksempel på at bestemme, hvornår en TCP-segmentbuffer løber over, ved hjælp af følgende kortlægningsregel, vil være meget afslørende:

tcp.window_size == 0 && tcp.flags.reset != 1

Konklusion

Wireshark-protokolanalysatoren har et kraftfuldt pakkefiltreringssystem, der giver dig mulighed for at skabe komplekse regler ved hjælp af logiske funktioner og binære operatorer. Optagelsestidsfiltrene er standard og vil være velkendte for brugere, der har brugt netværksværktøjer baseret på Pcap-biblioteket, såsom tcpdump. Reglerne for visning af pakker er nemme at lære og bruge, takket være mulighederne i det pågældende programs grafiske grænseflade. Generelt giver funktionaliteten af ​​Wireshark-filtreringssystemet dig mulighed for at bruge fordelene ved et lavniveau-pakkefilter ganske effektivt.

Bare et stort udvalg af filtre. Og der er en enorm dokumentation på disse filtre, som ikke er så let at forstå. Jeg har samlet de mest interessante for mig og de mest brugte Wireshark-filtre. For nybegyndere kan dette være lidt af en Wireshark-filterreference, et udgangspunkt at lære af. Også her i kommentarerne inviterer jeg dig til at dele de løbefiltre, som du ofte bruger, samt interessante fund - jeg vil tilføje dem til denne liste.

Husk, at Wireshark har skærmfiltre og opsamlingsfiltre. Her betragter jeg visningsfiltre, som indtastes i programmets hovedvindue i det øverste felt umiddelbart under menuen og ikonerne for hovedfunktionerne.

For fuldt ud at forstå betydningen af ​​filtre, og hvad det præcist viser, skal du forstå, hvordan netværket fungerer. For at blive bekendt med principperne for netværket og protokollerne anbefales det at studere cyklussen om driften af ​​computernetværk, den første artikel i cyklussen "" (resten af ​​delene er under forberedelse).

Nogle af filtrene her er skrevet i generel form, og nogle er implementeret som specifikke eksempler. Husk, at du under alle omstændigheder kan erstatte dine data, for eksempel ændre portnummeret til det, du er interesseret i, og også gøre det samme med IP-adressen, MAC-adressen, tidsværdien osv.

Wireshark-filteroperatører

Filtre kan have forskellige værdier, såsom streng, hexadecimal eller tal.

Hvis du leder efter et upræcis match (bedre egnet til ikke-numeriske værdier), så brug indeholder. For eksempel, for at vise TCP-pakker, der indeholder strenghackwaren, kræves følgende filter:

Tcp indeholder hackware

Operatører bruges til at finde nøjagtige værdier. Overvej dem:

Som du kan se er der to stavemåder hver, hvis vi for eksempel vil angive at filterværdien er lig med noget, så kan vi bruge == eller lign.

Ret komplekse konstruktioner kan bygges ud fra filtre ved hjælp af logiske operander, men hvis det samme filter tilsyneladende bruges to gange med sammenligningsoperatører, for eksempel, som her i et forsøg på at filtrere ikke efter én port, men efter en række porte:

tcp.port>=8000 && tcp.port<=8180

derefter filterværdien (i dette tilfælde tcp.port) overskrives af den sidste værdi, så i stedet for den forventede adfærd får vi resultatet af arbejdet med kun den sidste del, i dette tilfælde er det

tcp.port<=8180

Vær opmærksom på denne fejl!

Når det bruges med == (ligeså) denne fejl mangler.

Wireshark Filter Boolean Operators

Logiske operatorer giver dig mulighed for at oprette detaljerede filtre ved hjælp af flere betingelser på én gang. Det anbefales desuden at bruge parenteser, for ellers får du måske ikke den værdi, du forventer.

Operatør Beskrivelse
og/&& Logisk OG, data udlæses, hvis de matcher begge dele af filteret. For eksempel filter ip.src==192.168.1.1 og tcp vil kun vise pakker, der stammer fra 192.168.1.1 og er forbundet med TCP-protokollen. Kun data, der matcher begge betingelser, vil blive vist.
eller/|| Logisk ELLER, det er nok, at kun én betingelse er sand; hvis begge dele er sande, så er det også fint. For eksempel filter tcp.port==80 eller tcp.port==8080 vil vise TCP-pakker, der er bundet (enten kilde eller destination) på port 80 eller 8080.
ikke/! Den logiske NOT bruges, når vi ønsker at udelukke nogle pakker. Det vil sige, at alle pakker vil blive vist, undtagen dem der opfylder betingelsen efter NOT. For eksempel filter !dns vil vise alle pakker undtagen DNS.

Eksempler på kombinationer:

Vis HTTP eller DNS-trafik:

http eller dns

Vis enhver trafik, Udover ARP, ICMP og DNS:

!(arp eller icmp eller dns)

Interface filter

Vis kun pakker sendt eller modtaget på grænsefladen wlan0:

Frame.interface_name == "wlan0"

Linklagsprotokoltrafik

Sådan viser du ARP-trafik:

Vis protokol ARP-rammer sendt fra enhed med MAC-adresse 00:c0:ca:96:cf:cb:

Arp.src.hw_mac == 00:c0:ca:96:cf:cb

Vis ARP-protokolrammer sendt fra en enhed med en IP-adresse på 192.168.50.90:

arp.src.proto_ipv4 == 192.168.50.90

Vis protokol ARP-rammer sendt til en enhed, der har en MAC-adresse på 00:00:00:00:00:00 (denne adresse bruges, når protokollen forsøger at finde ud af mål-MAC-adressen. En anden populær adresse, der kan forvirre dig, er ff: ff:ff:ff:ff:ff, denne adresse udsendes, dvs. beskeder med denne adresse er beregnet til alle enheder på det lokale netværk):

Arp.dst.hw_mac == 00:00:00:00:00:00

Vis ARP-protokolrammer sendt til enheden med IP-adressen 192.168.50.1:

arp.dst.proto_ipv4 == 192.168.50.1

Vis Ethernet-trafik:

Vis frames (generelt alle frames, ikke kun ARP, som det var i de foregående eksempler) sendt fra en enhed med en MAC-adresse på 00:c0:ca:96:cf:cb:

Eth.src == 00:c0:ca:96:cf:cb

Vis rammer sendt til enhed med MAC-adresse 78:cd:8e:a6:73:be:

Eth.dst == 78:cd:8e:a6:73:be

Internetprotokol trafik

IPv4-protokolfiltrering

Vis IP-trafik (dette inkluderer TCP, UDP, såvel som applikationslagsprotokoller DNS, HTTP - det vil sige næsten alt undtagen linklagprotokoller, der ikke bruger IP-adresser til dataoverførsel (i Ethernet-lokalnetværk bruger de MAC som levering adresser) adresser)):

Mere specifikt refererer det til IPv4-trafik, almindeligvis blot omtalt som IP (Internet Protocol).

Vis trafik forbundet med en specifik IP-adresse (skriv den i stedet for x.x.x.x). Pakker vil blive vist, hvor denne IP-adresse er datakilden ELLER destinationen:

Ip.addr == x.x.x.x

Vis trafikken forbundet med de givne to IP-adresser. Ifølge den eneste mulige logik vil en af ​​disse adresser være kilden, og den anden vil være leveringsadressen.

ip.addr == x.x.x.x && ip.addr == y.y.y.y

Vis trafik, der stammer fra vært med IP-adresse 138.201.81.199:

ip.src == 138.201.81.199

Vis trafik bestemt til vært med IP-adresse 138.201.81.199:

Ip.dst == 138.201.81.199

Bemærk, at IP-protokollen fungerer på IP-adresser, men ikke på porte. Porte er en del af TCP- og UDP-protokollerne. IP-protokollen er kun ansvarlig for at dirigere trafik mellem værter.

Filtrering af undernet og IP-områder i Wireshark

Du kan angive et undernet i stedet for en enkelt IP-adresse:

IP.addr == 192.168.1.0/24

Filtrering af trafik sendt fra et specifikt IP-område. Hvis du har brug for at filtrere trafik, der stammer fra et undernet, skal du bruge et filter på formen:

ip.src==192.168.1.0/24

Filtrering af trafik beregnet til at blive sendt til et specifikt IP-område. Hvis du har brug for at filtrere trafik, hvis destination er et undernet, skal du bruge et filter på formen:

Ip.dst == 192.168.1.0/24

IPv6-protokolfiltrering

Vis IPv6-trafik (Internet Protocol version 6):

Filtrering efter IPv6-adresse. For at filtrere efter IPv6-adresse skal du bruge filteret:

ipv6.addr == 2604:a880:800:c1::2ae:d001

IPv6-undernet og rækkeviddefiltrering i Wireshark

Du kan angive et undernet til filtrering i stedet for en enkelt IPv6-adresse:

ipv6.addr == 2604:a880:800:c1::2ae:d000/64

Hvis du har brug for at filtrere trafik, der stammer fra en specifik IPv6-adresse:

ipv6.src == 2604:a880:800:c1::2ae:d001

Hvis du har brug for at filtrere trafik sendt til en specifik IPv6-adresse:

ipv6.dst == 2604:a880:800:c1::2ae:d001

Filtrering af trafik sendt fra et specifikt IPv6-område. Hvis du har brug for at filtrere trafik, der stammer fra et undernet, skal du bruge et filter på formen:

ipv6.src == 2604:a880:800:c1::2ae:d000/64

Filtrering af trafik beregnet til at blive sendt til et specifikt IPv6-område. Hvis du har brug for at filtrere trafik, hvis destination er et undernet, skal du bruge et filter på formen:

ipv6.dst == 2604:a880:800:c1::2ae:d000/64

ICMPv6-filtrering (Internet Control Message Protocol) i Wireshark udføres af et filter:

For at se de pakker, der fungerer som ARP til IPv6, skal du bruge filteret:

icmpv6.type == 133 eller icmpv6.type == 134 eller icmpv6.type == 135 eller icmpv6.type == 136 eller icmpv6.type == 137

Andre IP-adressefiltre ligner IPv6 og IPv4.

Transportprotokoltrafik

For kun at se TCP-trafik:

Vis trafik, hvis kilde- eller destinationsport er en specifik port, for eksempel 8080:

tcp.port==8080

Vis trafik, der kommer fra port 80:

tcp.srcport==80

Vis den trafik, der sendes til tjenesten, der lytter på port 80:

tcp.dstport == 80

Vis TCP-pakker med SYN-flag aktiveret:

tcp.flags.syn==1

Vis TCP-pakker med SYN-flag aktiveret og ACK-flag deaktiveret:

tcp.flags.syn==1 && tcp.flags.ack==0

Tilsvarende for andre flag:

tcp.flags.syn==1 tcp.flags.ack==1 tcp.flags.reset==1 tcp.flags.fin==1 tcp.flags.cwr tcp.flags.ecn tcp.flags.urg==1 tcp.flags.push==1

Du kan også bruge syntaksen som tcp.flags == 0x0XX, For eksempel:

  • fin den tcp.flags == 0x001
  • SYN det tcp.flags == 0x002
  • RST er tcp.flags == 0x004
  • tak det tcp.flags == 0x010
  • ACK og FIN installeret på samme tid er tcp.flags == 0x011
  • ACK og SYN indstillet på samme tid er tcp.flags == 0x012
  • ACK og RST indstillet på samme tid er tcp.flags == 0x014

Sådan viser du pakker, der indeholder en streng, såsom streng-hackware:

Tcp indeholder hackware

Følg TCP-stream nummer X:

Tcp.stream eq X

Filtrer efter streamnummer:

Tcp.seq == x

Vis pakkeforsøg. Hjælper med at spore applikationsydelsesforringelse og pakketab:

Dette filter viser problematiske pakker (tabte segmenter, retransmissioner og andre. TCP Keep-Alive-pakker passerer dette filter, men de er ikke tegn på problemer.

Tcp.analysis.flags

Filtre til vurdering af kvaliteten af ​​en netværksforbindelse.

Følgende egenskaber gælder for TCP-rammer. Desuden er de ikke baseret på rammeoverskrifter - de pågældende karakteristika (dataspring, dubletter) tildeles af Wireshark-programmet baseret på analysen.

Filteret udsender information om frames med ACK-flaget, der er dubletter. Et stort antal af sådanne rammer kan indikere kommunikationsproblemer:

tcp.analysis.duplicate_ack_num == 1

Filter til visning af rammer, for hvilke det forrige segment ikke er fanget:

Tcp.analysis.ack_lost_segment

Dette er normalt i begyndelsen af ​​datafangst - da information ikke opsnappes helt fra begyndelsen af ​​sessionen.

For at vise frames, der gentransmitteres (gentransmitteret):

Tcp.analyse.retransmission

Outputrammer, der ikke modtages i den rigtige rækkefølge:

Tcp.analysis.out_of_order

For kun at se UDP-trafik:

Der bruges ingen flag til UDP. For denne protokol kan du kun angive en port.

Vis trafik, der kommer fra port 53:

Udp.srcport == 53

Vis den trafik, der sendes til tjenesten, der lytter på port 53:

Udp.dstport == 53

En UDP-pakke, der indeholder en bestemt streng, såsom streng-hackware:

Udp indeholder hackware

For kun at se ICMP-trafik:

For kun at se ICMP v6 (Version 6) trafik

Vis alle ping-svar:

icmp.type==0

Vis alle ping-anmodninger:

icmp.type==8

Vis alle værter og porte utilgængelige/forbudte fejl

icmp.type==3

Vis alle forsøg på at omdirigere routing ved hjælp af ICMP:

icmp.type==8

Et eksempel på brug af CODE-værdien, vil følgende filter vise port unreachable-meddelelser:

icmp.type==3 && icmp.code==3

Programprotokoltrafik

For applikationslagsprotokollerne HTTP, DNS, SSH, FTP, SMTP, RDP, SNMP, RTSP, GQUIC, CDP, LLMNR, SSDP er der filtre, der er navngivet som selve protokollerne, men som er skrevet med små bogstaver.

For at se f.eks. HTTP-trafik:

Sådan ser du trafikken for den nye HTTP/2-protokol:

Husk, at når du beslutter, hvilken protokol de transmitterede data tilhører, går programmet ud fra det anvendte portnummer. Hvis en ikke-standard port bruges, vil programmet ikke være i stand til at finde de nødvendige data. For eksempel, hvis en SSH-forbindelse blev lavet på port 1234, så filteret ssh vil ikke finde SSH-trafik.

Et filter, der kun viser de data, der er indsendt af POST-metoden:

http.request.method == "POST"

Et filter, der kun viser de data, der sendes af GET-metoden:

http.request.method == "GET"

Søg efter anmodninger til et specifikt websted (vært):

http.host==" "

Søg efter anmodninger til et bestemt websted efter en del af navnet:

Http.host indeholder "here.partial.name"

Filter til visning af HTTP-anmodninger, hvor cookies blev overført:

Http.cookie

Forespørgsler, hvor serveren sætter en cookie i brugerens browser.

Http.set_cookie

Sådan søger du efter overførte billeder:

http.content_type indeholder "billede"

Sådan søger du efter bestemte typer billeder:

http.content_type indeholder "gif" http.content_type indeholder "jpeg" http.content_type indeholder "png"

Sådan søger du efter filer af en bestemt type:

http.content_type indeholder "tekst" http.content_type indeholder "xml" http.content_type indeholder "html" http.content_type indeholder "json" http.content_type indeholder "javascript" http.content_type indeholder "x-www-form-urlencode" http. content_type indeholder "komprimeret" http.content_type indeholder "applikation"

Søg i Wireshark efter anmodninger om at få filer af en bestemt type. For eksempel, for at søge efter overførte ZIP-arkiver:

Http.request.uri indeholder "zip"

Filtre kan bruges i stedet for http.request.uri for større nøjagtighed http.request.uri.path eller http.request.uri.query, for eksempel for at søge efter anmodninger om at downloade JPG-filer (links til billeder):

Http.request.uri.path indeholder "jpg"

Du kan også bortfiltrere anmodninger, der indeholder en specifik HTTP REFERER-headerværdi. For eksempel for at søge efter anmodninger, hvor refereren er ru-board.com:

Http.referer indeholder "ru-board.com"

http.autorisation

Søgning efter filer i en HTTP-stream:

Http.file_data

For at se, hvilke HTTP-data der modtages med en forsinkelse, skal du bruge følgende konstruktion:

http.tid>1

Den vil vise den modtagne trafik senere end 1 sekund.

For at undersøge problemer kan du analysere status for HTTP-svarkoder. For eksempel vil følgende filter vise trafik, der modtog en 404 Not Found-fejl:

http.response.code==404

Det næste filter er meget interessant. Først viser det, hvilke komplekse strukturer der kan bygges ud fra individuelle filtre. For det andet giver det dig mulighed for at udforske HTTP-anmodninger og webaktivitet generelt, hvilket eliminerer unødvendige data. Med dette filter kan du se webaktivitet på højt niveau. Reglerne inde i parentesen udelukker billeder, Javascript-filer og typografiark – alt hvad siden anmoder om internt. Hvis de pågældende sider indeholder andre indbyggede objekter, skal du ekskludere dem på lignende måde:

Http.request && !(http.request.uri indeholder ".ico" eller http.request.uri indeholder ".css" eller http.request.uri indeholder ".js" eller http.request.uri indeholder ".gif" eller http.request.uri indeholder ".jpg")

For at se alle DNS-anmodninger og -svar:

For at se, hvilke DNS-forespørgsler, der tog lang tid:

dns.tid>1

Svar modtaget mere end et sekund efter, at anmodningen blev sendt, vil blive vist.

Dette filter viser, hvilke dns-anmodninger der ikke kan løses korrekt:

dns.flags.rcode != 0

Vis kun DNS-forespørgsler:

dns.flags.response == 0

Vis kun DNS-svar:

dns.flags.response == 1

Vis anmodninger og svar, der slår IP'en op for google.com:

dns.qry.name == "google.com"

Vis DNS-forespørgsler og -svar relateret til A-posten:

dns.qry.type == 1

Vis DNS-forespørgsler og svar for AAAA-poster:

dns.qry.type == 28

Vis svar, hvor 216.58.196.3 blev sendt som IP for post A:

dns.a == 216.58.196.3

Vis svar, hvor 2a01:4f8:172:1d86::1 blev sendt som IP for AAAA-posten:

dns.aaaa == 2a01:4f8:172:1d86::1

Vis poster med CNAME apollo.archlinux.org:

dns.cname == "apollo.archlinux.org"

Vis svar længere end 30:

dns.resp.len > 30

Vis anmodninger med en længde på mere end 25:

dns.qry.name.len >25

Vis svar fra DNS-servere, hvor rekursion er tilgængelig:

dns.flags.recavail == 1

Vis svar fra DNS-servere, hvor rekursion ikke er tilgængelig:

dns.flags.recavail == 0

Er rekursion ønskværdig (hvis den anmodede DNS-server ikke har værtsnavneoplysninger, skal den forespørge andre DNS-servere, der leder efter disse oplysninger):

dns.flags.recdesired == 1

Hvis anmodningen er 1 , så rekursion er nødvendig hvis 0 Det betyder, at det ikke er ønskeligt.

Om ikke-godkendte data skal accepteres ( 0 betyder ikke at acceptere 1 betyder at acceptere):

dns.flags.checkdisable == 0

For at se, hvordan IP-adresser tildeles via DHCP:

Udp.dstport==67

bootp.option.dhcp

Sådan viser du DHCP-anmodninger:

bootp.option.dhcp==3

Sådan viser du DHCP Discover:

bootp.option.dhcp==1

SMB filter. Dette filter i Info-kolonnen viser hele træet (kuglen) af forbindelser, åbne mapper og åbne filer i sporet.

smb2.cmd==3 eller smb2.cmd==5

Filtre til Wi-Fi-rammer

Vis elementer af fire-vejs håndtryk (det vil sige EAPOL-protokolrammer):

Vis beacon-rammer:

wlan.fc.type_subtype == 0x08

Vis probesvarrammer:

wlan.fc.type_subtype == 0x05

Vis alt på én gang: EAPOL, Beacons, Probe Response:

wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || eapol

Vis trådløse rammer for en bestemt enhed med MAC-adresse BSSID:

wlan.addr==BSSID

Vis EAPOL, Beacons, Probe Response for en specifik enhed med MAC-adresse 28:28:5D:6C:16:24:

(wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || eapol) && wlan.addr==28:28:5D:6C:16:24

Vis alle PMKID'er:

Eapol && wlan.rsn.ie.pmkid

Vis PMKID, Beacons, Probe Response:

(wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || (eapol && wlan.rsn.ie.pmkid))

Vis PMKID, Beacons, Probe Response for AP med MAC-adresse 40:3D:EC:C2:72:B8:

(wlan.fc.type_subtype == 0x08 || wlan.fc.type_subtype == 0x05 || (eapol && wlan.rsn.ie.pmkid)) && wlan.addr==40:3D:EC:C2:72:B8

Vis kun den første håndtryksmeddelelse:

Wlan_rsna_eapol.keydes.msgnr == 1

Vis kun den anden håndtryksmeddelelse (kan bruges til en håndtryksmeddelelse med et hvilket som helst nummer):

Wlan_rsna_eapol.keydes.msgnr == 2

Vis rammer for adgangspunkter med en hastighed (datahastighed) på 1 Mb/s:

Wlan_radio.data_rate == 1

Vis rammer for adgangspunkter over 10 Mb/s:

Wlan_radio.data_rate > 10

Vis adgangspunkter på en bestemt frekvens:

Radiotap.channel.freq == 2412

Vis adgangspunkter med en bestemt signalstyrke:

Wlan_radio.signal_dbm > -50

Filtre relateret til tilstedeværelsen af ​​en antenne på enheden:

Radiotap.present.antenna == 1

Radiotap.antenna == 1

Hvis du kender andre interessante Wireshark-filtre, så del dem i kommentarerne.

De fleste spørgsmål, når man arbejder med WireShark-programmet blandt brugere, er forårsaget af filtre til at fange trafik. I dag vil vi se på deres vigtigste eksempler og vise dig, hvordan du opsætter dem korrekt!

I processen med at analysere netværks- eller applikationsydelsesproblemer, hvis din virksomhed ikke har et centraliseret applikationsydelsesovervågningssystem, skal du bruge en protokolanalysator (aka sniffer) for at analysere problemer fra niveau 4 til 7 i OSI-netværksmodellen ).

Hvis du ikke har en kommerciel løsning med indbyggede automatiske analyseværktøjer eller et ekspertsystem, så ville den måske mest korrekte måde være:

    download og installer på en bærbar en af ​​de bedste gratis protokolanalysatorer WireShark (http://www.wireshark.org/download.html);

    blive fortrolig med dens grænseflade;

    studere stakken af ​​protokoller og deres struktur;

    lære at arbejde med filtre for at fange trafik;

    lære at arbejde med filtre til trafikanalyse.

Som en del af denne artikel vil vi fokusere på det næstsidste punkt - hvordan man opsætter filtre til at fange trafik i WireShark.

Eksempler på konfiguration af WireShark-filtre til at fange trafik

Efter at have valgt en grænseflade, kan vi enten begynde at fange trafik i tilstanden - alt i træk, men det anbefales ikke, da det for eksempel ved 50% belastning på en gigabit-grænseflade kun tager et par millisekunder at overføre 100.000 pakker . Derfor er det vigtigt at forstå, hvilket problem vi løser. Så har vi i det mindste enten adressen (IP eller MAC) på brugeren eller den applikation, han klager over, eller den server, han tilgår.

Således er det enkleste filter i Wireshark enhedens IP-adresse (vært, vært), og dette filter ser sådan ud:

Hvis problemet er mere globalt, og vi skal fange trafik fra et separat undernet, uanset retningen af ​​dets transmission, så anvender vi filteret:

    net 192.168.0.0/24 eller net 192.168.0.0 maske 255.255.255.0

Når du fanger trafik fra et undernet, vil filteret se sådan ud:

    src net 192.168.0.0/24 eller src net 192.168.0.0 maske 255.255.255.0

Og hvis du kun har brug for at se indgående trafik til vores undernet til analyse, så er et af filtrene:

    dst net 192.168.0.0/24

    dst net 192.168.0.0 maske 255.255.255.0

Hvis brugeren klager over, at de ikke åbner sider i browseren, kan problemet være med DNS-serveren (port 53) eller med HTTP-protokollen (port 80), så fanger vi trafik ved hjælp af "port"-filteret:

Hvis vi beslutter os for at fange al trafik for en specifik server, undtagen HTTP og FTP, så er filteret konfigureret i henhold til et af disse to eksempler:

    vært 192.168.0.1 og ikke (port 21 eller port 80)

    vært 192.168.0.1 og ikke port 21 og ikke port 80

Hvis vi ønsker at se al trafik på porten, undtagen DNS, FTP, ARP trafik, så vil logikken være den samme:

    port ikke dns og ikke 21 og ikke arp

Når du fanger applikationstrafik, der bruger dynamiske porte fra et bestemt område, vil filteret se hårdt ud, hvis Libcap-versionen er lavere end 0.9.1:

    (tcp > 1500 og tcp< 1550) or (tcp >1500 og tcp< 1550)

hvis versionerne er senere, vil filteret være mindre truende og forståeligt:

    tcp portrange 1501-1549

For at optage Ethernet-rammer af EAPOL-typen (EAP Messaging Protocol i 802.1x kaldes EAPOL (EAP-indkapsling over LAN)):

    etherproto 0x888e

Til reference er her en liste over Ethernet-rammetyper af specifikke protokoller:

Ethertype (hexadecimal)

Protokol

0x0000 - 0x05DC

IEEE 802.3 længde

0x0101 - 0x01FF

IP, internetprotokol

ARP, Address Resolution Protocol.

Rammerelæ ARP

Raw Frame Relæ

DRARP, Dynamisk RARP. RARP, Reverse Address Resolution Protocol.

Novell NetWare IPX

EtherTalk (AppleTalk over Ethernet)

IBM SNA Services over Ethernet

AARP, AppleTalk Address Resolution Protocol.

EAPS, Ethernet Automatic Protection Switching.

IPX, Internet Packet Exchange.

SNMP, Simple Network Management Protocol.

IPv6, Internet Protocol version 6.

PPP, Point-to-Point Protocol.

GSMP, General Switch Management Protocol.

MPLS, Multi-Protocol Label Switching (unicast).

MPLS, Multi-Protocol Label Switching (multicast).

PPPoE, PPP Over Ethernet (Discovery Stage).

PPPoE, PPP Over Ethernet (PPP Session Stage).

LWAPP, Light Weight Access Point Protocol.

LLDP, Link Layer Discovery Protocol.

EAPOL, EAP over LAN.

Loopback (Configuration Test Protocol)

VLAN Tag Protocol Identifier

VLAN Tag Protocol Identifier

Hvis du har brug for at fange trafik af en specifik IP-protokol, kan du bruge et filter:

    ip proto tcp - fange TCP-trafik

    ip proto udp - fanger UDP-trafik

Det korteste filter anvendes til at fange IP-trafik:

For kun at fange unicast-trafik, når udgående og indgående trafik til en netværksenhed analyseres, bruges et filter i følgende format:

    ikke broadcast og ikke multicast

De simple filtre, vi talte om, kan kombineres med simple tegn:

    Negation: ! Ellerikke

    En forening: && ellerog

    Skift: IIellereller

Eksempel: for at fange trafik fra eller til en enhed med adressen 10.10.10.10, men ikke fra netværket 192.168.0.0, vil filteret blive kombineret med negation:

    vært 10.10.10.10 && !net 192.168

Offset-byte-filtre er de mest kraftfulde og forenkler i høj grad livet, men for at bruge dem skal du kende protokollen og placeringen af ​​de felter, du leder efter i pakken. Filtereksemplerne nedenfor vil fange pakker med en specifik feltværdi i overskrifterne eller nyttelasten. Det er nemt at sætte dem op:

Vi skifter med otte bytes i IP-pakken og fanger trafik med en TTL-værdi på 1

Indfang alle TCP-pakker med kildeportadresse 80. Dette svarer til src-port 80-filteret.

Til reference er her byteforskydningen til de mest interessante felter i pakken:

Felt i pakken

Længde i bytes

Filter

IP-headerlængde

IP-pakkelængde

IP-adressekilde

IP-adressedestination

IP Fragmentering

flag = 3 og Offset = 13

ip & 0x2000 = 0x2000 eller ip & 0x1fff !=0x0000

TCP-destinationsport

TCP-headerlængde

For at sikre de modtagne oplysninger, lad os bygge et filter til at fange trafik med en HTTP GET-anmodning. HTTP-protokollen bruger port 80, TCP-transportprotokollen. Værdier i hexadecimal for ordet GET vil se ud som 0x47455420. Et eksempel på et filter, som vi får:

    port 80 og tcp[((tcp & 0xf0 >>2):4]=0x47455420

Som en del af dette materiale har vi analyseret, hvordan man konfigurerer og bruger de enkleste grundlæggende filtre til at fange trafik ved hjælp af Wireshark-protokolanalysatoren.

De fleste spørgsmål, når man arbejder med WireShark-programmet blandt brugere, er forårsaget af filtre til at fange trafik. I dag vil vi se på deres vigtigste eksempler og vise dig, hvordan du opsætter dem korrekt!

I processen med at analysere netværks- eller applikationsydelsesproblemer, hvis din virksomhed ikke har et centraliseret applikationsydelsesovervågningssystem, skal du bruge en protokolanalysator (aka sniffer) for at analysere problemer fra niveau 4 til 7 i OSI-netværksmodellen ).

Hvis du ikke har en kommerciel løsning med indbyggede automatiske analyseværktøjer eller et ekspertsystem, så ville den måske mest korrekte måde være:

    download og installer på en bærbar en af ​​de bedste gratis protokolanalysatorer WireShark (http://www.wireshark.org/download.html);

    blive fortrolig med dens grænseflade;

    studere stakken af ​​protokoller og deres struktur;

    lære at arbejde med filtre for at fange trafik;

    lære at arbejde med filtre til trafikanalyse.

Som en del af denne artikel vil vi fokusere på det næstsidste punkt - hvordan man opsætter filtre til at fange trafik i WireShark.

Eksempler på konfiguration af WireShark-filtre til at fange trafik

Efter at have valgt en grænseflade, kan vi enten begynde at fange trafik i tilstanden - alt i træk, men det anbefales ikke, da det for eksempel ved 50% belastning på en gigabit-grænseflade kun tager et par millisekunder at overføre 100.000 pakker . Derfor er det vigtigt at forstå, hvilket problem vi løser. Så har vi i det mindste enten adressen (IP eller MAC) på brugeren eller den applikation, han klager over, eller den server, han tilgår.

Således er det enkleste filter i Wireshark enhedens IP-adresse (vært, vært), og dette filter ser sådan ud:

Hvis problemet er mere globalt, og vi skal fange trafik fra et separat undernet, uanset retningen af ​​dets transmission, så anvender vi filteret:

    net 192.168.0.0/24 eller net 192.168.0.0 maske 255.255.255.0

Når du fanger trafik fra et undernet, vil filteret se sådan ud:

    src net 192.168.0.0/24 eller src net 192.168.0.0 maske 255.255.255.0

Og hvis du kun har brug for at se indgående trafik til vores undernet til analyse, så er et af filtrene:

    dst net 192.168.0.0/24

    dst net 192.168.0.0 maske 255.255.255.0

Hvis brugeren klager over, at de ikke åbner sider i browseren, kan problemet være med DNS-serveren (port 53) eller med HTTP-protokollen (port 80), så fanger vi trafik ved hjælp af "port"-filteret:

Hvis vi beslutter os for at fange al trafik for en specifik server, undtagen HTTP og FTP, så er filteret konfigureret i henhold til et af disse to eksempler:

    vært 192.168.0.1 og ikke (port 21 eller port 80)

    vært 192.168.0.1 og ikke port 21 og ikke port 80

Hvis vi ønsker at se al trafik på porten, undtagen DNS, FTP, ARP trafik, så vil logikken være den samme:

    port ikke dns og ikke 21 og ikke arp

Når du fanger applikationstrafik, der bruger dynamiske porte fra et bestemt område, vil filteret se hårdt ud, hvis Libcap-versionen er lavere end 0.9.1:

    (tcp > 1500 og tcp< 1550) or (tcp >1500 og tcp< 1550)

hvis versionerne er senere, vil filteret være mindre truende og forståeligt:

    tcp portrange 1501-1549

For at optage Ethernet-rammer af EAPOL-typen (EAP Messaging Protocol i 802.1x kaldes EAPOL (EAP-indkapsling over LAN)):

    etherproto 0x888e

Til reference er her en liste over Ethernet-rammetyper af specifikke protokoller:

Ethertype (hexadecimal)

Protokol

0x0000 - 0x05DC

IEEE 802.3 længde

0x0101 - 0x01FF

IP, internetprotokol

ARP, Address Resolution Protocol.

Rammerelæ ARP

Raw Frame Relæ

DRARP, Dynamisk RARP. RARP, Reverse Address Resolution Protocol.

Novell NetWare IPX

EtherTalk (AppleTalk over Ethernet)

IBM SNA Services over Ethernet

AARP, AppleTalk Address Resolution Protocol.

EAPS, Ethernet Automatic Protection Switching.

IPX, Internet Packet Exchange.

SNMP, Simple Network Management Protocol.

IPv6, Internet Protocol version 6.

PPP, Point-to-Point Protocol.

GSMP, General Switch Management Protocol.

MPLS, Multi-Protocol Label Switching (unicast).

MPLS, Multi-Protocol Label Switching (multicast).

PPPoE, PPP Over Ethernet (Discovery Stage).

PPPoE, PPP Over Ethernet (PPP Session Stage).

LWAPP, Light Weight Access Point Protocol.

LLDP, Link Layer Discovery Protocol.

EAPOL, EAP over LAN.

Loopback (Configuration Test Protocol)

VLAN Tag Protocol Identifier

VLAN Tag Protocol Identifier

Hvis du har brug for at fange trafik af en specifik IP-protokol, kan du bruge et filter:

    ip proto tcp - fange TCP-trafik

    ip proto udp - fanger UDP-trafik

Det korteste filter anvendes til at fange IP-trafik:

For kun at fange unicast-trafik, når udgående og indgående trafik til en netværksenhed analyseres, bruges et filter i følgende format:

    ikke broadcast og ikke multicast

De simple filtre, vi talte om, kan kombineres med simple tegn:

    Negation: ! Ellerikke

    En forening: && ellerog

    Skift: IIellereller

Eksempel: for at fange trafik fra eller til en enhed med adressen 10.10.10.10, men ikke fra netværket 192.168.0.0, vil filteret blive kombineret med negation:

    vært 10.10.10.10 && !net 192.168

Offset-byte-filtre er de mest kraftfulde og forenkler i høj grad livet, men for at bruge dem skal du kende protokollen og placeringen af ​​de felter, du leder efter i pakken. Filtereksemplerne nedenfor vil fange pakker med en specifik feltværdi i overskrifterne eller nyttelasten. Det er nemt at sætte dem op:

Vi skifter med otte bytes i IP-pakken og fanger trafik med en TTL-værdi på 1

Indfang alle TCP-pakker med kildeportadresse 80. Dette svarer til src-port 80-filteret.

Til reference er her byteforskydningen til de mest interessante felter i pakken:

Felt i pakken

Længde i bytes

Filter

IP-headerlængde

IP-pakkelængde

IP-adressekilde

IP-adressedestination

IP Fragmentering

flag = 3 og Offset = 13

ip & 0x2000 = 0x2000 eller ip & 0x1fff !=0x0000

TCP-destinationsport

TCP-headerlængde

For at sikre de modtagne oplysninger, lad os bygge et filter til at fange trafik med en HTTP GET-anmodning. HTTP-protokollen bruger port 80, TCP-transportprotokollen. Værdier i hexadecimal for ordet GET vil se ud som 0x47455420. Et eksempel på et filter, som vi får:

    port 80 og tcp[((tcp & 0xf0 >>2):4]=0x47455420

Som en del af dette materiale har vi analyseret, hvordan man konfigurerer og bruger de enkleste grundlæggende filtre til at fange trafik ved hjælp af Wireshark-protokolanalysatoren.