Wi­reshark- en pro­to­col­ken­nis voor net werk­be­heer

Wi­reshark- en pro­to­col­ken­nis voor net­werk­be­heer

C’t Magazine - - Inhoud - Mar­co den Teu­ling, Jo­han­nes We­ber

Soms moet je echt in de­tail naar het net­werk­ver­keer kij­ken om te ach­ter­ha­len waar een pro­bleem van­daan komt. En zelfs als er geen pro­ble­men zijn, kun je bij het be­stu­de­ren van net­werk­ver­keer nut­ti­ge of ver­ras­sen­de ont­dek­kin­gen doen.

De be­kend­ste tool om net­werk­ver­keer te ana­ly­se­ren is Wi­reshark. In com­bi­na­tie met een PCAP-dri­ver voor de net­werk­kaart, kun je daar­mee pak­ket­ten van al­ler­lei net­werk­pro­to­col­len ana­ly­se­ren en vast­leg­gen in een tra­ce. On­der Win­dows wordt au­to­ma­tisch de laat­ste ver­sie van WinP­cap mee ge­ïn­stal­leerd. On­der Li­nux moet libp­cap aan­we­zig zijn. Draai Wi­reshark bij voor­keur op een pc met be­ka­bel­de aan­slui­ting. Met de mees­te wi­fi-adap­ters lukt het na­me­lijk niet om 802.11-ver­keer goed te ana­ly­se­ren, ze­ker on­der Win­dows [1].

Een vast­ge­leg­de tra­ce van het net­werk­ver­keer, in de vorm van een PCAP-be­stand, kun je ach­ter­af rus­tig en uit­ge­breid ana­ly­se­ren. Heb je geen be­stand be­schik­baar, dan kun je je op­spo­rings­kun­sten ook oe­fe­nen met voor­beeld­be­stan­den die je bij­voor­beeld down­lo­adt van wiki. wi­reshark.org/SampleCap­tu­res. Daar vind je tra­ces met de meest exo­ti­sche net­werk­pro­to­col­len, die je op je ei­gen net­werk niet zo snel te­gen­komt. Bij het ana­ly­se­ren van de ge­ge­vens helpt het wel als je meer weet van het on­der­zoch­te net­werk en van de net­werk­pro­to­col­len.

Pro­to­col­len en net­werk­pak­ket­ten

Het be­lang­rijk­ste hulp­mid­del bij het ana­ly­se­ren van een tra­ce is het 'Dis­play Fil­ter'. Daar­mee laat je en­kel de ge­ko­zen pak­ket­ten weer­ge­ven. Vaak is de naam van het fil­ter af­ge­leid van een net­werk­pro­to­col,

bij­voor­beeld 'dns' of 'ssh'. Je ac­ti­veert een fil­ter door de naam te ty­pen in het in­voer­vak on­der de knop­pen­balk van Wi­reshark en te be­ves­ti­gen met En­ter.

On­der de tra­ce zet Wi­reshark het deel­ven­ster 'Pac­ket De­tails'. Daar zie je de in­houd van het ge­mar­keer­de pak­ket. Klik op de ver­schil­len­de vel­den in dit ven­ster om pak­ket­de­tails te be­kij­ken. In bij­na elk veld kun je met de rech­ter­muis­knop en het snel­me­nu een fil­ter in­stel­len op ba­sis van de ge­toon­de ge­ge­vens (met 'Ap­ply as Fil­ter/Se­lec­ted').

Om je op weg te hel­pen met de ana­ly­se en idee­ën op te doen, volgt hier een over­zicht van de be­lang­rijk­ste pro­to­col­len. In som­mi­ge ge­val­len ge­ven we ook voor­beel­den van wat je uit de net­werk­pak­ket­ten kunt af­lei­den.

DNS: Het Do­main Na­me Sy­s­tem zet do­mein­na­men om in IP-adres­sen. In de de­tails van DNS-pak­ket­ten kun je bij­voor­beeld zien wat het IPv6-adres van de DNS­ser­ver is en wel­ke host­na­men er wor­den op­ge­vraagd door clients. Als een client een IPv6-adres voor een host­naam wil, zie je dat aan de waar­de AAAA voor het veld Ty­pe.

Je kunt uit de tra­ce bij­voor­beeld ook af­lei­den hoe veel hops de DNS-ser­ver ver­wij­derd is. Het DNS-pro­to­col geeft hier­over geen uit­sluit­sel, maar het on­der­lig­gen­de IP wel. Uit het veld TTL (Hop Li­mit bij IPv6) van de DNS-re­ply kun je af­lei­den hoe ver de DNS-ser­ver ver­wij­derd is. De aan­van­ke­lij­ke groot­te hier­van wordt door­gaans ge­steld op 64, 128 of 255. Zie je in de re­ply een TTL van 62, dan is de ser­ver waar­schijn­lijk slechts 2 hops ver­wij­derd, aan­ge­zien DNS­ser­vers meest­al 'dicht­bij' lig­gen.

DHCP: Via DHCP wor­den on­der an­de­re IP-adres­sen aan­ge­vraagd en toe­ge­we­zen uit de be­tref­fen­de adres­sen­pool. Voor de ana­ly­se moet je we­ten dat het Dis­play Fil­ter niet zo­als ver­wacht dhcp heet. In plaats daar­van moet je bootp in het in­voer­vak ty­pen. DHCP is slechts een uit­brei­ding op het Boot­s­trap Pro­to­col.

Met dit fil­ter vind je in een tra­ce on­der an­de­re MAC-adres­sen en host­na­men van clients. De host­naam kan bij­voor­beeld ver­wij­zen naar het be­stu­rings­sys­teem waar ie­mand mee werkt. In de DHCP-re­quest zie je welk IP-adres een client wil, bij­voor­beeld 192.168.20.11. Maar dat ver­zoek kan af­ge­we­zen wor­den (NAK), om­dat het adres in ge­bruik is of bij­voor­beeld in een an­der VLAN ligt. In het laat­ste ACK-pak­ket voor de client zie je het toe­ge­we­zen adres.

STP: Het Span­ning Tree Pro­to­col be­perkt re­dun­da­tie op Lay­er 2 door loops te voor­ko­men. Het bij­be­ho­ren­de Dis­play Fil­ter heet stp. Het pro­to­col wordt ge­bruikt door Cis­co-swit­ches en an­de­re net­werk­ap­pa­ra­tuur. Uit de pak­ket­ten kun je bij­voor­beeld af­lei­den wan­neer de to­po­lo­gie is ver­an­derd, bij­voor­beeld om­dat er een nieu­we switch is aan­ge­slo­ten. Voor dat laat­ste zoek je naar de be­tref­fen­de vlag met stp.flags.tc == 1. Het eer­ste over­een­kom­sti­ge pak­ket geeft aan wan­neer de wij­zi­ging plaats­vond.

CDP: CDP is een prop­ri­ë­tair pro­to­col van Cis­co. Net­werk­com­po­nen­ten ge­brui­ken dat om di­ver­se ge­ge­vens met el­kaar uit te wis­se­len. Het bij­be­ho­ren­de Dis­play Fil­ter is cdp. Je ach­ter­haalt hier­mee bij­voor­beeld de soft­wa­re­ver­sie, zo­als in "Cis­co IOS Soft­wa­re, C2960 Soft­wa­re (C2960-LANBASEK9M), Ver­si­on 15.0(2)SE9, RE­LEA­SE SOFT­WA­RE (fc1)" en het ty­pe (in dit ge­val een switch uit de C2960-se­rie).

VTP: Dit is nog een Cis­co-spe­ci­fiek pro­to­col: het VLAN Trun­king Pro­to­col. Swit­ches ge­brui­ken dit om in­for­ma­tie over VLAN's uit te wis­se­len. Pro­ble­men met VTP kun­nen bij­voor­beeld wor­den ver­oor­zaakt als een ou­de switch als re­ser­ve wordt in­ge­zet en dank­zij een ho­ger Con­fi­gu­ra­ti­on Re­vi­si­on Num­ber zijn ver­ou­der­de VLAN­lijst door­drukt.

LACP: Het Link Ag­gre­ga­ti­on Pro­to­col com­bi­neert meer­de­re fy­sie­ke poor­ten tot

een en­ke­le lo­gi­sche poort ('trun­king'). Dit zorgt voor meer band­breed­te en min­der kans op uit­val. Bij de ge­ge­vens in LACP­pak­ket­ten heeft 'ac­tor' al­tijd be­trek­king op pa­ra­me­ters en flags van de bron en 'part­ner' op die van de an­de­re par­tij.

LLDP: Het Link Lay­er Dis­co­ve­ry Pro­to­col is een te­gen­han­ger voor Cis­co's CDP die ook door ap­pa­ra­tuur van an­de­re fa­bri­kan­ten wordt on­der­steund. Het wordt ge­bruikt door fy­siek ver­bon­den ap­pa­ra­ten om sta­tus­in­fo uit te wis­se­len. In de pak­ket­ten vind je on­der an­de­re het ma­na­ge­mentIP-adres.

SNMP: Met het Sim­ple Net­work Ma­na­ge­ment Pro­to­col mo­ni­tor je net­werk­ap­pa­ra­tuur. Ap­pli­ca­ties zo­als MRTG en PRTG ge­brui­ken het om waar­den zo­als de in­ter­fa­ce-be­las­ting op te vra­gen. Vaak gaat dit met het on­ver­sleu­tel­de SNMP ver­sie 2c. Daar­in is zelfs het wacht­woord ge­woon lees­baar als plat­te tekst in de 'Com­mu­ni­ty String'. Als de stan­daard­waar­de 'pu­blic' über­haupt ge­wij­zigd is. Als de toe­gang tot SNMP-dien­sten niet met een Ac­cess Con­trol List is in­ge­perkt, kan el­ke client in het LAN ge­ge­vens op­vra­gen van rou­ters en swit­ches. Dat kan bij­voor­beeld met snmp­walk -v 2c -c COMMUNITYSTRING .1.3.6 of met de Win­dows-tool 'MIB Brow­ser' van iRea­so­ning.

Sys­log: Sys­log wordt even­eens voor net­werk-mo­ni­to­ring ge­bruikt. Ap­pa­ra­ten ver­stu­ren hier­mee log­be­rich­ten naar een Sys­log-ser­ver. Ver­keer is unidi­rec­ti­o­neel en ver­pakt in UDP-pak­ket­ten. Er komt dus

geen ACK of an­de­re re­ac­tie van de ser­ver. De in­houd is on­ver­sleu­teld, maar kan een nog­al uit­een­lo­pen­de op­maak heb­ben af­han­ke­lijk van de im­ple­men­ta­tie.

NTP: Met het Net­work Ti­me Pro­to­col vra­gen clients de tijd op bij een NTP-ser­ver. De Re­fe­ren­ce-ID in het ant­woord kan ver­klap­pen waar die ser­ver zelf de in­for­ma­tie van­daan haalt. Zo wijst de string 'DCFa' of 'DCFp' op een DCF77-ont­van­ger. Die krijgt zijn sig­naal van een zen­der in het Duit­se Main­flin­gen die ook bij­na al­le ra­dio­gestuur­de hor­lo­ges in West-Eu­ro­pa van de juis­te tijd voor­ziet.

TFTP: Het Tri­vi­al Fi­le Trans­fer Pro­to­col lijkt op FTP, maar werkt ('tri­vi­aal') zon­der au­then­ti­ca­tie. Op lo­ka­le net­wer­ken wordt het nog steeds veel ge­bruikt voor con­fi­gu­ra­tie­be­stan­den en soft­wa­re-ima­ges. Wi­reshark biedt het Dis­play Fil­ter tftp, maar het is zin­vol­ler om de UDP-stream te be­kij­ken waar­in bij­voor­beeld de back-up van een con­fi­gu­ra­tie­be­stand te vol­gen is. Als je weet dat die stream via poort 54 loopt, ge­bruik je het fil­ter udp.stream == 54. Klik met rechts op een pak­ket in de stream en kies 'Fol­low/UDP Stream'. Dan wor­den de ge­ge­vens ge­toond als tekst. Met een tool zo­als has­h­cat kun je zelfs ge­hash­te wacht­woor­den uit de stream vis­sen.

ARP: Het Ad­dress Re­so­lu­ti­on Pro­to­col is een ba­sis­on­der­deel van het IPv4-pro­to­col. Hier­mee wor­den Lay­er-3-adres­sen (IPv4) om­ge­zet in Lay­er-2-adres­sen (MACadres­sen). Een kijk­je in een ARP-pak­ket is ge­noeg om via de In­fo-re­gel te ach­ter­ha­len dat bij­voor­beeld "192.168.121.2 is at 00:1e:7a:79:3f:11".

LOOP: Dit pro­to­col (via het fil­ter loop te be­kij­ken in Wi­reshark) be­hoort niet tot de klas­sie­ke IEEE 802-pro­to­col­len. Het is be­stemd voor een­vou­di­ge tests op Ether­net-ni­veau, net als Ping op IP-ni­veau. Kies het me­nu-item 'Sta­tis­tics/Con­ver­sa­ti­ons' en mar­keer de op­tie 'Li­mit to dis­play fil­ter' om snel het aan­tal bron­nen op dit ni­veau te ach­ter­ha­len.

RIP: De naam Rou­ting In­for­ma­ti­on Pro­to­col ver­raadt ei­gen­lijk al­les al: hier­mee wis­se­len rou­ters rou­tes uit. Het is een een­vou­dig dy­na­misch rou­ting-pro­to­col, op be­drijfs­net­wer­ken is OSPF ge­brui­ke­lijk. In het veld 'Pac­ket De­tails' kun je af­zon­der­lij­ke rou­ting-items te­rug­vin­den.

RIPng: RIPng is het­zelf­de als RIP, maar dan voor IPv6. Daar­bij kun je bij­voor­beeld link-lo­cal adres­sen met de pre­fix fe80::/10 te­gen­ko­men voor de rou­ter. Als je ge­wend bent aan IPv4 moet je even om­scha­ke­len, want in dat ge­val ver­wacht je bij de rou­ting-items waar­schijn­lijk IPv6-adres­sen uit je ei­gen Glo­balU­ni­cast-ran­ge.

ICMPv6: Het In­ter­net Con­trol Mes­sa­ging Pro­to­col biedt voor IPv6 veel meer dan al­leen Ping-tests. Via Rou­ter Sol­li­ci­ta­ti­ons en Ad­ver­ti­se­ments wor­den adres­sen van rou­ters en de­fault-rou­ters op­ge­vraagd en door­ge­ge­ven. Neigh­bour Sol­li­ci­ta­ti­ons en Ad­ver­ti­se­ments zet­ten bo­ven­dien IPv6adres­sen om in Lay­er-2-adres­sen. In Wi­reshark haal je ICMPv6-be­rich­ten er­uit door

Welk IP-adres wil de client?

het Dis­play Fil­ter op het Ty­pe van het be­tref­fen­de be­richt in te stel­len: zo zoek je met icmpv6.ty­pe == 133 || icmpv6.ty­pe == 134 naar Rou­ter Sol­li­cits en Ad­ver­ti­se­ments. Met icmpv6.ty­pe == 135 || icmpv6. ty­pe == 136 vind je Neigh­bor Sol­li­cits en Ad­ver­ti­se­ments en icmpv6.ty­pe == 128 || icmpv6.ty­pe == 129 toont Ping6-pak­ket­ten. Bij ICMPv6 Ping-pak­ket­ten wordt ove­ri­gens het 'Da­ta'-veld ge­vuld met dum­my-by­tes om een mi­ni­ma­le pak­ket­groot­te te krij­gen.

SSH: Via Se­cu­re Shell wor­den ver­sleu­tel­de en dus niet lees­ba­re ver­bin­din­gen op­ge­zet. Maar de eer­ste pak­ket­ten van een ses­sie zijn niet ver­sleu­teld, waar­door je bij­voor­beeld de pro­to­col-ver­sie van de deel­ne­mers kunt ach­ter­ha­len (zo­als SSH2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1) .

In plaats van te zoe­ken naar een spe­ci­fiek pro­to­col, kun je ook pro­to­col­len uit­fil­te­ren en kij­ken wat er over­blijft. Stel bij­voor­beeld het Dis­play Fil­ter in op not (dns or dhcp or stp or …), dan stuit je mis­schien op zeld­za­me of exo­ti­sche pro­to­col­len. Je kunt ook pak­ket­ten te­gen­ko­men waar geen pro­to­col aan is toe­ge­we­zen, zo­als IP-SLA-ver­keer van Cis­co-rou­ters. Daar­mee wordt UDP-jit­ter ge­me­ten, door met re­gel­ma­ti­ge tus­sen­po­zen (stan­daard 60 se­con­den) UDP-pak­ket­ten tus­sen twee rou­ters uit te wis­se­len. Het me­nu 'Sta­tis­tics/Con­ver­sa­ti­ons' biedt bo­ven­dien snel in­zicht in het aan­tal uit­wis­se­lin­gen via IPv4, IPv6, TCP en UDP. Als je je vaar­dig­heid met Wi­reshark en je ken­nis van pro­to­col­len wilt tes­ten, kan dat bij­voor­beeld met een on­li­ne PCAP-be­stand en bij­be­ho­ren­de vra­gen [2]. Of je gaat meteen aan de slag met een tra­ce op je ei­gen net­werk.

Uit LLDP-pak­ket­ten kun je af­lei­den hoe de bij­be­ho­ren­de ap­pa­ra­ten he­ten, wel­ke soft­wa­re­ver­sie ze draai­en en zelfs wel­ke ma­na­ge­mentIP-adres­sen ze ge­brui­ken.

Als je een TCP- of UDP-stream volgt, kun je bij on­ver­sleu­tel­de ver­bin­din­gen de in­houd le­zen. In dit ge­val gaat het om de TFTPover­dracht van een con­fi­gu­ra­tie­be­stand.

Newspapers in Dutch

Newspapers from Netherlands

© PressReader. All rights reserved.