StonemasonNeedle/AdStrike-231
GitHub: StonemasonNeedle/AdStrike-231
一款 AI 驱动的模块化 Active Directory 红队攻击框架,集成 52 个攻击模块和 MCP server,支持完整的 kill-chain 自动化渗透测试与报告生成。
Stars: 0 | Forks: 0
AdStrike — v5.0 «AdStrike»
AI 驱动的专业 Active Directory 攻击框架
[](https://python.org)
[](https://www.kali.org)
[](modules/)
[]
[]
[](LICENSE)
[](https://github.com/capture0x)
**仅限授权使用。未经明确书面许可,请勿针对系统运行此工具。**
发布状态:测试/研究版本。菜单和导入健康检查已通过;各个模块的运行仍取决于目标状态、凭据、网络可达性以及已安装的第三方工具。
## 概述
AdStrike 是一个模块化的、基于终端的 Active Directory 攻击框架。它帮助操作者逐步完成发现、枚举、漏洞利用、凭据获取、横向移动、持久化和报告,同时将会话状态集中保存在一处。
该框架将目标详细信息、凭据、Kerberos 状态、发现结果、已执行的命令和输出路径存储在共享会话中。模块可以重用这些上下文,而无需操作者反复输入相同的数据。
核心功能:
- 58 个交互式菜单条目:52 个攻击模块、4 个实用工具、2 个管理功能
- 9 个 kill-chain 阶段组,涵盖从侦察到高级操作的全过程
- 适用于禁用 NTLM 和强制 LDAP 签名环境的 Kerberos 感知工作流
- Smart Analyst,用于解析输出并对后续操作进行排序
- 可选的 AdStrike Agent,用于 AI 辅助规划或工具编排
- **MCP server 暴露了所有 53 个工具 — 无需 API key,由现有的 MCP host(Claude Code / Cursor / Claude Desktop)驱动**
- 支持 HTML、Markdown 和 JSON 格式的报告生成
- 封装了常见的 AD 工具,如 Impacket、NetExec、Certipy、Kerbrute、BloodHound、PowerView、Rubeus 及相关实用程序
## 截图
| AD 枚举 | BloodHound 助手 |
|---|---|
|  |  |
| AdStrike Agent | Smart Analyst |
|---|---|
|  |  |
## 环境要求
| 项目 | 要求 |
|---|---|
| 操作系统 | 推荐 Kali Linux 2024+ 或 Parrot OS |
| Python | 3.10 或更高版本 |
| 权限 | 框架使用普通用户权限;仅在需要数据包捕获或特权网络操作的工具时使用 root 权限 |
| 网络 | 可访问范围内的 AD 服务,通常是 88, 389, 443, 445, 636, 5985 |
关键外部工具:
```
impacket-scripts nxc / netexec bloodhound-python certipy-ad
evil-winrm kerbrute responder ldap-utils
hashcat john nmap / masscan krb5-user
dnstool.py dig ldapsearch
```
大多数依赖项由 `install.sh` 安装。某些可选工具会在可能的情况下通过 `scripts/repair_tools.sh` 进行安装或修复。
## 配置
安装程序会将 `.env.example` 复制为 `.env`。在执行任务前请编辑 `.env`:
```
DC_IP=10.10.10.10
DC_FQDN=dc1.corp.local
DOMAIN=corp.local
BASE_DN=DC=corp,DC=local
USERNAME=user
PASSWORD=
NT_HASH=
USE_KERBEROS=false
KRB5_CCACHE=
ATTACKER_IP=10.10.14.5
ATTACKER_IFACE=tun0
ENGAGEMENT_NAME=Corp-Internal-2026
ADSTRIKE_SHOW_SECRETS=false
```
您也可以在 Session Manager 中以交互方式输入这些值。会话会自动将它们传递给各个模块。
切勿提交真实的测试数据。请对 `.env`、`output/`、票据文件、hash、转储文件、报告和获取的敏感信息保密并进行脱敏处理。
实用的环境标志:
| 变量 | 默认值 | 用途 |
|---|---:|---|
| `ADSTRIKE_SHOW_SECRETS` | `false` | 除非明确启用,否则在日志和报告中掩码密码、hash 和敏感信息 |
| `ADSTRIKE_NO_ANIMATION` | 未设置 | 为获得更清晰的日志或在缓慢的终端上禁用启动动画 |
| `ADSTRIKE_PORT_CHECK` | 未设置 | 在会话设置期间强制执行快速的 nmap AD 端口检查 |
| `TGT_AUTO_RENEW` | `true` | 在支持的条件下保持 Kerberos 自动续期行为启用 |
| `ADSTRIKE_OPSEC` | `normal` | Agent 模式覆盖:`loud`、`normal` 或 `stealth` |
| `ADSTRIKE_BH_HOST` | 未设置 | BloodHound/Agent 主机名覆盖 |
| `ADSTRIKE_BH_DOMAIN` | 未设置 | BloodHound/Agent 域名覆盖 |
| `ADSTRIKE_BH_IP` | 未设置 | BloodHound/Agent DC IP 覆盖 |
| `ANTHROPIC_API_KEY` | 未设置 | AdStrike Agent 的可选 Claude 后端密钥 |
## 模块分布
| 阶段 | 菜单范围 | 领域 |
|---|---:|---|
| 0 | 1-2 | 侦察 |
| 1 | 3-9 | 初始访问 |
| 2 | 10-16 | 枚举 |
| 3 | 17-27 | 提权 |
| 4 | 28-32 | 横向移动 |
| 5 | 33-36 | 凭据访问 |
| 6 | 37-42 | 持久化 |
| 7 | 43-48 | 云 / 混合环境 |
| 8 | 49-52 | 高级操作 |
| 实用工具 | 53-58 | Agent、Analyst、Kerberos 管理器、报告、会话、工具检查 |
### 侦察
| # | 模块 | 覆盖范围 |
|---|---|---|
| 1 | 侦察 & OSINT | DNS、WHOIS、电子邮件收集、证书透明度 |
| 2 | 网络发现 | nmap、masscan、nbtscan、netdiscover、IPv6 扫描 |
### 初始访问
| # | 模块 | 覆盖范围 |
|---|---|---|
| 3 | 初始访问 (无凭据) | NTLM 捕获、relay、ARP、DHCPv6、RID 循环 |
| 4 | CVE / AD 漏洞利用 | NoPac、PrintNightmare、Zerologon |
| 5 | AMSI / 防御规避 | AMSI bypass、CLM bypass、AppLocker、混淆 |
| 6 | EDR / AV 规避 | NanoDump、MockingJay、RWXfinder、BOF、syscalls |
| 7 | UAC Bypass | fodhelper、eventvwr、CMSTP、token impersonation |
| 8 | Pre2K & Timeroasting | Pre-Win2K 账户、MS-SNTP hash、MAQ 滥用 |
| 9 | WSUS 攻击 | WSUS HTTP 欺骗、pywsus、SYSTEM 执行 |
### 枚举
| # | 模块 | 覆盖范围 |
|---|---|---|
| 10 | AD 枚举 | LDAP、SMB、GPO、DNS、trusts、SPN、LAPS、委派 |
| 11 | PowerView 枚举 | PowerView cmdlet 参考与执行 |
| 12 | BloodHound 助手 | SOAPHound、RustHound、ADExplorer、Neo4j 查询 |
| 13 | 文件与共享搜寻 | Snaffler、SYSVOL、GPP、spider_plus |
| 14 | NetExec / NXC 套件 | SMB、LDAP、MSSQL、WinRM、RDP |
| 15 | 用户搜寻 | SessionHunter、UserHunter、PSRemoting 管理员检查 |
| 16 | ADIDNS 滥用 | 通配符 DNS、WPAD、记录注入、DNSAdmins |
### 提权
| # | 模块 | 覆盖范围 |
|---|---|---|
| 17 | 本地提权 | PowerUp、KrbRelayUp、Potato 攻击、JEA |
| 18 | Kerberos 攻击 | AS-REP roast、Kerberoast、PtT、OPtH、票据、PKINIT |
| 19 | Rubeus 工具包 | TGT、TGS、roasting、PTT、S4U、监控模式 |
| 20 | Shadow Credentials | msDS-KeyCredentialLink、pywhisker、PKINIT |
| 21 | RBCD 全链 | Powermad、S4U2Proxy、altservice、Bronze Bit |
| 22 | ACL / ACE 滥用 | GenericAll、WriteDACL、ForceChangePassword、AddMember |
| 23 | 证书滥用 (ADCS) | ESC1-ESC13、Certipy、CertSync、CA 枚举 |
| 24 | RODC 攻击 | PRP 滥用、Key List Attack、RODC Golden Ticket |
| 25 | Golden Certificate | CA 密钥窃取、UnPAC、PassTheCert |
| 26 | UnPAC / PassTheCert | 定向 Kerberoast、UnPAC、PassTheCert、SPN-Jack |
| 27 | JEA 攻击 | JEA bypass、PSReadLine 历史、CLM 逃逸 |
### 横向移动
| # | 模块 | 覆盖范围 |
|---|---|---|
| 28 | 横向移动 | PSExec、WMIExec、SMBExec、DCOM、Evil-WinRM、WinRS |
| 29 | 强制认证攻击 | PrinterBug、PetitPotam、DFSCoerce、relay 路径 |
| 30 | MSSQL 滥用 | xp_cmdshell、PowerUpSQL、链接服务器、UNC 捕获 |
| 31 | 密码攻击 | Spray、Kerbrute、撞库、relay 捕获 |
| 32 | SCCM / MECM 滥用 | NAA 凭据窃取、relay、客户端推送、AdminService |
### 凭据访问
| # | 模块 | 覆盖范围 |
|---|---|---|
| 33 | 凭据转储 | LSASS、SAM、NTDS、lsassy、nanodump、pypykatz |
| 34 | DPAPI 与凭据保管库 | dploot、SharpDPAPI、LaZagne、KeeThief、浏览器 |
| 35 | DCSync / DCShadow | 域 hash 转储和流氓 DC 操作 |
| 36 | 卷影副本滥用 | VSS、NTDS.dit、SAM、SYSTEM hive 提取 |
### 持久化
| # | 模块 | 覆盖范围 |
|---|---|---|
| 37 | 域持久化 | Golden/Silver tickets、AdminSDHolder、NPPSPY、TTL 组成员身份 |
| 38 | 本地持久化 | SharPersist、WMI 订阅、注册表、启动项 |
| 39 | GPO 滥用 | GPO 创建、链接、计划任务执行、劫持 |
| 40 | DNSAdmins 滥用 | 通过 DNS 服务配置进行 DLL 注入 |
| 41 | Trust 攻击 | TrustKey、SID History、PAM trust、跨林提权 |
| 42 | AD 杂项滥用 | Backup Operators、Skeleton Key、Exchange RBAC、DSRM |
### 云 / 混合环境
| # | 模块 | 覆盖范围 |
|---|---|---|
| 43 | Azure AD / Entra ID | AADConnect、PTA、PHS、PRT、token 窃取 |
| 44 | Entra 混合攻击 | MSOL DCSync、Device Code flow、PTA 注入 |
| 45 | gMSA 攻击 | 枚举、hash 提取、pass-the-hash、shadow credentials |
| 46 | ADFS & Golden SAML | Token 签名证书、Golden SAML、AADInternals |
| 47 | AiTM / MFA Bypass | Evilginx2、Modlishka、EvilnoVNC、MFA 疲劳、cookie 重放、混合枢纽 |
| 48 | M365 / Teams 攻击 | MailSniper、Graph API、Teams 钓鱼、SharePoint 窃取、Intune 滥用 |
### 高级操作
| # | 模块 | 覆盖范围 |
|---|---|---|
| 49 | 漏洞利用链 | 预构建的完整攻击路径 |
| 50 | C2 集成 | Sliver、Havoc、Metasploit、Cobalt Strike payload 投递 |
| 51 | 战利品解析器与分析器 | 解析、去重、评分并导出信息 |
| 52 | AD 高级手册 | WDAC、MDE/MDI、WMI 过滤器、trusts、欺骗 |
### 实用工具
| # | 实用工具 | 用途 |
|---|---|---|
| 53 | AdStrike Agent (AI) | 可选的 AI 辅助规划器/编排器 |
| 54 | Smart Analyst | 解析输出、构建攻击计划、可选地执行步骤 |
| 55 | Kerberos 管理器 | TGT、PTT、S4U、ccache、kirbi、krb5.conf 管理 |
| 56 | 生成报告 | HTML、Markdown 和 JSON 报告 |
| 57 | Session Manager | 保存、加载、切换和清除会话 |
| 58 | 工具检查器 | 验证外部工具和模块导入 |
## 输出
运行时文件将写入 `output/` 目录下:
| 路径 | 用途 |
|---|---|
| `output/session.json` | 持久化的会话状态 |
| `output/session_*.log` | 来自 `run.sh` 的启动器日志 |
| `output/enum/` | LDAP、SMB、GPO 和枚举产物 |
| `output/bloodhound/` | BloodHound 集合及相关数据 |
| `output/audit/capability_audit.json` | 工具检查器和模块健康状态快照 |
| `output/agent_logs/` | AdStrike Agent 的 Markdown/JSON 运行日志 |
| `output/agent_runtime/` | Kerberos 配置、ccache、hash 和临时 agent 工件 |
| `output/reports/` | 生成的报告 |
在共享之前,请检查并对 `output/` 中的所有内容进行脱敏处理。
## 自动目标发现
在首次运行的会话设置期间,输入 DC IP 会触发快速发现过程:
强制端口检查:
```
ADSTRIKE_PORT_CHECK=true bash run.sh
```
如果发现了 DC FQDN,AdStrike 将针对 DNS 解析不可靠的环境打印出 `/etc/hosts` 映射条目。如果检测到时间偏差,它会在重度使用 Kerberos 的工作流之前打印时间同步提示。
## Kerberos 与禁用 NTLM 环境
对于禁用或无法使用 NTLM 的目标,请使用:
```
[18] Kerberos Attacks -> [A] NTLM-Disabled Attack Workflow
```
此工作流可以:
- 生成特定于目标的 `krb5.conf`
- 添加 DC FQDN 映射指南
- 使用 Impacket 请求 TGT
- 设置 `KRB5CCNAME` 和 `KRB5_CONFIG`
- 为后续模块启用 Kerberos 模式
- 打印可直接用于 NetExec、Impacket、BloodHound 和 Evil-WinRM 的 Kerberos 命令
常见的 Kerberos 检查:
```
date
klist
cat "$KRB5_CONFIG"
echo "$KRB5CCNAME"
```
## AdStrike Agent
AdStrike Agent 是可选的。手动模块不需要 AI。
只想尝试 agent? → **[github.com/capture0x/AdAgent](https://github.com/capture0x/AdAgent)**
支持的后端:
| 后端 | 使用场景 | 要求 |
|---|---|---|
| Ollama | 本地 / 私有 / 离线实验室使用 | `ollama serve`、本地模型、Python `requests` |
| Claude | 基于 API 的推理 | `ANTHROPIC_API_KEY`、互联网 / API 访问权限 |
Ollama 示例:
```
ollama serve
ollama pull mistral
bash run.sh
# 选择 [51] AdStrike Agent (AI)
# 选择 Backend [1] Ollama
```
## 快速开始
```
git clone https://github.com/StonemasonNeedle/AdStrike-231.git
cd AdStrike-231
python setup.py
```
Claude 示例:
```
export ANTHROPIC_API_KEY="sk-ant-..."
bash run.sh
# 选择 [51] AdStrike Agent (AI)
# 选择 Backend [2] Claude
```
Agent 模式:
| 模式 | 含义 |
|---|---|
| Full Auto | Agent 执行工具调用并根据证据进行自适应调整 |
| Plan Only | Agent 生成一个已确定优先级的计划,但不执行工具 |
OPSEC 模式:
| 模式 | 含义 |
|---|---|
| Loud | 快速的实验室/CTF 模式 |
| Normal | 平衡的内部渗透测试模式;默认 |
| Stealth | 尽可能采取更保守的原生优先行为 |
## MCP Server (无需 API Key)
所有 **53 个工具** 均已发布 — 包含 52 个攻击工具(`nmap_scan`、`enumerate_ldap`、
`adcs_scan`、`evil_winrm`、`gmsa_read`、`dcsync_attack`、`kerberoast` 等)加上
`set_engagement` — 使用与独立 agent 完全相同的 schema
(`modules/agent/_core.py`),因此只有一个事实来源且没有重复。

**1. 验证服务器是否可以加载** (使用项目 venv):
```
./venv/bin/python3 -c "import mcp; from modules.agent._core import TOOLS; print('ok', len(TOOLS))"
```
**2. 在 Claude Code 中注册。** 仓库已经自带了一个项目级的 `.mcp.json`,其中包含
相对于仓库的路径,因此如果您从 AdStrike 文件夹启动 Claude Code(步骤 3),
**您可以跳过此步骤** — 它会被自动识别:
```
{
"mcpServers": {
"adstrike": {
"command": "venv/bin/python3",
"args": ["mcp_server.py"]
}
}
}
```
要全局注册它(以便它可以从任何目录工作),请通过 CLI 使用绝对路径:
```
claude mcp add adstrike -- /path/to/AdStrike/venv/bin/python3 /path/to/AdStrike/mcp_server.py
```
Cursor 和 Claude Desktop 在其 MCP 配置中使用相同的 `command` + `args` 结构。
**3. 从 AdStrike 文件夹启动 Claude Code。** 项目级的 `.mcp.json` 仅在 `claude`
从包含该文件的目录中启动时才会被加载,因此请在那里运行它:
```
cd /path/to/AdStrike
claude
```
首次启动时,Claude Code 会要求您批准 `adstrike` MCP server — 请接受
它。在 Claude Code 中使用 `/mcp`(或在 shell 中使用 `claude mcp list`)
确认工具是否可用。Cursor 和 Claude Desktop 重启后会自动识别该服务器。
**4. 使用它。** 设置一次任务环境,然后让 host 驱动:
AdStrike 将目标和凭据存储在会话中,并**将它们注入到随后的每一次
工具调用中**,因此 host LLM 永远不需要重复输入密码,也不会
意外地针对错误的主机或账户。接下来,host 会读取每个
工具的输出并选择下一个工具 — nmap → LDAP 枚举 → BloodHound →
匹配的滥用原语 — 就像内置的 agent 循环一样,只不过是由
host 订阅付费的。
**示例提示词** — 将此内容粘贴到 Claude Code 中(根据实际情况调整目标),设置一次
任务环境,并让 host 驱动标准的 AdStrike 工作流:
```
Use the adstrike MCP server. Call set_engagement with dc_ip 192.168.56.1,
domain corp.local, username tester, password 'Pass123!'.
Then run the same workflow as the AdStrike agent:
1. nmap_scan
2. no_cred_surface_recon
3. enumerate_ldap
4. enumerate_shares
5. collect_bloodhound
6. query_bloodhound_paths
7. adcs_scan
8. acl_abuse_scan
9. kerberoast
10. asrep_roast
11. discover_winrm_access
12. chain_planner
After each tool result, analyze the output and choose the next best AdStrike
MCP tool. Do not ask me for the password again — use the session credential
injected by set_engagement.
```
您只需在 `set_engagement` 中传递凭据;随后的每个工具都会重用
会话中的值,因此 host 不再需要它。
完整指南(要求、每个 host 的配置、OPSEC 注意事项):
**[docs/mcp.md](docs/mcp.md)**。
## 性能 / GPU 加速
### 为什么 Ollama agent 可能感觉很慢
agent 使用规则引擎进行大多数决策(无 LLM 调用)。需要 LLM 处理的轮次会在本地调用 Ollama。如果 Ollama 在 CPU 而不是 GPU 上运行,每次调用将耗时 15-30 秒,而不是 2-5 秒。
验证 Ollama 正在使用哪个处理器:
```
ollama ps
# PROCESSOR 列应显示 "GPU",而不是 "100% CPU"
```
### 修复:Ollama 未检测到 GPU (Kali / systemd)
在某些 Kali Linux 环境中,`ollama` systemd 服务在 CUDA 库进入库路径之前就启动了,因此日志中会出现 `GPULayers:[]`,推理回退到 CPU。
**步骤 1 — 向服务添加 CUDA 环境变量:**
```
sudo nano /etc/systemd/system/ollama.service
```
在 `[Service]` 块中添加这三行:
```
Environment="CUDA_VISIBLE_DEVICES=0"
Environment="LD_LIBRARY_PATH=/usr/local/lib/ollama/cuda_v12:/usr/lib/x86_64-linux-gnu"
Environment="OLLAMA_GPU_OVERHEAD=0"
```
编辑后完整的 `[Service]` 块示例:
```
[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=..."
Environment="CUDA_VISIBLE_DEVICES=0"
Environment="LD_LIBRARY_PATH=/usr/local/lib/ollama/cuda_v12:/usr/lib/x86_64-linux-gnu"
Environment="OLLAMA_GPU_OVERHEAD=0"
```
**步骤 2 — 重新加载并重启:**
```
sudo systemctl daemon-reload
sudo systemctl restart ollama
```
**步骤 3 — 确认正在使用 GPU:**
```
ollama ps
# 预期:PROCESSOR = GPU(或一个百分比,而不是 "100% CPU")
```
### 兼顾速度与质量的推荐 Ollama 模型
| 模型 | VRAM | 速度 | 工具调用质量 |
|---|---|---|---|
| `qwen2.5-coder:7b` | ~5 GB | 中等 | 最适合 AD agent |
| `llama3.2:3b` | ~2 GB | 最快 | 适合低 VRAM 机器 |
| `mistral:latest` | ~4.5 GB | 中等 | 不错的备选方案 |
拉取模型:
```
ollama pull qwen2.5-coder:7b
```
## 修复与故障排除
检查已安装的工具和模块导入:
```
python3 main.py --module 58 --no-banner
```
尽可能修复缺失的工具:
```
bash scripts/repair_tools.sh --check
bash scripts/repair_tools.sh -y
```
指定范围的修复:
```
bash scripts/repair_tools.sh --no-apt
bash scripts/repair_tools.sh --no-pip
bash scripts/repair_tools.sh --no-github
```
如果缺少虚拟环境:
```
bash install.sh
source adrt_venv/bin/activate
python3 main.py --check
```
如果 NetExec 或 Impacket 失败,请验证版本并重新运行修复脚本:
```
which nxc
nxc --version
which impacket-secretsdump
bash scripts/repair_tools.sh -y
```
如果报告包含敏感值,请确认已启用脱敏:
```
ADSTRIKE_SHOW_SECRETS=false
```
然后在共享前手动检查 `.env`、`output/session.json` 和生成的报告。
## 文档
附加指南:
- [AdStrike 和 Agent 指南](docs/ADSTRIKE_AND_AGENT_GUIDE.md)
- [MCP Server — 无需 API Key (Claude Code / Cursor / Claude Desktop)](docs/mcp.md)
安全策略:
- [SECURITY.md](SECURITY.md)
许可证:
- [GPLv3](LICENSE)
## 法律免责声明
本软件仅用于授权的安全测试、红蓝对抗和教育培训目的。
未经系统所有者明确书面授权而针对系统使用本软件是非法的,可能会违反《计算机欺诈和滥用法》(CFAA)、《计算机滥用法》(CMA) 以及您所在司法管辖区的同等法律。
对于因滥用造成的损害、数据丢失、服务中断或法律后果,作者不承担任何责任。
## 开发者
**tmrswrr** - GitHub: [capture0x](https://github.com/capture0x)
**contact** - Mail : tmrswrr -at- gmail.com
专为授权的进攻性安全研究、实验室验证和专业的红蓝对抗操作而维护。
标签:Active Directory, ADCS, Plaso, Python, Web报告查看器, 攻击路径分析, 无后门, 模拟器, 逆向工具