Hashcat
Úvod a kontext
Hashcat je v tomto projektu téměř vždy nástrojem druhé fáze. Samotný hash nebo challenge/response někde vznikne jiným krokem: z Kerberosu, z NTLM odchytu, z databáze nebo z jiné konfigurace. Hashcat pak rozhoduje, jestli se z tohoto materiálu stane skutečně použitelné heslo a další přístup.
Na Sauně a Forestu převádí AS-REP roast do hesla pro WinRM. Na Driveru láme NTLMv2 zachycený přes Responder. Na Delivery, Jarvis nebo Shibboleth zase pracuje s jinými formáty hashů, ale pořád plní stejnou praktickou roli: z mezikroku udělá další pohyb v řetězci.
Co Hashcat v praxi řeší
Hashcat je offline cracking nástroj. Prakticky odpovídá na otázku:
- lze z tohoto hashe nebo autentizačního materiálu získat heslo v rozumném čase?
To je zásadní rozdíl oproti online útoku:
- žádný lockout na cíli,
- žádný webový rate limit,
- žádné další pokusy proti produkční službě během samotného crackingu.
Právě proto se v místních rozborech objevuje po AS-REP roastu, po zachycení NTLMv2 nebo po získání hashů z jiných zdrojů.
Nejčastější scénáře využití v tomto projektu
AS-REP roast a Kerberos hashe
Na Forestu a Sauně je Hashcat přirozený pokračující krok po GetNPUsers.py. Jakmile doména vydá roastovatelný materiál, teprve offline cracking rozhodne, jestli z toho bude použitelný účet.
Na Sauně to vypadá takto:
hashcat -m 18200 --force -a 0 Sauna-hashes.asreproast /usr/share/wordlists/rockyou.txt
Výsledek:
Thestrokes23
Prakticky je důležité, že Hashcat tu není “další volitelný krok”. Je to přesně moment, kdy se z kerberové chyby stává reálný přístup. Širší souvislosti této rodiny jsou v článku Kerberos útoky z nulového přístupu.
NTLMv2 nebo jiný zachycený materiál z odchytu
Na Driveru vznikne NTLMv2 hash přes .scf a Responder. Hashcat pak rozhodne, jestli zachycená autentizace otevře skutečné heslo:
hashcat -a 0 -m 5600 hash /usr/share/wordlists/rockyou.txt
Tady je praktická hodnota velmi přímočará:
- nejdřív se podaří odchyt,
- potom
Hashcatpřevádí materiál na heslo, - a teprve pak vzniká účet použitelný pro WinRM.
Databázové a aplikační hashe
Na Jarvis, Delivery, Breadcrumbs, Remote nebo Shibboleth už nejde o Kerberos ani NTLMv2, ale o jiné hash formáty. Přesto je metodika stejná:
- nejdřív je potřeba správně pochopit typ hashe,
- potom zvolit odpovídající mód,
- a teprve pak řešit slovník nebo pravidla.
Právě to dělá Hashcat praktickým napříč různými řetězci. Nástroj se nemění, mění se jen typ vstupního materiálu.
Co v Hashcatu rozhoduje víc než samotný příkaz
Správný typ materiálu
Nejdřív je potřeba vědět, co vlastně lámete:
- AS-REP roast,
- NTLMv2 challenge/response,
- databázový hash,
- nebo jiný formát.
Praktická chyba není “špatný wordlist”. Častěji je to špatně zvolený mód nebo špatně pochopený vstup.
Hodnota hesla po cracknutí
V projektu má Hashcat smysl hlavně tam, kde cracknuté heslo otevírá:
- WinRM,
- SSH,
- SMB,
- nebo další výrazně hodnotnější vrstvu.
Na Sauně a Forestu crack otevře doménový účet. Na Driveru WinRM. Na Jarvis další systémový krok. Praktický dopad tedy neleží v “mám plaintext”, ale v tom, co s ním lze dělat dál.
Kvalita wordlistu a scope
Stejně jako jinde má i tady smysl držet cracking realisticky:
- používat odpovídající wordlist,
- případně pravidla, když pro to existuje důvod,
- a nepředstírat, že každý hash musí jít prolomit rychle.
Co Hashcat neumí vyřešit za vás
Hashcat:
- sám neříká, jestli hash stojí za lámání,
- neřeší, jak získat vstupní materiál,
- a neříká, zda cracknuté heslo otevře skutečně užitečný účet.
Je to velmi silný mezikrok, ale pořád jen mezikrok. Hodnotu mu dává až předchozí enumerace a následné použití hesla.
Nejčastější chyby při použití
Mechanické lámání bez pochopení kontextu
Když hash vznikl z nepodstatného účtu nebo ze slepé stopy, cracknuté heslo nemusí mít žádnou praktickou cenu. V místních rozborech Hashcat funguje právě proto, že už předem existuje důvod věřit, že výsledek povede k:
- WinRM,
- laterálnímu pohybu,
- nebo dalšímu privilegovanému kroku.
Záměna offline crackingu za celý útok
Na Driveru samotný cracking ještě neznamená shell. Na Sauně taky ne. Je to jen převod jednoho materiálu na jiný.
Ignorování typu hashe
Prakticky nejdražší chyba bývá špatně zvolený mód nebo špatná interpretace vstupu. Offline cracking je nejúčinnější tehdy, když už přesně víte, co držíte.
Nejčastější praktické scénáře
Kerberos roast vydal crackovatelný materiál
Vynucená autentizace vydala NTLMv2
To je Driver.
Databáze nebo aplikace vydala hash a je potřeba zjistit, zda má dopad mimo aplikaci
To je Jarvis, Delivery, Remote nebo Breadcrumbs.
Související články v projektu
- Rozbory: Sauna, Forest, Driver, Jarvis, Delivery, Remote, Shibboleth
- Techniky: Kerberos útoky z nulového přístupu, NTLM coercion a vynucená autentizace
Co si odnést do praxe
Hashcatje praktický offline převodník z hashe na heslo, když už předchozí krok vydal hodnotný materiál.- Největší hodnotu má tam, kde cracknuté heslo otevírá další vrstvu prostředí, ne jen kosmetickou informaci.
- Klíčové je správně chápat typ vstupu a nepouštět cracking mechanicky bez jasného důvodu.
Další Související Články V Projektu
HTB Stroje
Techniky
- Dokumentová metadata jako vstup do domény
- Kerberos útoky z nulového přístupu: AS-REP roast a práce s kandidátními uživateli
- AD CS a certifikáty jako cesta k Administratorovi