Inom området etisk hacking och penetrationstester är lösenordsknäckning en väsentlig process för att kunna erhålla tillgång till ett system eller en server.
Lösenord lagras sällan i klartext i system och databaser.
Innan lösenord sparas i en databas genomgår de alltid en hashfunktion, och det resulterande hashvärdet används sedan för jämförelse under autentiseringsprocessen.
Beroende på vilken krypteringsmetod som används lagrar olika system lösenordshashar på olika vis. Med tillgång till hashen är det i teorin möjligt att knäcka vilket lösenord som helst.
I denna artikel utforskar vi metoder för att bryta lösenordshashar med hjälp av ett kraftfullt kommandoradsverktyg, nämligen Hashcat.
Låt oss sätta igång.
Men först, en kort introduktion till…
Vad är en Hashfunktion?
Hashing är en process där en text, oavsett längd, omvandlas till en sträng med en fast storlek genom en matematisk funktion, kallad hashfunktion. Genom algoritmer kan vilken text som helst omvandlas till en slumpartad kombination av siffror och bokstäver.
- Indata: Själva meddelandet som ska hashas.
- Hashfunktionen: Den kryptografiska algoritmen, till exempel MD5 eller SHA-256, som omvandlar en sträng till ett hashvärde.
- Hashvärdet: Det resulterande utfallet av hashfunktionen.
Vad är Hashcat?
Hashcat är ett av de snabbaste verktygen för lösenordsåterställning. Det är skapat för att snabbt kunna bryta komplexa lösenord. Verktyget stöder både ordlistbaserade attacker och brute-force-attacker.
Hashcat finns i två versioner: en CPU-baserad och en GPU-baserad. Den GPU-baserade varianten är i regel betydligt snabbare på att knäcka hashar än den CPU-baserade. Specifikationer gällande GPU-drivrutiner finns på verktygets officiella webbplats.
Funktioner
- Gratis och öppen källkod.
- Stöd för över 200 olika typer av hashfunktioner.
- Fungerar på flera operativsystem, inklusive Linux, Windows och macOS.
- Stödjer både CPU och GPU.
- Möjlighet att knäcka flera hashar samtidigt.
- Stödjer hexadecimala salt- och teckenuppsättningsfiler, med automatisk prestandajustering.
- Inbyggt system för benchmarking.
- Möjlighet att stödja distribuerade nätverk genom overlay.
Fler funktioner hittar du på deras webbsida.
Installation av Hashcat
Först, säkerställ att ditt Linux-system är uppdaterat med de senaste programmen och verktygen.
Öppna en terminal och kör kommandot:
$ sudo apt update && sudo apt upgrade
Hashcat brukar vara förinstallerat i Kali Linux, under avsnittet för lösenordsknäckning. Om du behöver installera det manuellt på en annan Linuxdistribution, använd följande kommando i terminalen.
$ sudo apt-get install hashcat
Användning av verktyget
För att börja använda Hashcat behöver vi några lösenordshashar. Om du inte har några hashar att knäcka skapar vi några först.
Följ nedanstående format för att skapa hashar via kommandoraden.
echo -n "input" | algorithm | tr -d "-">>outputfilnamn
Här nedan ser du exempel där jag omvandlat några ord till hashar med hjälp av MD5-algoritmen.
┌──(root💀kali)-[/home/writer/Desktop] └─# echo -n "adminvista.com" | md5sum | tr -d "-">>crackhash.txt echo -n "password123" | md5sum | tr -d "-">>crackhash.txt echo -n "Webtechnology" | md5sum | tr -d "-">>crackhash.txt echo -n "microsoftteams" | md5sum | tr -d "-">>crackhash.txt echo -n "recyclebin" | md5sum | tr -d "-">>crackhash.txt
Resultatet sparas i filen ”crackhash.txt”.
Nu kontrollerar vi hasharna som sparades i filen.
┌──(root💀kali)-[/home/writer/Desktop] └─# cat crackhash.txt 066d45208667198296e0688629e28b14 482c811da5d5b4bcd497ffeaa98491e3 72a2bc267579aae943326d17e14a8048 2192d208d304b75bcd00b29bc8de5024 caae8dd682acb088ed63e2d492fe1e13
Som du ser har vi nu ett antal hashar att knäcka. Detta är en metod för att skapa hashar med den valda algoritmen.
Nästa steg är att starta Hashcat på din Linuxmaskin. Använd följande kommando för att få en översikt över Hashcat:
$ hashcat --help
Detta visar alla alternativ du behöver för att använda verktyget. I terminalen finner du alla attack- och hash-lägen.
Den generella kommandoformen är:
$ hashcat -a num -m num hashfil wordlistfil
Här representerar ”numret” det specifika attack- och hash-läget. Om du skrollar i terminalen hittar du de exakta numren för varje attack- och hash-läge. Exempelvis är numret för MD4 ”0” och för SHA256-algoritmen är numret ”1740”.
Ordboken jag tänker använda är ”rockyou”-ordlistan. Du hittar den i sökvägen ”/usr/share/wordlists”.
Du kan även använda ”locate”-kommandot för att hitta sökvägen till ordlistan.
┌──(root💀kali)-[/home/writer] └─# locate rockyou.txt
Använd slutligen följande kommando för att knäcka hasharna med hjälp av ordlistan.
$ hashcat -a 0 -m 0 ./crackhash.txt rockyou.txt
När du har kört kommandot kan du eventuellt få ett körtidsfel (”Token length exception error”), som kan lösas relativt enkelt.
För att lösa detta sparar du varje hash i en separat fil. Felet kan uppstå om din CPU eller GPU har en låg hastighet. Med en dator som har en höghastighetsprocessor kan du enkelt knäcka flera hashar från en enda fil.
Efter att felet åtgärdats och allt fungerar som det ska, ser resultatet ut ungefär så här:
┌──(root💀kali)-[/home/writer/Desktop] └─# hashcat -a 0 -m 0 hashcrack.txt rockyou.txt hashcat (v6.1.1) starting... OpenCL API (OpenCL 1.2 pocl 1.6, None+Asserts, LLVM 9.0.1, RELOC, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project] ============================================================================================================================= * Device #1: pthread-Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz, 2403/2467 MB (1024 MB allocatable), 4MCU Minimum password length supported by kernel: 0 Maximum password length supported by kernel: 256 Hashes: 1 digests; 1 unique digests, 1 unique salts Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates Rules: 1 Dictionary cache built: * Filename..: rockyou.txt * Passwords.: 14344405 * Bytes.....: 139921671 * Keyspace..: 14344398 * Runtime...: 1 sec 8276b0e763d7c9044d255e025fe0c212: [email protected] Session..........: hashcat Status...........: Cracked Hash.Name........: MD5 Hash.Target......: 8276b0e763d7c9044d255e025fe0c212 Time.Started.....: Sun Dec 12 08:06:15 2021 (0 secs) Time.Estimated...: Sun Dec 12 08:06:15 2021 (0 secs) Guess.Base.......: File (rockyou.txt) Guess.Queue......: 1/1 (100.00%) Speed.#1.........: 1059.6 kH/s (0.52ms) @ Accel:1024 Loops:1 Thr:1 Vec:8 Recovered........: 1/1 (100.00%) Digests Progress.........: 4096/14344398 (0.03%) Rejected.........: 0/4096 (0.00%) Restore.Point....: 0/14344398 (0.00%) Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1 Candidates.#1....: 123456 -> pampam Started: Sun Dec 12 08:06:13 2021 Stopped: Sun Dec 12 08:06:16 2021
I resultatet ovan, efter cache-informationen för ordlistan, ser du att hashen har knäckts och lösenordet är synligt.
Slutsats
Jag hoppas att du nu har fått en djupare förståelse för hur man använder Hashcat för att knäcka lösenord.
Du kanske också är intresserad av att lära dig mer om olika brute-force-verktyg för penetrationstester och några av de bästa penetrationsverktygen som finns.