Simovits

Lösenordsknäckning 101

Lär dig knäcka lösenord som en hacker.

Introduktion

Lösenordsknäckning låter komplicerat men i detta blogginlägg kommer jag visa att det är relativt lätt. Vi börjar med grunderna och ett exempel, sedan avslutar vi med en kluring till läsaren och mer information för de som är intresserade.

Lösenordsknäckning 101

Lösenordsknäckning, password cracking på engelska, är en teknik som används för att gissa sig till ett lösenord för en lösenordshash. En lösenordshash är en textsträng med blandade bokstäver som representerar ett lösenord. I exemplet nedan visas tre lösenord och deras respektive hash.

Ofta sparar applikationer, exempelvis din email, ditt lösenord i formatet av en hash. Om ditt lösenord är ”eld” sparar alltså applikationen din hash ”1a96e26c8cd1bbd6c01ed90fad5911e1”. Vid lösenordsknäckning vet vi hashen men inte lösenordet. För att ta reda på lösenordet testar vi flera lösenord och jämför hashen de genererar med den hash vi redan har. Om vi testar ett lösenord och det ger samma hash som vi har så har vi gissat rätt och knäckt lösenordet.

Kort om Linux

Verktyg som används för att knäcka lösenordshashar kräver ofta ett linuxsystem då verktygen inte stödjs på andra plattformar. Om du är van vid Windows och vill testa Linux rekommenderar jag WSL (Windows Subsystem for Linux) med Ubuntu. Ni kan installera Ubuntu genom att starta PowerShell och köra kommandot

wsl --install -d Ubuntu


Se den officiella dokumentationen från Microsoft för mer information.

Knäck lösenordet till en krypterad zip-fil

För att knäcka ett lösenord behöver vi tre saker:

Vi börjar med en krypterad zip-fil hemligt.zip som vi ska knäcka lösenordet till.


Sedan flyttar vi filen till ett linuxsystem med de verktyg vi vill använda. Stegen för att knäcka lösenordet är:

  1. Hämta ut hashen
  2. Skapa ordlistan
  3. Knäck hashen med ordlistan

1 Hämta ut hashen – Vi hämtar ut hashen från filen med verktyget zip2john och sparar hashen i en ny fil hash.txt.

zip2john hemligt.zip > hash.txt


2 Skapa ordlistan – Vi skapar en ordlista ordlista.txt med lösenord vi tror skulle använts för att kryptera filen med, vi gissar att lösenordet är eld, vatten eller jord.

cat << EOF > ./ordlista.txt
eld
vatten
jord
EOF


3 Knäck hashen med ordlistan – Avslutningsvis använder vi verktyget john (John the ripper) för att testa lösenorden.

john --wordlist=ordlista.txt hash.txt


När vi kör respektive kommando får vi följande output.


John indikerar att lösenordet till filen är ”vatten”, vi verifierar att det stämmer.


Svårare än så är det inte, hämta hashen, välj ordlista och knäck lösenordet! Om vi hade önskat knäcka ett lösenord till en annan fil eller något annat än en fil hade vi använt ett annat verktyg för att hämta ut hashen. Man får googla sig fram till vilket verktyg man bör använda.

Kluring till läsaren

Kan du knäcka hashen till den lösenordsskyddade filen hemligt.pdf?


Hashen till filen har redan hämtats ut med verktyget pdf2john och resultatet kan kopieras nedan.

hemligt.pdf:$pdf$4*4*128*-1060*1*16*8538f3948862114091b60b37445fbb5b*32*9ad2b879159b7d6e63254af6009cbd0d00000000000000000000000000000000*32*f3492ee1852730caedee89a11919107504d9e2532305f2869e6ee1915b5b7297


Lösningen följer samma format som tidigare men en ny ordslista krävs. Är lösenordet hemligt eller superhemligt? Många lösenord skrivs dessutom på engelska så lösenordet kanske är secret eller topsecret. Om ni inte lyckas knäcka lösenordet så finns det ett lösningsförslag i slutet av bloggen, lycka till!

Hashar, ordlistor och vertkyg

Hashar kommer i olika format beroende på vilken algoritm som används för att skapa hashen. Olika algoritmer är olika starka mot lösenordsknäckning då de kräver olika mycket beräkningskraft för att beräkna en hash från ett lösenord. I exemplet med orden vatten, eld och jord har jag listat ordens MD5-hash, om man väljer en annan algoritm får man en annan hash. Några vanliga algoritmer man kan stöta på är MD5, SHA1 och SHA256 men det finns många fler algoritmer och hashtyper.

Ordlistor kan man göra själv eller hämta färdiga från internet. Jag rekommenderar SecLists som en bra resurs då den innehåller flera kända listor som används för penetrationstester. Bland annat innehåller den en lista på vanliga lösenord under Passwords/Common-Credentials. Utöver SecLists rekommenderar jag även weakpass som innehåller många bra listor, bland annat weakpass_4a.txt som innehåller över 8 miljarder (8 000 000 000) lösenord. Om man vill ta lösenordslistor ett steg längre kan man använda verktyget CeWL för att skapa ordlistor utifrån ord som hittas på en hemsida. Detta kan vara användbart om man vill gissa lösenord kopplade till en specifik aktör eller ett specifikt företag.

Verktyg som jag själv stött på och använt för lösenordsknäckning är först och främst John the ripper och Hashcat. John the ripper är enkel att komma igång med och upplevs av många som användarvänlig. Hashcat presterar bättre och erbjuder mer avancerad funktionalitet men har lite klurigare syntax. Med anledning av detta använder jag oftast Hashcat i arbetet medan denna blogg använder John the ripper för dess användarvänlighet.

Kluring till läsaren – lösning

Kör nedanstående kommandon för att spara hashen till en fil, skapa en ordlista och knäcka hashen med john.

echo 'hemligt.pdf:$pdf$4*4*128*-1060*1*16*8538f3948862114091b60b37445fbb5b*32*9ad2b879159b7d6e63254af6009cbd0d00000000000000000000000000000000*32*f3492ee1852730caedee89a11919107504d9e2532305f2869e6ee1915b5b7297' > hash.txt
cat << EOF > ordlista.txt
hemligt
superhemligt
secret
topsecret
EOF
john hash.txt --wordlist=ordlista.txt
john --show hash.txt


När vi kör ovanstående får vi följande output.


Om ni redan kört john en gång och vill testa igen kan ni ta bort filen ~/.john/john.pot då denna innehåller information om vilka hashar som redan knäckts.

rm ~/.john/john.pot


Lösenordet till filen hemligt.pdf är topsecret.

Referenser