Wireshark-toepassingsverkeer. Wireshark: Verkeersanalyse voor Linux en Windows. Belangrijkste kenmerken van Wireshark

Wireshark: hoe te gebruiken?

Hallo vrienden! In dit artikel zal ik proberen uit te leggen en je te vertellen over de meest noodzakelijke dingen om te weten bij het gebruik van Wireshark op Linux, en een analyse tonen van drie soorten netwerkverkeer. Deze tutorial is ook van toepassing op Wireshark om onder Windows te werken.

Als informatiebeveiliging nieuw voor je is en je begrijpt heel goed wat een sniffer (traffic analyzer) is, raad ik je aan het artikel te lezen en pas daarna dit artikel over het gebruik van Wireshark.

Zeer populair en uiterst bekwaam netwerkprotocolanalysator Gerald Combs ontwikkelde Wireshark in juni 2006 toen Combs de Ethereal-netwerktool hernoemde die hij ook had gemaakt omdat hij van baan veranderde en de oude naam niet langer kon gebruiken. Tegenwoordig gebruiken de meeste mensen Wireshark en Ethereal is geschiedenis.

Wireshark: de beste snuffelaar

Je vraagt ​​je misschien af ​​hoe Wireshark verschilt van andere netwerksniffers - behalve dat het gratis is - en waarom beginnen we niet gewoon met het promoten van tcpdump voor het vastleggen van pakketten?

Het belangrijkste voordeel van Wireshark is dat het een grafische applicatie is. Het verzamelen van data en het inspecteren van netwerkverkeer in de gebruikersinterface is erg handig, omdat je hiermee om kunt gaan met complexe netwerkdata.

Hoe gebruik ik Wireshark?

Voor een beginner om Wireshark te begrijpen, moet hij netwerkverkeer begrijpen. Zo ja, dan is het doel van dit artikel om u de basis van TCP/IP te leren, zodat u de juiste conclusies kunt trekken uit het netwerkverkeer dat u analyseert.


TCP-pakket en IP-pakketformaat.

Als u Wireshark als gewone gebruiker gebruikt, kunt u de netwerkinterfaces niet gebruiken om gegevens te verzamelen vanwege de standaard Unix-bestandsmachtigingen die beschikbaar zijn in de netwerkinterfaces. Het is handiger om Wireshark als root (sudo wireshark) uit te voeren bij het verzamelen van gegevens en als gewone gebruiker voor gegevensanalyse.

Als alternatief kunt u netwerkgegevens verzamelen met het opdrachtregelhulpprogramma tcpdump als root en deze vervolgens analyseren met Wireshark. Houd er rekening mee dat het verzamelen van gegevens met Wireshark op een zwaar belast netwerk uw computer kan vertragen, of erger nog, kan voorkomen dat u de gegevens verzamelt die u nodig hebt, omdat Wireshark meer systeembronnen vereist dan de opdrachtregeltool. In dergelijke gevallen is de slimste oplossing voor het verzamelen van netwerkverkeersgegevens het gebruik van tcpdump.

Netwerkgegevens vastleggen met Wireshark

De eenvoudigste manier om te beginnen met het vastleggen van netwerkpakketgegevens, is door de gewenste interface te selecteren nadat u Wireshark hebt gestart en op Start te klikken. Wireshark zal netwerkgegevens op uw scherm weergeven op basis van uw netwerkverkeer. Let op: er kan meer dan één interface worden geselecteerd. Als u niets weet over TCP, IP of andere protocollen, kan het resultaat moeilijk te lezen en te begrijpen zijn.

Als u wilt stoppen met het vastleggen van gegevens, kiest u Vastleggen> Stoppen in het menu. U kunt ook op het vierde pictogram van links klikken, met een rood vierkant (dit is een afkorting voor "Stop met het vastleggen van live gegevens") in de hoofdwerkbalk (let op, de exacte locatie hangt af van de versie van Wireshark die u heeft). Deze knop kan alleen worden ingedrukt tijdens het verzamelen van netwerkgegevens.

Als u de beschreven vastlegmethode gebruikt, kunt u de standaard vastlegopties die in Wireshark zijn geconfigureerd niet wijzigen. U kunt de opname-opties bekijken en wijzigen door Opname> Opties te kiezen in het menu. Hier kunt u de netwerkinterface(s) selecteren, uw IP-adres bekijken, gegevensverzamelingsfilters toepassen, uw netwerkkaart omschakelen om alle netwerkpakketten te ontvangen en de verzamelde gegevens opslaan in een of meerdere bestanden. Je kunt het zelfs vertellen om te stoppen met het vastleggen van pakketten wanneer het een bepaald aantal netwerkpakketten bereikt, of een bepaalde tijd, of een bepaalde hoeveelheid gegevens (in bytes).

Standaard slaat Wireshark de verzamelde gegevens niet op, maar u kunt deze later altijd bewaren. Er wordt aangenomen dat het het beste is om eerst de netwerkpakketten op te slaan en vervolgens te onderzoeken, tenzij u een speciale reden hebt om het anders te doen.

Met Wireshark kunt u reeds verzamelde netwerkgegevens uit een groot aantal verschillende bestandsindelingen lezen en analyseren, waaronder tcpdump, libpcap, Sun's snoop, HP's nettl, K12-tekstbestanden en meer. Kortom, Wireshark kan bijna elk formaat van verzamelde netwerkgegevens lezen. Evenzo kunt u met Wireshark verzamelde gegevens in verschillende formaten opslaan. U kunt Wireshark zelfs gebruiken om een ​​bestand van het ene formaat naar het andere te converteren.

U kunt een bestaand bestand ook exporteren als een tekstbestand vanuit het menu Bestand. Deze optie is voornamelijk bedoeld om netwerkgegevens handmatig te verwerken of in een ander programma in te voeren.

Er is een optie voorzien om uw pakketten af ​​te drukken. Ik heb het nog nooit in het echt gebruikt, maar voor educatieve doeleinden kan het erg handig zijn om de pakketten en hun volledige inhoud af te drukken.

Wireshark-displayfilters

Als capture-filters worden toegepast tijdens het vastleggen van netwerkgegevens, houdt Wireshark geen rekening met netwerkverkeer dat niet overeenkomt met het filter; terwijl weergavefilters worden toegepast na het vastleggen van gegevens en het netwerkverkeer "verbergen" zonder het te verwijderen. U kunt het weergavefilter altijd uitschakelen en uw verborgen gegevens terugkrijgen.

Kortom, weergavefilters worden als nuttiger en veelzijdiger beschouwd dan filters voor gegevensverzameling, omdat u van tevoren nauwelijks weet welke informatie u gaat verzamelen of besluit te bestuderen. Het gebruik van filters bij het vastleggen van gegevens bespaart u echter tijd en schijfruimte, wat de belangrijkste reden is om filters te gebruiken.

Wireshark markeert het syntactisch correcte filter met een lichtgroene achtergrond. Als de syntaxis fouten bevat, wordt de achtergrond roze.

Weergavefilters ondersteunen vergelijkingsoperatoren en booleaanse operatoren. Weergavefilter http.respons.code


Drie pakketten (SYN, SYN + ACK en ACK) drieweg-TCP-verbinding

404 && ip.addr == 192.168.1.1 toont verkeer dat ofwel van het IP-adres 192.168.1.1 gaat of naar het IP-adres 192.168.1.1 gaat, dat ook een 404 (niet gevonden) HTTP-antwoordcode bevat. Het filter Boo1p &&!Ip &&!Agr sluit BOOTP-, IP- en ARP-verkeer uit van het resultaat. Filter eth.addr == 01: 23: 45: 67: 89: ab && tcp.port == 25 geeft verkeer weer van of naar het netwerkapparaat met MAC-adres 01: 23: 45: 67: 89: ab dat TCP-poortnummer 25 op inkomende en uitgaande verbindingen.

Onthoud dat weergavefilters problemen niet op magische wijze oplossen. Dit zijn uiterst nuttige hulpmiddelen als ze correct worden gebruikt, maar u moet nog steeds de resultaten interpreteren, het probleem vinden en zelf nadenken over de juiste oplossing.

Vervolg van het artikel op de volgende pagina. Om naar de volgende pagina te gaan, klikt u op knop 2, die zich onder de knoppen van sociale netwerken bevindt.

Invoering

Bij het onderzoeken van netwerkinteracties op het niveau van individuele pakketten, datagrammen, segmenten en berichten op applicatieniveau, is het vaak nodig om verkeersfilterproblemen op te lossen. De essentie van het toepassen van filters is het vinden en markeren van groepen, evenals individuele transmissie-eenheden die van belang zijn voor verdere analyse. Deze functionaliteit is uiterst nuttig in tools die zijn ontworpen om netwerkverkeer (sniffers) te onderscheppen en te bestuderen, en helpt een systeembeheerder of om nuttige informatie te vinden in de intensieve informatiestromen van moderne netwerken.

Het open source multi-platform dat in dit artikel wordt besproken Wireshark-protocolanalysator omvat twee filtersubsystemen: verkeersonderschepping (vangfilters) en weergave (weergavefilters). Zoals u weet, is het eerste subsysteem gebaseerd op de taal van de bibliotheekregels van Pcap (Packet Capture). Met name het "opschonen" van verkeer tijdens het verzamelen, vermindert het aantal onderschepte pakketten, waardoor ruimte in het geheugen of op de harde schijf wordt bespaard. Wat betreft de weergavefilters, deze zijn, als ingebouwde Wireshark-functie, ontworpen om reeds onderschept verkeer in de grafische interface van het programma aan te passen.


Over filtertalen

De mogelijkheid om verkeer te onderscheppen voor bewakings- en foutopsporingsdoeleinden is aanwezig in de netwerkstack van elk besturingssysteem. Het wordt uitgevoerd met behulp van het zogenaamde pakketfilter, dat deel uitmaakt van de systeemkernel en ontvangen/verzonden pakketten ontvangt van het stuurprogramma van de netwerkkaart. De bekendste pakketfilters voor Unix-achtige besturingssystemen zijn BPF (Berkeley Packet Filter) en LSF (Linux Socket Filter).

Dus een steekproef van verkeer volgens de gespecificeerde criteria in BPF geïmplementeerd in de vorm van een speciale case-georiënteerde primitieve machinetaal, waarvoor de pakketfilter feitelijk als tolk fungeert. Programma's in deze taal kunnen fragmenten uit pakketten extraheren, de ontvangen gegevens vergelijken met bepaalde waarden, afzonderlijke bits controleren, rekenkundige bewerkingen uitvoeren en vervolgens pakketten accepteren of weggooien, afhankelijk van de resultaten van al deze tests. De "low-level"-benadering is handig voor programmeurs die bibliotheken met netwerkfuncties en verschillende hulpprogramma's ontwikkelen.

Gewone gebruikers hebben de neiging om "high-level" filtertalen te gebruiken. Een typische toepassingstaal die in een sniffer wordt gebruikt om verkeersregels te beschrijven, maakt het mogelijk om expressieprimitieven te construeren op basis van individuele berichtvelden van verschillende protocollen. In dit geval kan de verhouding van de veldwaarde tot een bepaalde waarde (gelijk, groter, kleiner), het samenvallen van de waarde met de sjabloon, of gewoon de aanwezigheid van het veld in het bericht als criterium fungeren. Primitieven kunnen worden gecombineerd tot een complexe uitdrukking met behulp van logische functies ("en", "of", "niet", enz.).

In de open source-wereld is de de facto standaard voor een filtertaal de syntaxis die wordt gebruikt in de Pcap-bibliotheek. Het is niet alleen de basis voor Wireshark, maar ook voor andere open source utilities, zoals bijvoorbeeld de in de Unix-wereld bekende tcpdump console sniffer. Eigenlijk zijn Pcap en tcpdump een gezamenlijk project. Het populaire Snort-inbraakdetectiesysteem gebruikt ook het Pcap-formaat om verkeersfilterregels te definiëren in de pakketopnamemodus.


Basisprincipes van Pcap-filter

Dus, het filter bevat een of meer primitieven... Een primitief bestaat meestal uit een object (nummer of naam) en een of meer specificeerders die het protocol definiëren (ether, fddi, tr, wlan, ip, ip6, arp, rarp, decnet, tcp, udp), richting (src, dst , any en etc.) en het objecttype (host, net, port, etc.). Om bijvoorbeeld pakketten te onderscheppen waarvan het uitgaande IP-adres 192.168.56.102 is, moet u een filter als dit gebruiken:

Ip src-host 192.168.56.102

Of om ARP-verkeer op te nemen waarbij hosts op het 192.168.56.0-netwerk betrokken zijn:

Arp-net 192.168.56

Veelgebruikte kwalificaties worden getabelleerd (optionele componenten worden aangeduid met -, alternative - |, objects -< >). Een volledige lijst is te vinden in de Pcap-documentatie (voor Linux, beschikbaar in de gebruikershandleiding met het commando man pcap-filter).

Om verschillende primitieven in één uitdrukking te combineren, worden logische functies gebruikt: "en" (aangegeven met het trefwoord en of &&), "of" (of of ||), "niet" (niet of!). Om bijvoorbeeld verkeer van het SSH-protocol voor de host 192.168.56.102 te onderscheppen, is de volgende constructie geschikt:

Tcp-poort 22 en host 192.168.56.102

Gebruik haakjes voor zeer complexe uitdrukkingen. Bijvoorbeeld:

Net 192.168.56.0/24 en (tcp-poort 21 of tcp-poort 22)

Onbeperkte Pcap-filters

Voor degenen die gewend zijn om volgens hun eigen regels te leven, biedt de Pcap-bibliotheek willekeurige toegang tot de inhoud van netwerkpakketten, gebruikmakend van de volledige kracht van het OS-pakketfilter. Dit wordt gedaan met behulp van een vrij eenvoudige syntaxis:

Proto [exp: maat]

waarbij de proto-parameter een van de protocollen is die door Wireshark worden ondersteund; exp is de offset in bytes vanaf het begin van de laag gespecificeerd in proto, en size is het aantal bytes dat moet worden opgehaald.

Aangezien het in primitieven mogelijk is om vergelijkingsbewerkingen te gebruiken in de notatie van de programmeertaal C (>, =,

Het voorbeeld heeft echter alleen methodologische betekenis, aangezien dit protocol gemakkelijk kan worden gefilterd door de standaard icmp-regel.

Maar het selecteren van HTTP-verzoeken die door de GET-methode worden gedaan uit verkeer on-the-fly is niet zo'n gemakkelijke taak voor Pcap. En de in de documentatie voorgestelde oplossing beweert origineel te zijn:

Poort 80 en tcp [((tcp & 0xf0) >> 2): 4] = 0x47455420

Dit filter controleert de bytes "G", "E", "T" en "" (hex-waarden 47, 45, 54 en 20) onmiddellijk na de TCP-header, waarvan de lengte wordt berekend door de uitdrukking " tcp & 0xf0) >> 2".

Zoals u in het laatste voorbeeld kunt zien, zijn naast vergelijkingsbewerkingen binaire operatoren C (+, -, *, /, &, |,>) ook direct beschikbaar voor de gebruiker in de primitieven.


Over weergavefilters

Als we het hebben over de verschillen weergavefilters van Pcap-filters, dan naast het formaat voor het schrijven van specificeerders (de protocolvelden zien eruit als. gelijk, le - kleiner dan of gelijk) en binaire operatoren (en, of, xor, niet), evenals ondersteuning voor subtekenreeksen.

Het ophalen van substrings in velden is vergelijkbaar met het extraheren van willekeurige bytes uit een pakket in Pcap-filters, maar het heeft een flexibelere syntaxis. Een uitdrukking als deze controleert bijvoorbeeld de eerste 4 bytes van het oorspronkelijke MAC-adresveld van een Ethernet-frame (equivalent):

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

Het verschil tussen filters is natuurlijk dat Pcap-regels worden gebruikt bij het onderscheppen van verkeer; in de grafische interface worden ze geconfigureerd in het dialoogvenster "Opnameopties" (het is trouwens mogelijk om veelgebruikte uitdrukkingen te onthouden). Weergavefilters werken met pakketten die zich in de lijst van het hoofdprogrammavenster bevinden:

Het ingebouwde filtersubsysteem van Wireshark is veel gebruiksvriendelijker. Het is met name niet nodig om de details van het berichtformaat (offsets, veldgroottes, enz.) te onthouden. Het vereiste berichtveld voor dit protocol is gemakkelijk te vinden in het venster Filterexpressie, en u kunt ook een voorwaarde en een vooraf gedefinieerde waarde selecteren in de lijst voor dit veld, of uw eigen waarde specificeren. Voor elk van de vele protocollen die door Wireshark worden ondersteund, kunt u op deze eenvoudige manier een weergavefilter configureren.

Een bijna academisch voorbeeld van het bepalen wanneer een bufferoverloop van TCP-segmenten wordt bepaald met behulp van de volgende toewijzingsregel is zeer onthullend:

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

Gevolgtrekking

De Wireshark-protocolanalysator heeft een krachtig pakketfiltersysteem, waardoor het mogelijk is om complexe regels te maken met behulp van logische functies en binaire operators. Opnametijdfilters zijn standaard en zullen bekend zijn bij gebruikers die op Pcap gebaseerde netwerkhulpprogramma's zoals tcpdump hebben gebruikt. De regels voor het weergeven van pakketten zijn gemakkelijk te leren en te gebruiken, dankzij de mogelijkheden van de grafische interface van het betreffende programma. Over het algemeen kunt u met de functionaliteit van het Wireshark-filtersysteem vrij effectief profiteren van het pakketfilter op laag niveau.

Gewoon een enorm aantal verschillende filters. En er is een enorme hoeveelheid documentatie over deze filters, die niet zo gemakkelijk te begrijpen is. Ik heb de meest interessante en meest gebruikte Wireshark-filters voor mij verzameld. Voor beginnende gebruikers kan dit een beetje een gids zijn voor Wireshark-filters, een startpunt om te verkennen. Ook hier in de reacties nodig ik je uit om veelvoorkomende filters die je vaak gebruikt te delen, evenals interessante vondsten - ik zal ze aan deze lijst toevoegen.

Vergeet niet dat Wireshark weergavefilters en opnamefilters heeft. Hier beschouw ik weergavefilters, die worden ingevoerd in het hoofdprogrammavenster in het bovenste veld net onder het menu en pictogrammen van de hoofdfuncties.

Om de betekenis van filters volledig te begrijpen en wat ze precies laten zien, moet u begrijpen hoe het netwerk werkt. Om kennis te maken met de principes van het netwerk en protocollen, wordt aanbevolen om de cyclus over de werking van computernetwerken te bestuderen, het eerste artikel van de cyclus "" (de rest van het voorbereidingsproces).

Sommige van de filters hier zijn in algemene termen geschreven en sommige worden als specifieke voorbeelden gegeven. Onthoud dat u in ieder geval uw gegevens kunt vervangen, bijvoorbeeld het poortnummer wijzigen in wat u maar wilt, en hetzelfde doen met het IP-adres, MAC-adres, tijdswaarde, enz.

Wireshark-filteroperators

Filters kunnen verschillende betekenissen hebben, zoals tekenreeks, hexadecimaal of getal.

Als er naar een onnauwkeurige overeenkomst wordt gezocht (beter geschikt voor niet-numerieke waarden), gebruik dan bevat... Om bijvoorbeeld TCP-pakketten weer te geven die de string-hackware bevatten, hebt u het volgende filter nodig:

Tcp bevat hackware

Operators worden gebruikt om exacte waarden te vinden. Laten we ze eens bekijken:

Zoals je ziet zijn er twee varianten van schrijven, als we bijvoorbeeld willen aangeven dat de filterwaarde ergens aan gelijk is, dan kunnen we gebruik maken van == of gelijk aan.

Er kunnen vrij complexe constructies worden gemaakt van filters met logische operanden, maar blijkbaar, als hetzelfde filter twee keer wordt gebruikt met vergelijkingsoperators, bijvoorbeeld, zoals hier, in een poging om niet op één poort, maar op een reeks poorten te filteren:

Tcp.poort> = 8000 && tcp.poort<=8180

dan de filterwaarde (in dit geval tcp.poort) wordt overschreven door de laatste waarde, dus als resultaat krijgen we, in plaats van het verwachte gedrag, het resultaat van het werk van alleen het laatste deel, in dit geval is het

Tcp.poort<=8180

Onthoud deze fout!

Bij gebruik met == (gelijk aan) deze bug ontbreekt.

Wireshark Filter Booleaanse operatoren

Met logische operators kunt u gedetailleerde filters maken met meerdere voorwaarden tegelijk. Het wordt aanbevolen om extra haakjes te gebruiken, omdat u anders misschien niet de waarde krijgt die u verwacht.

Operator Beschrijving
en / && Logische AND, gegevens worden uitgevoerd als ze overeenkomen met beide delen van het filter. Filter bijvoorbeeld ip.src == 192.168.1.1 en tcp toont alleen pakketten die afkomstig zijn van 192.168.1.1 en die zijn gekoppeld aan het TCP-protocol. Alleen gegevens die aan beide voorwaarden voldoen, worden weergegeven.
of / || Logische OF, het is voldoende dat slechts één voorwaarde waar is; als beide waar zijn, dan past dat ook. Bijvoorbeeld filter tcp.port == 80 of tcp.port == 8080 toont TCP-pakketten die zijn gekoppeld (bron of bestemming) met poort 80 of 8080.
niet /! Boolean wordt NIET gebruikt wanneer we bepaalde pakketten willen uitsluiten. Dat wil zeggen dat alle pakketten worden getoond, behalve die welke voldoen aan de voorwaarde die volgt op de NOT. Bijvoorbeeld filter !dns toont alle pakketten behalve DNS.

Combinatie voorbeelden:

HTTP tonen of DNS-verkeer:

Http of dns

Toon al het verkeer, Daarnaast ARP, ICMP en DNS:

(arp of icmp of dns)

Interfacefilter

Toon alleen verzonden of ontvangen pakketten op de wlan0-interface:

Frame.interface_name == "wlan0"

Datalink-protocolverkeer

ARP-verkeer weergeven:

Toon ARP-frames verzonden vanaf apparaat met MAC-adres 00: c0: ca: 96: cf: cb:

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

Toon ARP-frames verzonden vanaf het apparaat met IP-adres 192.168.50.90:

Arp.src.proto_ipv4 == 192.168.50.90

Toon ARP-protocolframes die zijn verzonden naar apparaat met MAC-adres 00: 00: 00: 00: 00: 00 (Dit adres wordt gebruikt wanneer het protocol het doel-MAC-adres probeert te achterhalen. Een ander populair adres dat u in verwarring kan brengen, is ff: ff: ff: ff: ff: ff, dit adres wordt uitgezonden, d.w.z. berichten met dit adres zijn bedoeld voor alle apparaten op het lokale netwerk):

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

Toon ARP-frames verzonden naar het apparaat met IP-adres 192.168.50.1:

Arp.dst.proto_ipv4 == 192.168.50.1

Ethernet-verkeer weergeven:

Toon frames (in het algemeen alle frames, niet alleen ARP, zoals het geval was in de vorige voorbeelden) verzonden vanaf een apparaat met een MAC-adres van 00:c0:ca:96:cf:cb:

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

Toon frames verzonden naar apparaat met MAC-adres 78: cd: 8e: a6: 73: be:

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

Gateway-protocolverkeer

IPv4-protocolfiltering

Toon IP-verkeer (dit omvat TCP, UDP, evenals applicatielaagprotocollen DNS, HTTP - dat wil zeggen, bijna alles, behalve linklaagprotocollen, die geen IP-adressen gebruiken voor gegevensoverdracht (in lokale Ethernet-netwerken gebruiken ze MAC - adressen)):

Meer specifiek verwijst dit naar IPv4-verkeer, dat meestal eenvoudigweg IP (Internet Protocol) wordt genoemd.

Toon verkeer dat is gekoppeld aan een specifiek IP-adres (schrijf het in plaats van x.x.x.x). Er worden pakketten getoond waarin dit IP-adres de gegevensbron OF de bestemming is:

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

Toon verkeer dat is gekoppeld aan de opgegeven twee IP-adressen. Volgens de enig mogelijke logica zal een van deze adressen de bron zijn en de andere het afleveradres.

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

Toon verkeer afkomstig van een host met IP-adres 138.201.81.199:

Ip.src == 138.201.81.199

Toon verkeer bestemd voor een host met IP-adres 138.201.81.199:

Ip.dst == 138.201.81.199

Houd er rekening mee dat het IP-protocol werkt met IP-adressen, maar niet met poorten. Poorten maken deel uit van de TCP- en UDP-protocollen. Het IP-protocol is alleen verantwoordelijk voor het routeren van verkeer tussen hosts.

Subnetten en IP-bereiken filteren in Wireshark

U kunt een subnet opgeven in plaats van één IP-adres:

Ip.addr == 192.168.1.0/24

Filteren van verkeer verzonden vanaf een specifiek IP-bereik. Als u verkeer dat afkomstig is van een subnet moet filteren, gebruik dan een filter met de volgende vorm:

Ip.src == 192.168.1.0/24

Filteren van verkeer dat bedoeld is om naar een specifiek IP-bereik te worden verzonden. Als u verkeer moet filteren waarvan de bestemming een subnet is, gebruik dan een filter van het formulier:

Ip.dst == 192.168.1.0/24

IPv6-protocolfiltering

Toon IPv6-verkeer (Internet Protocol versie 6):

Filteren op IPv6-adres. Gebruik het filter om te filteren op IPv6-adres:

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

IPv6-subnetten en -bereiken filteren in Wireshark

U kunt een subnet voor filteren opgeven in plaats van één IPv6-adres:

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

Als u verkeer moet filteren dat afkomstig is van een specifiek IPv6-adres:

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

Als u verkeer dat naar een specifiek IPv6-adres wordt gestuurd, moet filteren:

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

Filteren van verkeer verzonden vanuit een specifiek IPv6-bereik. Als u verkeer dat afkomstig is van een subnet moet filteren, gebruik dan een filter met de volgende vorm:

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

Filteren van verkeer dat bedoeld is om naar een specifiek IPv6-bereik te worden gestuurd. Als u verkeer moet filteren waarvan de bestemming een subnet is, gebruik dan een filter van het formulier:

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

ICMPv6 (Internet Control Message Protocol) filtering in Wireshark wordt gedaan door een filter:

Gebruik het filter om pakketten te zien die fungeren als ARP voor IPv6:

Icmpv6.type == 133 of icmpv6.type == 134 of icmpv6.type == 135 of icmpv6.type == 136 of icmpv6.type == 137

Andere IP-adresfilters zijn vergelijkbaar voor IPv6 en IPv4.

Protocolverkeer van transportlaag

Om alleen TCP-verkeer te zien:

Toon verkeer waarvan de bron- of bestemmingspoort een specifieke poort is, bijvoorbeeld 8080:

Tcp.poort == 8080

Toon verkeer afkomstig van poort 80:

Tcp.srcport == 80

Toon verkeer dat wordt verzonden naar de service die luistert op poort 80:

Tcp.dstport == 80

Toon TCP-pakketten met SYN-vlag ingeschakeld:

Tcp.flags.syn == 1

Toon TCP-pakketten met SYN-vlag ingeschakeld en ACK-vlag uitgeschakeld:

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

Hetzelfde geldt voor andere vlaggen:

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

Je kunt ook de syntaxis gebruiken zoals tcp.flags == 0x0XX, Bijvoorbeeld:

  • Fin it tcp.flags == 0x001
  • SYN dit tcp.flags == 0x002
  • RST is tcp.flags == 0x004
  • ACK dit tcp.flags == 0x010
  • Tegelijkertijd geïnstalleerd ACK en FIN is tcp.flags == 0x011
  • Tegelijkertijd geïnstalleerd ACK en SYN is tcp.flags == 0x012
  • Tegelijkertijd geïnstalleerd ACK en RST is tcp.flags == 0x014

Om pakketten te tonen die een string bevatten, bijvoorbeeld de hackware string:

Tcp bevat hackware

Volg TCP-stroom X:

Tcp.stream eq X

Filter op streamnummer:

Tcp.seq == x

Hertransmissies van pakketten weergeven. Helpt bij het volgen van vertraging van de applicatieprestaties en pakketverlies:

Dit filter bracht problematische pakketten naar buiten (verloren segmenten, hertransmissies, enz.). Dit filter zal TCP Keep-Alive-pakketten doorlaten, maar ze duiden niet op een probleem.

Tcp.analyse.vlaggen

Filters voor het beoordelen van de kwaliteit van een netwerkverbinding.

De volgende specificaties zijn van toepassing op TCP-frames. Bovendien zijn ze niet gebaseerd op de frameheaders - de betreffende kenmerken (gegevens overslaan, duplicaten) worden toegewezen door het Wireshark-programma op basis van de analyse.

Het filter geeft informatie weer over frames met de ACK-vlag, die duplicaten zijn. Een groot aantal van dergelijke frames kan wijzen op communicatieproblemen:

Tcp.analyse.duplicate_ack_num == 1

Filter voor het weergeven van frames waarvoor het vorige segment niet is vastgelegd:

Tcp.analyse.ack_lost_segment

Dit is normaal aan het begin van het vastleggen van gegevens, aangezien informatie niet vanaf het begin van de sessie wordt onderschept.

Om frames weer te geven die opnieuw zijn verzonden (opnieuw verzonden):

Tcp.analyse.retransmission

Frames weergeven die niet in de juiste volgorde zijn ontvangen:

Tcp.analyse.out_of_order

Alleen UDP-verkeer zien:

Er worden geen vlaggen gebruikt voor UDP. Voor dit protocol kunt u alleen een poort specificeren.

Toon verkeer afkomstig van poort 53:

Udp.srcport == 53

Toon verkeer dat wordt verzonden naar de service die luistert op poort 53:

Udp.dstport == 53

Een UDP-pakket dat een specifieke string bevat, bijvoorbeeld een hackware-string:

Udp bevat hackware

Alleen ICMP-verkeer zien:

Alleen ICMP v6-verkeer zien (zesde versie)

Toon alle ping-reacties:

Icm.type == 0

Toon alle ping-verzoeken:

Icm.type == 8

Toon alle host en poort niet beschikbaar / geweigerde fouten

Icmp.type == 3

Toon alle pogingen om routering om te leiden met ICMP:

Icm.type == 8

Een voorbeeld van het gebruik van de CODE-waarde, het volgende filter toont berichten over poort niet beschikbaar:

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

Applicatie protocol verkeer

Voor de applicatielaagprotocollen HTTP, DNS, SSH, FTP, SMTP, RDP, SNMP, RTSP, GQUIC, CDP, LLMNR, SSDP zijn er filters die dezelfde naam hebben als de protocollen zelf, maar in kleine letters zijn geschreven.

Om bijvoorbeeld HTTP-verkeer te zien:

Om het verkeer van het nieuwe HTTP/2-protocol te zien:

Onthoud dat bij het beslissen tot welk protocol de verzonden gegevens behoren, het programma uitgaat van het nummer van de gebruikte poort. Als een niet-standaard poort wordt gebruikt, kan het programma de vereiste gegevens niet vinden. Als er bijvoorbeeld verbinding is gemaakt met SSH op poort 1234, dan is het filter ssh zal geen SSH-verkeer vinden.

Filter dat alleen de gegevens toont die zijn ingediend door de POST-methode:

Http.request.method == "POST"

Filter dat alleen gegevens toont die zijn verzonden met de GET-methode:

Http.request.method == "GET"

Zoeken naar verzoeken aan een specifieke site (host):

Http.host == " "

Zoek naar aanvragen voor een specifieke site op een deel van de naam:

Http.host bevat "here.partial.name"

Filter voor het weergeven van HTTP-verzoeken waarin cookies zijn doorgegeven:

Http.cookie

Verzoeken waarbij de server een cookie heeft geplaatst in de browser van de gebruiker.

Http.set_cookie

Zoeken naar geüploade afbeeldingen:

Http.content_type bevat "afbeelding"

Zoeken naar bepaalde soorten afbeeldingen:

Http.content_type bevat "gif" http.content_type bevat "jpeg" http.content_type bevat "png"

Zoeken naar bestanden van een bepaald type:

Http.content_type bevat "tekst" http.content_type bevat "xml" http.content_type bevat "html" http.content_type bevat "json" http.content_type bevat "javascript" http.content_type bevat "x-www-form-urlencode" http. content_type bevat "gecomprimeerd" http.content_type bevat "applicatie"

Zoek in Wireshark naar verzoeken om bestanden van een bepaald type te ontvangen. Om bijvoorbeeld naar overgedragen ZIP-archieven te zoeken:

Http.request.uri bevat "zip"

Filters kunnen worden gebruikt in plaats van http.request.uri voor meer precisie http.request.uri.path of http.request.uri.query, bijvoorbeeld om te zoeken naar verzoeken om JPG-bestanden te downloaden (links naar afbeeldingen):

Http.request.uri.path bevat "jpg"

U kunt ook verzoeken uitfilteren die een specifieke REFERER HTTP-headerwaarde bevatten. Om bijvoorbeeld te zoeken naar zoekopdrachten waarin ru-board.com de verwijzer is:

Http.referer bevat "ru-board.com"

HTTP.autorisatie

Zoeken naar bestanden in een HTTP-stream:

Http.file_data

Om te zien welke HTTP-latentiegegevens worden ontvangen, wordt de volgende constructie gebruikt:

Http.tijd> 1

Het toont verkeer dat later dan 1 seconde is ontvangen.

Om problemen te onderzoeken, kunt u de status van de HTTP-responscodes analyseren. Het volgende filter toont bijvoorbeeld verkeer dat een 404 Not Found-fout heeft ontvangen:

Http.response.code == 404

Het volgende filter is erg interessant. Ten eerste laat het zien hoe complexe structuren kunnen worden opgebouwd uit individuele filters. Ten tweede kunt u HTTP-verzoeken en webactiviteit in het algemeen onderzoeken, waarbij onnodige gegevens worden uitgesloten. Met dit filter kunt u webactiviteit op hoog niveau bekijken. De regels tussen de haakjes sluiten afbeeldingen, Javascript-bestanden en stylesheets uit - alles wat de pagina intern opvraagt. Als de bestudeerde pagina's andere ingebouwde objecten bevatten, sluit ze dan op een vergelijkbare manier uit:

Http.request &&! (Http.request.uri bevat ".ico" of http.request.uri bevat ".css" of http.request.uri bevat ".js" of http.request.uri bevat ".gif" of http.request.uri bevat ".jpg")

Om alle DNS-verzoeken en antwoorden te zien:

Om te zien welke DNS-lookups lang duurden:

DNS-tijd> 1

Er worden antwoorden weergegeven die meer dan een seconde nadat het verzoek is verzonden, zijn binnengekomen.

Dit filter laat zien welke dns-verzoeken niet goed kunnen worden opgelost:

DNS.vlaggen.rcode! = 0

Alleen DNS-verzoeken weergeven:

Dns.flags.respons == 0

Alleen DNS-antwoorden weergeven:

Dns.flags.respons == 1

Toon verzoeken en reacties daarop, waarbij IP wordt gezocht voor google.com:

Dns.qry.name == "google.com"

Toon DNS-query's en antwoorden voor A-record:

Dns.qry.type == 1

Toon DNS-query's en antwoorden voor AAAA-records:

DNS.qry.type == 28

Toon antwoorden waarin 216.58.196.3 wordt verzonden als IP voor het A-record:

DNS.a == 216.58.196.3

Toon antwoorden waarbij 2a01: 4f8: 172: 1d86 :: 1 wordt verzonden als IP voor het AAAA-record:

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

Toon records van CNAME apollo.archlinux.org:

Dns.cname == "apollo.archlinux.org"

Toon antwoorden langer dan 30:

DNS.resp.len> 30

Toon verzoeken met een lengte van meer dan 25:

Dns.qry.naam.len> 25

Toon reacties van DNS-servers waarop recursie beschikbaar is:

Dns.flags.recavail == 1

Toon reacties van DNS-servers waarop recursie niet beschikbaar is:

Dns.flags.recavail == 0

Is recursie wenselijk (als de aangevraagde DNS-server geen hostnaaminformatie heeft, mocht deze andere DNS-servers om deze informatie vragen):

Dns.flags.recdesired == 1

Als het verzoek bevat: 1 , dan is recursie nodig als 0 - dan is het niet wenselijk.

Of niet-geverifieerde gegevens worden geaccepteerd ( 0 betekent niet accepteren, 1 betekent accepteren):

Dns.flags.checkdisable == 0

Om te zien hoe IP-adressen worden toegewezen via DHCP:

Udp.dstport == 67

Bootp.optie.dhcp

Om DHCP-verzoeken weer te geven:

Bootp.optie.dhcp == 3

Om DHCP Discover weer te geven:

Bootp.optie.dhcp == 1

MKB-filter. Dit filter in de Info-kolom toont de volledige boom (bol) van verbindingen, open mappen en geopende bestanden in de trace.

Smb2.cmd == 3 of smb2.cmd == 5

Filters voor wifi-frames

4-way handshake-elementen weergeven (d.w.z. EAPOL-frames):

Bakenframes tonen:

Wlan.fc.type_subtype == 0x08

Responsframes tonen:

Wlan.fc.type_subtype == 0x05

Alles tegelijk weergeven: EAPOL, bakens, sondereactie:

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

Toon draadloze frames voor een specifiek apparaat met een BSSID MAC-adres:

Wlan.addr == BSSID

Toon EAPOL, Beacons, Probe Response voor een specifiek apparaat met MAC-adres 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

Toon alle PMKID's:

Eapol && wlan.rsn.ie.pmkid

Toon PMKID, bakens, sondereactie:

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

Toon PMKID, Beacons, Probe Response voor AP met MAC-adres 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

Toon alleen het eerste bericht van de handdruk:

Wlan_rsna_eapol.keydes.msgnr == 1

Alleen het tweede bericht van de handdruk weergeven (kan worden gebruikt om de handdruk met een willekeurig nummer te berichten):

Wlan_rsna_eapol.keydes.msgnr == 2

Frames weergeven voor toegangspunten met een datasnelheid van 1 Mb/s:

Wlan_radio.data_rate == 1

Toon frames voor access points met een snelheid boven de 10 Mb/s:

Wlan_radio.data_rate> 10

Toon toegangspunten op een specifieke frequentie:

Radiotap.kanaal.freq == 2412

Toon toegangspunten met een specifiek signaalniveau:

Wlan_radio.signaal_dbm> -50

Filters gerelateerd aan de antenne van het apparaat:

Radiotap.present.antenne == 1

Radiotap.antenne == 1

Als je andere interessante Wireshark-filters kent, deel ze dan in de reacties.

De meeste vragen van gebruikers bij het werken met WireShark zijn filters voor het vastleggen van verkeer. Vandaag zullen we enkele basisvoorbeelden ervan bespreken en u laten zien hoe u ze correct instelt!

Als uw bedrijf tijdens het analyseren van netwerk- of applicatieprestatieproblemen geen gecentraliseerd monitoringsysteem voor applicatieprestaties heeft, en om problemen van 4 tot 7 lagen van het OSI-netwerkmodel te analyseren, moet u een protocolanalysator gebruiken (ook bekend als sniffer ).

Als u geen commerciële oplossing heeft met ingebouwde automatische analysetools of een expertsysteem, dan is dit misschien de meest correcte manier:

    download en installeer op een laptop een van de beste gratis WireShark-protocolanalysers (http://www.wireshark.org/download.html);

    vertrouwd raken met de interface;

    de protocolstack en hun structuur onderzoeken;

    leren werken met filters om verkeer vast te leggen;

    leer werken met filters voor verkeersanalyse.

In dit artikel zullen we ons concentreren op het voorlaatste punt: hoe filters te configureren om verkeer in WireShark vast te leggen.

Voorbeelden van het configureren van WireShark-filters om verkeer vast te leggen

Nadat we een interface hebben gekozen, kunnen we ofwel beginnen met het vastleggen van verkeer in - allemaal op een rij, maar het wordt niet aanbevolen om dit te doen, omdat het bijvoorbeeld met een belasting van 50% op een gigabit-interface slechts een paar milliseconden duurt om te verzenden 100.000 pakjes. Daarom is het belangrijk om te begrijpen welk probleem we oplossen. Dan hebben we in ieder geval al het adres (IP of MAC) van de gebruiker of de applicatie waar hij over klaagt of de server waar hij toegang toe heeft.

Het eenvoudigste filter in Wireshark is dus het IP-adres van het apparaat (host, host) en dit filter ziet er als volgt uit:

Als het probleem meer globaal is en we verkeer van een apart subnet moeten vastleggen, ongeacht de richting van de transmissie, dan passen we het filter toe:

    net 192.168.0.0/24 of net 192.168.0.0 masker 255.255.255.0

Bij het vastleggen van verkeer van een subnet, ziet het filter er als volgt uit:

    src net 192.168.0.0/24 of src net 192.168.0.0 masker 255.255.255.0

En als u alleen inkomend verkeer naar ons subnet wilt zien voor analyse, dan is een van de filters:

    dstnet 192.168.0.0/24

    dst net 192.168.0.0 masker 255.255.255.0

Als de gebruiker klaagt dat de pagina niet wordt geopend in de browser, kan het probleem zijn met de DNS-server (poort 53) of met het HTTP-protocol (poort 80), dan vangen we verkeer op met behulp van het "poort" -filter:

Als we besluiten om al het verkeer voor een specifieke server vast te leggen, met uitzondering van HTTP en FTP, dan wordt het filter geconfigureerd volgens een van deze twee voorbeelden:

    host 192.168.0.1 en niet (poort 21 of poort 80)

    host 192.168.0.1 en niet poort 21 en niet poort 80

Als we al het verkeer op de poort willen zien, behalve DNS, FTP, ARP-verkeer, dan is de logica vergelijkbaar:

    poort niet dns en niet 21 en niet arp

Bij het vastleggen van verkeer van applicaties die dynamische poorten uit een bepaald bereik gebruiken, ziet het filter er moeilijk uit als de Libcap-versie lager is dan 0.9.1:

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

als de versies later zijn, is het filter minder bedreigend en begrijpelijk:

    tcp portrange 1501-1549

Om Ethernet-frames zoals EAPOL vast te leggen (802.1x EAP-protocol wordt EAPOL (EAP encapsulation over LAN) genoemd):

    ether proto 0x888e

Ter referentie zal ik een lijst geven met soorten Ethernet-frames voor specifieke protocollen:

Ethertype (hexadecimaal)

Protocol

0x0000 - 0x05DC

IEEE 802.3 lengte

0x0101 - 0x01FF

IP, internetprotocol

ARP, Adres Resolutie Protocol.

Framerelais ARP

Ruw frame relais

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

Novell Netware IPX

EtherTalk (AppleTalk over Ethernet)

IBM SNA Services via Ethernet

AARP, AppleTalk Address Resolution Protocol.

EAPS, Ethernet Automatische Bescherming Schakelen.

IPX, internetpakketuitwisseling.

SNMP, Simple Network Management Protocol.

IPv6, Internet Protocol versie 6.

PPP, Point-to-Point Protocol.

GSMP, Algemeen 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, lichtgewicht toegangspuntprotocol.

LLDP, Link Layer Discovery Protocol.

EAPOL, EAP via LAN.

Loopback (configuratietestprotocol)

VLAN Tag Protocol-ID

VLAN Tag Protocol-ID

Als u verkeer van een specifiek IP-protocol moet vastleggen, kunt u een filter gebruiken:

    ip proto tcp - TCP-verkeer vastleggen

    ip proto udp - leg UDP-verkeer vast

Het kortste filter wordt gebruikt om IP-verkeer vast te leggen:

Om alleen unicast-verkeer vast te leggen bij het analyseren van uitgaand en inkomend verkeer naar een netwerkapparaat, wordt een filter gebruikt in de volgende indeling:

    niet uitgezonden en niet multicast

De eenvoudige filters waar we het over hadden, kunnen worden gecombineerd met behulp van eenvoudige symbolen:

    Negatie: ! Ofniet

    Een associatie: && ofen

    Afwisseling: IIofof

Voorbeeld: om verkeer van of naar een apparaat met het adres 10.10.10.10, maar niet van het 192.168.0.0-netwerk vast te leggen, wordt het filter aaneengeschakeld met ontkenning:

    host 10.10.10.10 &&!net 192.168

Offset-bytefilters zijn de krachtigste en maken het leven een stuk gemakkelijker, maar u moet het protocol en de locatie van de velden in het pakket kennen om ze te gebruiken. De volgende filtervoorbeelden vangen pakketten op met een specifieke veldwaarde in de headers of payload. Het instellen ervan is eenvoudig:

Verplaats acht bytes in het IP-pakket en leg verkeer vast met TTL = 1

Leg alle TCP-pakketten vast met een bronpoortadres van 80. Dit is het equivalent van het src-poort 80-filter.

Ter referentie, hier is de offset-byte naar de meest interessante velden in het pakket:

Veld in pakket

Lengte in bytes

Filter

Lengte IP-koptekst

IP-pakketlengte

IP-adresbron

IP-adresbestemming

IP-fragmentatie

vlag = 3 en Offset = 13

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

TCP-bestemmingspoort

Lengte TCP-koptekst

Om de ontvangen informatie te consolideren, bouwen we een filter voor het vastleggen van verkeer met een HTTP GET-verzoek. HTTP gebruikt poort 80, het transportprotocol TCP. De hexadecimale waarde van het woord GET ziet eruit als 0x47455420. Een voorbeeld van een filter dat we krijgen:

    poort 80 en tcp [((tcp & 0xf0 >> 2): 4] = 0x47455420

In dit artikel hebben we besproken hoe u de meest elementaire basisfilters kunt configureren en gebruiken voor het vastleggen van verkeer met behulp van de Wireshark-protocolanalysator.

De meeste vragen van gebruikers bij het werken met WireShark zijn filters voor het vastleggen van verkeer. Vandaag zullen we enkele basisvoorbeelden ervan bespreken en u laten zien hoe u ze correct instelt!

Als uw bedrijf tijdens het analyseren van netwerk- of applicatieprestatieproblemen geen gecentraliseerd monitoringsysteem voor applicatieprestaties heeft, en om problemen van 4 tot 7 lagen van het OSI-netwerkmodel te analyseren, moet u een protocolanalysator gebruiken (ook bekend als sniffer ).

Als u geen commerciële oplossing heeft met ingebouwde automatische analysetools of een expertsysteem, dan is dit misschien de meest correcte manier:

    download en installeer op een laptop een van de beste gratis WireShark-protocolanalysers (http://www.wireshark.org/download.html);

    vertrouwd raken met de interface;

    de protocolstack en hun structuur onderzoeken;

    leren werken met filters om verkeer vast te leggen;

    leer werken met filters voor verkeersanalyse.

In dit artikel zullen we ons concentreren op het voorlaatste punt: hoe filters te configureren om verkeer in WireShark vast te leggen.

Voorbeelden van het configureren van WireShark-filters om verkeer vast te leggen

Nadat we een interface hebben gekozen, kunnen we ofwel beginnen met het vastleggen van verkeer in - allemaal op een rij, maar het wordt niet aanbevolen om dit te doen, omdat het bijvoorbeeld met een belasting van 50% op een gigabit-interface slechts een paar milliseconden duurt om te verzenden 100.000 pakjes. Daarom is het belangrijk om te begrijpen welk probleem we oplossen. Dan hebben we in ieder geval al het adres (IP of MAC) van de gebruiker of de applicatie waar hij over klaagt of de server waar hij toegang toe heeft.

Het eenvoudigste filter in Wireshark is dus het IP-adres van het apparaat (host, host) en dit filter ziet er als volgt uit:

Als het probleem meer globaal is en we verkeer van een apart subnet moeten vastleggen, ongeacht de richting van de transmissie, dan passen we het filter toe:

    net 192.168.0.0/24 of net 192.168.0.0 masker 255.255.255.0

Bij het vastleggen van verkeer van een subnet, ziet het filter er als volgt uit:

    src net 192.168.0.0/24 of src net 192.168.0.0 masker 255.255.255.0

En als u alleen inkomend verkeer naar ons subnet wilt zien voor analyse, dan is een van de filters:

    dstnet 192.168.0.0/24

    dst net 192.168.0.0 masker 255.255.255.0

Als de gebruiker klaagt dat de pagina niet wordt geopend in de browser, kan het probleem zijn met de DNS-server (poort 53) of met het HTTP-protocol (poort 80), dan vangen we verkeer op met behulp van het "poort" -filter:

Als we besluiten om al het verkeer voor een specifieke server vast te leggen, met uitzondering van HTTP en FTP, dan wordt het filter geconfigureerd volgens een van deze twee voorbeelden:

    host 192.168.0.1 en niet (poort 21 of poort 80)

    host 192.168.0.1 en niet poort 21 en niet poort 80

Als we al het verkeer op de poort willen zien, behalve DNS, FTP, ARP-verkeer, dan is de logica vergelijkbaar:

    poort niet dns en niet 21 en niet arp

Bij het vastleggen van verkeer van applicaties die dynamische poorten uit een bepaald bereik gebruiken, ziet het filter er moeilijk uit als de Libcap-versie lager is dan 0.9.1:

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

als de versies later zijn, is het filter minder bedreigend en begrijpelijk:

    tcp portrange 1501-1549

Om Ethernet-frames zoals EAPOL vast te leggen (802.1x EAP-protocol wordt EAPOL (EAP encapsulation over LAN) genoemd):

    ether proto 0x888e

Ter referentie zal ik een lijst geven met soorten Ethernet-frames voor specifieke protocollen:

Ethertype (hexadecimaal)

Protocol

0x0000 - 0x05DC

IEEE 802.3 lengte

0x0101 - 0x01FF

IP, internetprotocol

ARP, Adres Resolutie Protocol.

Framerelais ARP

Ruw frame relais

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

Novell Netware IPX

EtherTalk (AppleTalk over Ethernet)

IBM SNA Services via Ethernet

AARP, AppleTalk Address Resolution Protocol.

EAPS, Ethernet Automatische Bescherming Schakelen.

IPX, internetpakketuitwisseling.

SNMP, Simple Network Management Protocol.

IPv6, Internet Protocol versie 6.

PPP, Point-to-Point Protocol.

GSMP, Algemeen 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, lichtgewicht toegangspuntprotocol.

LLDP, Link Layer Discovery Protocol.

EAPOL, EAP via LAN.

Loopback (configuratietestprotocol)

VLAN Tag Protocol-ID

VLAN Tag Protocol-ID

Als u verkeer van een specifiek IP-protocol moet vastleggen, kunt u een filter gebruiken:

    ip proto tcp - TCP-verkeer vastleggen

    ip proto udp - leg UDP-verkeer vast

Het kortste filter wordt gebruikt om IP-verkeer vast te leggen:

Om alleen unicast-verkeer vast te leggen bij het analyseren van uitgaand en inkomend verkeer naar een netwerkapparaat, wordt een filter gebruikt in de volgende indeling:

    niet uitgezonden en niet multicast

De eenvoudige filters waar we het over hadden, kunnen worden gecombineerd met behulp van eenvoudige symbolen:

    Negatie: ! Ofniet

    Een associatie: && ofen

    Afwisseling: IIofof

Voorbeeld: om verkeer van of naar een apparaat met het adres 10.10.10.10, maar niet van het 192.168.0.0-netwerk vast te leggen, wordt het filter aaneengeschakeld met ontkenning:

    host 10.10.10.10 &&!net 192.168

Offset-bytefilters zijn de krachtigste en maken het leven een stuk gemakkelijker, maar u moet het protocol en de locatie van de velden in het pakket kennen om ze te gebruiken. De volgende filtervoorbeelden vangen pakketten op met een specifieke veldwaarde in de headers of payload. Het instellen ervan is eenvoudig:

Verplaats acht bytes in het IP-pakket en leg verkeer vast met TTL = 1

Leg alle TCP-pakketten vast met een bronpoortadres van 80. Dit is het equivalent van het src-poort 80-filter.

Ter referentie, hier is de offset-byte naar de meest interessante velden in het pakket:

Veld in pakket

Lengte in bytes

Filter

Lengte IP-koptekst

IP-pakketlengte

IP-adresbron

IP-adresbestemming

IP-fragmentatie

vlag = 3 en Offset = 13

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

TCP-bestemmingspoort

Lengte TCP-koptekst

Om de ontvangen informatie te consolideren, bouwen we een filter voor het vastleggen van verkeer met een HTTP GET-verzoek. HTTP gebruikt poort 80, het transportprotocol TCP. De hexadecimale waarde van het woord GET ziet eruit als 0x47455420. Een voorbeeld van een filter dat we krijgen:

    poort 80 en tcp [((tcp & 0xf0 >> 2): 4] = 0x47455420

In dit artikel hebben we besproken hoe u de meest elementaire basisfilters kunt configureren en gebruiken voor het vastleggen van verkeer met behulp van de Wireshark-protocolanalysator.