Säkerhet 2022.10.17

Hur väljer du säkra lösenord?

I dag, flera decennier efter att vi först började använda lösenord i våra datorer och system, finns det många olika lösningar som både ska skydda oss och göra lösenordshanteringen enklare. Trots det fortsätter vi att använda svaga, läckta och återanvända lösenord i olika miljöer och bidrar därmed till ökad risk. I denna blogg beskriver vi de vanligaste problemen kring användning av svaga lösenord samt hur detta utnyttjas av angripare för att utföra sina attacker.

Log-in

Lösenord är ett eller flera hemliga ord som möjliggör en autentisering mot ett givet objekt. Det kan handla om exempelvis ett konto på webben, i ett system eller nätverk. Beroende på vilket system som används och hur det systemet är byggt, kan inloggningsprocessen se lite olika ut. Det som är gemensamt för de flesta moderna och säkra system är att lösenord aldrig ska överföras, bearbetas eller lagras i klartext. I stället går det till så att när en användare sätter sitt lösenord så omvandlas det till en sträng som endast det använda systemet kan tolka och förstå:

lösenord1.1

Omvandlingen av text till sträng sker i bakgrunden och har som syfte att skydda databasen där uppgifterna lagras från obehörig åtkomst. Även om en angripare kommer åt databasuppgifter kommer den fortfarande behöva förstå vilken algoritm som användes vid kryptering av lösenord. Och här kan tyvärr vissa fel uppstå om utvecklaren tar en genväg och angriparen får en förståelse för hur processen (omvandlingen från lösenord till sträng) går till. Den förståelsen kan de då utnyttja för att komma åt uppgifter och i värsta fall kunna ta med sig allt från ett intrång.

För att hela autentiseringsprocessen ska anses som pålitlig och säker, behöver alla delar av den skyddas på rätt sätt. Det handlar om kontroller av användaren (t.ex. med en CAPTCHA), krypteringen av kommunikationen mellan användaren och webbapplikationen, säkerheten i algoritmen, krypteringen i kommunikationen mellan webbapplikation och databas och slutligen säkerheten i databasen.

Lösenord-1

Många moderna applikationer använder sig av flera olika säkerhetslösningar för att dels verifiera användaren som försöker autentisera sig, och dels säkerställa att alla delar av processen är tillräckligt skyddade och inte påverkade av en obehörig part. När alla villkor för säker autentisering är uppfyllda och användaren godkänns för autentisering, sker en jämförelse mellan det krypterade lösenordet som användaren skrivit in och det som finns lagrat i databasen:

lösenord3-1

Sett ur ett utvecklarperspektiv finns det flera olika delar som behöver göras rätt för att inte riskera varken användarens integritet eller spårbarhet. Det handlar framför allt om vilka algoritmer och funktioner som används och bland alla olika lösningar som finns kan inte alla anses som säkra .

Ska vi nörda ner oss en stund och kika på ett exempel? Strängen ”d3e1633d33832665557209cba20f5784” från exemplet ovan är en s.k. kontrollsumma som skapas av en MD5 (från engelska ”Message-Digest algorithm 5”)- kryptografisk hashfunktion när den appliceras på lösenordet ”Losenord1”. Kontrollsumman som produceras i den här processen kan inte återställas eller på något sätt kopplas till det ursprungliga värdet “Losenord1”. Är den säker då? Nej, det är den inte direkt. Problemet med MD5 är att även om den ser säker ut, dvs. att det inte går att omvandla kontrollsummor tillbaka till klartext, så är MD5 svag ur ett kryptografiskt perspektiv.

Svagheter i MD5-hashfunktioner gör det möjligt att bland annat utföra gissningsattacker mot krypterade strängar. En gissningsattack innebär att angriparen testar miljardtals olika ord och teckenkombinationer för att se om de producerar samma kontrollsumma som angriparen försöker att knäcka. Kan hemliga receptet för kontrollsumman gissas fram - då har angriparen tillgång till lösenordet i klartext.

blender

Så för att göra hela processen säkrare måste alla delar vara tillräckligt säkra: komplexa lösenord i kombination med en stark krypteringsalgoritm, som i sin tur används på rättkonfigurerad och skyddad hårdvara och som slutligen använder andra skyddsmekanismer för att skapa, lagra och jämföra de skyddade värden.

Läs mer hur Advanias Security labs kan hjälpa din verksamhet →

Är ett komplext lösenord ett starkt lösenord?

Lösenordskomplexitet (även kallad lösenordsstyrkan) är ett mått som används för att beskriva hur starkt ett lösenord är gentemot gissningsattacker. Längden på ett lösenord, tillsammans med vilken typ av tecken som används samt om det innehåller vedertagna ord och fraser avgör hur starkt det är[1]. Som ett exempel kan vi ta lösenordet ”123456” som anses vara ett av de svagaste lösenorden. Det är svagt eftersom angriparen troligtvis kommer att testa det lösenordet i kombination med vanliga användarnamn redan vid de första attackförsöken, exempelvis. ”admin+123456” och ”administrator+123456”.

Och tyvärr, även om det är rätt uppenbart att ”123456” är ett svagt lösenord, så fortsätter det att användas i många olika system och håller sin topp-3-placering av mest hackade lösenord. I Sverige är lösenorden ”SommarXX!”, ”VinterXX!” och ”NamnPåSittBarnXXXX” väldigt vanliga och orsakar en hel del problem hos verksamheter.

För att bättre förstå begreppet lösenordskomplexitet måste man också förstå hur en angripare går till väga vid attacker mot konton och lösenord. Låt oss kika på fyra av de vanligaste sätten att komma över inloggningsuppgifter:

Ordboksattacker och brute-force

kod-lås

En av de äldsta och mest förekommande typer av lösenordsattacker är s.k. ordboksattacker (fr. eng. ”dictionary attack”). Den fungerar så att angriparen använder sig av en fördefinierad lista med lösenord som ett efter ett testas mot ett givet konto[2]. Graden av framgång vid dessa attacker avgörs av hur starkt det givna lösenordet är. Det kan antingen handla om att angriparen testar olika lösenord mot en aktiv tjänst (exempelvis inloggning på en webbplats eller i ett WiFi-nätverk) eller så försöker den knäcka redan läckta uppgifter, exempelvis en databas med krypterade lösenord.

Det som händer rent praktiskt under ordboksattacken är att angriparen testar många olika kombinationer för att hitta den rätta och ofta används då en lista med de vanligaste lösenorden som testas mot ett eller flera konton samtidigt:

lösenord4

När angriparen använder sig av brute-force attacker är principen ungefär detsamma. Under den här typen av attacker handlar det om att hitta en korrekt kombination som ska tillåta obehörig åtkomst. I stället för att testa bara de vanligaste kombinationerna, utökas dock den här typen av attack med att pröva alla möjliga kombinationer inom ett visst förbestämt utrymme. Som ett exempel kan vi ta ett scenario där angriparen vet att lösenordet till ett hemligt dokument består av 4 gemener och 2 siffror. För att hitta ett rätt lösenord behöver angriparen testa alla permutationer[3] inom ett visst förbestämt intervall.

Lösenord: * * * * * *

Med hjälp av olika verktyg kan angriparen relativt snabbt bygga ihop en lista med alla permutationer som inkluderar 4 gemener och 2 siffror:

aaaa00

bbbb00

aaaa01

zzzz99

Brute-force attacker, även när de används tillsammans med ordboksattacker, är resurs- och tidskrävande. Det handlar om att lösenordet som ska knäckas måste vara tillräckligt svagt, och den sortens attack kräver också mycket resurser och tid. Detta kan vara ett relevant tillvägagångssätt när attacken riktas mot ett givet mål med högt värde (t.ex. ett administratörskonto), men det finns andra, mycket mer effektiva och snabba sätt att utföra lösenordsattacker som vi ska gå igenom i denna artikel.

Password spraying

sprayburk-orange

Skadliga aktörer vet redan att en del konton i nästan varje organisation har svaga och till och med mycket svaga lösenord. I stället för att rikta sig in på ett specifikt konto och testa många olika kombinationer kan angriparen testa ett specifikt lösenord på alla konton. Detta kallas för password spraying[4].

Den typen av attacker går ut på att angriparen samlar in information om adresser som används för autentisering (t.ex. namn.efternamn@organisation.se) och kopplar ihop dem med de 4–5 vanligaste lösenorden (t.ex. ”Sommar22”, ”Vinter19”, ”Nyttjobb2020!”, etc.).

anställd1@organisation.se + Sommar22 Fel

anställd2@organisation.se + Sommar22 Fel

anställd3@organisation.se + Sommar22 Fel

anställd4@organisation.se + Sommar22 Fel

anställd5@organisation.se + Sommar22 Fel

anställd6@organisation.se + Sommar22 Rätt

Password spraying är ett väldigt effektivt sätt mot stora bolag som har ett stort antal användare. Sannolikheten att en giltig kombination hittas växer i proportion till antal använder i organisationen. En annan fördel som password spraying har ur angriparperspektivet är att det sker bara ett inloggningsförsök per konto, i stället för tusentals försök på ett och samma konto. Vidare går det också att automatisera processen med slumpmässiga vilotider mellan försöken, samt att låta attacken ske ifrån flera olika platser i Sverige och världen, för att på så sätt göra det svårare att bli upptäckt.

Credential stuffing

ima162019

En annan variabel som är viktig vid val av lösenord är om det har återanvänts. Ordboksattacker, brute-force samt password spraying kommer med en viss grad av osäkerhet för angriparen när olika konton och lösenord testas. Den osäkerheten kan de minska genom att använda redan läckta lösenord som alltså bevisligen har använts i olika tjänster. Tänk själv hur många lösenord du egentligen återanvänder på flera olika ställen. Det utnyttjar angriparen i attackformen Credential stuffing och försöker återanvända redan läckta lösenord för att komma in på andra system och tjänster[5]. Många människor tycker det är svårt att hålla koll på flera olika lösenord och det är väldigt vanligt att ett och samma lösenord används till i stort sett alla privata och jobbrelaterade konton. Och det vet givetvis angriparna om:

fornamn.efternamn@organisation.se + Sommar22 + Sociala medier  Fel

fornamn.efternamn@organisation.se + Sommar22 + Tidrapporteringslösning Fel

fornamn.efternamn@organisation.se + Sommar22 + Kundsystem Rätt

Den här typen av attacker växer i sin framgång baserat på vad för slags data angriparen har fått tag i samt hur ofta lösenordet återanvänds. Enligt molntjänsteleverantören Cloudflare[6] lyckas dock bara 0,1% av dessa attacker, dvs för varje tusen konton som en angripare försöker knäcka kommer den att lyckas ungefär en gång. Har du ställt dig frågan hur ofta du återanvänder ditt eget lösenord? Finns det kanske förbättringspotential där?

Phishing

Phishing (på svenska "nätfiske") fortsätter att vara en av de vanligaste vägarna in i en organisation. Angriparen utger sig då för att vara någon som har behörighet eller tillgång till information, för att slutligen komma åt egentligen hemliga uppgifter. Det vanligaste sättet är att angriparen skickar ut ett stort antal e-postmeddelanden där mottagarna uppmanas till att exempelvis byta ett lösenord, lämna ut uppgifter eller ladda ner och exekvera skadlig kod.

Läs mer i vår specialartikel om hur du skyddar dig från phishing →

Vad är då ett starkt lösenord?

Ett starkt lösenord är en hemlig fras som består av flera (minst 8) tecken, bland annat gemener, versaler, siffror och specialtecken. Ett sådant starkt lösenord exkluderar också vanliga ord som t.ex. ”sommar”, ”vinter” och ”password”.

Viktigt att komma ihåg är också att ett starkt lösenord bara är starkt om det inte delas med någon. Lösenord är personliga och ska aldrig avslöjas för någon. Lösenord bör också vara olika för olika tjänster. Skulle en lösenordsläcka uppstå i en av tjänsterna du använder måste du byta till ett nytt lösenord där – men återanvänder du samma lösenord på fler ställen utsätter du dig både för större risker och behöver också byta till nya lösenord i alla dessa olika tjänster även om läckan bara påverkat en av dem.

Skriv aldrig ner dina lösenord

Du ska aldrig skriva ner dina lösenord på varken post-it lappar eller i anteckningar i din dator. I stället kan du använda en säker lösenordshanterare som många arbetsgivare erbjuder. När du använder en lösenordshanterare som integrerar sig med din webbläsare behöver du bara komma ihåg ett huvudlösenord. Lösenordshanterare gör det också lättare för dig att upptäcka en phishing-webbplats som försöker komma åt dina inloggningsuppgifter. Eftersom adressen till webbplatsen vid phishingförsök är förfalskad (tex. loggin.microsoft-office365.bloggsida.se i stället för den riktiga Microsoft 365-sidan) kommer lösenordshanteraren att förstå att det är fel och därför inte föreslå något av dina lagrade lösenord.

Använd också gärna de inbyggda funktionerna i lösenordshanteraren för att skapa starka lösenord. De komplexa lösenord som då skapas automatiskt behöver du aldrig memorera. I stället kommer lösenordshanteraren hålla koll och även synkronisera dem mellan din dator och mobiltelefon. Lösenordshanterare har även funktionalitet för att upptäcka om du använder svaga lösenord och varna dig om dessa så du kan uppdatera till mer säkra lösenord.

Hur kan vi öka lösenordssäkerheten inom vår verksamhet?

Det enklaste steget för ökad säkerhet inom verksamheten är att förbjuda användning av svaga lösenord som t.ex. består av få tecken eller av vanliga fraser (t.ex. ”Sommar21!”). Överväg gärna att införa lösenordshanterare för dina medarbetare. Använd också hellre starka och personliga lösenord i stället för att kräva att medarbetarna regelbundet ska byta dessa. Ett starkt personligt lösenord som hålls hemligt och varar länge är säkrare än ett lösenord som måste bytas var 3:e månad och där medarbetarna känner behovet att skriva ner de ständigt ändrade lösenorden och spara lappen i nära anslutning till sina datorer.

Överväg införandet av passwordless lösningar som exempelvis Windows Hello[7] och Multi-Faktor autentisering (MFA) med engångslösenord (OTP, one-time password) där användaren loggar in med hjälp av en autentiseringsapp. Framöver kommer vi även se ett potentiellt skifte till Passkeys inom Google Chrome och Android plattformen, som är ett mycket säkrare alternativ till lösenord[8]. Självklart hjälper vi dig gärna att hitta rätt lösning som både förenklar för användarna och förhindrar obehörig åtkomst till din verksamhets databaser och dess säkerhetskopior.

Källhänvisningar

[1] https://en.wikipedia.org/wiki/Password_strength

[2] https://owasp.org/www-community/attacks/Brute_force_attack

[3] https://sv.wikipedia.org/wiki/Permutation

[4] https://owasp.org/www-community/attacks/Password_Spraying_Attack

[5] https://owasp.org/www-community/attacks/Credential_stuffing,

[6] https://www.cloudflare.com/en-gb/learning/bots/what-is-credential-stuffing

[7] https://support.microsoft.com/sv-se/windows/läs-om-och-konfigurera-windows-hello-dae28983-8242-bb2a-d3d1-87c9d265a5f0

[8] https://android-developers.googleblog.com/2022/10/bringing-passkeys-to-android-and-chrome.html

Kontakta mig

Senior Security Consultant

Denny Ismailov

Relaterat innehåll

Säkerhet
2022.10.31

Vad är MFA-Fatigue och hur skyddar du dig?

Olika typer av intrång, attacker, ransomeware har synts i medier konstant på sistone. Om du känner att det har blivit mer av den typen av brott har du rätt[1]. Det blir även fler och fler olika sätt som angripare hotar både...

Säkerhet
2022.10.25

Advania Security labs: vi gräver djupare

Vi tog en pratstund med Denny Ismailov, Senior Security Consultant och grundaren till grupperingen Advania Security labs. Har du sett tech-thrillerserien Mr. Robot har du kanske bildat dig en uppfattning om...

Säkerhet
2022.10.03

Hur skyddar jag mig från phishing?

Nätfiske (även kallad phishing) fortsätter att vara en av de vanligaste vägarna in i en organisation. Angriparen använder sig av social manipulation[1] och utger sig för att vara någon som har behörighet eller tillgång till...

Vi gör det enkelt att växa med IT

Vill du också ta din verksamhet till nästa nivå?