Voor menigeen is het netwerk een zwarte doos. Bij netwerkinstellingen geef je van alles op, zoals poortnummers, IP-adressen en misschien zelfs een protocol, maar je hebt geen idee wat er op de achtergrond gebeurt. Taaie documentatie helpt hier ook niet echt. Het is inzichtelijker als je netwerkverkeer live ziet. Daarvoor is Wireshark handig. Daarmee vang je de netwerkpakketten af om ze eens rustig te bekijken.
Serge Gielkens
Met Wireshark inspecteer je het netwerkverkeer. Daarbij analyseert Wireshark de pakketten door ze helemaal uiteen te rafelen. Je hoort hiervoor ook wel de term sniffer, maar dat heeft door hackers enigszins een negatieve bijklank gekregen. Die pakketten haalt Wireshark binnen via de netwerkinterface. Dat heet een capture. Als gewone gebruiker mag je echter niet zomaar netwerkpakketten afvangen. Daarvoor heb je speciale rechten nodig.
Sommige distributies, waaronder Fedora, maken daarom automatisch een aparte groep wireshark aan. Daartegenover toont Ubuntu bijvoorbeeld tijdens de installatie een melding of je deze groep wil hebben. Standaard staat die keuze op No. Verander dit in Yes voor probleemloos gebruik van Wireshark. Na installatie ben je niet automatisch lid van deze groep, ook niet bij Fedora. Regel dat op de commandoregel als volgt:
sudo gpasswd --add <mijn_inlognaam> wireshark
Om je nieuwe lidmaatschap kenbaar te maken aan het systeem log je uit en meteen weer in. Start nu Wireshark op.
Pakketten ophalen
Je krijgt een lijst van alle capture mogelijkheden. Wij selecteren de draadloze netwerkinterface. De naamgeving varieert van systeem tot systeem, maar in ieder geval begint die met de letters wl. Voor ethernet is dat en. Druk vervolgens op de blauwe vin linksboven om de capture te starten (zie onderstaande afbeelding). Verschijnt niks, genereer dan wat verkeer door bijvoorbeeld te googelen. Wireshark blijft nu data vergaren, totdat je hem stopt. Dat doe je met het rode vierkantje rechts van de vin.
In een lijst zie je alle pakketten van de scan. Verschillende kleuren geven het soort pakket aan. Het gaat niet alleen om het protocol, zoals TCP of UDP. Zo krijgen verdachte pakketten een rode kleur. Leiden de kleuren je teveel af, schakel ze dan uit via View -> Colorize Packet List. Wil je ze wel, maar vind je alleen bepaalde kleuren onprettig of moeilijk te onderscheiden, dan pas je dat aan via het menu View -> Coloring Rules. Pas wel op dat je niet per ongeluk de volgorde aanpast. Wireshark doorloopt namelijk de regels van boven naar onderen en past daarbij de eerste match toe. Als je bijvoorbeeld TCP helemaal naar boven sleept, krijgen verdachte TCP-pakketten geen rode kleur meer.
Voor elk pakket zie je in de kolommen Source en Destination waar het pakket vandaan komt en waar het naar toegaat. Meestal zijn dat IP-adressen, maar soms kom je ook zogeheten MAC-adressen tegen. Dat is typisch het geval voor ARP. Via dat protocol zoekt een computer namelijk uit welke MAC-adres bij een bepaald IP-adres hoort. Verder zie je nog het protocol genoemd, zoals TCP, HTTP of NFS. Helemaal rechts in de kolom Info staat beknopt de inhoud van het pakket.
Afpellen
Welke informatie Wireshark precies toont, hangt af van hoe diep hij kan graven. Hij pelt daarbij het pakket laag voor laag af. Als voorbeeld laten we dat hier zien bij het opvragen van een webpagina (zie eerder getoonde afbeelding). Klik op het te inspecteren pakket. De detailinformatie zie je nu onder aan de lijst. Vind je dit te priegelig, dubbelklik dan op het pakket. Daardoor verschijnen deze details in een apart venster.
Elke regel van boven naar onder graaft steeds dieper in het pakket. De twee bovenste laten we even voor wat ze zijn. Dan komt het Internet Protocol met de IP-adressen van de bron- en doelcomputer. Daaronder zie je het Transmission Control Protocol (TCP) met onder andere het poortnummer 80. Daarop luistert de webserver. De communicatie daarmee verloopt via het Hypertext Transfer Protocol, welbekend als HTTP. Dat zie je als laatste staan.
Omdat Wireshark het pakket tot op het niveau van de webserver geanalyseerd heeft, meldt hij in de capture-lijst als protocol HTTP en niet TCP. Anders gezegd, de lijst laat het diepste niveau van het pakket zien. Ter vergelijking zie je in de afbeelding wat er gebeurt bij een beveiligde verbinding door HTTPS. Wireshark komt dan niet verder dan de encryptielaag en ziet niet meer de inhoud van het webverkeer. Daarom staat nu in de capture-lijst bij Protocol TLSv1.2. Wireshark weet dus nog wel te achterhalen dat het om versleuteling door TLS versie 1.2 gaat.
Inhoud inspecteren
Om de inhoud van zo’n laag nader te bekijken, klik je bij de detailinformatie op het driehoekige pijltje. In dit geval zie je dat de browser bij de webserver een plaatje van de webpagina opvraagt. Naast de gevraagde inhoud zie je dat er nog extra informatie over en weer gaat. Zo zie je de gebruikte cookies en informatie over je browser. Vergelijk dat nu met de beveiligde verbinding van hierboven. Als je daar de diepste laag openklapt, dat wil zeggen TLSv1.2, zie je bij Encrypted Application Data alleen nog maar een reeks willekeurige cijfers en getallen.
Door de inhoud van netwerkpakketten met Wireshark te inspecteren, zie je ineens het nut van versleuteling van internetverbindingen duidelijk voor je. Nog overtuigender is het bekijken van een e-mail sessie. Als je provider het toestaat, zet je in je mailclient beveiliging door SSL of TLS uit. Doe vervolgens een capture van het ophalen of sturen van een mail, en prompt verschijnt in Wireshark je wachtwoord in volle glorie.
Pakketstroom filteren
Zelfs bij een kort durende capture loopt het aantal netwerkpakketten al snel op. Met filters behoud je dan het overzicht (zie hierboven). Het eenvoudigst gaat dat door in de capture-lijst rechts te klikken op een pakket. Doe dat bijvoorbeeld in de kolom Source en selecteer vervolgens in het contextmenu Apply as Filter -> Selected. Nu zie je alleen nog pakketten waarvan het bronadres gelijk is aan dat van het geselecteerde pakket. Voor de volledige berichtenstroom tussen beide IP-adressen, kies je in het contextmenu Conversation Filter -> IPv4 of IPv6. Wireshark maakt vanzelf de juiste versie van IP als keuze actief.
Vreemd genoeg werkt dat niet voor de kolom Protocol. Wil je bijvoorbeeld alleen webverkeer zien, selecteer dan een HTTP-pakket en klik onder bij de detailinformatie rechts op de protocolnaam. Eenzelfde contextmenu verschijnt. Wil je dit filter combineren met het zojuist gemaakte voor het IP-adres, kies dan … and Selected in plaats van Selected.
Tot slot
Om je netwerkpakketten uit te pluizen werkt Wireshark prettig. Door de overzichtelijke manier van presenteren en handige filtermogelijkheden leer je snel meer over het drukke digitale wegverkeer.