Belangrijkste vernieuwingen in Wireshark 3
De softwaresuite Wireshark, die Gerald Combs al in 1998 uitbracht, in eerste instantie onder de naam Ethereal, maakt een inkijk mogelijk in de netwerkcommunicatie van vele protocollen tot op hoog detailniveau. Er zijn wel vergelijkbaar krachtige producten, zoals de Message Analyzer van Microsoft, maar Wireshark is opensource en niet alleen beschikbaar voor Windows maar ook voor Linux en macOS.
Dat kan onder meer doordat de ontwikkelaars de grafische gebruikersinterface met behulp van platformonafhankelijke toolkits verregaand implementeren volgens de styleguides van het betreffende doelplatform – in het begin hebben ze daar GTP voor gebruikt, maar sinds versie 2 Qt. Die overgang bracht een moderner uiterlijk. Ook bleek de QTcommunity meer agile, zodat GUIproblemen sneller opgelost werden.
De overstap is echter nog niet afgerond: sommige functies zijn tot nu toe alleen in GTP geïmplementeerd.
Daarom installeerden veel gebruikers beide versies, de op GTK gebaseerde Wireshark Legacy en de Qtversie, parallel naast elkaar. Sinds versie 3.0 is echter alleen nog de Qtvariant te krijgen. De ontwikkelaars willen het gat snel kleiner maken. De Wirelesstoolbar voor het selecteren van kanalen zit bijvoorbeeld nog niet in de Qtversie.
Onder de motorkap zijn er veel veranderingen, die onderdeel van de steeds doorgaande modernisering zijn. Het belangrijkste daarvan is waarschijnlijk het overstappen van WinPCAP naar Npcap, wat ook de belangrijkste reden voor het ophogen van het hoofdversienummer is. WinPCAP is een bibliotheek die Wireshark onder Windows gebruikte voor registreren van het netwerkverkeer – de Linuxtegenhanger daarvoor heet libpcap.
VAN WINPCAP NAAR NPCAP
De ontwikkelaars zijn echter jaren met andere projecten bezig geweest, zodat WinPCAP niet meer aan alle eisen voldeed. Microsoft wijzigt bijvoorbeeld de interfaces van de netwerkdrivers van Windows continu (Network Driver Interfaces Specifications, NDIS), zodat WinPCAP al bij de eerste versies van WIndows 10 problemen opleverde. Bovendien kun je met WinPCAP het wifien het loopbackdataverkeer niet registreren. Een tijd lang kon je voor het registreren van wifiverkeer uitwijken naar AirPCAPadapters, maar de maker daarvan
heeft de verkoop inmiddels gestopt.
Om dergelijke problemen te verhelpen, hebben deelnemers aan het Nmapproject van Gordon Lyon, beter bekend als Fyodor, een nieuwe bibliotheek ontwikkeld: Npcap voor Windows. Naast Wireshark gebruikten namelijk veel andere projecten ook WinPCAP – en daarnaast Nmap – om met netwerkkaarten te communiceren. Npcap is sinds april 2018 als kernelmodule beschikbaar. Na een proefperiode maakt Wireshark daar nu standaard gebruik van.
Een paar problemen, die naar Npcap zijn te herleiden, zijn nog over. Als de Npcapservice draait, ziet de Windowseigen wifilister soms een paar wifinetwerken niet. Als je Npcap stopt, duiken ze weer op (bijvoorbeeld in de taakbalk van Windows). Of dat bij jouw pc ook het geval is, kun je achterhalen via een Opdrachtprompt met administratorrechten met de commando’s sc stop npcap en sc start npcap.
Afgezien daarvan loont Npcap wel degelijk. Daarmee zijn eindelijk captures mogelijk van de loopbackinterface en kun je de draadloze wifilaag (Media Access Control) zonder speciale hardware registeren (Monitor Modus). Een lijst van geschikte adapters staat bij de link op de laatste pagina van dit artikel.
Om de Monitor Modus bij Windows te kunnen gebruiken, moest je Wireshark eigenlijk met administratorrechten starten. Vanuit securityredenen is dat echter geen goed idee. Dat is te ondervangen met de commandlinetool WlanHelper.exe, die staat in de map C:\Windows\System32\npcap. Daarmee is de Monitor Modus van de wifikaart handmatig te activeren, zodat die informatie levert van de radiolaag en zelf niet actief deelneemt aan het wifi (Receive Only).
Het radiokanaal kun je bij Wireshark door het ontbreken van de bijbehorende toolbar nog niet instellen. Ook daar heb je WlanHelper voor nodig. Hoe je een wificapture met Npcap doet, is te lezen op een Engelstalige blogpost (zie de link op de volgende pagina).
OMBOUWEN EN MOOI MAKEN
Daarnaast hebben de ontwikkelaars de structuur en terminologie van Wireshark op details bijgewerkt. Veel gebruikers hadden bijvoorbeeld kritiek op het ontbreken van een DHCPdisplayfilter. In plaats daarvan moest je de functie zoeken onder het trefwoord ‘bootp’, ook al is het Bootstrap Protocol al lang opgevolgd door DHCP. Wireshark 3 houdt daar nu eindelijk rekening mee en heeft het filter ‘dhcp’.
Hetzelfde geldt voor ‘ssl’, dat vervangen is door ‘tls’. Beide oude filters – zowel bootp als ssl – kun je echter nog gebruiken. De filterinvoerregel krijgt dan wel als waarschuwing een gele kleur, omdat beide in een toekomstige versie zullen verdwijnen. Traditioneel veranderen er bij elke Wiresharkversie ook veel van de protocolanalyses, die onder meer de bits en bytes van de pakketten omzetten naar leesbare informatie. Het moderne VPNprotocol WireGuard is er bijvoorbeeld mee te ontsleutelen als je Wireshark de juiste sleutel meegeeft. Die kun je bij de instellingen invullen.
Als je Wireshark alleen maar af en toe gebruikt, is het heel handig dat je filters nu met drag&drop kunt aanmaken door elementen uit het decodedeel naar de filterinvoerregel te halen –bijvoorbeeld om snel en zonder iets te hoeven typen het dataverkeer van een bepaalde TCPpoort te filteren.
Een andere, maar helaas wel goed verborgen feature is de mogelijkheid de cryptografische sleutels voor TLSverbindingen in Pcapngbestanden op te slaan samen met de versleutelde pakketten. Dat vergemakkelijkt het opsturen van het totaalpakket naar bijvoorbeeld een externe analysedienstverlener. Anders moest je behalve het Pcapngbestand ook het bestand sslkeylog.log opsturen.
Om dit te realiseren, hebben de ontwikkelaars het Pcapngbestandsformaat uitgebreid met een bloktype waarin je de sleutelinformatie van Firefox of Chrome kunt zetten. Bij beide browsers definieer je een uitvoerbestand via de omgevingsvariabele SSLKEYLOGFILE.
Voor het opslaan gebruik je de meegeleverde utility editcap. Je kunt versleutelingsgegevens gelukkig ook verwijderen met editcap. De tool is ook handig omdat je hem kunt scripten. Je kunt dan batchgewijs grote hoeveelheden data bewerken, terwijl Wireshark telkens maar één bestand hoeft open te houden. Überhaupt is editcap het Zwitserse zakmes voor het manipuleren van netwerkpakketbestanden. Je kunt er indien gewenst Pcapngbestanden zuiver mee splitsen of ongewenste duplicaten verwijderen die ontstaan door bepaalde meettechnieken.
WAT ANDERS: EXTCAP
Wireshark kan al enige tijd externe databronnen benaderen via optionele ExtCapinterfaces om ze te loggen. Je kunt daar bijvoorbeeld dongles van NordicSemi voor gebruiken voor het registreren van BluetoothLEpakketten. Daarbij stuurt een commandlinetool de BluetoothLEpakketten via een pipe door naar Wireshark. Op dit moment gaat het gebruik van de pipetool echter nog gepaard met aardig wat gedoe.
Eigenlijk is ook de mogelijkheid handig om met SSHDump een registratie op een remote computer te starten (bijvoorbeeld met tcpdump) en de pakketten via SSH met Wireshark uit te lezen zonder daar de commandline voor te hoeven gebruiken. Bij een eerste poging werkte dat onder Windows goed, zelfs met PublicKeyauthenticatie. Bij andere pogingen mislukte de verbinding echter (met de foutmelding ‘broken pipe …’).
Op macOS 10.13.6 kwam er wel een verbinding tot stand, maar tcpdump was door het ontbreken van administratorrechten niet te starten. Uiteindelijk ben je op dit moment dan ook nog beter uit met de commandlinebediening van SSHDump (zie ook de link op deze pagina).
Als je de functie toch wilt testen: het remote loggen kun je makkelijk uitproberen. Bij Windows moet je de tool SSHDump onder bepaalde omstandigheden achteraf nog installeren. De installer laat hem met de standaardinstellingen achterwege en dan ontbreekt bij de interfaces ook het item ‘SSH remote capture’.
Als SSHDump aanwezig is, klik je dubbel op het item ‘SSH remote capture’. Vul op het tabblad ‘Server’ het doeladres in waarvoor je het loggen wilt starten. Voeg op het tabblad ‘Authentication’ een geldige SSHnaam en het bijbehorende wachtwoord in – je kunt voor het authenticeren in plaats van een wachtwoord ook een lokale Private Key en de bijbehorende passphrase opgeven. Op het tabblad ‘Capture’ voeg je onder ‘remote interface’ de broninterface in, dus bijvoorbeeld de ethernetkaart waarvan je het dataverkeer wilt loggen (zoals eth0). In het veld ‘Capture command’ vul je het commando in waarmee het loggen moet starten, bijvoorbeeld ‘tcpdump U w ‘.
Als het SSHverkeer van het aanstuurkanaal via dezelfde interface loopt (in dit geval dus eveneens eth0), dan is het aan te raden om het verkeer daarvan eruit te filteren met het Capturefilter, oftewel daar ‘not port 22’ in te vullen. Het maximale pakketaantal kun je onveranderd laten (0 = geen limiet) en het loggen later handmatig beëindigen. Je moet er alleen op letten dat Wireshark bij het selecteren van de optie om de parameters bij het starten van het loggen op te slaan je voorkeur vastlegt in het Preferencesbestand.
START-UP TUNING
Oudere Wiresharkversies hebben bij het starten een paar seconden nodig voor het herkennen van de netwerken ExtCapinterfaces, afhankelijk van het hardwareplatform. Bij de nieuwe versie hebben de ontwikkelaars de startprocedure gemodificeerd: als het programma bij het starten een bestand moet openen (bijvoorbeeld na dubbelklikken op een Pcapngbestand), dan slaat Wireshark de herkenningsfase over en gaat het ervan uit dat de gebruiker geen liveregistratie wil starten.
Als Wireshark op Windows snel moet starten en niet hoeft te loggen, kun je de Npcapservice pauzeren met een Opdrachtprompt met administratorrechten, met het commando sc stop npcap. Je kunt het automatisch starten van Npcap bij het booten verhinderen met het commando sc config npcap start=demand. Indien nodig kun je de service dan weer starten met het commando sc start npcap.