Ed1s0nZ/CyberStrikeAI

GitHub: Ed1s0nZ/CyberStrikeAI

基于 Go 构建的 AI 原生安全测试平台,集成百种工具与智能编排引擎,通过自然语言驱动渗透测试全流程自动化。

Stars: 1774 | Forks: 323

CyberStrikeAI Logo
# CyberStrikeAI [中文](README_CN.md) | [English](README.md) CyberStrikeAI 是一个使用 Go 构建的 **AI 原生安全测试平台**。它集成了 100 多种安全工具、一个智能编排引擎、具有预定义安全角色的基于角色测试系统、包含专业技能的技能系统,以及全面的生命周期管理能力。通过原生 MCP 协议和 AI agents,它实现了从对话命令到漏洞发现、攻击链分析、知识检索和结果可视化的端到端自动化——为安全团队提供了一个可审计、可追溯且支持协作的测试环境。 ## 界面与集成预览
### 系统仪表板概览 System Dashboard *仪表板全面展示了系统运行状态、安全漏洞、工具使用情况和知识库,帮助用户快速了解平台的核心功能与当前状态。* ### 核心功能概览
Web Console
Web Console
Attack Chain Visualization
Attack Chain
Task Management
Task Management
Vulnerability Management
Vulnerability Management
MCP Management
MCP management
MCP stdio Mode
MCP stdio mode
Knowledge Base
Knowledge Base
Skills Management
Skills Management
Role Management
Role Management
## 亮点 - 🤖 具备 OpenAI 兼容模型(GPT、Claude、DeepSeek 等)的 AI 决策引擎 - 🔌 原生 MCP 实现,支持 HTTP/stdio/SSE 传输协议及外部 MCP 联邦 - 🧰 100 多个预构建工具配方 + 基于 YAML 的扩展系统 - 📄 大结果集分页、压缩及可搜索归档 - 🔗 攻击链图谱、风险评分及逐步回放 - 🔒 密码保护的 Web UI、审计日志及 SQLite 持久化 - 📚 包含向量搜索和混合检索的知识库,用于安全专业知识 - 📁 会话分组支持置顶、重命名及批量管理 - 🛡️ 漏洞管理支持 CRUD 操作、严重程度跟踪、状态流转及统计 - 📋 批量任务管理:创建任务队列,添加多项任务并按顺序执行 - 🎭 基于角色的测试:预定义安全测试角色(渗透测试、CTF、Web 应用扫描等),支持自定义提示词和工具限制 - 🎯 技能系统:20 多个预定义安全测试技能(SQL 注入、XSS、API 安全等),可附加到角色或由 AI agents 按需调用 - 📱 **聊天机器人**:钉钉和飞书长连接支持,让您可以从移动端与 CyberStrikeAI 对话(设置和命令详见 [机器人 / 聊天机器人指南](docs/robot_en.md)) ## 工具概览 CyberStrikeAI 内置 100 多种精选工具,覆盖整个杀伤链: - **网络扫描器** – nmap, masscan, rustscan, arp-scan, nbtscan - **Web 与应用扫描器** – sqlmap, nikto, dirb, gobuster, feroxbuster, ffuf, httpx - **漏洞扫描器** – nuclei, wpscan, wafw00f, dalfox, xsser - **子域名枚举** – subfinder, amass, findomain, dnsenum, fierce - **网络空间搜索引擎** – fofa_search, zoomeye_search - **API 安全** – graphql-scanner, arjun, api-fuzzer, api-schema-analyzer - **容器安全** – trivy, clair, docker-bench-security, kube-bench, kube-hunter - **云安全** – prowler, scout-suite, cloudmapper, pacu, terrascan, checkov - **二进制分析** – gdb, radare2, ghidra, objdump, strings, binwalk - **漏洞利用** – metasploit, msfvenom, pwntools, ropper, ropgadget - **密码破解** – hashcat, john, hashpump - **取证分析** – volatility, volatility3, foremost, steghide, exiftool - **后渗透** – linpeas, winpeas, mimikatz, bloodhound, impacket, responder - **CTF 工具** – stegsolve, zsteg, hash-identifier, fcrackzip, pdfcrack, cyberchef - **系统辅助** – exec, create-file, delete-file, list-files, modify-file ## 基本用法 ### 快速开始(一键部署) **前置条件:** - Go 1.21+ ([安装](https://go.dev/dl/)) - Python 3.10+ ([安装](https://www.python.org/downloads/)) **一键部署:** ``` git clone https://github.com/Ed1s0nZ/CyberStrikeAI.git cd CyberStrikeAI-main chmod +x run.sh && ./run.sh ``` `run.sh` 脚本将自动: - ✅ 检查并验证 Go 和 Python 环境 - ✅ 创建 Python 虚拟环境 - ✅ 安装 Python 依赖 - ✅ 下载 Go 依赖 - ✅ 构建项目 - ✅ 启动服务器 **首次配置:** 1. **配置 OpenAI 兼容 API**(首次使用前必填) - 启动后打开 http://localhost:8080 - 进入 `Settings` → 填写您的 API 凭证: openai: api_key: "sk-your-key" base_url: "https://api.openai.com/v1" # 或 https://api.deepseek.com/v1 model: "gpt-4o" # 或 deepseek-chat, claude-3-opus 等 - 或在启动前直接编辑 `config.yaml` 2. **登录** - 使用控制台显示的自动生成密码(或在 `config.yaml` 中设置 `auth.password`) 3. **安装安全工具(可选)** - 按需安装工具: # macOS brew install nmap sqlmap nuclei httpx gobuster feroxbuster subfinder amass # Ubuntu/Debian sudo apt-get install nmap sqlmap nuclei httpx gobuster feroxbuster 当工具缺失时,AI 会自动回退到替代方案。 **其他启动方式:** ``` # Direct Go run(需 Manual setup) go run cmd/server/main.go # Manual build go build -o cyberstrike-ai cmd/server/main.go ./cyberstrike-ai ``` **注意:** Python 虚拟环境(`venv/`)由 `run.sh` 自动创建和管理。需要 Python 的工具(如 `api-fuzzer`、`http-framework-test` 等)将自动使用此环境。 ### 核心工作流 - **对话测试** – 自然语言提示词触发工具链,支持 SSE 流式输出。 - **基于角色的测试** – 从预定义的安全测试角色(渗透测试、CTF、Web 应用扫描、API 安全测试等)中选择,以自定义 AI 行为和工具可用性。每个角色应用自定义系统提示词,并可限制可用工具以适应特定测试场景。 - **工具监控** – 检查运行中的任务、执行日志和大结果附件。 - **历史与审计** – 每次对话和工具调用都存储在 SQLite 中并支持回放。 - **会话分组** – 将对话组织到分组中,通过右键菜单置顶重要分组、重命名或删除分组。 - **漏洞管理** – 创建、更新和跟踪测试期间发现的漏洞。按严重程度(critical/high/medium/low/info)、状态(open/confirmed/fixed/false_positive)和会话筛选。查看统计信息并导出发现。 - **批量任务管理** – 创建包含多项任务的任务队列,执行前添加或编辑任务,并按顺序运行。每项任务作为独立会话执行,具有状态跟踪(pending/running/completed/failed/cancelled)和完整执行历史。 - **设置** – 调整提供商密钥、MCP 启用、工具开关及 agent 迭代限制。 ### 内置安全防护 - 必填字段验证防止意外留空 API 凭证。 - 当 `auth.password` 为空时自动生成强密码。 - 统一的身份验证中间件用于每个 Web/API 调用(Bearer token 流程)。 - 每个工具的超时和沙箱防护,以及用于排查的结构化日志。 ## 高级用法 ### 基于角色的测试 - **预定义角色** – 系统在 `roles/` 目录中包含 12 个以上预定义安全测试角色(渗透测试、CTF、Web 应用扫描、API 安全测试、二进制分析、云安全审计等)。 - **自定义提示词** – 每个角色可以定义一个附加在用户消息之前的 `user_prompt`,引导 AI 采用专门的测试方法和关注领域。 - **工具限制** – 角色可以指定 `tools` 列表以限制可用工具,确保聚焦的测试工作流(例如,CTF 角色限制为 CTF 专用工具)。 - **技能集成** – 角色可以附加安全测试技能。技能名称作为提示添加到系统提示词中,AI agents 可以使用 `read_skill` 工具按需访问技能内容。 - **轻松创建角色** – 通过向 `roles/` 目录添加 YAML 文件来创建自定义角色。每个角色定义 `name`、`description`、`user_prompt`、`icon`、`tools`、`skills` 和 `enabled` 字段。 - **Web UI 集成** – 从聊天界面的下拉菜单中选择角色。角色选择同时影响 AI 行为和可用工具建议。 **创建自定义角色(示例):** 1. 在 `roles/` 中创建一个 YAML 文件(例如 `roles/custom-role.yaml`): name: Custom Role description: Specialized testing scenario user_prompt: You are a specialized security tester focusing on API security... icon: "\U0001F4E1" tools: - api-fuzzer - arjun - graphql-scanner skills: - api-security-testing - sql-injection-testing enabled: true 2. 重启服务器或重新加载配置;该角色将出现在角色选择器下拉菜单中。 ### 技能系统 - **预定义技能** – 系统在 `skills/` 目录中包含 20 多个预定义安全测试技能(SQL 注入、XSS、API 安全、云安全、容器安全等)。 - **提示词中的技能提示** – 当选中某个角色时,附加到该角色的技能名称会作为推荐添加到系统提示词中。技能内容不会自动注入;AI agents 必须使用 `read_skill` 工具在需要时访问技能详情。 - **按需访问** – AI agents 也可以使用内置工具(`list_skills`、`read_skill`)按需访问技能,允许在任务执行期间动态检索技能。 - **结构化格式** – 每个技能是一个目录,包含一个 `SKILL.md` 文件,其中包含详细的测试方法、工具使用、最佳实践和示例。技能支持 YAML front matter 用于元数据。 - **自定义技能** – 通过向 `skills/` 目录添加目录来创建自定义技能。每个技能目录应包含一个 `SKILL.md` 文件用于存放技能内容。 **创建自定义技能:** 1. 在 `skills/` 中创建一个目录(例如 `skills/my-skill/`) 2. 在该目录中创建一个 `SKILL.md` 文件,包含技能内容 3. 通过将技能添加到角色 YAML 文件中的 `skills` 字段,将其附加到角色 ### 工具编排与扩展 - `tools/*.yaml` 中的 **YAML 配方** 描述了命令、参数、提示词和元数据。 - **目录热重载** – 通常只需将 `security.tools_dir` 指向一个文件夹即可;`config.yaml` 中的内联定义仍然支持用于快速实验。 - **大结果集分页** – 超过 200 KB 的输出将作为工件存储,可通过 `query_execution_result` 工具检索,支持分页、过滤和正则搜索。 - **结果压缩** – 多兆字节的日志可以在持久化之前进行摘要或无损压缩,以保持 SQLite 精简。 **创建自定义工具(典型流程)** 1. 从 `tools/` 复制一个现有 YAML 文件(例如 `tools/sample.yaml`)。 2. 更新 `name`、`command`、`args` 和 `short_description`。 3. 在 `parameters[]` 中描述位置参数或标志参数,以便 agent 知道如何构建 CLI 参数。 4. 如果 agent 需要额外的上下文或后处理提示,请提供更长的 `description`/`notes` 块。 5. 重启服务器或重新加载配置;新工具立即可用,并可从设置面板启用/禁用。 ### 攻击链智能 - AI 解析每次对话以汇总目标、工具、漏洞和关系。 - Web UI 将链渲染为交互式图谱,包含严重程度评分和步骤回放。 - 将链或原始发现导出到外部报告流水线。 ### MCP 无处不在 - **Web 模式** – 自动附带 UI 消费的 HTTP MCP 服务器。 - **MCP stdio 模式** – `go run cmd/mcp-stdio/main.go` 将 agent 暴露给 Cursor/CLI。 - **外部 MCP 联邦** – 从 UI 注册第三方 MCP 服务器(HTTP、stdio 或 SSE),按任务启用/禁用,并实时监控其健康状况和调用频率。 #### MCP stdio 快速开始 1. **构建二进制文件**(从项目根目录运行): go build -o cyberstrike-ai-mcp cmd/mcp-stdio/main.go 2. **在 Cursor 中配置** 打开 `Settings → Tools & MCP → Add Custom MCP`,选择 **Command**,然后指向编译二进制文件和您的配置: { "mcpServers": { "cyberstrike-ai": { "command": "/absolute/path/to/cyberstrike-ai-mcp", "args": [ "--config", "/absolute/path/to/config.yaml" ] } } } 将路径替换为您的本地路径;Cursor 将自动启动 stdio 服务器。 #### MCP HTTP 快速开始 1. 确保 `config.yaml` 中 `mcp.enabled: true`,并根据需要调整 `mcp.host` / `mcp.port`(localhost:8081 适用于本地 Cursor 使用)。 2. 启动主服务(`./run.sh` 或 `go run cmd/server/main.go`);MCP 端点位于 `http://:/mcp`。 3. 在 Cursor 中,选择 **Add Custom MCP → HTTP** 并将 `Base URL` 设置为 `http://127.0.0.1:8081/mcp`。 4. 建议通过 `.cursor/mcp.json` 提交设置,以便队友复用: { "mcpServers": { "cyberstrike-ai-http": { "transport": "http", "url": "http://127.0.0.1:8081/mcp" } } } #### 外部 MCP 联邦 (HTTP/stdio/SSE) CyberStrikeAI 支持通过三种传输模式连接到外部 MCP 服务器: - **HTTP 模式** – 基于 HTTP POST 的传统请求/响应 - **stdio 模式** – 通过标准输入/输出进行基于进程的通信 - **SSE 模式** – Server-Sent Events,用于实时流式通信 添加外部 MCP 服务器: 1. 打开 Web UI 并导航至 **Settings → External MCP**。 2. 点击 **Add External MCP** 并以 JSON 格式提供配置: **HTTP 模式示例:** { "my-http-mcp": { "transport": "http", "url": "http://127.0.0.1:8081/mcp", "description": "HTTP MCP server", "timeout": 30 } } **stdio 模式示例:** { "my-stdio-mcp": { "command": "python3", "args": ["/path/to/mcp-server.py"], "description": "stdio MCP server", "timeout": 30 } } **SSE 模式示例:** { "my-sse-mcp": { "transport": "sse", "url": "http://127.0.0.1:8082/sse", "description": "SSE MCP server", "timeout": 30 } } 3. 点击 **Save**,然后点击 **Start** 连接到服务器。 4. 实时监控连接状态、工具数量和健康状况。 **SSE 模式优势:** - 通过 Server-Sent Events 实现实时双向通信 - 适用于需要持续数据流的场景 - 推送通知的延迟更低 `cmd/test-sse-mcp-server/` 中提供了一个用于验证的测试 SSE MCP 服务器。 ### 知识库 - **向量搜索** – AI agent 可以在对话期间使用 `search_knowledge_base` 工具自动在知识库中搜索相关的安全知识。 - **混合检索** – 结合向量相似性搜索与关键词匹配,以获得更好的准确性。 - **自动索引** – 扫描 `knowledge_base/` 目录中的 Markdown 文件并自动使用嵌入对其进行索引。 - **Web 管理** – 通过 Web UI 创建、更新、删除知识条目,支持基于类别的组织。 - **检索日志** – 跟踪所有知识检索操作以用于审计和调试。 **快速开始(使用预构建知识库):** 1. **下载知识数据库** – 从 [GitHub Releases](https://github.com/Ed1s0nZ/CyberStrikeAI/releases) 下载预构建的知识数据库文件。 2. **解压并放置** – 解压下载的知识数据库文件(`knowledge.db`)并将其放入项目的 `data/` 目录。 3. **重启服务** – 重启 CyberStrikeAI 服务,知识库将立即可用,无需重建索引。 **设置知识库:** 1. **在配置中启用** – 在 `config.yaml` 中设置 `knowledge.enabled: true`: knowledge: enabled: true base_path: knowledge_base embedding: provider: openai model: text-embedding-v4 base_url: "https://api.openai.com/v1" # 或您的 embedding API api_key: "sk-xxx" retrieval: top_k: 5 similarity_threshold: 0.7 hybrid_weight: 0.7 2. **添加知识文件** – 将 Markdown 文件放入 `knowledge_base/` 目录,按类别组织(例如 `knowledge_base/SQL Injection/README.md`)。 3. **扫描并索引** – 使用 Web UI 扫描知识库目录,这将自动导入文件并构建向量嵌入。 4. **在对话中使用** – AI agent 在需要安全知识时会自动使用 `search_knowledge_base`。您也可以明确要求:“在知识库中搜索 SQL 注入技术”。 **知识库结构:** - 文件按类别组织(目录名称即类别)。 - 每个 Markdown 文件成为一个知识条目,自动分块以进行向量搜索。 - 系统支持增量更新——修改的文件会自动重新索引。 ### 自动化 Hooks - **REST APIs** – UI 使用的所有功能(auth、会话、工具运行、监控、漏洞、角色)均通过 JSON 提供。 - **Role APIs** – 通过 `/api/roles` 端点管理安全测试角色:`GET /api/roles`(列出所有角色)、`GET /api/roles/:name`(获取角色)、`POST /api/roles`(创建角色)、`PUT /api/roles/:name`(更新角色)、`DELETE /api/roles/:name`(删除角色)。角色作为 YAML 文件存储在 `roles/` 目录中,支持热重载。 - **Vulnerability APIs** – 通过 `/api/vulnerabilities` 端点管理漏洞:`GET /api/vulnerabilities`(列表及过滤)、`POST /api/vulnerabilities`(创建)、`GET /api/vulnerabilities/:id`(获取)、`PUT /api/vulnerabilities/:id`(更新)、`DELETE /api/vulnerabilities/:id`(删除)、`GET /api/vulnerabilities/stats`(统计)。 - **Batch Task APIs** – 通过 `/api/batch-tasks` 端点管理批量任务队列:`POST /api/batch-tasks`(创建队列)、`GET /api/batch-tasks`(列出队列)、`GET /api/batch-tasks/:queueId`(获取队列)、`POST /api/batch-tasks/:queueId/start`(开始执行)、`POST /api/batch-tasks/:queueId/cancel`(取消)、`DELETE /api/batch-tasks/:queueId`(删除)、`POST /api/batch-tasks/:queueId/tasks`(添加任务)、`PUT /api/batch-tasks/:queueId/tasks/:taskId`(更新任务)、`DELETE /api/batch-tasks/:queueId/tasks/:taskId`(删除任务)。任务按顺序执行,每个任务创建一个独立的会话,具有完整的状态跟踪。 - **任务控制** – 暂停/恢复/停止长时间扫描,使用新参数重新运行步骤,或流式传输记录。 - **审计与安全** – 通过 `/api/auth/change-password` 轮换密码,强制执行短期会话,并在暴露服务时在网络层限制 MCP 端口。 ## 配置参考 ``` auth: password: "change-me" session_duration_hours: 12 server: host: "0.0.0.0" port: 8080 log: level: "info" output: "stdout" mcp: enabled: true host: "0.0.0.0" port: 8081 openai: api_key: "sk-xxx" base_url: "https://api.deepseek.com/v1" model: "deepseek-chat" database: path: "data/conversations.db" knowledge_db_path: "data/knowledge.db" # Optional: separate DB for knowledge base security: tools_dir: "tools" knowledge: enabled: false # Enable knowledge base feature base_path: "knowledge_base" # Path to knowledge base directory embedding: provider: "openai" # Embedding provider (currently only "openai") model: "text-embedding-v4" # Embedding model name base_url: "" # Leave empty to use OpenAI base_url api_key: "" # Leave empty to use OpenAI api_key retrieval: top_k: 5 # Number of top results to return similarity_threshold: 0.7 # Minimum similarity score (0-1) hybrid_weight: 0.7 # Weight for vector search (1.0 = pure vector, 0.0 = pure keyword) roles_dir: "roles" # Role configuration directory (relative to config file) skills_dir: "skills" # Skills directory (relative to config file) ``` ### 工具定义示例 (`tools/nmap.yaml`) ``` name: "nmap" command: "nmap" args: ["-sT", "-sV", "-sC"] enabled: true short_description: "Network mapping & service fingerprinting" parameters: - name: "target" type: "string" description: "IP or domain" required: true position: 0 - name: "ports" type: "string" flag: "-p" description: "Range, e.g. 1-1000" ``` ### 角色定义示例 (`roles/penetration-testing.yaml`) ``` name: Penetration Testing description: Professional penetration testing expert for comprehensive security testing user_prompt: You are a professional cybersecurity penetration testing expert. Please use professional penetration testing methods and tools to conduct comprehensive security testing on targets, including but not limited to SQL injection, XSS, CSRF, file inclusion, command execution and other common vulnerabilities. icon: "\U0001F3AF" tools: - nmap - sqlmap - nuclei - burpsuite - metasploit - httpx - record_vulnerability - list_knowledge_risk_types - search_knowledge_base enabled: true ``` ## 相关文档 - [机器人 / 聊天机器人指南(钉钉 & 飞书)](docs/robot_en.md):在手机上使用钉钉或飞书连接 CyberStrikeAI 的完整设置、命令和故障排除。**请遵循此文档以避免常见错误。** ## 项目结构 ``` CyberStrikeAI/ ├── cmd/ # Server, MCP stdio entrypoints, tooling ├── internal/ # Agent, MCP core, handlers, security executor ├── web/ # Static SPA + templates ├── tools/ # YAML tool recipes (100+ examples provided) ├── roles/ # Role configurations (12+ predefined security testing roles) ├── skills/ # Skills directory (20+ predefined security testing skills) ├── docs/ # Documentation (e.g. robot/chbot guide) ├── images/ # Docs screenshots & diagrams ├── config.yaml # Runtime configuration ├── run.sh # Convenience launcher └── README*.md ``` ## 基本用法示例 ``` Scan open ports on 192.168.1.1 Perform a comprehensive port scan on 192.168.1.1 focusing on 80,443,22 Check if https://example.com/page?id=1 is vulnerable to SQL injection Scan https://example.com for hidden directories and outdated software Enumerate subdomains for example.com, then run nuclei against the results ``` ## 高级 Playbooks ``` Load the recon-engagement template, run amass/subfinder, then brute-force dirs on every live host. Use external Burp-based MCP server for authenticated traffic replay, then pass findings back for graphing. Compress the 5 MB nuclei report, summarize critical CVEs, and attach the artifact to the conversation. Build an attack chain for the latest engagement and export the node list with severity >= high. ``` ## 404Starlink CyberStrikeAI 已加入 [404Starlink](https://github.com/knownsec/404StarLink) ## TCH 高排名智能渗透测试项目 ## Star 趋势图 ![Stargazers over time](https://starchart.cc/Ed1s0nZ/CyberStrikeAI.svg) ## ⚠️ 免责声明 **本工具仅供教育和授权测试用途!** CyberStrikeAI 是一个专业的安全测试平台,旨在协助安全研究人员、渗透测试人员和 IT 专业人员**在获得明确授权的情况下**进行安全评估和漏洞研究。 **使用本工具即表示您同意:** - 仅在您拥有明确书面授权的系统上使用本工具 - 遵守所有适用法律、法规和道德标准 - 对任何未经授权的使用或滥用承担全部责任 - 不将本工具用于任何非法或恶意目的 **开发者不对任何滥用行为负责!** 请确保您的使用符合当地法律法规,并且您已获得目标系统所有者的明确授权。 需要帮助或想要贡献?提交 Issue 或 PR——欢迎社区贡献工具!
标签:AI安全, Chat Copilot, CISA项目, DevSecOps, EVTX分析, EVTX分析, FTP漏洞扫描, Go语言, GPT, LIDS, MCP协议, Mutation, Petitpotam, PE 加载器, Ruby, 上游代理, 任务管理, 可视化, 安全合规, 安全工具集成, 安全编排, 安全角色, 密码管理, 技能系统, 插件系统, 攻击链分析, 日志审计, 漏洞管理, 知识库, 程序破解, 端到端自动化, 网络代理, 网络安全, 网络安全审计, 逆向工具, 隐私保护