Přišel zamnou kolega, že potřebuje otevřít zaheslovaný docx dokument. Dal jsem tomu trochu času a svém Linuxu jsem si nainstaloval John the ripper. Stahoval jsem jej z webu https://www.openwall.com/john/ archiv tar.gz. Potřeboval splnit pár závislostí s pythonem, ale nic nepřekonatelného. Doporučuji vždy používat verzi jumbo.
John má následují možnosti crackování
- Incremental
- Wordlist
- Single
- External
Incremental mod generuje posloupné hesla jako aaa, aab, aac atd.
Wordlist je útok nějakým slovníkem.
Single jsem vůbec nepochopil na co je. Jedná se o nějaký útok na větší množství hashů, který bere do úvah i uživatelské jména atd. Prý je také v některých případech rychlejší než slovník.
External jsem se nezabýval vůbec.
Velmi důležité je, naučit se s konfiguračním souborem abyste zjistili, jaké pravidla můžete používat.
V defaultním john.config je definována naprostá většina postupů pro generování i mutaci hesel.
Pokud budete potřebovat udělat vlastní pravidla, doporučuji je přidat do john-local.config, který má include do konfigurace.
První co potřebujeme pro lámání hesla je vytáhnout ze souboru hash odpovídající heslu. To se provádí tím velkým množstvím skriptů v adresáři ./run jako je například office2john.py, pdf2john.pl atd.
python3 ./office2john.py dokument.docx > dokument.hash
Výstup vypadá nějak takto:
dokument.docx
$office*2010*100000*128*16*a3b6babe712ff97efc5edf1fae62832d*de594ade3c7e7cd648a30c3cdad8260f*c4f73b7410d25dcbb75e72018559fd566d1a03ca453004be21939bf3c143582f
Občas se mi stalo, že se John nechtěl kamarádit s výstupem, ale stačí smazat první řádek s názvem dokumentu a je všechno v pořádku.
Nyní zkusíme vylámat heslo pomocí incremental módu. K dispozici jsou defaultní a naprosto úžasné funkce UTF8, Latin1, ASCII, LM_ASCII, Alnumspace, Alnum, Alpha, LowerNum, LowerSpace, Lower, Upper, Digits. Pokud vám to nestačí můžete si vygenerovat na základě již zlámaných hesel vlastní charset příkazem ./john --make-charset=custom.chr. Pamatujte, že make-charset tahá slova ze souboru john.pot a pokud si chcete vytvořit vlastní musíte nazačátku řádku uvést dvojtečku ":" tedy ":heslo" atd.
Tento příklad láme heslo pomocí již zmíněného aaa, aab, aac... (omezení délky hesla jsou v john.config pod [Incremental:Alnum] MinLen MaxLen)
./john --incremental:Alnum dokument.hash
Výsledek budete mít v john.poc
Další možnost, kterou jsem prozkoumal je wordlist. Ten má spoustu pravidel v john.config pod [List.Rules:...] a dokáže vámi definovaný slovník mutovat. To znamená, že pokud použijete například NT mutuje heslo do Heslo, hEslo, heSlo...
Ukázka je lepší než tisíc slov a tak si vytvořte soubor s jedním řádkem "heslo" (echo "heslo" > test.txt) a použijte následují příkaz
./john --wordlist:test.txt -rules:NT -stdout
Jednoduchý příkaz, který pouze vyzkouší hesla v souboru CZ.txt.
./john --wordlist:CZ.txt dokument.hash
Vysoké množství mutací lze napsat takto
./john --wordlist:CZ.txt -rules:Jumbo dokument.hash
Obrovské množství je možné napsat takto (Upozorňuji, že z jednoho hesla vám vytvoří přes 7 miliónů mutací)
./john --wordlist:CZ.txt -rules:All dokument.hash
Hrátky s John the ripper
- Základní údaje
- Zobrazení: 15510