tom@home.htb:~$

Blog o HTB

19 December 2020

Nest

Úvod a kontext

Nest je ukázka stroje, kde není potřeba žádná RCE. Celý řetězec stojí na čtení SMB sdílení, na konfiguracích uložených v nečekaných adresářích a na reverzním inženýrství dvou interních aplikací. Foothold vznikne z hostovaného hesla pro TempUser, další heslo vypadne z .NET zdrojáků a administrátorský přístup nakonec otevře vlastní HQK služba. Praktickou stránku podobného postupu shrnuji i v článku Reverzní inženýrství klienta nebo vlastní binárky jako součást běžného průniku.

Právě tím je Nest poučný. Není to stroj o exploitech, ale o trpělivém skládání indicií. Každý mezikrok vypadá malý, ale dohromady vytvoří úplnou cestu od guest přístupu k Administrator.

Počáteční průzkum

Guest SMB a služba HQK

Nmap ukáže jen dvě důležité věci: SMB na 445/tcp a nestandardní službu na 4386/tcp, která se identifikuje jako Reporting Service V1.2 a umí příkazy LIST, SETDIR, RUNQUERY a DEBUG. To je silná indicie, že vedle běžných sdílení běží i nějaký interní dotazovací nástroj.

ports=$(nmap -Pn -p- --min-rate=1000 -T4 $IP | grep ^[0-9] | cut -d "/" -f 1 | tr "\n" "," | sed s/,$//);echo $ports;nmap -Pn -p $ports -A -sC -sV -v $IP
445/tcp  open  microsoft-ds?
4386/tcp open  unknown
| Help:
|   Reporting Service V1.2
|   This service allows users to run queries against databases using the legacy HQK format
|   AVAILABLE COMMANDS ---
|   LIST
|   SETDIR <Directory_Name>
|   RUNQUERY <Query_ID>
|   DEBUG <Password>

SMB navíc dovolí anonymní výpis sdílení, takže první logický krok vede právě tam. Praktickou roli ruční práce se sdíleními rozebírám i v článku smbclient.

smbclient -L $IP -N
Sharename       Type      Comment
---------       ----      -------
Data            Disk
Secure$         Disk
Users           Disk

TempUser z onboarding dokumentu

Na share Data se dá číst onboarding dokument pro nové zaměstnance. Ten obsahuje dočasné přihlašovací údaje TempUser / welcome2019, což je přesně ten typ informací, který má smysl okamžitě otestovat proti ostatním sdílením.

cat Shared/Templates/HR/Welcome Email.txt

Username: TempUser
Password: welcome2019

Analýza zjištění

Konfigurační soubory vedou ke C.Smith

Po přihlášení jako TempUser se otevře mnohem více podadresářů na share Data. Rozhodující stopa je v konfiguraci Notepad++, která prozradí dříve otevřený soubor \\HTB-NEST\Secure$\IT\Carl\Temp.txt. V RU_config.xml se vedle toho objeví zašifrované heslo. Právě tenhle typ lokálních stop v konfiguračních souborech a zdrojácích dobře zapadá i do článku Reverzní inženýrství klienta nebo vlastní binárky jako součást běžného průniku.

cat ./IT/Configs/NotepadPlusPlus/config.xml
=> <File filename="\\HTB-NEST\Secure$\IT\Carl\Temp.txt" />

cat ./IT/Configs/RU Scanner/RU_config.xml
=> <Password>fTEzAfYDoz1YzkqhQkH6GQFYKp1XY5hm7bjOP86yYxE=</Password>

Zdrojáky RU Scanner pak vysvětlí, jak heslo dešifrovat. V Utils.vb jsou natvrdo zapsané AES parametry, takže není potřeba nic lámat silou, jen zopakovat stejnou funkci lokálně.

Return Decrypt(EncryptedString, "N3st22", "88552299", 2, "464R5DFA5DL6LE28", 256)

Crack.vb
=> xRxRxPANCAK3SxRxRx

Tohle heslo funguje pro účet C.Smith, takže se otevře share Users a s ním i první skutečný foothold.

Získání přístupu

C.Smith a debug heslo pro HQK

Po přihlášení jako C.Smith už jde číst user.txt, ale důležitější je jiný soubor: alternatívní datový proud Debug Mode Password.txt:Password. Právě ten dává heslo pro DEBUG režim služby HQK.

Praktický kontext k tomu, kdy je práce přes smbclient jen mezikrok k dalšímu artefaktu, viz i smbclient.

smbclient -W '' //'10.10.10.178'/users -U'C.Smith'%'xRxRxPANCAK3SxRxRx'
allinfo "Debug Mode Password.txt"
more "Debug Mode Password.txt:Password"
=> WBQ201953D8w

User flag je už jen potvrzení, že účet C.Smith skutečně funguje a že se řetězec posunul z guest přístupu na reálného uživatele.

cat user.txt
__CENSORED__

Eskalace oprávnění

HQK služba a dešifrování hesla administrátora

S debug heslem se otevře plná funkcionalita HQK služby. Přes setdir a showquery 2 lze vytáhnout další zašifrované přihlašovací údaje, tentokrát pro účet Administrator. I tady je vidět, že bez reverzní analýzy vlastních binárek by řetězec zůstal neúplný.

telnet $IP 4386
debug WBQ201953D8w
setdir C:\program files\hqk\ldap
showquery 2

=> User=Administrator
=> Password=yyEq0Uvvhq2uQOcWG8peLoeRQehqip/fKdeG/kjEVb4=

Teď už nestačí zdrojáky RU Scanner; je potřeba podívat se do HqkLdap.exe. Reverzní analýza ukáže nové kryptografické parametry a po jejich použití vyjde heslo XtH4nkS4Pl4y1nGX.

HqkLdap.exe
=> "667912" "1313Rf99" "1L1SA61493DRV53Z"

CrackAdmin.vb
=> XtH4nkS4Pl4y1nGX

S administrátorským heslem už není potřeba další exploit. Stačí se připojit na C$ a přečíst root.txt.

mount //10.10.10.178/c$ /mnt -o username=Administrator
cat /mnt/Users/Administrator/Desktop/root.txt
__CENSORED__

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 - exploit