Výběr hesel o délce 12 nebo více znaků

S moderním hardwarem téměř jistě dokážeme dešifrovat rychlý hash jako MD5, NTLM, SHA1 atd. v rozumném čase.

Co mám na mysli, když mluvím o prolomení hesla, které má 12 nebo více znaků? Tvrdil bych, že s moderním hardwarem, jako je toto „rozpočtové“ nastavení, téměř jistě dokážeme dešifrovat rychlý hash jako MD5, NTLM, SHA1 atd. v rozumném čase. V praxi je náhodný výběr sekvencí o délce 8 nebo více znaků v případě běžných hashovacích algoritmů marný. Když se dotkneme zvláštností národního jazyka a lidské psychologie (například průměrné anglické slovo má délku 4,79 znaků a lidé dávají přednost použití více slov při vytváření hesel o 10 a více znacích), pak se otevírají zajímavější příležitosti v podmínky výběru takových hesel. Další podrobnosti o různých nástrojích pro výběr jsou popsány v knize Hash Crack.

Proč jsou hesla dlouhá 12 a více znaků zranitelná?

Lidé, kteří ručně vytvářejí hesla o 10 nebo více znacích, mají tendenci používat standardní slova a fráze. Proč? Protože zapamatovat si heslo „horsebattery123“ je mnohem jednodušší než „GFj27ef8%k$39“. Zde se setkáváme s instinktem jít cestou nejmenšího odporu, který v případě tvorby hesel přetrvá, dokud se správci hesel nerozšíří. Souhlasím s tím, že série kreseb věnovaných síle hesla má právo na život, ale pouze v případě pomalých hashovacích algoritmů, jako je bcrypt. Tento článek ukáže příklady Combo útoků (když se kombinují prvky slovníku) a Hybrid (když se ke Combo útoku přidá brutální síla) pomocí utility Hashcat, která snad rozšíří váš arzenál. Níže uvedené příklady demonstrují, jak může útočník účinně brutálně vynutit klíčový prostor a prolomit hesla, která se na první pohled zdají být silná.

Základní informace o typových útocíchKombinace aHybridní

Kombinovaný útok (combo): Všechny prvky ze dvou slovníků jsou zkombinovány.

Příklad
Vstupní data: dictionary1.txt dictionary2.txt
Kombinace hesel:
pass => heslo, passpass, passlion
slovo => wordpass, wordword, wordlion
lev => lionpass, lionword, lev

Hybridní útok (Hybridní): je slovníkový útok smíchaný s kombinacemi generovanými podle konkrétního vzoru.

Příklad
Vstupní data: dictionary.txt ?u?l?l
Kombinace hesel:
pass => passAbc, passBcd, passCde
slovo => wordAbc, wordBcd, wordCde
lev => lionAbc, lionBcd, lionCde

Poznámka 1: Sekvence generování hesla není zcela přesná a slouží k popisu obecné myšlenky.

Poznámka 2: Podrobnější vysvětlení jsou k dispozici na webových stránkách Hashcat.

Kombinovaný útok

Uvažujme kombinovaný útok pomocí slovníku skládajícího se z 10 tisíc nejběžnějších slov v sestupném pořadí podle oblíbenosti. Analýza byla provedena pomocí N-gramů a frekvenční analýzy založené na trilionté sbírce shromážděné vyhledávačem Google.

Zvažte příklad dvou náhodně vybraných slov spojených do 16znakového hesla, například shippingnovember, a proveďte kombinovaný útok na toto heslo, pokud byl použit algoritmus MD5:

Příklad
hashcat -a 1 -m 0 hash.txt google-10000.txt google-10000.txt

Při zkoušení všech kombinací slov, která jsou navzájem propojena pomocí moderního hardwaru, je heslo prolomeno za méně než jednu sekundu. Při práci s jinými, pomalejšími algoritmy je také heslo vybráno v rozumném čase.


Obrázek 1: Čas uhodnout heslo shippingnovember pomocí kombinovaného útoku

Kritici mohou namítat, že pokud každé slovo na začátku napíšete velkým písmenem nebo přidáte číslo nebo speciální znak, bude nové heslo (například ShippingNovember) stabilnější. Pojďme si tuto teorii otestovat v praxi a spojit slovník google-10000 do jediné velké pole hesel pomocí utility combinator.bin, která nám umožní výsledná slova kombinovat v kombinaci s pravidly.

Příklad
combinator.bin google-10000.txt google-10000.txt > google-10000-combined.txt

Nyní, když máme slovník kombinací, přidáme pravidla pro uhodnutí upraveného hesla (ShippingNovember).

Příklad
hashcat -a 0 -m 0 hash.txt google-10000-combined.txt -r best64.rule


Obrázek 2: ShippingNovember čas hádání hesla pomocí slovníku kombinací a pravidel

Nové heslo bylo dešifrováno za 28 sekund. Podobným způsobem jsou přidána pravidla, která berou v úvahu speciální znaky, různá umístění kombinací a tak dále. Myslím, že chápete pointu.

3 slovní hesla

Pomocí vytvořeného slovníku kombinací se pokusíme pomocí kombinovaného útoku najít heslo tří slov, například „securityobjectivesbulletin“.

Příklad

hashcat -a 1 -m 0 hash.txt google-10000-combined.txt google-10000.txt


Obrázek 3: Bulletin cílů zabezpečení času uhodnutí hesla

Podobné heslo s přidáním dalších znaků bude prolomeno o něco pomaleji. Chytáte nějaký trend?

4 slovní hesla

Nyní se podíváme na prolomení čtyřslovných hesel (příklad: „sourceinterfacesgatheredartists“). V tomto případě se klíčový prostor zvyšuje na 10 000 000 000 000 000 kandidátů, ale výběr nakonec zabere rozumnou dobu. Především proto, že je použit algoritmus MD5. Vytvoříme nový slovník kombinací a provedeme kombinační útok pomocí Hashcat.

Příklad
hashcat -a 1 -m 0 hash.txt google-10000-combined.txt google-10000-combined.txt


Obrázek 4: Rozhraní zdroje pro odhadování času shromážděných umělců

Proces hledání pomocí moderního hardwaru mohl trvat 4 dny, ale správný kandidát byl nalezen do 5 hodin 35 minut. Přidáním čísel nebo speciálních znaků by heslo bylo mimo náš dosah, ale použití pouze čtyř náhodných slov činí heslo zranitelným.

Hybridní útok

Hybridní útoky vyžadují větší vynalézavost, ale když je nalezen správný vzor, ​​nález se podobá zlaté cihle. Zvláště nezapomenutelným zážitkem je procházení dešifrovaných hesel v terminálu.

Slovníkový útok Google-10000 + maska

V prvním příkladu použijeme stejný slovník 10 tisíc nejběžnějších slov jako základ pro generování kandidátů pro vyhledávání. Dále použijeme obslužný balíček PACK (Password Analysis and Cracking Kit) a slovník hashesorg251015.txt z webu slabépass.com. Tento konkrétní slovník jsem si vybral kvůli jeho vysoké úspěšnosti a relativně malé velikosti. Prostudujeme si hashesorg slovník a na základě výsledků analýzy vytvoříme masky na základě nejoblíbenějších hesel, omezené na určitou sadu znaků. Tyto masky budou použity na začátku a na konci základních slov ze slovníku google-10000.txt.

Příklad

Nejprve vygenerujeme statistiku masek na základě hesel o délce 5-6 znaků a výsledky zapíšeme do samostatného souboru (pozor, proces generování může nějakou dobu trvat).

python statsgen.py hashesorg251015.txt --minlength=5 --maxlength=6 --hiderare -o hashesorg_5or6.masks

Poté masky převedeme do formátu Hashcat (soubor .hcmasks) pro následné použití při hybridních útocích.

python maskgen.py hashesorg_5or6.masks --optindex -o hashesorg_5or6.hcmask

Dále v režimu 6 jsou jako parametry specifikovány slovník a sada masek. Algoritmus hledání bude vypadat takto: vezměte první masku a zkombinujte ji s každým slovem ze slovníku, pak druhou masku, třetí a tak dále, dokud celý seznam masek neskončí. Některé útoky mohou skončit velmi rychle, jiné trvají o něco déle. Během testování vybereme heslo „environmentsqaz472“

Příklad
hashcat -a 6 -m 0 hash.txt google-1000.txt hashesorg_5or6.hcmask


Obrázek 5: Heslo brute-force time environmentsqaz472

Výběr trval asi 20 minut. Nejprve jsme se dostali k masce?l?l?l?d?d?d a pak do 14 jsme prolomili heslo.

Slovníkový útokRockyou + Rockyou-1-60. hcmask

Nyní použijeme sadu masek, která je součástí nástroje Hashcat a je generována na základě hesel ze sady Rockyou. Tato sada masek je rozdělena na samostatné části, jejichž velikost se zvětšuje s rostoucím rozsahem čísel. Velikost, jak předpokládám, narůstá kvůli procentu hesel, na jejichž základě se generuje konkrétní část masek. Použijeme soubor s názvem rockyou-1-60.hcmask, protože obsahuje nejoblíbenější masky, které se osvědčily při hybridních útocích. Tuto sadu masek zkombinujeme s hesly ze slovníku Rockyou. U ostatních slovníků dávejte pozor, abyste nepoužívali příliš velké soubory. Jinak bude útok trvat PŘÍLIŠ dlouho. Obvykle používám slovníky, které jsou menší než 500 MB (nebo i menší) a přidávám masky na začátek a konec slov. Vezměte si náhodné heslo „sophia**!“ ze slovníku Rockyou a na začátek přidejte náhodné datum „1996“. V důsledku toho získáme heslo 1996sophia**!. Během testů bude každá maska ​​kombinována s prvkem Rockyouova slovníku.

Příklad
hashcat -a 7 -m 0 hash.txt rockyou-1-60.hcmask rockyou.txt


Obrázek 5: Čas hádání hesla 1996sophia**!

Během pátrání po pár minutách došlo na masku?d?d?d?d. Tento příklad ukazuje proces a účinnost hybridních útoků. Soubor rockyou-1-60.hcmask obsahuje 836 masek vygenerovaných na základě nejběžnějších hesel ze slovníku rockyou.txt. Pokud vám tato sada nestačí, Hashcat přichází se všemi maskami vygenerovanými na základě zbývajících hesel.

Prvních 5 znaků + maska

Nyní vytvoříme nový slovník a sadu masek. Už víme, že průměrné anglické slovo trvá 4,79 postavy, a proto vytvoříme slovník obsahující prvky maximálně 5 znaků. Tento slovník bude vygenerován na základě souboru rockyou.txt, kde bude prvních 5 znaků oříznuto pro každý prvek. Dále jsou duplikáty odstraněny a výsledný seznam je setříděn a umístěn do souboru first5_dict.txt. Výsledný slovník zabírá 18 MB, což je příliš málo na útok na rychlý algoritmus MD5, ale pro pomalejší hash celkem přijatelné.

Příklad
cut -c 1-5 rockyou.txt | sort -u > first5_dict.txt

Poté zkombinujeme prvky ze slovníku first5_dict.txt a masky ze souboru rockyou-1-60, který je dodáván s Hashcat. Někteří kandidáti budou mít méně než 12 znaků, ale můžete vyloučit masky, které jsou kratší než 7 znaků, a vytvořit nový soubor s příponou .hcmask. Opět vezměte náhodné heslo Alty5 ze souboru first5_dict.txt a přidejte náhodnou sekvenci čísel 9402847. Výsledkem je heslo Alty59402847.

Příklad
hashcat -a 6 -m 0 hash.txt first5_dict.txt rockyou-1-60.hcmask


Obrázek 6: Čas hádání hesla Alty59402847

Tento útok je zvláště účinný proti uživatelům, kteří mají rádi hesla, kde je běžné slovo kombinováno s čísly pro účely randomizace. Podobné heslo je zvoleno do 30 minut.

Přímý útok masky na heslo o 12 nebo více znacích

Chápu, že tento typ útoku není hybridní, ale přesto použití masky 12 nebo více znaků stále přináší výsledky, zvláště pokud používáte nástroj PACK. Útok na heslo zakódované specifickým hashovacím algoritmem lze naplánovat tak, aby trval 1 den (86 400 sekund), s ohledem na rychlost hardwaru. Nejprve musíte změřit rychlost vyhledávání na základě možností vašeho hardwaru pomocí příkazu hashcat -b -m #type přímo v terminálu. Pojďme se rychle podívat na vytváření masek pro útok na hesla o délce 12-15 znaků pomocí nástroje PACK. Pro generování masek opět použijeme slovník rockyou.txt, nejdříve však vyhodnotíme rychlost prohledávání přes md5 hashe.

Příklad (MD5)
hashcat - b - m 0


Obrázek 7: Odhadovaná rychlost vyhledávání hashůmd5

Na základě výsledků testování se ukázalo, že rychlost vyhledávání je 76 000 000 000 klíčů za sekundu. Dále vytvoříme sadu masek na základě slovníku rockyou.txt pomocí utility PACK.

Příklad
python statsgen.py rockyou.txt -o rockyou.masks

Nyní vytvoříme soubor hcmask, pomocí kterého budou během 1 dne (86400 sekund) vyhledána některá hesla dlouhá 12-15 znaků.

Příklad


Obrázek 8: Postup výběru hesel pomocí masky

Poté můžeme spustit sérii útoků maskou pomocí souboru rockyou_12-15.hcmask k hrubému vynucení md5 hash. Průběžné vyhledávání bude dokončeno po 1 dni.

Příklad
hashcat -a 3 -m 0 hash.txt rockyou_12-15.hcmask

Závěr

Jak vidíte, hesla o délce 12 znaků nejsou tak nezranitelná. Chce to jen trochu mazanosti a kreativity, než vymyslet tu správnou strategii hrubé síly. Nepředpokládejte také, že pokud je heslo delší než 11 znaků, vaše oblíbená online služba vše správně hashuje.