Prolamování hesel pomocí nástroje Hashcat
V tomto článku se podíváme na Hashcat – jeden z nejznámějších nástrojů pro crackování hesel. Je navržen tak, aby prolomil i ta nejsložitější hesla. Toho je dosaženo možností získání konkrétního hesla více způsoby v kombinaci s všestranností použití a rychlostí.
Reprezentace hesel jsou primárně spojeny s hashovacími funkcemi, jako jsou MD5, SHA, WHIRLPOOL, RipeMD atd. Jsou také definovány jako jednosměrná funkce - jedná se o matematickou operaci, kterou je snadné provést, ale velmi obtížné ji dekódovat zpětně.
Hashcat převede prostý text na zašifrovanou hodnotu = hash. Jedná se o náhodný řetězec pevné délky. Hashe neumožňují dešifrovat data pomocí konkrétního klíče, jak to umožňují standardní šifrovací protokoly.
Hashcat k nalezení účinného a efektivního způsobu prolomení hesel používá předpočítané slovníky, útoky hrubou silou či hybridní útoky. Tento článek obsahuje základní návod k prolamování hesel pomocí tohoto nástroje.
Instalace
- Hashcat je možné stáhnout z tohoto odkazu. Případně je k dispozici přímo v distibuci Kali Linux.
- Rozbalte složku z archivu například pomocí programu 7-zip a otevřete terminálové okno v rozbalené složce.
- Složka obsahuje 32 a 64bitové binární soubory pro Windows i Linux a další soubory včetně dokumentace.
- Spusťte binární soubor podle architektury vašeho systému.
Módy útoku
Hashcat lze použít pro několik typů útoků:
- Slovník (-a 0) - načte z textového souboru a každý řádek použije jako kandidáta na heslo.
- Kombinace (-a 1) - Stejně jako slovníkový útok s tím rozdílem, že používá dva slovníky. Každé slovo slovníku je připojeno ke každému slovu druhého slovníku.
- Bruteforce a Maska (-a 3) - vyzkouší všechny kombinace v daném prostoru. Jedná se o efektivní hrubou sílu v uživatelsky zadaných sadách znaků.
- Hybridní (-a 6 a -a 7) - kombinace slovníkového útoku a útoku maskou.
Kromě toho může Hashcat využívat také soubory s pravidly, což výrazně zvyšuje účinnost útoku. Hashcat má přeinstalovaných několik pravidel a můžete si také napsat i vlastní pravidla.
Příklady útoků
Slovníkový útok
Začněme nejprve slovníkovým útokem na seznam hashů MD5.
hashcat64.exe -a 0 -m 0 example_md5_hashes.txt combined_seclists_password_list.txt -O
Parametr -O výrazně zvýší rychlost prolamování, ale omezí délku hesla, které budete moci prolomit. To je obvykle v pořádku, pokud neprolamujete hesla delší než 27 znaků.
Slovníkový útok s pravidly
Hashcat je dodáván s několika pravidly umístěnými v adresáři rules. Pro použití pravidla použijte volbu -r <soubor_pravidel.rule>. NA příkladu je použito pravidlo best64.rule:
hashcat64.exe -a 0 -m 0 example_md5_hashes.txt combined_seclists_password_list.txt -r rules\best64.rule -O
Kombinovaný útok
Tento útok kombinuje dva slovníky.
hashcat64.exe -a 1 -m 0 example_md5_hashes.txt combined_seclists_password_list_caps.txt combined_seclists_password_list_caps.txt -k "$!" -O
Tento útok používá zadané dva slovníky (v příkladu použit stejný dvakrát) a také přidává jeden znak ! (-k "$!") napravo od druhého slovníku. Takže pokud máme kombinovaného kandidáta na heslo ThePassword, zadaný parametr ho přemění na ThePassword!. Podobně můžete pomocí volby -j přidat znaky vlevo od druhého slovníku. Pokud bychom například přidali také -j "$&", kandidát na heslo by byl The&Password!.
Útok maskou
Dále zkusíme útok maskou (-a 3).
hashcat64.exe -a 3 -m 0 example_md5_hashes.txt ? u?l?l?l?d?d?d?d
Příkaz -a 3 určuje útok maskou, -m 0 určuje typ hashe MD5 a example_md5_hashes.txt je soubor obsahující hashe. Poté máme k dispozici masku. Tato konkrétní maska zajistí použití 8mi znakového hesla, kde první znak (?u) je velké písmeno, další tři znaky (?l?l?l) jsou malá písmena a poslední čtyři znaky (?d?d?d?d) jsou číslice. Hashcat má zabudované následující znakové sady:
?l = abcdefghijklmnopqrstuvwxyz
?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
?d = 0123456789
?h = 0123456789abcdef
?H = 0123456789ABCDEF
?s = "space"!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
?a = ?l?u?d?s
?b = 0x00 - 0xff
Můžeme také zadat vlastní znakové sady:
hashcat64.exe -a 3 -m 0 example_md5_hashes.txt -1 ?s?d ?u?l?l?l?1?1?1?1
Pomocí -1 ?s?d se vytvořila znaková sada, která zahrnuje speciální znaky a číslice. Když budeme chtít tuto znakovou sadu použít, použijeme ?1. Hashcat umožňuje zadat čtyři vlastní znakové sady na masku. Tento konkrétní příkaz tedy hledá osmiznakové heslo, které začíná velkým písmenem, následují tři malá písmena, přičemž poslední čtyři znaky budou číslice nebo speciální znak. Projití všech těchto znaků zabere nějaký čas, ale zvyšuje šanci na úspěšné prolomení hesla.
Hashcat také umožňuje zaznamenat masky do souboru a při crackování se pak na něj odkazovat. To je užitečné, protože to umožňuje vyzkoušet mnoho masek automaticky jednu po druhé. Hashcat přichází s několika předgenerovanými maskami, které najdete v adresáři masks. Chceme-li spustit masky ze souboru, místo zadání masky (?l?u?d) na příkazovém řádku zadáme pouze název souboru:
hashcat64.exe -a 3 -m 0 example_md5_hashes.txt masks\8char-1l-1u-1d-1s-compliant.hcmask
Kde soubor masek obsahuje:
?a
?a?a
?a?a?a
?a?a?a?a
?a?a?a?a?a
?a?a?a?a?a?a
?a?a?a?a?a?a?a
?s?d,?u?l?l?l?1?1?1?1
?d?u?l?l?l?l?l?l
Hashcat bude postupně procházet jednotlivé masky. V tomto příkladě bude nejprve hledat jednoznaková hesla, pak bude cyklicky procházet všechny znaky, a takto bude pokračovat až do 7 znaků. Poté použijeme masku s vlastní znakovou sadou. Namísto použití -1 pro zadání znakové sady oddělujeme znakovou sadu čárkou (?s?d,?u?l?l?l?1?1?1?1). Pak napíšeme požadovanou masku, přičemž pro zadanou znakovou sadu použijeme 1 (?s?d,?u?l?l?1?1?1?1). Pokud bychom chtěli jinou znakovou sadu, mohli bychom zadat jinou a použít další čárku. Po dokončení spustí Hashcat další masku a tak dále...
Hybridní útok
Hybridní útok kombinuje slovníkový útok a útok maskou. Útoky maskou jsou samy o sobě perfektní, ale pokud pracujete s maskou větší než 8 znaků, začíná být problémem čas potřebný k dokončení útoku. Hybridní útok tento problém řeší, protože můžete použít delší základní slovo, například září, a pak přidat masku ?d?d?d?d, která pokryje všechny iterace od září0000 do září9999, což samozřejmě zahrnuje mimo jiné populární hesla jako září2022.
Hybridní útoky mohou použít masku za slovem (-a 6) nebo před slovem (-a 7), ale nemohou použít obojí současně.
hashcat64.exe -a 6 -m 0 example_md5_hashes.txt combined_seclists_password_list.txt ? d?d?d?d?d
Příklad – prolomení hesel krok za krokem
1. Vytvoření slovníku s hesly MD5
Na začátku této ukázky vytvoříme několik MD5 hashů hesel.
Tyto hashe se pak vypíší do souboru s názvem "target_hashes". Každý příkaz by měl být spuštěn v terminálu, jak je ukázáno níže:
echo -n "Password" | md5sum | tr -d " -" >> target_hashes.txt
echo -n "HELLO" | md5sum | tr -d " -" >> target_hashes.txt
echo -n "MYSECRET" | md5sum | tr -d " -" >> target_hashes.txt
echo -n "Test1234" | md5sum | tr -d " -" >> target_hashes.txt
echo -n "P455w0rd" | md5sum | tr -d " -" >> target_hashes.txt
echo -n "GuessMe" | md5sum | tr -d " -" >> target_hashes.txt
echo -n "S3CuReP455Word" | md5sum | tr -d " -" >> target_hashes.txt
Přepínač -n odstraní nový řádek přidaný na konec "Password". To je nutné, protože nechceme, aby znaky nového řádku byly zaheslovány spolu s naším heslem. Část tr -d " -" odstraní z výstupu všechny znaky, které jsou mezerou nebo pomlčkou.
2. Kontrola hashů
Pro vypsání našich vygenerovaných hashů použijeme:
root@kali:~/Desktop# cat target_hashes.txt
dc647eb65e6711e155375218212b3964
eb61eead90e3b899c6bcbe27ac581660
958152288f2d2303ae045cffc43a02cd
2c9341ca4cf3d87b9e4eb905d6a3ec45
75b71aa6842e450f12aca00fdf54c51d
031cbcccd3ba6bd4d1556330995b8d08
b5af0b804ff7238bce48adef1e0c213f
3. Spuštění aplikace Hashcat v systému Kali Linux
Jak již bylo řečeno v úvodu, Hashcat lze spustit přímo v konzoli Kali pomocí následujícího příkazu: hashcat -h.
Mezi nejdůležitější parametry patří -m (typ hashe) a -a (režim útoku). Obecně platí, že při většině pokusů o prolomení hesla musíme při použití Hashcatu použít obě možnosti.
Hashcat podporuje celou řadu šifrovacích algoritmů, viz obrázek níže:
4. Výběr slovníku
Kali Linux má přímo v sobě zabudovaných několik slovníků. Chcete-li je najít, použijte následující příkaz: locate wordlists
Pro ukázku použijeme slovník "rockyou", jak je znázorněno níže:
root@kali:~/Desktop# locate rockyou.txt
/usr/share/wordlists/rockyou.txt
5. Prolamování hashů
V posledním kroku můžeme začít prolamovat hashe obsažené v souboru target_hashes.txt. Použijeme následující příkaz:
root@kali:~/Desktop# hashcat -m 0 -a 0 -o cracked.txt target_hashes.txt /usr/share/wordlists/rockyou.txt
Vysvětlení všech přepínačů pohromadě:
- -m 0 označuje typ hashe, který luštíme (MD5).
- -a 0 označuje slovníkový útok
- -o cracked.txt je výstupní soubor pro prolomená hesla
- target_hashes.txt je náš vstupní soubor hashů
- /usr/share/wordlists/rockyou.txt je absolutní cesta k souboru se slovníkem pro tento slovníkový útok
6. Výsledky
Prolomili jsme pět ze sedmi vygenerovaných hashů:
Na první pohled lze vidět, že tato hesla jsou slabá, a jejich prolomení nevyžaduje mnoho úsilí ani času. Je důležité si uvědomit, že čím jednodušší je heslo, tím snáze se odhalí a postačí k němu použít klasický rockyou slovník.
Závěrem
V tomto článku jsme si představili základní použití nástroje Hashcat. Vzhledem k tomu, že tvorba hesel funguje na psychologii člověka, závěr zní: snažte se v heslech vyhnout používání osobních údajů a pravidelně je měňte.
Hashcat má více než 200 optimalizovaných možností hashování, a to je důvod, proč je nejen jedním z nejrychlejších, ale také jedním z nejpokročilejších a nejmodernějších nástrojů pro crackování hesel vůbec. Pro jeho snadnost použití, variabilitu či rychlost, se stal Hashcat skutečně oblíbeným nástrojem nejen bezpečnostních odborníků.