目录
✏️ WriteDacl权限全面扩展解析
🌐 WriteDacl底层原理详解
⚔️ 内网渗透中的关联与利用场景
🛠️ 详细利用步骤(以WriteDacl对高权限用户/组为例)
👑 MemberOf权限全面扩展解析
🌐 MemberOf底层原理详解
⚔️ 内网渗透中的关联与利用场景
🛠️ 详细利用步骤(间接利用MemberOf – 添加自己到组)
📌 典型实际案例:StreamIO HTB中的WriteDacl与MemberOf利用

✏️ WriteDacl权限全面扩展解析
WriteDacl是Active Directory中最危险的扩展权限之一,允许主体直接修改目标对象的DACL(Discretionary Access Control List,自主访问控制列表)。拥有此权限相当于完全掌控目标对象的安全描述符,可任意授予或剥夺权限。
🌐 WriteDacl底层原理详解
AD安全描述符结构:每个AD对象都有一个Security Descriptor,包括Owner、DACL和SACL。DACL决定“谁能做什么”(允许/拒绝访问),SACL负责审计日志。
WriteDacl扩展权限GUID:固定为00000000-0000-0000-0000-000000000001(实际上是全零,但文档中常以此表示),属于最高级Extended Right。
权限生效机制:WriteDacl允许主体添加、删除或修改DACL中的ACE(Access Control Entry)。一旦授予,可给自己或他人添加FullControl、DCSync、WriteOwner等任意权限。
硬编码特性:即使对象有显式Deny条目,WriteDacl仍可覆盖。Owner隐式拥有WriteDacl,但WriteDacl可独立授予。
BloodHound识别:SharpHound查询对象ACL中包含WriteDacl的ACE,生成WriteDacl边。高价值目标包括域对象、管理员组、GPO等。
⚔️ 内网渗透中的关联与利用场景
WriteDacl是“万能钥匙”权限,常用于直接提权或持久化。
直接完全控制:给自己添加FullControl,实现Owns级别支配。
特权权限授予:添加DCSync(域复制)、ReadLAPSPassword、ForceChangePassword等,实现无声提权。
后门与持久化:添加隐蔽账户到管理员组,或删除审计ACE隐藏痕迹。
防御绕过:可移除安全工具的监控权限,或添加Deny给防御账号。
链式攻击:常与其他路径结合,如WriteOwner后进一步WriteDacl。
🛠️ 详细利用步骤(以WriteDacl对高权限用户/组为例)
假设攻击者控制普通用户,并在BloodHound中发现该用户 → WriteDacl → Administrator@STREAMIO.HTB。
确认权限:使用PowerView验证WriteDacl ACE存在。
准备工具:上传PowerView.ps1或使用AD模块。
授予自己FullControl:核心提权步骤。
进一步滥用:添加DCSync或加入高权限组。
清理痕迹:可选删除审计日志ACE。
#/*
———————
间接利用MemberOf – 添加自己到高权限组(PowerView示例)
参数1:-Identity:目标组(如Administrators或Domain Admins)
参数2:-Members:要添加的攻击者账户
1. 通过GenericWrite或WriteDacl权限修改member属性
2. 实现MemberOf关系,建立权限继承
3. 验证组成员变更
—————-
*/
# 步骤1:导入PowerView
Import-Module .\\PowerView.ps1
# 步骤2:将攻击者账户添加到目标组(核心步骤)
Add-DomainGroupMember -Identity "Administrators" -Members "ATTACKER_USER" # ATTACKER_USER成为成员
# 步骤3:验证MemberOf关系建立
Get-DomainGroupMember -Identity "Administrators" | Select MemberName # 查看新成员列表
# 步骤4:测试继承权限(如读取LAPS)
Get-ADComputer -Filter * -Properties ms-Mcs-AdmPwd # 若组有ReadLAPSPassword,应成功读取
👑 MemberOf权限全面扩展解析
MemberOf是BloodHound中最常见的边,表示主体是目标组的直接成员,从而继承该组的所有委托权限和ACE。它不是“权限”,而是关系边,但却是权限传播的核心机制。
🌐 MemberOf底层原理详解
组成员存储:组对象的member属性(多值属性)存储成员DN(Distinguished Name)。成员变更立即生效。
权限继承机制:AD通过组嵌套和委托实现权限传播。成员自动继承组的所有ACE(包括Extended Rights和委托权限)。
嵌套与传递:支持组嵌套(如A组成员是B组,继承B组权限)。BloodHound会展开显示最终继承路径。
BloodHound收集:SharpHound直接读取member属性生成MemberOf边,常作为查询起点(如“所有Domain Admins成员”)。
与其它边的关系:MemberOf是权限的“终点”,攻击者常通过WriteOwner/WriteDacl/GenericWrite等方式间接实现“添加自己到组”。
⚔️ 内网渗透中的关联与利用场景
MemberOf本身不可直接滥用(需写权限才能修改member属性),但作为路径终点极具价值。
权限继承起点:普通用户是高权限组成员 → 直接提权。
攻击目标:通过其他权限(如GenericWrite)添加自己到目标组。
路径分析:BloodHound最短路径常以MemberOf高权限组结束。
持久化:攻击者加入管理员组后,即使原始入口失效,仍保留权限。
🛠️ 详细利用步骤(间接利用MemberOf – 添加自己到组)
MemberOf本身不可直接利用,但常见方式是通过GenericWrite或WriteDacl添加成员。以下以GenericWrite为例(常见于滥用)。
发现路径:BloodHound显示攻击者控制用户 → GenericWrite → 高权限组。
执行添加:使用PowerView修改member属性。
验证继承:检查新权限生效。
#/* ——————— 间接利用MemberOf – 添加自己到高权限组(PowerView示例) 参数1:-Identity:目标组(如Administrators或Domain Admins) 参数2:-Members:要添加的攻击者账户 1. 通过GenericWrite或WriteDacl权限修改member属性 2. 实现MemberOf关系,建立权限继承 3. 验证组成员变更 —————- */ # 步骤1:导入PowerView Import-Module .\\PowerView.ps1 # 步骤2:将攻击者账户添加到目标组(核心步骤) Add-DomainGroupMember -Identity "Administrators" -Members "ATTACKER_USER" # ATTACKER_USER成为成员 # 步骤3:验证MemberOf关系建立 Get-DomainGroupMember -Identity "Administrators" | Select MemberName # 查看新成员列表 # 步骤4:测试继承权限(如读取LAPS) Get-ADComputer -Filter * -Properties ms-Mcs-AdmPwd # 若组有ReadLAPSPassword,应成功读取
📌 典型实际案例:StreamIO HTB中的WriteDacl与MemberOf利用
WriteDacl场景:攻击者通过前期路径获得对Administrator用户或高权限组的WriteDacl权限。
直接提权:使用Add-DomainObjectAcl授予自己FullControl或DCSync,实现域对象完全控制。
MemberOf场景:攻击者通过WriteDacl/WriteOwner等方式将自己添加到Administrators或CORE STAFF组(MARTIN原本是成员)。
完整链路:前期HasSession横向到域控 → WriteOwner/Owns提权到CORE STAFF → 继承ReadLAPSPassword → 结合MemberOf关系读取域控LAPS → 本地Administrator登录 → 最终通过MemberOf Domain Admins(或直接WriteDacl添加)实现域接管。
案例关键:MARTIN作为Administrators组成员继承高权限,但攻击者通过WriteDacl绕过,直接在Administrator对象上植入后门,避免依赖原始成员关系。
此路径展示了WriteDacl的毁灭性:一旦获得,几乎无解;MemberOf则是权限继承的自然结果,常作为攻击终点被蓝队重点监控。




