Netwerkproblemen? Analyseer ze met Wireshark
Als je netwerk ineens slecht presteert, je verdacht netwerkverkeer vermoedt of simpelweg geïnteresseerd bent in de data die via je netwerkverbindingen stromen, kan Wireshark uitkomst bieden. Deze zeer populaire netwerkprotocol-analyzer legt datapakketten van netwerkverbindingen vast en analyseert deze, zodat je netwerkverkeer kunt monitoren en onderzoeken. Het is handig als je al enige kennis hebt van netwerkprotocollen.
In dit artikel laten we zien hoe je met Wireshark je netwerkverkeer kunt analyseren.
- Doorvoersnelheid meten
- Vertraging (latentie) meten
- Hoeveelheid netwerkverkeer inzien
- Verdachte poort identificeren
- Controleren of je computer privacygevoelige informatie uitstuurt
Lees ook: Computerproblemen? Zo diagnosticeer je wat er loos is
1 Installatie
Wireshark is gratis en opensource en beschikbaar voor diverse platformen. Bij de installatie laat je de standaardopties, inclusief de installatie van API Npcap (versie 1.78, zie www.npcap.com) het best staan. Zet voor diepgaandere analyses van draadloos verkeer ook een vinkje bij Support raw 802.11 traffic (and monitor mode) for wireless adapters.
Let wel, Wireshark kan zonder aanvullende maatregelen (zoals pre-master secret of port mirroring) geen versleutelde datapakketten ontsleutelen en vangt alleen data op die direct van of naar het apparaat gaat waarop Wireshark draait.
2 Netwerkinterfaces
Bij het starten van Wireshark zoekt de app automatisch naar lokale netwerkinterfaces. Je kunt filteren op verschillende soorten interfaces, bijvoorbeeld Wired en Virtual, via het uitklapmenu bij All interfaces shown. Selecteer de gewenste interface door erop te dubbelklikken, bijvoorbeeld Ethernet of Wi-Fi.
Het commando ipconfig kan helpen bij het kiezen van de juiste adapter. Je belandt nu in het hoofdvenster waar het ‘packet sniffing’ al bezig is. Je kunt dit proces stoppen via Capture / Stop en hier ook weer herstarten. Het is mogelijk pakketten van een vorige sessie te bewaren. Deze sessiebestanden kun je later laden met File / Open.
3 Vensters en kleuren
In het venster Packet list worden de opgevangen pakketten getoond, standaard in chronologische volgorde. Dit omvat het bron- en doeladres, het netwerkprotocol en diverse technische details.
Het venster Packet details biedt gestructureerde informatie over het geselecteerde pakket, opgebouwd uit verschillende protocol lagen. In het venster Packet bytes zie je de daadwerkelijke data van het pakket, zowel in hexadecimale als ASCII-vorm.
Deze vensters kun je (de)activeren via het menu View. Hier vind je ook Coloring Rules, wat inzicht geeft in de kleurcoderingen van de pakketlijst. Deze regels zijn aanpasbaar en je kunt er ook nieuwe aan toevoegen.
4 Opvangfilters
Voordat we typische toepassingen van Wireshark behandelen, is het belangrijk dat je bekend bent met de voornaamste filteropties. Een standaard sessie genereert namelijk vaak een enorme hoeveelheid data. Met opvangfilters kun je deze al bij de bron beperken. Ga naar Capture / Options, kies een of meerdere netwerkinterfaces en klik op het groene blokje bij Capture filter for selected interfaces voor voorbeeldfilters. Om bijvoorbeeld enkel TCP-pakketten op te vangen, selecteer je simpelweg (TCP only:) tcp. Je kunt ook eigen filters instellen, zoals port 80 or port 443 om enkel TCP/UDP-verkeer op poort 80 of 443 te filteren. Klik op het kruisje om het filter weer weg te halen.
5 Weergavefilters
Gebruik alleen opvangfilters als Wireshark moeite heeft met het verwerken van het netwerkverkeer, wat blijkt uit het percentage Dropped in de statusbalk. Meestal werken weergavefilters beter: Wireshark vangt alle pakketten op, maar je filtert specifieke data uit de pakketlijst. Maak een filter in het veld boven de pakketlijst. Dat kan op protocol (ARP, IP, IPV6, TCP) en applicatie (DNS, HTTP, ICMP). Ook complexe filters zijn mogelijk, zoals: ip.addr == 192.168.0.0/24, http contains "GET", tcp.srcport != 80, of http.response.code == 404. Via het kruisknopje haal je een actief filter weer weg. De statusbalk vertelt je hoeveel pakketten er daadwerkelijk worden getoond.
OSI-model Om de grote hoeveelheid data die Wireshark produceert goed te begrijpen, is degelijke kennis van netwerkprotocollen essentieel. De tabel toont het zogeheten OSI-model (Open Systems Interconnection) met de zeven lagen, met een functiebeschrijving, enkele typische protocollen en aanvallen. De tabel geeft inzicht in hoe de protocollen functioneren binnen de verschillende lagen van netwerkcommunicatie. Wireshark is vooral nuttig binnen de data linklaag (zoals ethernet-frames), netwerklaag (zoals ip-pakketten) en transportlaag (zoals TCP- en UDP-segmenten), maar de tool biedt tevens inzicht in protocollen van hogere lagen (presentatie en applicatie), zoals voor http- en DNS-verzoeken.
Over filteren gesproken
Een schone lucht is ook belangrijk
6 Alternatieve filters
Er zijn andere manieren om data te filteren. Als je bijvoorbeeld met rechts klikt op een ip-adres in de kolom Destination en kiest voor de optie Apply as filter / Not selected, dan krijg je !(ip.dest == <ip-adres>). Met de operatoren and, or, not and, or not kun je nog verder bouwen op een al bestaand filter. Als je denkt een filter vaker te gebruiken, activeer het dan en klik op het plusknopje Add as display filter button, naast de (groene) filterregel. Typ een beknopt tekst in het veld Label en bevestig met OK. Het filter verschijnt nu als een knop. Klik er met rechts op om het uit te schakelen, te verwijderen of te bewerken.
7 Ordenen
Naast de verschillende filtermethodes, is het ook nuttig om te weten hoe je data zinvol kunt sorteren en ordenen. Een eenvoudige manier is door een- of tweemaal op een kolomtitel te klikken, waardoor de data volgens dat criterium gesorteerd worden. Je kunt ook zelf extra kolommen toevoegen: klik bijvoorbeeld in het venster met pakketdetails met rechts op een interessant item (zoals Destination Port in de sectie Transmission Control Protocol) en selecteer Apply as Column in het contextmenu. Er verschijnt een extra kolom, wat het sorteren vereenvoudigt. Om een kolom te verwijderen, klik je met rechts op de kolomtitel en verwijder je het vinkje of klik je op Remove this Column.
8 Doorvoersnelheid
Nu je vertrouwd raakt met Wireshark, haal je er allerlei nuttige informatie uit, zoals de daadwerkelijke snelheid van een specifieke verbinding. Stel, je wilt de doorvoersnelheid weten tijdens het downloaden van een groot bestand van een server. Begin met het vastleggen van deze netwerkverbinding in Wireshark. Na afloop ga je naar Statistics / Capture File Properties voor uitgebreide informatie, waaronder het tijdstip van het eerste en laatste pakket, en het aantal weggevallen en eventueel gefilterde pakketten. Onderaan vind je de bandbreedte of netwerkcapaciteit, uitgedrukt in (mega)byte en bit per seconde.
9 Vertragingen
Bij het analyseren van netwerkprestaties zijn zowel doorvoersnelheid als latentietijd belangrijk. Latentietijd (ook bekend als latency in het Engels) is de periode die een datapakket nodig heeft om van zender naar ontvanger te reizen. Voor inzicht in eventuele vertragingen voeg je de extra kolom Delta time toe. Deze toont het interval tussen de aankomst van opeenvolgende pakketten. Ga naar Edit / Preferences, klik op Appearance / Columns en voeg een kolom toe met het plusknopje. Dubbelklik op (Number) en kies voor Delta time. Dubbelklik eventueel op de titel om de naam aan te passen. Klik in de pakketlijst op deze kolomtitel om de datapakketten volgens de deltatijden te sorteren.
10 Druk verkeer
Indien je vermoedt dat er ongewoon veel netwerkverkeer is, open dan Statistics / Protocol Hierarchy. Hier zie je per protocol en applicatie de hoeveelheid verkeer. Niet-herkende protocollen of applicaties verschijnen onder de categorie Data. Om een specifiek item nader te onderzoeken, klik je er met rechts op en selecteer je Apply as Filter / Selected. Vervolgens kun je rechtsklikken op een pakket in de pakketlijst en Follow / TCP Stream kiezen om de inhoud van de communicatie te analyseren. Het venster met de pakketbytes kan ook van pas komen bij deze analyse.
11 Verdachte poort
Stel dat je merkt dat je pc meerdere keren probeert een specifieke poort te bereiken. Om dit nader te bekijken, stel je via de pakketdetails bij Transmission Control Protocol het item Destination Port in als weergavefilter. Om te achterhalen welke applicatie op je pc deze poort gebruikt, gebruik je de Opdrachtprompt van Windows. Deze opdracht toont alle verbindingen gerelateerd aan de poort:
netstat -aon | findstr :<poortnummer>
De laatste kolom toont het PID (Process-ID). Open Taakbeheer met Windows-toets+R, kies Processen en sorteer op de PID-kolom om de applicatie te identificeren.
12 Host-identificatie
Wireshark toont standaard ip-adressen, maar je kunt ook kiezen voor het weergeven van de bijbehorende hosts of domeinnamen. Ga naar Edit / Preferences en selecteer Name Resolution. Activeer hier Resolve network (IP) addresses. Zorg dat Enable IP geolocation is ingeschakeld om, na het downloaden van geolocatiedatabases, de fysieke locaties van hosts te achterhalen (zie stap 13). Een overzicht van de vastgestelde hostnamen vind je onder Statistics / Resolved Addresses, waar je eventueel Hosts selecteert.
Studiemateriaal Je hebt tijd en oefening nodig om een krachtige tool als Wireshark onder de knie te krijgen. Er zijn gelukkig veel hulpbronnen online beschikbaar. Op YouTube vind je talrijke instructieve video’s, zoals de Wireshark Masterclass, bestaande uit tien lessen van elk ongeveer tien minuten. Wireshark Wiki biedt eveneens waardevolle informatie, inclusief een link naar een pagina met honderden verschillende traceerbestanden voor uiteenlopende protocollen. Deze kun je eenvoudig downloaden en importeren in Wireshark.
13 Ip-geolocatie
Voor het tonen van geolocatie in Wireshark zijn geolocatiedatabases nodig. De gratis (maar iets minder nauwkeurige) versies vind je op deze pagina. Na het aanmaken van een account download je de GeoLite2 Country- en City-databases en pak je ze uit naar twee mmdb-bestanden in dezelfde map. In Wireshark ga je naar Edit / Preferences / Name Resolution, klik op Edit bij MaxMind database directories en verwijs via de plusknop en Browse naar je uitpakmap. Herstart Wireshark, ga naar Statistics / Endpoints en open het tabblad IPv4 (of IPv6). Druk op de Map-knop en kies Open in browser om de locaties op kaart te bekijken.
14 Toegangsgegevens
In toenemende mate is netwerkverkeer standaard versleuteld, maar sommige protocollen, zoals FTP of POP3 (zonder extra beveiliging), verzenden toegangsgegevens ook niet-versleuteld. Om te controleren of er in jouw netwerkverkeer dergelijke privacygevoelige informatie wordt verstuurd, hoef je in Wireshark enkel het menu Tools te openen en Credentials te selecteren. Hier worden gevonden items weergegeven, inclusief het aanklikbare pakketnummer (waar je inderdaad de naam en/of het wachtwoord ziet staan) evenals het gebruikte protocol. Wellicht hoogtijd om een veiliger protocol in te zetten voor de authenticatie.
15 Referentiedata
Het is gebruikelijk Wireshark te starten voor het troubleshooten van netwerkproblemen. Voor belangrijke apparaten, zoals servers, is het raadzaam om zogenoemde baselines aan te maken. Dit zijn referentie-traceerbestanden die je helpen bij het diagnosticeren van netwerkproblemen. Het kan zelfs handig zijn om verschillende baselines voor één apparaat te maken. Denk bij een server bijvoorbeeld aan het opstarten en tijdens normaal gebruik. Leg in gewone omstandigheden van belangrijke apparaten dus telkens ander, specifiek netwerkverkeer vast en sla dit telkens op via File / Save.
16 Vergelijken
Loop je tegen problemen aan, dan kun je een opgeslagen baseline vergelijken met de huidige situatie. Dat kan in hetzelfde scherm door beide bestanden tegelijkertijd te openen. Om bestanden te vergelijken, open je een bestand met File / Open en voeg je een tweede toe met File / Merge. In het dialoogvenster kies je de samenvoegmethode: Prepend, Merge […] chronologically (standaard), of Append. Bij Prepend wordt het tweede bestand voor het huidige bestand gezet, bij Append achter het huidige bestand en door te kiezen voor Merge worden beide bestanden chronologisch door elkaar gezet.