SecForge
by kangyx-2024
README.md
<div align="center">
# SecForge
**工具箱里的安全全家桶 —— 5000+ 工具索引 · 59000+ 漏洞库 · AI 编排 · 自建 Kali 镜像 · 原生 macOS 界面**
把扫描 / 攻击 / 防御 / 漏洞研究要用的东西塞进一个盒子,
让 AI 帮你调用它们,界面是一个真正的原生 App(不是浏览器套壳)。
[](LICENSE)
[](#-快速开始)
[](#-快速开始)
[](#-接进-ai-自带-key)
[](USAGE-POLICY.md)
<sub>English TL;DR — SecForge is a self-hosted security toolkit: it indexes 5,000+ GitHub
security tools, ships a 59,000-CVE local database (MSRC + CISA KEV + ExploitDB + NVD),
builds its own Kali Docker image, exposes 21 MCP tools to any AI agent, and drives
everything from a **native macOS app (Swift/SwiftUI — no Electron, no browser)**.
Bring your own LLM API key. Authorized targets only.</sub>
</div>
---
## ⚠️ 使用声明
> **仅限合法用途:你自己的资产,或你持有书面授权的目标。禁止用于任何未授权的攻击行为。**
未经授权扫描、入侵、窃取数据,或对政府 / 教育 / 医疗 / 金融等关键信息基础设施做任何探测,
在中国大陆由《刑法》第 285 / 286 条、《网络安全法》第 27 条规制 —— 后果是刑事责任与民事赔偿。
护栏已写进代码(政府 / 教育 / 军方域名直接拒绝,换任何 AI 大脑都绕不过去),
但**真正的边界在你自己的判断里**。
📄 完整条款:[USAGE-POLICY.md](USAGE-POLICY.md)
---
## 它解决什么问题
想认真学安全,你得先干这些事:装 Kali(或者 40 个工具各自装)、到处找工具、
翻十几个网站查漏洞、还得记住一堆参数。真开始干活了又是一堆手工步骤。
SecForge 把这些压成三层:
```
① 工具库 爬 GitHub 78 个安全 topic + 20 组关键词搜索 → 过滤噪音 → 本地 SQLite 索引
② 漏洞库 微软 MSRC + CISA KEV + ExploitDB + NVD 年度 feed → 统一到一张表
③ 执行层 自建 Kali 镜像(Dockerfile 由工具库自动生成)+ AI 编排 + 原生界面
```
**核心是第 ③ 层**:你对着界面说「扫一下 192.168.10.1,把开放的服务和已知漏洞对应起来」,
AI 自己决定调哪个工具、传什么参数、拿结果去查漏洞库、最后给你结论。你不用记参数。
---
## 实测数据(不是估算,是库里真实的)
| | 数量 | 说明 |
|---|---|---|
| GitHub 安全工具 | **5,266** | 从 8,446 个仓库里过滤掉噪音/清单,15 个分类 |
| 参考清单 | 710 | awesome-list / cheat-sheet 类,单独归类 |
| CVE 漏洞库 | **59,876** | 其中 56,967 条有 CVSS 评分 |
| 已被真实利用(CISA KEV) | **1,729** | 标记 🔥,优先看这些 |
| 有公开 PoC | **25,086** | 标记 💥,附 ExploitDB 编号 |
| 带补丁号(KB) | **9,070** | 直接告诉你打哪个补丁 |
| 受影响产品条目 | 253,921 | 按产品反查漏洞用 |
| Windows 版本覆盖 | 27 个 | Win11 各代 / Win10 全分支 / Server / 8.1 / 7 SP1 |
| Kali 镜像 | 2,091 个包 | 21.3GB,含 Metasploit 2604 个载荷 |
| MCP 工具 | 21 个 | 任何支持 MCP 的 AI 都能直接用 |
| 原生 App | 1.2MB | Mach-O arm64 真二进制 |
**Windows 版本能查到什么**(真实输出):
```
Windows 7 SP1 → 2,078 个 CVE,头一个是 CVE-2019-0708 BlueKeep (CVSS 9.8)
Windows 8.1 → 2,360 个 CVE,含 CVE-2017-0143 永恒之蓝
Windows Server 2019 → 5,775 个 CVE,头一个是 CVE-2020-1472 Zerologon (CVSS 10.0)
Windows 10 22H2 → 3,072 个 CVE,706 个补丁 KB 号
Windows 11 24H2 → 2,412 个 CVE
```
---
## 界面
两个前端,都真实可用:
| | 位置 | 说明 |
|---|---|---|
| **原生版** | `/Applications/SecForge.app` | Swift + SwiftUI 写的真 macOS 程序。**没有 HTML、没有浏览器、没有 Python 后端**:SQLite 由 Swift 直接读,docker 直接调。1.2MB |
| 网页版 | `ui/启动SecForge.command` | Python 标准库 HTTP 服务 + 单页 HTML,方便改 |
原生版页签:**总览 / 工具库 / 漏洞库 / Windows 漏洞 / 扫描 / 问 AI(双大脑) / 容器与镜像**。
深色 + 军绿 + 战术橙,全原生控件,跟随系统深浅色。
构建原生版:
```bash
cd native && ./build.sh # 编译 + 打包 + ad-hoc 签名 → /Applications/SecForge.app
file /Applications/SecForge.app/Contents/MacOS/SecForge
# → Mach-O 64-bit executable arm64 (不是 shell script,不是网页壳)
```
> 启动用 `open /Applications/SecForge.app`。
> `open -a /Applications/SecForge.app` 是不行的 —— `-a` 后面要跟 App **名字**不是路径。
---
## 接进 AI(自带 key)
**本仓库不带任何模型密钥,也不会代替你调用任何模型 —— AI 部分你自己部署、自己配 key。**
不配也能用,只是「问 AI」页签的 DeepSeek 大脑不可用,其余全部功能(工具库、漏洞库、
扫描、关联分析)都正常。
```bash
cp .env.example .env
# 打开 .env 填上你自己的 key(申请:https://platform.deepseek.com/api_keys)
DEEPSEEK_API_KEY=sk-你的key
```
`ui/deepseek_agent.py` 里写的是 DeepSeek 的 OpenAI 兼容接口。换别家(本地
Ollama / vLLM、通义、Moonshot、OpenAI 官方……)只改文件顶部两个常量即可。
**双大脑设计 —— 同一批工具,两个控制器:**
| 大脑 | 怎么跑 | 权限 | 特点 |
|---|---|---|---|
| **DeepSeek 直连** | 直接调 API,自己跑工具循环 | 只能动容器 | 快;每次工具调用都显示给你看;不需要装别的 |
| **Hermes 真身**(可选) | 调本机 [Hermes Agent](https://hermes-agent.nousresearch.com/docs) | 全权限 | 有跨会话记忆和技能库;危险命令会弹审批 |
两个大脑共用**同一个 Kali 容器、同一份漏洞库、同一批工具**,所以可以同时开着轮流使唤。
工具 schema 是从函数签名和 docstring 自动生成的 —— 加新工具不用改大脑那边的代码。
**任何 MCP 客户端都能接**(Claude Desktop / Cursor / 自己的 agent):
```bash
hermes config set mcp_servers.secforge.command /path/to/secforge/.venv/bin/python
hermes config set mcp_servers.secforge.args '["/path/to/secforge/mcp/server.py"]'
```
---
## ☠️ 合法使用
> **这个工具只允许用于你自己拥有的设备、你自己搭的靶场、或者你拿到书面授权的目标。**
> 完整条款见 [USAGE-POLICY.md](USAGE-POLICY.md)。
这不是免责声明里凑字数的一句 —— 它**写在代码里**:
```python
# mcp/server.py
BLOCKED_TLDS = (".gov", ".gov.cn", ".edu", ".edu.cn", ".mil", ".ac.cn", ...)
def guard(target):
"""返回空串表示放行, 否则返回拒绝原因"""
```
政府、教育、军方域名会被直接拒绝,**换哪个 AI 大脑都绕不过去**(护栏长在工具上,不在大脑上)。
腾讯等厂商的客户端反外挂条款、以及《刑法》第 285/286 条,都不是「我就试试」级别的后果。
护栏之外,**AI 能调什么也被限死了**。给 AI 的工具名要过三道关:
```python
# mcp/server.py
① 名字形态 只允许字母开头的工具名 —— 塞不进"一整串命令"
② 不是通用执行器 sh/bash/python/curl/wget/nc/rm/... 一律拒绝
③ 容器里真存在 只允许调容器里实际装了的可执行文件
```
所以 AI 只能调 `nmap`、`nuclei`、`sqlmap` 这些**真工具**,不能直接叫 `bash` 去干活。
要跑任意命令的通道只留给人:`secforge sh` 或 `docker exec -it secforge bash`。
(工具参数同样不过 shell:`args` 会被切成 argv 以 argv 形式交给工具。)
> 诚实的边界:这不等于「AI 绝不可能在容器里执行任意代码」——
> `nmap --script`、`sqlmap --os-shell`、`msfconsole -x` 本身就是命令执行引擎,
> 那是它们的设计功能,不是绕过。这道关挡住的是**最省事的那条路**。
> 真正的隔离靠的是容器本身够不着宿主机:没有 docker socket、没有挂宿主目录。
**建议的练习靶场**(全部合法):
| 靶场 | 怎么起 |
|---|---|
| OWASP Juice Shop | `docker run -d -p 3000:3000 bkimminich/juice-shop` |
| DVWA | `docker run -d -p 8080:80 vulnerables/web-dvwa` |
| vulhub | [vulhub.org](https://vulhub.org) —— 一堆现成漏洞环境 |
| Metasploitable / HackTheBox / TryHackMe | 专门的「生来被打」的靶机 |
---
## 快速开始
**需要**:macOS(或 Linux)、Docker、Python 3.11+、约 30GB 磁盘。
Windows 用户请用 WSL2。
```bash
git clone https://github.com/kangyx-2024/secforge.git
cd secforge
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
cp .env.example .env # 可选:填 AI key
```
**第一步:拿数据**(仓库里不含数据库,127MB 超过 GitHub 单文件上限)
```bash
scripts/fetch_data.sh # 优先从 Release 下载现成的库;没有就自己构建
```
自己构建(需要 `gh` CLI 已登录,因为 GitHub 搜索 API 有速率限制):
```bash
# 工具库:爬 GitHub → 过滤噪音(约 30-60 分钟)
.venv/bin/python catalog/scrape_github.py --pages 2 --min-stars 30
.venv/bin/python catalog/refine_catalog.py
# 漏洞库:MSRC + KEV + ExploitDB(约 1-2 小时)
.venv/bin/python vulndb/build_vulndb.py --from 2016-Jan
# 补 CVSS 评分(下 NVD 年度 feed,约 20 分钟)
.venv/bin/python vulndb/fill_cvss_nvd.py
```
**第二步:建 Kali 镜像**(Dockerfile 由工具库自动生成,约 20-40 分钟)
```bash
.venv/bin/python image/build_image.py # → secforge/kali:standard(21.3GB / 2091 包)
docker run -d --name secforge --cap-add NET_ADMIN --cap-add NET_RAW \
-v secforge_work:/work -v secforge_loot:/loot secforge/kali:standard
```
> 镜像是**你自己在本机从上游软件源构建**的。本仓库只提供 Dockerfile 生成器,
> 不打包、不再分发任何第三方二进制 —— 各工具仍受其原始许可证约束。
**第三步:开界面**
```bash
cd native && ./build.sh # 原生 App(推荐)
# 或
ui/启动SecForge.command # 网页版
```
**第四步(可选):每天自动更新漏洞库**
```bash
.venv/bin/python vulndb/update_daily.py # 增量拉 NVD modified feed + KEV + 当月 MSRC
# 加进 crontab 就是每天自动更新,实测一次能补 8000+ 条
```
---
## 架构
```
secforge/
├── catalog/ GitHub 爬虫 + 目录精炼 → catalog.sqlite(工具库)
├── vulndb/ MSRC + KEV + ExploitDB + NVD → vulndb.sqlite(漏洞库)
│ ├── build_vulndb.py 全量构建
│ ├── fill_cvss_nvd.py 补 CVSS / severity / CWE
│ └── update_daily.py 每日增量
├── image/ Dockerfile 生成器 + 镜像构建 → secforge/kali:standard
├── mcp/ MCP 服务器(21 个工具,stdio) → 给任何 AI 用
├── ui/ 网页版界面 + DeepSeek 直连大脑
├── native/ 原生 macOS App(Swift + SwiftUI)
└── secforge.py 命令行入口
```
**关键设计**:AI 大脑不直接碰工具,中间隔一层 MCP/函数调用。所以
(a)换大脑不用改工具,(b)护栏写在工具里,换大脑绕不过去。
---
## 常见问题
**Q:为什么不直接把数据库放进仓库?**
A:`vulndb.sqlite` 127MB,GitHub 单文件硬上限 100MB。用 `scripts/fetch_data.sh` 下载
Release 附件,或者按上面自己构建。
**Q:能不能不装 AI 只用工具库和漏洞库?**
A:可以。工具库、漏洞库、Windows 版本查询、扫描执行都不依赖 AI。
**Q:支持 Windows / Linux 吗?**
A:扫描和漏洞库是跨平台的(Python);原生 App 目前是 macOS。
Linux 用网页版界面,Windows 用 WSL2。
**Q:为什么只支持 DeepSeek?**
A:不限。`ui/deepseek_agent.py` 用的是 OpenAI 兼容格式,改成你本地 Ollama 或者
任何 OpenAI 兼容服务只改两个常量。默认给 DeepSeek 是因为它便宜、函数调用稳定。
**Q:跟 PentAGI / Nuclei / 其他 AI 渗透工具什么关系?**
A:互补。SecForge 的定位是**本地索引 + 编排层**:它不重写任何扫描器,而是把已有的
几千个工具和 6 万条漏洞整理成 AI 能用的形式。你也可以只把它的 MCP 服务器接到
你自己的 agent 上。
---
## 数据来源与致谢
- **工具索引**:GitHub Search API(78 个安全 topic + 20 组关键词)
- **漏洞数据**:Microsoft MSRC CVRF、CISA KEV、ExploitDB、NIST NVD
- **所有实际工具**:归各自上游项目所有(nmap / Metasploit / nuclei / sqlmap / hydra / ...)
SecForge 只做编排,不重造轮子。
---
## License
MIT —— 见 [LICENSE](LICENSE)。
使用前请读 [USAGE-POLICY.md](USAGE-POLICY.md)(可接受使用政策)。
**本软件仅限用于合法的网络安全工作:你自己的资产,或你持有书面授权的目标。**
<div align="center"><sub>Built for learning. Use only on systems you are authorized to test.</sub></div>
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues