Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka
nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I
kombination med tshark
kan vi dessutom avlyssna trafiken på en
server i realtid.
Med Wireshark kan vi också bekräfta att kryptering av trafiken fungear. Utan att titta på nätverkstrafiken kan vi bara anta att det fungerar. Ett exempel på detta är SMTP som kan använda både krypterade och okrypterade anslutningar över samma port – port 25.
Vi kan också lära oss hur olika protokoll fungerar genom att titta på trafiken.
Installera programmen
För att kunna titta på trafik i realtid i Wireshark från en server utan
grafiskt gränssnitt behöver vi två delar. På den lokala datorn behöver vi
installera Wireshark. På servern behöver vi installera tshark
, och även göra
vår användare medlem i wireshark
-gruppen.
Vi utgår här från att vi använder en Debian-baserad Linuxdistribution så som Debian, Ubuntu eller liknande.
Installera Wireshark på den lokala datorn med:
$ sudo apt install wireshark
Installera tshark
på servern med:
$ sudo apt install tshark
Under installationen av tshark
blir vi tillfrågade om vi vill göra det
möjligt för vanliga användare att använda tshark
. I vårt fall vill vi detta
så vi svarar ja på frågan.
Därefter måste vi lägga till användaren i wireshark
-gruppen:
$ sudo usermod -a -G wireshark jake
Avlyssna trafiken på servern
Nu kan vi avlyssna trafiken i realtid på servern så att vi ser den i vår lokala Wireshark. För detta kör vi följande kommando på den lokala datorn:
$ ssh jake@192.168.5.30 'tshark -i enp1s0 -f "port 25" -w -' \
| wireshark -k -i -
Här använder vi SSH för att köra tshark -i enp1s0 -f "port 25" -w -
på
servern, som i det här fallet är 192.168.5.30.
Argumentet -i enp1s0
är nätverkskortet på servern som vi vill lyssna på.
Argumentet -f "port 25"
är ett filter som säger att vi endast vill lyssna på
port 25 (SMTP). Argumentet -w
anger ett filnamn för att spara datan i, men
här anger vi istället -
vilket betyder standard output.
Därefter omdirigerar vi datan som skickas över SSH via standard output till
vår lokala Wireshark. Här anger vi argumenten -k -i -
som talar för
Wireshark att vi vill starta avlyssningen direkt (-k
) och att vi vill
avlyssna nätverkskortet -
(med -i -
). Här är nätverkskortet istället standard
input (-
).
Vi skickar alltså den avlyssnade trafiken över SSH till vår lokala Wireshark.
Notera att lösenordsprompten kan försvinna eller vara svår att se när vi kör kommandot eftersom det kommer data som stör prompten. Men skriv in lösenordet för servern även om ingen prompt syns, då startas överföringen. Använder vi SSH-nycklar behövs dock inget lösenord för servern.
Nu startar Wireshark, och så fort det flödar trafik på port 25 på servern syns det i Wireshark.
För att enklare kunna läsa SMTP-trafiken kan vi högerklicka på en rad med SMTP och välja Follow → TCP Stream.
Översikten av all trafik som Wireshark har fångat upp.
Nu kan vi enkelt läsa SMTP-trafiken. Blå text är det som servern har skickat; röd text är det som klienten har skickat.
En okrypterad SMTP-anslutning där vi kan läsa hela mejlet som skickades.
Här ser vi att anslutningen är okrypterad. Vi kan således läsa hela mejlet i klartext. Detta visar på vikten av kryptering.
Om vi försöker läsa ett mejl som har skickats över krypterad SMTP ser vi bara skräptecken.
När anslutningen är krypterad kan vi inte längre läsa mejlen.
Exempel med HTTP-trafik
Vi kan göra samma procedur med HTTP-trafik. Vi anger då istället port 80 i
filtret för tshark
. När trafiken börjar trilla in i Wireshark högerklickar
vi på någon av raderna med HTTP i kolumnen Protocol och väljer Follow →
HTTP Stream. Vi ser då hela HTTP-konversationen som har skett mellan servern
och klienten.
Även här markerar röd text det som klienten har skickat och blå text är det som servern har skickat.
Om vi istället försöker avlyssna HTTPS-trafik på port 443 kommer vi inte att kunna se något annat än skräptecken – bortsett från adressen till sidan.
Även här är röd text det som klienten har skickat och blå text är det som servern har skickat.
Wireshark för att lära sig TCP/IP-protokoll
Genom att titta på trafiken som flödar från och till en server kan vi lära oss
hur dessa protokoll fungerar. I exemplet med HTTP-trafiken såg vi datan som
klienten skickade till servern. Vi kan nu testa att själva skicka denna datan
till servern med exempelvis nc
– Netcat.
Netcat installeras i Debian och Ubuntu med:
$ sudo apt install netcat-traditional
När Netcat är installerat ansluter vi till servern:
$ nc -C demontest.cyberinfo.se 80
Vi skriver därefter in nedanstående text och avslutar med två radbrytningar.
GET / HTTP/1.1
Host: demontest.cyberinfo.se
User-Agent: curl/8.6.0
Accept: */*
Detta är samma text som vi såg i Wireshark. Det går att utelämna User-Agent
och Accept
, men här väljer vi att ha med det för att efterlikna datan vi såg
i Wireshark.
När vi avslutar med två radbrytningar svarar webbservern med att skicka tillbaks sidan som finns på adressen demontest.cyberinfo.se.
På samma sätt kan vi testa att prata med en SMTP-server genom att skicka samma data som vi såg när vi avlyssnade port 25.
Vi kan göra samma övning med i stort sett vilket protokoll som helst som skickar kommandon i klartext till en server. På så sätt kan vi lära oss exakt hur ett protokoll fungerar – bara genom att titta på trafiken i Wireshark.
Nyhetsbrev
Nyhetsuppdateringar från tidningen direkt till din inkorg, helt kostnadsfritt. Avsluta när du vill.
Kommentarer
Kommentarsfältet är modererat. Det innebär att alla kommentarer granskas av ansvarig utgivare före publicering.
Du väljer själv om du vill ange ditt riktiga namn, en pseudonym eller vara helt anonym. Ingen registrering behövs.
Relaterade artiklar
-
Var försiktig med att curl:a skript som root
Att installera program i Linux genom att omdirigera utdata från Curl till skalet är snabbt och smidigt. Men det är ack så farligt om du inte känner till programmet eller dess ursprung.
-
Vidarebefordran av SSH-agenten
SSH agent forwarding, eller vidarebefordran av SSH-agenten, innebär att man kan vidarebefordra SSH-agenten till ett fjärrsystem. På så sätt behöver man inte kopiera sin privata SSH-nyckel till fjärrsystemet, eller skapa flera nycklar för olika system. Men det finns risker med det.
-
Jenkins som ett alternativ till Ansible Tower
Ansible Tower kommer med en stor prislapp, speciellt för ett mindre företag eller en privatperson. AWX å andra sidan är helt fritt, men kräver numera Kubernetes. För den som vill automatisera sina Ansible Playbooks går det dock bra att använda Jenkins som en ersättning för Tower och AWX.
-
Hämta data från API:er med cURL och jq
Med cURL och jq går det att extrahera data från API:er direkt från kommandoraden. Jq är en JSON-tolkare och beskrivs av utvecklarna som sed och awk för JSON.
Senaste nyheterna och inläggen
-
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Sommarens skånska demopartyn
Årets sommar bjuder på två skånska demopartyn. Först ut är Reunion i Kvidinge den 28–30 juni. Därefter är det Pågadata i Örtofta den 9–11 augusti.
-
Riskerna med BankID som ingen pratar om
BankID är ett säkert och smidigt sätt att identifiera sig online. Men i takt med dess ökade popularitet och användning har det blivit en svag länk – en single point of failure – på mer än ett sätt.
-
Polisernas fängelsedomar står fast
Efter tre år är målet mot de två poliser som olovligen tog sig in i en berusad mans bostad i Landskrona och misshandlade honom klart. Högsta domstolen beslutade den sjätte mars att avvisa överklagan. Fängelsedomarna för poliserna står därmed fast.
Utvalda artiklar
-
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Datorparty i Landskrona
I helgen höll Syntax Society sitt årliga sommarparty. Platsen var en källarlokal i Landskrona där ett femtontal personer medverkade.
-
Det första Pågadata har ägt rum
I helgen ägde det första Pågadata rum – uppföljaren till Gubbdata. Platsen var Folkets Hus i Kvidinge. Organisatör av partyt var Johan “z-nexx” Osvaldsson med hjälp från Jesper “Skuggan” Klingvall. Partyt hade över 100 anmälda deltagare.
-
Även hovrätten fäller poliserna för att ha satt dit oskyldig
Hovrätten fastställer straffet för de två poliser som förra året dömdes till vardera ett års fängelse av Lunds tingsrätt för att ha misshandlat och satt dit en oskyldig man. De båda poliserna ska även betala skadestånd till mannen.
-
Retroloppis i Påarp
Idag var det retroloppis hos Andreas Nilsson i Påarp. På baksidan av huset fanns hundratals spel uppradade på långa bord. Trots friska vindar och sval temperatur var loppisen välbesökt.
CyberInfo Sverige är ett it- och medieföretag i nordvästra Skåne som tillhandahåller böcker, utbildningar, nyheter och konsulttjänster inom Linux, säkerhet och programmering.
CyberInfo Sverige är godkänd för F-skatt, är momsregistrerat och innehar
utgivningsbevis för webbplatsen www.cyberinfo.se.