Jak použít software hashcat hashcat k rozbití různých hashů

Nula, základní znalosti

1. hash funkce

hash funkce je obecný termín pro typ funkce Vstupem tohoto typu funkce jsou libovolná binární data a výstupem je binární data s pevnou délkou, tento typ funkce má následující charakteristiky:

  • Jednosměrnost: Výstup je jednoduchý a rychlý při výpočtu ze vstupu, ale je matematicky nemožné odvodit vstup z výstupu

  • Omezení kolize: Je extrémně obtížné najít dva různé vstupy se stejným výstupem

Funkce, které splňují tyto charakteristiky, lze nazvat hash funkce. Použijte určitá data jako vstup hash funkce a vypočítejte výstup Tento výstup se obvykle nazývá hash hodnota dat.

Jednou z hlavních funkcí hash funkce je bezpečné ukládání hesla. Místo ukládání hesla přímo (to znamená, že neukládá heslo v prostém textu), ukládá hash hodnotu hesla během ověřování stačí znovu vypočítat zadané heslo Porovnáním hash hodnoty s hash hodnotou uloženého hesla můžete zjistit, zda je heslo správné. Vzhledem k jednosměrnosti funkce hash a charakteristikám omezení kolize je pro útočníka obtížné znát samotné heslo, i když získá hodnotu hash hesla.

2.hashcat

Útočník získal hash hesla, není opravdu žádný způsob, jak znát heslo samotné? Samozřejmě, že ne. Přestože je matematicky nemožné přímo vypočítat samotné heslo z jeho hash hodnoty, víme, že hash funkce je jednoduchá a rychlá pro výpočet výstupu ze vstupu. V nejhorším případě to můžete zkusit. Jediné heslo, které mohou lidé nastavit, jsou ty, zkuste to jedno po druhém, pokud budete mít štěstí, můžete to stále zkusit. Operace neustálého pokusu o získání vstupu odpovídajícího hodnotě hash se nazývá tryskání.

Na základě této myšlenky vznikl hashcat. Říká se, že hashcat se zrodil, aby dokázal, že explodovat hash je velmi jednoduchá záležitost. hashcat tvrdí, že je nejrychlejším nástrojem pro hash blasting na světě, a dokonce podporuje GPU a FGPA, pokud máte.


hashcat je nejen rychlý, ale také profesionálně podporuje více než dvě stě hash funkcí Pomocí příkazu:

 hashcat   - -help 

můžete vidět seznam všech hash funkcí podporovaných hashcatem, je jich příliš mnoho, nebudu je zde zveřejňovat.

hashcat je ve výchozím nastavení nainstalován v Kali a lze jej použít přímo.Ale můj Kali je nainstalován ve virtuálním boxu a vždy mám pocit, že virtuální stroj je pomalejší, takže chci používat hashcat ve fyzickém hostiteli. Nejprve přejděte na oficiální webové stránky hashchatu a stáhněte si hashcat. Nejnovější verze je zatím v3.5.0, která byla vydána 05.04.2017. Z data aktualizace je vidět, že hashchat je plný vitality. Unikněte potíže s kompilací a přímo si stáhněte binární balíček, který má pouze 2,7 milionu, což je velmi malé ve srovnání s hrami, které často stojí desítky gigabytů.

Po dokončení stahování rozbalte hashcat a uvidíte:

Takové soubory jsou 32bitové a 64bitové spustitelné soubory v Linuxu a windows Stačí vybrat jeden z nich podle situace vašeho počítače. Zvolil jsem hashcat64.bin Pro krásu přidám řádek do souboru ~ /. bashrc:

 alias   hashcat = ' cesta k hashcat64.bin ' 

Po uložení znovu otevřete virtuální terminál, aby byl soubor ~ /. bashrc účinný. Tímto způsobem, bez ohledu na to, kde se nacházíte, stačí přímo zadat příkaz hashcat bez přepínání adresářů nebo zadávání ošklivého "64.bin", jak je znázorněno na obrázku níže.

No, nyní můžete začít používat hashcat k odstřelování různých hashů.

1. Blast md5

md5 by měla být jednou z nejznámějších a nejrozšířenějších hash funkcí. Nejprve použijte Python k vygenerování několika hodnot md5 pro tryskání. Kód je následující:

     import   hashlib. 
    hesla   =   [' 123123 ',   ' bond007 ',   ' xxxxxx ',   ' *H@ & (NT*@BR#^ '] 
    pro   heslo   v   hesla: 
        md5   =   hashlib.md5 () 
        md5.update (heslo) 
        print   md5.hexdigest () 

Výše uvedený kód vypočítá hodnoty hash čtyř řetězců a výstupní výsledek je:

     4297f44b13955235245b2497399d7a93 
    cbdb7e2b1ed566ceb796af2df07205a3 
    dad3a37aa9d50688b5157698acfd7aee 
    d77db958c179bbffae04b2b908b75c26 

Uložte výstup do souboru md5.hash s jednou hodnotou hahs na řádek. Poté použijte hashcat k odstřelení těchto hodnot hash. Příkaz je následující:

     hashcat   -w   3   -a   0   -m   0   - -remove   -o   md5.out   md5.hash   wordlist.dic 

Parametr-w se používá k určení pracovního režimu. Existují čtyři typy, jak je uvedeno v následující tabulce:

N Performance Runtime Power Consumption Desktop Impact
1 Low 2 ms Low Minimal
2 Default 12 ms ekonomické patrné
3 High 96 ms High Unresponsive
4 Nightmare 480 ms Insane Bezhlavý

Parametr-a se používá ke specifikaci režimu útoku. Význam 0 je přímý a spojitý, to znamená, že se používá slovník hesel k vybuchnutí. Existuje pět hodnot-a, jak je uvedeno v následující tabulce:

N režim
0 rovný
1 kombinace
3 hrubá síla
6 Hybridní seznam slov + maska
7 Hybrid Mask + Wordlist

-m Funkce hash používaná k určení hodnoty hash, která má být odpálena, 0 znamená, že funkce hash je md5, ostatní hodnoty jsou uvedeny v následující tabulce:

N Name Category
0 MD5 Raw Hash
300 MySQL4.1/MySQL5 Databázový Server
1000 NTLM Operační systémy
1800 sha512crypt $6$, SHA512 (Unix) Operační systémy
2611 vBulletin < v3.8.5 Fóra, CMS, E-Commerce, Frameworks

Tato tabulka je příliš dlouhá. Zde ukážu pouze několik hash funkcí zahrnutých v tomto článku. Všechny můžete vidět pomocí parametru – help.

Parametr – remove znamená, že pokud je hodnota hash úspěšně odstraněna, hodnota bude odstraněna z md5.hash.

Za parametrem-o následuje název souboru, který označuje místo, kde jsou uloženy výsledky tryskání.

Poslední dva parametry md5.hash a wordlist.dic jsou hodnota hash a slovník hesel, které mají být vybuchnuty. Hodnota hash a slovník hesel jsou oba jeden na řádku. Obsah v md5.hash byl vypočten Pythonem Pokud nemáte po ruce vhodný slovník hesel, můžete použít příkaz:

     wget   -O   wordlist.dic   https://samsclass.info/123/proj10/500_passwords.txt

下载一个。现在完事具备,按下回车,结果华丽地报错:(

     clGetPlatformIDs ():   CL_PLATFORM_NOT_FOUND_KHR 

Pravděpodobně chybí nějaké operační prostředí, takže si to nainstalujte. Celkem jsem nainstaloval tyto věci:

     sudo   apt-get   install   gcc   make   p7zip-full   git   lsb-core 
    wget   http://registrationcenter-download.intel.com/akdlm/irc_nas/9019/opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25.tgz 
    tar   -xvf   opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25.tgz 
    cd   opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25 
    sudo  . /install.sh 

Pokud je rychlost internetu dobrá, bude po krátké době nainstalována První příkaz hlásí chybu:

     /sbin/ldconfig.real:   /usr/lib/nvidia-375/libEGL.so.1   je   není   a   symbolický   odkaz 
    /sbin/ldconfig.real:   /usr/lib32/nvidia-375/libEGL.so.1   is   not   a   symbolic   link 

Ale zdá se, že to nic neovlivňuje, prostě to ignorujte. Po instalaci znovu stiskněte stisknutí Enter a spusťte příkaz, který původně hlásil chybu. Zjistíte, že žádná chyba nebyla znovu hlášena a provedení bylo dokončeno v mžiku. Po provedení příkazu zkontrolujte obsah souborů md5.hash a md5.out a zjistěte, že v md5.hash zbývá pouze jeden hash. Tři úspěšně vybuchnuté hash byly přeneseny do souboru md5.out md5.out jsou tři hodnoty hash a jejich původní hodnoty, jak je znázorněno na obrázku níže:

2. hash přihlašovacího hesla Windows 7

hash hodnota přihlašovacího hesla Windows je uložena v souboru SAM, což je zkratka pro "security account manager". Obvykle se nachází v

     C: \Windows\system32\config\SAM 

Soubor SAM je chráněn systémem Windows a nelze jej přímo číst. Najděte virtuální stroj Windows 7, vytvořte nového administrátorského uživatele s názvem hashcat a nastavte heslo Stáhněte a rozbalte SAMInside ve Windows 7 a spusťte jej s oprávněními administrátora, poté klikněte na Soubor- > Importovat místní uživatele do plánovače, jak je znázorněno níže Jak je znázorněno na obrázku:

Poté SAMInside může „nereagovat ", ale na tom nezáleží, trpělivě počkejte několik sekund a SAMInside splní očekávání a přečte hash, který chceme, jak je znázorněno na obrázku níže:

Vyberte uživatele" hashcat ", kterého chceme rozbít heslo, stiskněte Ctrl +5 zkopírujte NT-hash, poté se vraťte do Ubuntu s nainstalovaným hashcatem a použijte následující příkaz k uložení zkopírované hodnoty hash do souboru win7.hash:

     echo   356CEAE0C89FB65ED6D6AA7A445C4CE5   
    356ceae0c89fb65ed6d6aa7a445c4ce5:rush2112 

Jak získat soubor SAM, naleznete v části „Jak exportovat Windows Hash Series One ". Níže je zaznamenán proces čtení souboru SAM ve virtuálním stroji Windows 7.

Pokud se jedná o fyzický stroj, spusťte stroj pomocí Win PE a přečtěte si soubor SAM na disku. Můj je virtuální stroj. Připojením souborů virtuálního disku do souborového systému můžete číst soubory na virtuálním disku. Virtuální stroj, který používám, je VirtualBox, který lze provést pomocí příkazu vdfuse. Pokud nemáte vdfuse, musíte nejprve nainstalovat virtualbox-fuse:

     sudo   apt-get   install   virtualbox-fuse 

Můžete si také stáhnout instalační balíček virtualbox-fuse a nainstalovat si ho sami.

Po dokončení instalace je k dispozici příkaz vdfuse, který může spustit mapování a montáž virtuálního disku:

     mkdir   -p   ~ /vmdisk 
    sudo   vdfuse   -t   vmdk   -f   Win7Pro32.vmdk   ~ /vmdisk/ 

Po provedení tohoto kroku zkontrolujte ~ /adresář vmdisk, který obsahuje tři soubory: EntireDisk, Partition1 a Partition2, nový adresář:

     mkdir   -p   ~ /vmdisk_en 
    mkdir   -p   ~ /vmdisk_1 
    mkdir   -p   ~ /vmdisk_2 

Pomocí příkazu mount připojte tři soubory EntireDisk, Partition1 a Partition2:

     sudo   mount   ~ /vmdisk/EntireDisk       ~ /vmdisk_en 
    sudo   mount   ~ /vmdisk/Partition1       ~ /vmdisk_1 
    sudo   mount   ~ /vmdisk/Partition2       ~ /vmdisk_2 

Zjistil jsem, že montáž celého disku se nezdařila, obsah v oddílu 1 není to, co jsem chtěl, oddíl 2 je soubor ve virtuálním stroji Windows 7, přesně to, co jsem chtěl. Zkopírujte náš cílový soubor SAM z vmdisk_fs:

     cp   ~ /vmdisk_2/Windows/System32/config/SAM  . / 

Mimochodem, zkopírujte také systémový soubor:

     cp   ~ /vmdisk_2/Windows/System32/config/SYSTEM  . / 

Podívejte se na obsah souboru SAM, jak je znázorněno na obrázku níže, není to prostý textový soubor, je skutečně ve stylu Windows,

No, i když jsme úspěšně otevřeli soubor SAM, stále jsme nezískali hash, co mám dělat, když to dále změníme? K analýze obsahu souboru SAM můžete použít pouze nástroje. Vložte soubor sam i systémový soubor do Kali a spusťte příkaz:

     samdump2   -o   sam.hash   SYSTEM   sam 

Poté se podívejte na sam.hash a můžete také vidět hodnotu hash přihlašovacího hesla každého uživatele. Každý řádek v souboru sam.hash je uživatel a formát každého řádku je:

     Uživatelské jméno: RID:LM-hash value: NTLM-hash value 

Poznámka Tento formát je výstupní formát příkazu samdump2, nikoli "formát hash hesla pod Windows".

3. hash přihlašovacího hesla Linuxu

Nejprve musíte mít počítač se systémem linux. To je snadné říct, stačí virtuální stroj. Poté spusťte následující příkaz, abyste přidali nového uživatele a nastavili heslo pro naše účely:

     sudo   adduser   justforfun 

Hodnota hash přihlašovacího hesla uživatele v Linuxu je uložena v souboru/etc/shadow (poznámka: ne/etc/passwd), použijte následující příkaz k zobrazení hodnoty hash přihlašovacího hesla nového uživatele:

 test@test-VirtualBox: ~ $   sudo   tail   -n   1   /etc/shadow 
justforfun:$6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0:17373:0:99999:7::: 

Příkaz tail se používá k čtení posledních řádků souboru, výchozí je 10 řádků, zadejte počet řádků s parametrem-n. Uživatel, který jsme právě vytvořili, je přirozeně na posledním řádku, takže k čtení použijeme tail-n 1. Výsledkem čtení jsou data rozdělená na ":" První část je uživatelské jméno "justforfun", druhá část je hash hodnota hesla a ostatní části se v tomto článku nemusí starat. Zaměřujeme se na druhou část. "$6$" na začátku

znamená, že typ použité funkce hash je SHA-512. Kromě "$6$" v Linuxu "$1$" znamená MD5, "$2a$" znamená Blowfish, "$2y$" odkazuje na Blowfish (správné zpracování 8bitových znaků), "$5$" Odkazuje na SHA-256, podrobnosti viz Wikipedie: passwd. Kromě toho soubor/etc/login.defs také popisuje algoritmus hash.

Část "0fokwg59", která začíná "$6$" a předchází dalšímu "$", je sůl. Co je to sůl? Baidu ví, že odpověď CNB2009 na otázku " Jaká je hodnota soli md5 " je jednoduchá a snadno pochopitelná:

Jednoduše řečeno, je to způsob, jak udělat stejné heslo různé hodnoty hash, což je solení. MD5 sám o sobě je nevratný, ale v současné době existuje mnoho databází na internetu, které podporují reverzní dotazy. Pokud databáze uživatelských hesel omylem unikne, mohou hackeři získat uživatelské heslo prostřednictvím reverzního dotazu nebo použít hash kódy, které se často objevují v databázi (tj. používané mnoha lidmi) pro hrubou sílu (protože se obvykle jedná o slabé heslo). Hodnota soli je další náhodná hodnota přidaná během procesu hašování hesla. Například moje id je epilepsie a heslo je 123456. Když je uloženo v databázi, lze hašovat řetězec "123456/epilepsie". a při ověřování hesla se pro ověření používá také řetězec „ (heslo k ověření) /epilepsie ω inverse ④ ". Tímto způsobem, když je heslo dalšího idiota 123456, lze stále vytvořit různé hodnoty hash a úspěšně je ověřit. V tuto chvíli se moje id používá jako hodnota soli pro složité hash hesla. Tak co?. Úlohou hodnoty soli je snížit ztráty způsobené únikem databáze. Pokud máte velmi dobrý RP a uhodnete mé heslo 123456, nemůžu vás zastavit

Tato odpověď je pro md5 a totéž platí pro ostatní hash funkce. Část po soli je hodnota hash. Nyní zkopírujte celou druhou část do souboru linux.hash, obsah v linux.hash by měl být:

   $6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0 

Poté použijte následující příkaz k vybuchnutí hash přihlašovacího hesla Linuxu:

     hashcat   -w   3   -a   0   -m   1800   - -odstranit   -o   linux.out   linux.hash   wordlist.dic 

Po chvíli je tryskání dokončeno, zobrazte výsledek:

 werner@Yasser: ~ /hashcat$   cat   linux.out 
$6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0:4321 

Je vidět, že odstřelování bylo úspěšné.

4. hash přihlašovacího hesla Mysql

Nejprve musíte mít Mysql. Právě to mám ve virtuálním stroji. Baidu ví, že hash hodnota přihlašovacího hesla Mysql je uložena v souboru user.MYD. Kde je soubor user.MYD? Taky nevím, jen to hledám:

     test@test-VirtualBox: ~ $   sudo   find   /   -name   user.MYD 
    /var/lib/mysql/mysql/user.MYD 

Našel jsem to v/var/lib/mysql/mysql/user.MYD Zkontrolujte obsah souboru:

     sudo   cat   /var/lib/mysql/mysql/user.MYD 

Není to prostý textový soubor, takže na tom moc nezáleží, stále můžete vidět, že hodnota hash přihlašovacího hesla uživatele root je:

     6B825255FB466413D6B1B724644E23428C94BBCB 

Uložte tuto hodnotu do souboru mysql.hash a použijte následující příkaz k rozbití hash přihlašovacího hesla mysql:

     hashcat   -w { 

O chvíli později je tryskání dokončeno, zobrazit výsledky:

     werner@Yasser: ~ /hashcat$   cat   mysql.out 
    6b825255fb466413d6b1b724644e23428c94bbcb:viper 

Je vidět, že tryskání bylo úspěšné.

5. Výbuch Discuz! Heslo fóra

Discuz! Jedná se o známý program fóra php v mé zemi a je široce používán. Teď vybuchneme Discuz! hash hodnota uživatelského hesla. Nejprve musíte najít hodnotu hash. Kde ji najít? Samozřejmě od Discuz! v databázi.

Dá se rozebrat! Kde je databáze? Takto jsem to vyřešil, stáhněte si nejnovější verzi Discuz z jeho oficiálních stránek! Zdrojový kód, spusťte a nainstalujte a získáte Discuz! Databáze :smile:

Discuz! Výchozí název databáze je ultrax a tabulka pre_ucenter_members ukládá hodnotu hash přihlašovacího hesla "pre_" je výchozí předpona, kterou lze změnit během instalace, ale "ucenter_members" se nezmění. Pro dotaz na hodnotu hash přihlašovacího hesla použijte následující příkaz sql:

     select   password,salt   from   pre_ucenter_members; 

Uložit hodnotu hash a hodnotu soli do souboru:

     echo   69bcba126b93c6f397983629a0f70553:c13fd9   >   discuz.hash 

Hodnota hash a hodnota soli jsou ve stejném řádku, rozdělené na ":". Nakonec použijte následující příkaz k odstranění hash přihlašovacího hesla Discuz:

     hashcat   -w   3   -a   0   -m   2611   - -remove   -o   discuz.out   discuz.hash   wordlist.dic 

O chvíli později je tryskání dokončeno, zobrazit výsledky:

     werner@Yasser: ~ /hashcat$   cat   discuz.out 
    69bcba126b93c6f397983629a0f70553:c13fd9:winter 

Je vidět, že tryskání bylo úspěšné.

6. Test velkého slovníku

Zatím používáme malý slovník s pouhými 500 slovy. Pokaždé to trvá jen chvíli, než úspěšně vybuchneme různé hashy. Je to proto, že jsem záměrně nastavil slabé heslo ve slovníku, abych si procvičil používání hashcatu, jinak by to nebylo špatné, kdybych to nemohl vybuchnout. V praxi není možné mít takové štěstí. Pojďme náhodně vypočítat hodnotu md5 méně slabého hesla, vybuchnout velkým slovníkem, na jedné straně zkusit štěstí a na druhé straně uvidět, jak rychle může hashcat.

Nejprve vypočítejte hodnotu md5:

     import   hashlib 
    md5   =   hashlib.md5 () 
    md5.update (" werner123456!!! ") 
    print   md5.hexdigest () 

Výstup je:

     b17133f9abff287ed0546c1af2b171f7 

Poté vyberte slovník o velikosti 10,5G obsahující 940 milionů hesel a začněte explodovat:

     hashcat   -w   3   -a   0   -m   0   - -remove   -o   big.out   b17133f9abff287ed0546c1af2b171f7   big.dic 

Všimněte si, že když existuje pouze jedna hodnota hash, nemusíte ji uložit do souboru, můžete ji také zapsat přímo do parametrů příkazového řádku. Začal jsem tryskat před spaním a druhý den jsem se probudil, abych se podíval na výsledky a našel jsem:

     Začalo:   Středa   Červenec   26   22:55:27   2017 
    Zastaveno:   Středa   Červenec   26   23:02:28   2017 

Ukázalo se, že to trvalo jen 7 minut! Myslel jsem, že to bude trvat 7 hodin, což je 60krát rychlejší, než jsem čekal! Je trochu škoda, že hodnota hash nebyla úspěšně vybuchnuta. Zdá se, že "werner123456!!!" není ve slovníku hesel. Zdá se, že potřebuji připravit 100G slovník hesel, ale je velmi nepohodlné ukládat a přenášet tak velký slovník. Není jiný způsob? Samozřejmě, vzpomínáte si na režim útoku? Používali jsme režim „přímý ". Dále se podívejme na několik dalších režimů.

7. Shrnutí

Při použití hashcatu k odstranění hash je prvním krokem najít správný hash Různé systémy a různý software mají různá místa pro ukládání hash, takže je třeba přesně najít hodnotu hash; Druhým je správně posoudit typ hash, určit, zda hashcat podporuje tento druh hash, a vybrat správný parametr-m, jinak je téměř nemožné uspět; Třetím je, že slovník hesel by měl být lepší. Zda bude výbuch nakonec úspěšný, závisí na slovníku. Přestože větší slovník hesel není lepší, větší je stále lepší. hashcat je také známý svou rychlostí a velký slovník není pro hashcat problém. Zde je zaznamenán lepší slovník: předchozí úniková brána + běžně používaná sada slovníků slabých hesel. 7Z , dekompresní heslo je: anywlan. Kromě toho, pokud shromáždíte mnoho malých slovníků, můžete malé slovníky sloučit, třídit a deduplikovat, abyste získali velký slovník pro snadné použití v Hashcatu. Pokud jsou malé slovníky ve stejném adresáři, můžete to udělat pomocí jednoho příkazu:

         cat   *   |   sort   |   uniq   >   Merge.dic 

Co když jsou malé slovníky uspořádány podle kategorií a distribuovány do vícevrstvých adresářů? Použití pouze příkazu cat samozřejmě nefunguje, ale ve skutečnosti stačí pouze jeden příkaz Za předpokladu, že všechny malé slovníky jsou uloženy v adresáři MyDictionary, lze příkaz napsat takto:

         najít  . /MyDictionary   -type   f   -exec   cat   {}   \;   |   řadit   |   uniq   >   Merge.dic 

Předchozí článek:Jaké typy šifrovaných souborů dokáže Document Password Recovery Master vyřešit? Následující jsou formátové soubory, které podporují cracking
Další článek:hashcat Několik režimů útoku hashcat
  • Focus on Word, Excel, PPT, PDF, RAR, ZIP, 7Z, Compressed File, Office Encrypted File Unlock Decryption
  • We provide users with high-quality file compression password recovery, PDF unlocking, and Word password recovery services.
  • Copyright © Document Password Recovery Master Online Decryption Platform