har du någonsin varit i en svår position som nätverksingenjör där du fortsätter att felsöka ett problem men du gör inte framsteg? I vissa fall så önskar du bara att du kan se vad som verkligen händer med varje paket i trafikflödet.

om du är på en Cisco-router kanske du vill använda kommandot debug ip packet IOS men då har du förmodligen hört (och upplevt?) att aktivera felsökning på ett produktionsnätverk kan få allvarliga prestandaeffekter. Så vad gör du i sådana tider när du känner att dina händer är bundna?

Ange Paketinsamling.

med Paketfångst kan du titta på enskilda paket när de flyter över ett nätverk och använda informationen från denna process för flera ändamål – oavsett om du försöker undersöka hög bandbredd eller övervaka ditt nätverk för misstänkt trafik – Vi ser fördelarna med detta när vi fortsätter med vårt laboratorium.

i den här artikeln kommer vi att diskutera paketfångst i detalj genom att titta på dess användningsområden, utmaningar i samband med att fånga paket, verktyg som kan hjälpa till med paketfångst och även konfigurera ett labb som fokuserar på paketfångst med Wireshark och analysera paketen vi snusade för att förstå vad de gör.

Vad är ett ”paket”?

innan vi fortsätter i den här artikeln, låt oss först prata om vad vi menar med ”paket”. Om du har varit i nätverksvärlden ännu en kort stund kommer du att känna till OSI-modellen:

7 lager, från Applikation ner till det fysiska lagret.

OSI-modelldiagram

så vad händer när två enheter i ett nätverk vill kommunicera? Låt oss ta exemplet med en klient som vill komma åt en viss sida på en webbserver. Från en hög nivå kommer klienten att göra en HTTP-begäran för den specifika sidan på webbservern.

men för att HTTP-begäran ska komma till servern måste data ”inkapslas” över de olika lagren i OSI-modellen. Till exempel kommer HTTP-begäran att inkapslas i en TCP-rubrik och sedan en IP-rubrik och blir sedan en Ethernet-ram tills den skickas ut över ledningen till servern. Servern kommer sedan att utföra omvänd process (decapsulation) tills den hämtar HTTP-begäran från klienten och sedan bearbetar den.

Obs: Detta är en förenkling av processen. Innan HTTP-begäran kan skickas kommer andra former av kommunikation som ARP och TCP Handshake att ha ägt rum.

i de flesta fall skickas flera ”paket” mellan klienten och servern för att bilda kommunikationen/konversationen mellan dessa enheter. Vad packet capture gör är att fånga varje paket som utgör konversationen så att dessa paket kan undersökas på en djupare nivå.

Obs: i nätverksterminologi kallar vi data i transportskiktet ett segment, data i nätverkskiktet ett paket och data i datalänkskiktet en ram. Men när man talar om paketfångst hänvisar ett ”paket” till data som har inkapslats i de övre lagren (e.g application layer) hela vägen ner till när paketet är redo att avsluta/ange ett gränssnitt.

Packet Capture Use-Cases

nu när vi har fått definitioner ur vägen, låt oss diskutera några användningsfall för paketfångst – varför skulle du vilja utföra en paketfångst?

nätverksfelsökning

i början av den här artikeln beskrev jag ett alltför vanligt scenario där paketfångst kan vara mycket användbart, vilket är vid felsökning av problem i ett nätverk, inklusive paketförlust och nätverkstoppning.

för felsökning handlar packet capture inte bara om vad du ser; det handlar också om vad du inte ser. Till exempel, om vissa användare på ett visst nätverkssegment klagar på att de inte kan komma åt en server, kan packet capture hjälpa dig att borra ner i problemet.

kanske använder användarna som kan komma åt servern en annan standardgateway än de som inte kan. om du fångar paket på en av gatewayerna kan du upptäcka de paket som inte kommer genom den gatewayen.

Säkerhetsincidentutredning

under en av mina felsökningsövningar för ett företag märkte vi att vissa enheter förlamades av viss trafik som passerade dem. Problemet var så dåligt att det påverkade konsolanslutningen till enheterna och vi kunde knappast felsöka enheterna på plats.

tack och lov övervakade detta företag all trafik som gick igenom deras nätverk och behöll säkerhetskopian av alla dessa paketfångst.

när vi tittade igenom paketupptagningen märkte vi en viss IP-adress som skickade ett stort antal paket. Ytterligare undersökning visade att denna IP-adress användes för att utföra en DoS-attack (Denial of Service) på företagets nätverk. Blockering av den IP-adressen löste problemet tillfälligt.

Detta är en av användningarna av Paketfångst, för att undersöka säkerhetsincidenter som den som beskrivs ovan. Genom att fånga paket som flyter genom ett nätverk är det möjligt att identifiera virus, spionprogram och andra former av skadlig kod och säkerhetshot.

lärande

en av mina favoritanvändningar av paketfångst är för inlärningsändamål. När jag lär mig en ny teknik och kanske läser RFC på den tekniken är det vanligtvis bra att använda paketfångst för att se tekniken i aktion.

till exempel hör vi ofta att TCP-handskakningen består av tre paket: SYN, SYN+ACK, ACK, men har du någonsin sett en TCP-handskakning hända mellan två enheter?

genom att fånga paket mellan enheter som kommunicerar via TCP kan du lära dig och se TCP-Handskakningsprocessen.

Paketfångstverktyg

så du har bestämt dig för att utföra en paketfångst, hur går du tillväga? Det första du behöver göra är att bestämma vad ditt mål är. Är du bara intresserad av att fånga paket eller vill du också analysera de fångade paketen?

ett exempel på första instansen är företaget jag pratade om ovan. Vid tidpunkten för att fånga paketen var de bara intresserade av att lagra paketen för säkerhetskopieringsändamål för att eventuellt användas för kriminalteknik eller som ett lagstadgat krav. Men i ett fall som nätverksfelsökning vill du fånga paketen och analysera dem omedelbart för att upptäcka vad problemet i nätverket är.

det finns flera verktyg som kan användas för att fånga (och analysera) paket (inklusive Netflow och andra flödesprotokoll) och många av dem är beroende av någon form av pcap-implementering för att fånga levande nätverkstrafik. För Unix-baserade system används libpcap-biblioteket medan Windows använder en port i libpcap som heter WinPcap. Det finns fortfarande andra implementeringar som Npcap och Win10Pcap.

Wireshark

den första på vår lista över verktyg är Wireshark, tidigare känd som Ethereal. Wireshark är förmodligen det mest kända paketfångningsverktyget, även känt som en nätverksprotokollanalysator eftersom det går utöver att bara fånga.

med Wireshark kan du fånga paket på olika medier (Ethernet, trådlöst etc.), analysera dem, konfigurera filter, sökpaket och så vidare. Wireshark har också några coola avancerade funktioner som möjligheten att följa TCP-strömmar, utföra analys på TCP och återmontera paket.

Wireshark är GUI-baserat vilket kan vara ett problem i fall där ett GUI inte kan användas, som på vissa Linux-servrar som är terminalbaserade. Det finns två sätt att komma runt denna fråga. Ett sätt är att använda ett annat verktyg för att fånga paketen och sedan använda Wireshark för att analysera de fångade paketen (så länge paketen lagras i ett filformat som kan läsas av Wireshark, vanligtvis pcap).

det andra sättet att komma runt det icke-GUI-problemet med Wireshark är att använda den terminalbaserade versionen av Wireshark som heter Tshark. Den stöder samma alternativ som Wireshark och är inte begränsad/underlägsen på något sätt.

tcpdump

ett äldre verktyg än Wireshark själv är tcpdump som också kan användas för paketfångst och analys. Medan Wireshark fungerar över flera operativsystem inklusive Windows, Mac och Unix-baserade system, fungerar tcpdump bara på Unix-baserade system (inklusive Mac). Till skillnad från Wireshark är tcpdump strikt ett kommandoradsverktyg och har mycket låga kostnader. Detta gör att tcpdump kan köras på distans över, säg en SSH-inloggning.

notera: Det finns en hamn i tcpdump som heter WinDump som fungerar på Windows.

å andra sidan är en fördel med Wireshark över tcpdump antalet protokoll som Wireshark kan ge detaljerad information om. tcpdump är mer fokuserad på TCP / IP även om den kan användas för att fånga alla former av paket. Därför föredrar vissa administratörer att använda tcpdump för att fånga paket, spara det som en pcap-fil och importera sedan till Wireshark för analys.

nätverksövervakningsverktyg

olika nätverksövervakningsverktyg som PRTG och Solarwinds Network Performance Monitor implementerar också någon form av paketfångst som de använder för sin interna analys. Det verkar inte som att dessa verktyg ger möjlighet att exportera paketfångsten som ska analyseras av andra verktyg.

det finns andra paketinspelningsverktyg som Colasoft Capsa, och vissa enheter implementerar också en inbyggd paketinspelningsfunktion (t.ex. Cisco Embedded Packet Capture).

Packet Capture överväganden

för att framgångsrikt utföra ett paket capture, det finns ett par saker att överväga bland annat vad man ska fånga, var att fånga, och var att lagra de fångade paketen.

Vad ska du fånga

vilka paket tänker du fånga? Vill du bara ha Paket från / till den specifika enheten som packet capture-verktyget körs på eller vill du också fånga paket från andra enheter? Anledningen till att detta är viktigt är att de flesta gränssnitt på en enhet som standard bara ger enheten paket som är avsedda för den enheten (inklusive multicast och sändning). För att fånga paket som är avsedda för andra enheter måste gränssnittet köras i ”promiskuöst” läge (eller ”monitor” – läge när det gäller trådlöst).

det är viktigt att notera att vissa gränssnitt inte stöder promiskuöst läge och även om de gör det, stöder vissa operativsystem inte det.

var du ska fånga

även om ett gränssnitt placeras i promiskuöst läge kanske du inte tar emot trafik till/från andra enheter. Detta gäller särskilt på växlade nätverk. Till skillnad från nav som översvämmer paket på alla sina gränssnitt (något som nätverkstrafikgeneratorer gör), kommer omkopplare vanligtvis att säkerställa att ett paket skickas ut endast till den port som paketet tillhör.

detta innebär att även om du ansluter enheten som packet capture tool körs till en switch port och placera gränssnittet i promiskuöst läge, du kommer inte att få paket avsedda för andra enheter.

ett vanligt sätt att lösa problemet är att konfigurera något som kallas ”portspegling”. Med portspegling kan en omkopplare konfigureras för att kopiera paketen på ett gränssnitt/VLAN till en annan port, vanligtvis till vilken en enhet som kör ett paketfångstverktyg är ansluten.

notera: Olika leverantörer använder olika terminologier för den här funktionen, inklusive portspegling, Switchad Port Analyzer (SPAN), etc.

Lagring gäller

den sista faktorn att tänka på är Var man ska lagra de fångade paketen. Beroende på storleken på nätverkssegmentet som ska fångas på och hur upptagen det segmentet är, kan storleken på en paketfångst växa mycket snabbt, till hundratals megabyte och till och med Gigabyte.

flera alternativ finns för att övervinna denna oro. För det första kan du fånga paket under en kort tid. För det andra kan du konfigurera ett filter för att bara fånga en viss delmängd av paket, t.ex. endast HTTP-trafik till en viss webbserver.

slutligen kan du använda externa lagringsenheter för att behålla filer med fångade paket. Det sista alternativet är särskilt användbart för dem som vill behålla säkerhetskopior av all trafik som flyter genom deras nätverk.

Lab: Wireshark i GNS3

Låt oss se hur användbar Wireshark kan använda en enkel lab setup i GNS3:

för att följa med, ladda ner GNS3 gratis!

ladda ner GNS3 gratis

vi ställer in konfigurationen enligt nedan:

konfigurationen på routrarna är mycket enkel. R1 är konfigurerad med en IP-adress på 10.0.0.1 på sitt Fa0/0-gränssnitt medan R2 är konfigurerad med en IP-adress på 10.0.0.2 på sitt Fa0 / 0-gränssnitt. Det finns också en VTY Lösenord ”cisco” konfigurerad på R2 tillsammans med en möjliggöra hemlighet av ”cisco”.

en av de riktigt coola sakerna med GNS3 är möjligheten att fånga paket direkt från GNS3 och se dessa paket i Wireshark.

Obs: GNS3-inställningen levereras med en Wireshark-inställning som standard. Jag märkte dock att Wireshark-installationen som ingår i den senaste GNS3 Windows-installationen misslyckas av någon anledning. Om det händer dig, ladda bara ner Wireshark och installera det normalt.

för att fånga i GNS3, högerklicka på länken du vill fånga på och välj ”Starta capture”. Acceptera standardvärdet i dialogrutan som öppnas eller anpassa det efter behov.

om allt går bra bör Wireshark automatiskt starta och du bör se att paket fångas. Vi kommer nu att generera några paket mellan R1 och R2. Låt oss öppna en telnet-anslutning från R1 till R2 och bara spela lite (du kan se några av de vanligaste iOS Cisco-kommandona här):

nu för den roliga delen. Om du tittar på Wireshark bör du se några paket relaterade till telnet-sessionen du just gjorde, paket som ARP, TCP och Telnet.

Låt oss ta en titt på ett av sådana paket, t.ex. det första TCP-paketet (en del av TCP-handskakningen). Det första du kommer att märka är inkapslingen vi pratade om tidigare i den här artikeln. TCP-data inkapslas i ett IP-paket, som är inkapslat i en Ethernet-ram, och slutligen skickas ut på tråden.

vi kan borra ner i detaljerna i paketet och ta en titt på varje lager i paketet. Först ut är TCP-rubriken. Du kan jämföra detta med TCP-rubriken som beskrivs i RFC 793 och det borde vara mycket lika.

ett par saker sticker ut som destinationsporten 23 (Telnet), ett slumpmässigt genererat sekvensnummer (961636601) och en rubriklängd på 24 byte.

om vi går till nätverkslagret kan vi se IPv4-rubriken som visar käll-och destinations-IP-adresserna, protokollet som bärs, rubriklängden och så vidare.

nästa är Ethernet-rubriken som visar oss MAC-adresserna för de enheter som är involverade i denna konversation, tillsammans med EtherType.

slutligen ser vi att paketet skickas ut på tråden.

kommer du ihåg när vi pratade om TCP-handskakningen? Bra. Vi har redan sett det första paketet som är ett SYN-paket. Enligt kunskap bör nästa paket vara ett SYN + ACK-paket med ett slumpmässigt sekvensnummer och ett bekräftelsenummer som är 1 högre än sekvensnumret för det tidigare SYN-paketet, dvs 961636601 + 1.

slutligen bör det sista paketet i TCP-handskakningen vara ett ACK-paket med ett sekvensnummer lika med bekräftelsenumret för det tidigare SYN+ACK-paketet och ett bekräftelsenummer som är 1 högre än sekvensnumret för SYN+ACK-paketet.

syn-ack

som du kan se kan Wireshark vara till hjälp för att förstå tekniska ämnen. Låt oss dock gå ett steg längre. Låt oss följa TCP-strömmen och se varför du bör vara försiktig med Telnet.

som du kan se kan vi se telnet och Aktivera lösenord i klartext! Detta är en av anledningarna till att Telnet inte rekommenderas eftersom det är osäkert förutom att det används över ett säkert medium som en VPN-tunnel.

slutsats

detta leder oss till slutet av den här artikeln där vi har diskuterat paketfångst och sett hur det kan vara användbart för lärande, felsökning av nätverk och utredning av säkerhetsincidenter. Vi har också markerat några verktyg som kan användas för paketfångst och analys inklusive Wireshark, tcpdump och några nätverksövervakningsverktyg som Solarwinds NPM & PRTG.

slutligen tittade vi på ett enkelt laboratorium i GNS3 och såg hur Wireshark fångar och analyserar paket.

relaterat inlägg: introduktion till Supernetting

Lämna en kommentar

Din e-postadress kommer inte publiceras.