关于 MCP Server for Breaking Shyet - Diclaimer - This is a DEVKIT
Astro V2 是面向 LLM 驱动渗透测试的 MCP 服务,封装了 38 个 Kali 工具,并提供范围限制、工程记录和结构化输出。仅供对目标拥有授权的安全测试人员使用。
主要功能
- 01封装 38 个 Kali 工具并提供 MCP 接口
- 02基于 CIDR 与域名白名单的范围限制
- 03基于 SQLite 的工程发现记录
- 04结构化解析输出并支持 SARIF、HTML 报告
- 05支持 streamable-http 与 stdio 传输
适用场景
- 01授权渗透测试中的侦察与漏洞扫描
- 02在 CI 中导出 SARIF 格式的测试结果
- 03在隔离实验环境中练习攻击链分析
MCP 相关
该项目以 MCP 服务形式运行,向任意 MCP 客户端暴露各 Kali 工具封装、工程记录与报告导出等工具调用,并支持 API 密钥认证。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
http://10.10.10.10claude mcp add --transport http project_astro http://10.10.10.10{"mcpServers":{"project_astro":{"type":"http","url":"http://10.10.10.10"}}}在 Cursor 中打开{"servers":{"project_astro":{"type":"http","url":"http://10.10.10.10"}}}在 VS Code 中打开{"mcpServers":{"project_astro":{"type":"http","url":"http://10.10.10.10"}}}{"mcpServers":{"project_astro":{"serverUrl":"http://10.10.10.10"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
Project Astro V2 - 免责声明 - 这是一个 DEVKIT
面向由 LLM 驱动的渗透测试的智能层。作为 MCP 服务提供,包含 38 个 Kali 工具封装、交战跟踪、范围强制执行,以及适用于任何兼容 MCP 的客户端的结构化输出。
这是一个 devkit。 仅可用于测试你拥有或已获得明确测试授权的目标。
V1 到 V2 的变化
V1 是一个 Flask 代理,在 Claude Desktop 和 kali_api_server.py 进程之间传递 JSON。它能正常工作,但架构很脆弱——需要两个服务、没有状态、没有安全护栏,且 10 个工具被硬编码到 HTTP 端点。
V2 是从头开始的重写:
| V1 | V2 | |
|---|---|---|
| 架构 | Flask API + MCP 垫片(2 个进程) | 单个 FastMCP 服务(mcp SDK) |
| 传输 | 仅 HTTP | Streamable-HTTP 或 stdio |
| 工具 | 10 个,内嵌在单个文件中 | 38 个封装(+ 自定义脚本执行器),分别位于 src/astro/tools/ |
| 工具验证 | 无——原始字符串直接传给 shell | 基于 Pydantic 的验证、shell 元字符拦截、屏蔽标志列表 |
| 范围强制执行 | 无 | 通过 YAML 配置设置 CIDR + 域名允许列表;每次工具调用都会检查 |
| 速率限制 | 无 | 每个工具独立的异步信号量 |
| 身份验证 | 无 | 支持 API 密钥 + OIDC |
| 交战跟踪 | 无 | 基于 SQLite 的发现记录器,各交战之间相互隔离 |
| 输出解析 | 原始 stdout | 为 nmap、sqlmap、wpscan、nuclei、subfinder 等提供结构化解析器 |
| 报告 | 无 | SARIF、HTML、Obsidian 知识库导出、修复方案映射 |
| 智能 | 无 | CVE 关联器(NVD API)、攻击图构建器(NetworkX)、方法论跟踪器 |
| CLI | run.py(启动 2 个服务) | astro serve、astro ollama、astro tui、astro version |
| 打包 | requirements.txt + venv | pyproject.toml,可通过 pip install . 安装 |
| 容器 | 无 | 多阶段 Kali Linux Dockerfile,适用于实验室环境的 docker-compose |
| LLM 支持 | 仅 Claude Desktop | 任何 MCP 客户端,另提供原生 Ollama 桥接和兼容 OpenAI 的桥接 |
| 测试 | 无 | pytest 测试套件(单元测试 + 集成测试)、ruff、严格模式 mypy |
新增工具(V2)
侦察:amass、subfinder、ffuf、whatweb、dnsrecon、theharvester、nuclei
漏洞利用:searchsploit、crackmapexec、hashcat、responder、smbclient、evil-winrm
Impacket 套件:secretsdump、psexec、wmiexec、kerberoast、getnpusers、getst、ticketer
后渗透:linpeas、winpeas、bloodhound、chisel、netcat、msfvenom
隧道/C2:burp(代理集成)、certipy(AD CS 攻击)
灵活工具:custom_script(带超时 + 沙箱的任意 bash/python)
已移除
kali_api_server.py— 不再需要;工具直接执行run.py— 已由astroCLI 取代requirements.txt— 已由pyproject.toml取代setup.sh— 已由pip install .或 Docker 取代
快速开始
Docker(推荐)
export API_KEY="$(python3 -c 'import secrets; print(secrets.token_urlsafe(32))')"
docker compose up --build
服务将在 http://localhost:8080 上通过 Streamable-HTTP 传输启动。MCP 客户端必须在 X-API-Key 标头中发送已配置的密钥。镜像中已预装全部 38 个 Kali 工具。
Docker 实验室(含目标)
export API_KEY="$(python3 -c 'import secrets; print(secrets.token_urlsafe(32))')"
docker compose -f docker-compose.lab.yml up --build
启动 Astro 和一个 Metasploitable2 目标,二者位于隔离的 172.28.0.0/24 网络中,并已预先配置范围。发布的 Astro 端口仍仅限主机环回地址访问。
本地安装
python3 -m venv .venv && source .venv/bin/activate
pip install ".[dev,reporting]"
astro serve --port 8080
默认 HTTP 绑定仅限环回地址,在本地开发时可不进行网络身份验证。非环回地址的 HTTP 绑定必须配置 API_KEY 或 OIDC,否则服务将拒绝启动。要求在主机上安装底层 Kali 工具。
HTTP 启动和请求身份验证策略请参阅 docs/HTTP_SECURITY.md。
用法
MCP 服务(默认)
astro serve --transport streamable-http --port 8080
API_KEY="replace-with-a-strong-key" astro serve --transport streamable-http --host 0.0.0.0 --port 8080
astro serve --transport stdio # for Claude Desktop / Claude Code
将任意 MCP 客户端连接到 http://localhost:8080,或在客户端配置中通过 stdio 接入:
{
"mcpServers": {
"astro": {
"command": "astro",
"args": ["serve", "--transport", "stdio"]
}
}
}
Ollama 桥接(离线 / 本地大模型)
astro ollama --model llama3 --scope config/lab_scope.yaml
针对本地 Ollama 实例进行交互式聊天,并调用工具。
终端 UI
astro tui --target 10.10.10.10 --engagement "HTB-Box"
功能丰富的终端界面,支持实时工具输出、方法论跟踪和项目管理。
范围限制
创建 YAML 范围文件,以限制工具可访问的目标:
scope:
allowed_cidrs:
- "10.10.10.0/24"
allowed_domains:
- "target.htb"
excluded_targets: []
tool_restrictions:
hydra:
enabled: true
max_threads: 4
service_whitelist: ["ssh", "http"]
sqlmap:
risk_level: 2
astro serve --scope config/scope.yaml
每次工具调用都会在执行前验证目标是否符合范围要求。超出范围的目标将被拒绝。
工具(38)
侦察
| 工具 | 描述 |
|---|---|
nmap | 网络扫描器,支持结构化输出解析 |
gobuster | 目录 / DNS / 虚拟主机暴力枚举工具 |
dirb | Web 内容扫描器 |
nikto | Web 服务器漏洞扫描器 |
wpscan | WordPress 漏洞扫描器 |
enum4linux | Windows/Samba 枚举工具 |
subfinder | 被动子域名发现工具 |
amass | 攻击面映射工具 |
ffuf | Web 模糊测试工具 |
whatweb | 技术指纹识别工具 |
dnsrecon | DNS 侦察工具 |
theharvester | OSINT 电子邮件 / 子域名收集工具 |
nuclei | 基于模板的漏洞扫描器 |
漏洞利用
| 工具 | 描述 |
|---|---|
sqlmap | SQL 注入测试工具,支持数据库枚举 |
metasploit | 漏洞利用框架(msfconsole) |
hydra | 网络登录暴力破解工具 |
john | 密码破解工具 |
hashcat | GPU 加速的密码破解工具 |
searchsploit | Exploit-DB 本地搜索工具 |
crackmapexec | 网络协议攻击工具 |
responder | LLMNR/NBT-NS/mDNS 欺骗工具 |
smbclient | SMB 客户端 |
evil-winrm | WinRM Shell |
Impacket 套件
| 工具 | 描述 |
|---|---|
impacket_secretsdump | SAM/LSA/NTDS 凭据提取工具 |
impacket_psexec | 通过 SMB 远程执行命令 |
impacket_wmiexec | 通过 WMI 远程执行命令 |
impacket_kerberoast | 基于 SPN 的 Kerberos 票据提取工具 |
impacket_getnpusers | AS-REP Roasting |
impacket_getst | 服务票据请求工具 |
impacket_ticketer | Silver/Golden Ticket 伪造工具 |
漏洞利用后
| 工具 | 描述 |
|---|---|
linpeas | Linux 权限提升扫描器 |
winpeas | Windows 权限提升扫描器 |
bloodhound | Active Directory 关系映射工具 |
msfvenom | 载荷生成器 |
netcat | 网络瑞士军刀 |
chisel | 通过 HTTP 建立 TCP/UDP 隧道 |
certipy | AD Certificate Services 攻击工具 |
burp | Burp Suite 代理集成 |
其他
| 工具 | 描述 |
|---|---|
custom_script | 在超时沙箱中运行任意 bash/python 脚本 |
项目跟踪
create_engagement("HTB-Devvortex") → engagement ID
└─ nmap_scan(...) → finding recorded
└─ nikto_scan(...) → finding recorded
└─ sqlmap_scan(...) → finding recorded
get_engagement_summary() → all findings + metadata
export_to_obsidian("~/Vault/HTB") → interlinked markdown notes
调查发现会持久化保存到 SQLite。可导出为 SARIF,以集成到 CI;也可导出为 HTML,用于客户报告。
项目结构
src/astro/
├── __main__.py CLI entry point (serve, ollama, tui, version)
├── core/
│ ├── executor.py Shell command executor with timeout + sandboxing
│ ├── scope.py CIDR/domain scope enforcer
│ ├── engagement.py SQLite-backed engagement + finding manager
│ ├── rate_limiter.py Per-tool async rate limiting
│ ├── auth.py API key + OIDC authentication
│ ├── validators.py Input validation (shell metachar blocking, flag filtering)
│ └── parallel.py Concurrent tool execution
├── tools/
│ ├── base.py BaseTool ABC (validate → build_command → execute → parse)
│ ├── registry.py Tool registry with category filtering
│ ├── nmap.py ... 38 tool wrappers, one per file
│ └── nuclei.py
├── parsers/ Structured output parsers (nmap XML, sqlmap, wpscan JSON)
├── intel/
│ ├── cve_correlator.py NVD API CPE→CVE lookup
│ ├── attack_graph.py NetworkX-based attack path modeling
│ └── methodology.py Phase tracker (recon → exploit → post-exploit)
├── server/
│ ├── mcp_server.py FastMCP server (all tool + engagement endpoints)
│ ├── ollama_bridge.py Native Ollama chat with tool calling
│ ├── openai_bridge.py OpenAI-compatible API bridge
│ └── config.py Environment-based config loader
├── reporting/
│ ├── sarif.py SARIF 2.1.0 export
│ ├── html_report.py Standalone HTML report generator
│ ├── obsidian.py Obsidian vault export (interlinked notes)
│ └── remediation.py CWE → remediation mapping
├── observability/
│ ├── logging.py structlog-based structured logging
│ └── metrics.py Execution metrics tracking
└── tui/
├── app.py Textual-based terminal UI
└── widgets.py Custom TUI widgets
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
ASTRO_HOST | 127.0.0.1 | 服务绑定地址 |
ASTRO_PORT | 8080 | 服务监听端口 |
ASTRO_TRANSPORT | streamable-http | MCP 传输方式(streamable-http 或 stdio) |
ASTRO_DB_PATH | ~/.astro/engagements.db | SQLite 数据库路径 |
ASTRO_SCOPE_CONFIG | — | 范围 YAML 配置文件路径 |
ASTRO_DEBUG | false | 启用调试日志 |
API_KEY | — | 用于身份验证访问的 API 密钥 |
开发
pip install ".[dev]"
pytest # run tests
ruff check src/ tests/ # lint
mypy src/ # type check
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。