tom@home.htb:~$

Blog o HTB

29 October 2020

Impacket

Úvod a kontext

Impacket není jeden nástroj, ale celý toolkit pro práci se síťovými protokoly, identitou a správou Windows prostředí. Právě proto se v rozborech objevuje znovu a znovu: pokaždé trochu jinak, ale téměř vždy v okamžiku, kdy už nestačí jen “mám port 445” nebo “mám heslo”. Impacket je praktický právě tím, že z hypotézy udělá ověřitelný protokolový krok.

Na Forestu slouží k enumeraci účtů, relayi a DCSync. Na APT k offline těžbě z ntds.dit, práci s registrem a pozdějšímu dumpu přes strojový účet. Na Intelligence propojuje SMB, Kerberos a service ticket pro impersonaci. To je důležitý rozdíl proti “jednomu exploitu”: Impacket není o jedné technice, ale o schopnosti mluvit nativně protokolem, který daný řetězec právě potřebuje.

Pokud vás zajímají konkrétnější rodiny utilit, navazují na tenhle přehled ještě tři užší texty:

Co je na Impacketu prakticky nejdůležitější

Největší hodnota toolkitu neleží v šíři, ale v tom, že pokrývá několik opakujících se rodin úloh:

Prakticky se vyplatí nepřemýšlet o Impacketu jako o “balíku nástrojů, které se někdy hodí”. Užitečnější je vnímat ho jako sadu protokolových primitiv.

Nejčastější scénáře využití v tomto projektu

Enumerace AD bez platného účtu nebo s minimálním přístupem

Na Forestu je dobře vidět první velká síla toolkitu: ještě před footholdem umí vytáhnout identitní informace a ověřit, zda některý účet nemá vypnutou Kerberos pre-auth.

GetADUsers.py -all -dc-ip 10.10.10.161 htb.local/
GetNPUsers.py -format hashcat -usersfile users.txt -outputfile hashes.asreproast -dc-ip $IP htb.local/

Tady není důležité jen to, že “něco vrátí”. Důležitý je posun v rozhodování:

Praktický kontext téhle rodiny rozebírám i v článku Kerberos útoky z nulového přístupu.

Offline a online těžba tajemství

Na APT se Impacket neobjevuje jako cesta k exploitu, ale jako způsob, jak přeložit získané artefakty do identity materiálu. Po získání ntds.dit a SYSTEM dává okamžitě smysl:

impacket-secretsdump -ntds "Active Directory/ntds.dit" -system registry/SYSTEM -hashes lmhash:nthash LOCAL -outputfile ntlm-extract

Tím vznikne úplně jiný typ schopnosti než při běžném online útoku. Útočník už nemusí hádat hesla proti službě. Může offline zpracovat identitní vrstvu domény a teprve potom zjišťovat, který účet dává nejlepší návratnost.

Stejný toolkit pak na APT pokračuje online:

impacket-reg htb.local/henry.vinson@apt.htb.local -hashes :__CENSORED__ query -keyName HKU\\Software\\GiganticHostingManagementSystem

Tím je dobře vidět další praktická vlastnost Impacketu: jednotlivé utility na sebe přirozeně navazují. Jeden skript otevře účet, druhý registry, třetí další tajemství.

Právě tahle vrstva je podrobněji rozepsaná i v článku Doménové zálohy a offline těžba tajemství.

Relay, DCSync a delegovaná práva

Na ForestuImpacket nepomáhá jen s enumerací. Přechází do role nástroje, který přímo pracuje s důvěrou uvnitř Active Directory.

ntlmrelayx.py -t ldap://10.10.10.161 --escalate-user svc-alfresco
secretsdump.py htb.local/svc-alfresco:s3rvice@forest.htb.local
psexec.py -hashes :32693b11e6aa90eb43d32c72a07ceea6 htb.local/administrator@forest.htb.local powershell.exe

Tohle je prakticky důležité ve dvou rovinách:

Právě proto je v AD prostředí tak silný. Když už hypotéza říká “tady jde o relay”, “tady jde o DCSync” nebo “tady potřebuji service ticket”, Impacket obvykle nabídne přesný nástroj pro danou operaci. Související širší kontext je v článku Delegovaná práva v AD: DCSync, gMSA, relay, deleted objects.

SMB klient, share a technické doručení dalších kroků

Ne všechny utility v toolkitu jsou “silné” ve smyslu přímého průlomu. Často mají hodnotu v tom, že zjednoduší mezikrok.

Na Intelligence impacket-smbclient otevírá čitelné share a tím i skript downdetector.ps1. Na Cascade a Fuse zase pomáhá pohodlněji pracovat se SMB než ručním skládáním jiných nástrojů. Na Driveru, Resolute nebo v článku o Windows lokálním privescu přes služby, drivery a spooler se opakuje impacket-smbserver jako jednoduchý způsob, jak hostu doručit DLL nebo jiný soubor.

To je dobrá připomínka, že praktická hodnota Impacketu neleží jen v “velkých” utilitách typu secretsdump. Často ji vytváří i drobné technické zjednodušení pracovního toku.

Kerberos a service ticket jako pracovní materiál

Na Intelligence se toolkit posouvá ještě jinam. Po získání gMSA hashe už nejde o SMB share ani dump hashů, ale o přesné vyžádání service ticketu v kontextu jiné identity:

impacket-getST intelligence.htb/svc_int$ -spn WWW/dc.intelligence.htb -hashes :c699eaac79b69357d9dabee3379547e6 -impersonate Administrator
impacket-smbclient -k intelligence.htb/Administrator@dc.intelligence.htb -no-pass

Právě tady je dobře vidět, proč je užitečné vnímat Impacket jako protokolový toolkit. Neřeší jeden “typ útoku”. Řeší mnoho různých situací, ve kterých je potřeba mluvit správným jazykem s AD nebo SMB.

Jak o Impacketu přemýšlet prakticky

V běžné praxi se vyplatí držet jednoduchý sled:

1. Jakou schopnost právě potřebuji

2. Jaký protokol to řeší

3. Který konkrétní skript dává smysl

To je mnohem použitelnější než pouštět nástroje podle jména jen proto, že patří do stejného balíku.

Co Impacket neumí vyřešit za vás

Impacket je silný až tehdy, když už existuje dobrá hypotéza. Sám za vás nerozhodne:

Typická chyba vypadá jako “zkusím několik impacket skriptů a uvidím”. V praxi je mnohem lepší držet se konkrétní otázky:

Nejčastější chyby při použití

Na APT je například zásadní rozdíl mezi offline secretsdump nad uniklou zálohou a pozdějším online čtením registru nebo dumpem přes strojový účet. Na Forestu je zase rozdíl mezi tím, že GetNPUsers.py vrátí roastovatelný hash, a tím, že později ntlmrelayx otevře změnu oprávnění v AD.

Související články v projektu

Co si odnést do praxe

Další Související Články V Projektu

HTB Stroje

Techniky

Nástroje

tags: nastroje - active-directory - windows - smb - kerberos - relay