功能概览
SecBot 的定位、安全边界、主要能力、技术栈和仓库入口。
基于 NestJS + TypeScript 的智能化自动渗透测试系统,具备多智能体协作
English | 中文
安全警告
本工具仅用于授权的安全测试。未经授权使用本工具进行网络攻击是违法的。
- 仅对您拥有或已获得明确书面授权的系统使用
- 确保遵守所有适用的法律法规
- 负责任和道德地使用
功能特性
核心能力
- 多种智能体模式: ReAct、Plan-Execute、多智能体协调、工具调用、记忆增强
- AI Web 研究子智能体: 独立的 WebResearchAgent,基于 ReAct 自动完成联网搜索、网页提取、多页爬取和 API 调用
- 持久化终端会话: 为智能体提供专用终端,会话内多步命令执行与系统信息收集
- AI 网络爬虫: 实时网络信息捕获和监控
- 记忆子系统: 短期 / 情景 / 长期记忆管理,向量存储与语义检索
- 漏洞数据库: 统一漏洞 schema,适配 CVE / NVD / Exploit-DB / MITRE ATT&CK
- 意图路由与探索:
IntentRouter单次分类用户意图;可选ExploreAgent在规划前用vuln_db_query、browser_session(遵守 robots、可读性提取)补全上下文。 - 上下文预算:
ContextAssemblerService按模型窗口装配历史与记忆;SSEcontext_usage供 TUI 右下角用量展示。
渗透测试
- 信息收集: 自动化信息收集(主机名、IP、端口、服务)
- 漏洞扫描: 端口扫描、服务检测、漏洞识别
- 漏洞利用引擎: 自动化执行 SQL 注入、XSS、命令注入、文件上传、路径遍历、SSRF 等漏洞利用
- 自动化攻击链: 完整的渗透测试工作流自动化
- Payload 生成器: 自动生成各种攻击 payload
- 后渗透利用: 权限提升、持久化、横向移动
安全与防御
- 主动防御: 信息收集、漏洞扫描、网络分析、入侵检测
- 安全报告: 自动化详细安全分析报告
- 网络发现: 自动发现网络中的所有主机
- 授权管理: 管理对目标主机的合法授权
- 远程控制: 在授权主机上执行远程命令和文件传输
Web 研究能力
- 智能搜索: 基于 DuckDuckGo 的智能搜索 + LLM 综合总结
- 网页提取: 按模式提取网页内容——纯文本、结构化或自定义 AI schema
- 深度爬取: 从起始 URL 进行 BFS 多页爬取,支持深度/URL 过滤
- API 客户端: 通用 REST API 客户端,内置天气、IP 信息、GitHub、DNS 等常用模板
架构与多智能体协作
整体架构一览
flowchart LR
subgraph FrontendClients["前端 / Clients"]
user[用户]
tui["terminal-ui (Ink)"]
end
user --> tui
tui -->|HTTP / SSE| api["NestJS /api/chat"]
subgraph BackendRouter["会话编排"]
api --> chatSvc["ChatService"]
chatSvc --> intent["IntentRouter\n(一次分类)"]
intent --> explore["ExploreAgent\n(可选)"]
explore --> ctx["ContextAssembler\n+ ContextStore"]
intent --> taskPath["task_simple /\ntask_complex"]
end
subgraph PlanningExecution["规划 & 执行"]
taskPath --> planner["PlannerAgent\n(复杂任务)"]
planner --> executor["TaskExecutor"]
taskPath --> react["SecurityReActAgent\n(简单任务)"]
executor --> coord["CoordinatorAgent"]
coord --> specialists["专职子 Agent\n(ReAct)"]
end
subgraph ToolsLayer["工具层"]
specialists --> toolsMod["ToolsModule\n(vuln-db / browser_session /\nweb-research / …)"]
explore --> toolsMod
react --> toolsMod
end
toolsMod --> db[(SQLite)]
subgraph SummaryStorage["总结与记忆"]
coord --> memoryMod[MemoryModule]
coord --> summary["SummaryAgent\n(按需)"]
end
chatSvc -->|SSE\nintent / explore /\ncontext_usage| sse[SSE Stream]
sse --> tui后端模块一览
| NestJS 模块 | 职责 |
|---|---|
ChatModule | SSE 聊天;ChatService 串联 IntentRouter → 可选 Explore → 上下文装配 → 简单/复杂任务与按需总结 |
AgentsModule | 多智能体(IntentRouter、ExploreAgent、Planner、Coordinator、Summary、QA、各 ReAct 子 Agent) |
ToolsModule | 内置安全工具(含 vuln-db、browser_session 类人浏览、web-research、scanner 等分类) |
DatabaseModule | SQLite 持久化(对话、配置、提示词链) |
MemoryModule | 短期 / 情景 / 长期记忆,向量存储与语义检索 |
VulnDbModule | 漏洞数据库,适配 CVE / NVD / Exploit-DB / MITRE ATT&CK |
NetworkModule | 网络发现、授权管理、远程控制 |
DefenseModule | 防御扫描与安全状态 |
SessionsModule | 终端会话管理 |
SystemModule | 系统信息与 LLM 配置管理 |
CrawlerModule | 爬虫任务队列与调度 |
HealthModule | 健康检查端点 |
关键设计思路
1. ChatModule & ChatService(会话编排)
ChatController提供/api/chatSSE 端点;ChatService.handleMessage为编排核心。IntentRouter:对用户消息做一次意图分类(闲聊 / 元问题 / 纯问答 / 需澄清 / 简单任务 / 复杂任务),并给出needs_explore、needs_report、focus等信号。- 可选
ExploreAgent:在正式规划前用轻量 ReAct 补全上下文(vuln_db_query、browser_session等);探索阶段拒绝sensitive工具,结果写入ContextStore并由ContextAssemblerService按模型窗口预算拼进提示词;SSE 推送intent_decision、explore_*、context_usage(TUI 右下角用量)、可选context_patch。 task_simple:跳过 Planner,直接SecurityReActAgent;task_complex:PlannerAgent→TaskExecutor;SummaryAgent仅在needs_report为真时生成最终报告,避免每轮冗长总结。
2. PlannerAgent:结构化规划
- 将用户请求拆解为
TodoItem列表,每个 Todo 带有depends_on(依赖关系)、resource(目标资产)、risk_level(风险等级)和agent_hint(推荐子 Agent)。 get_execution_order()基于依赖关系做拓扑排序,同一资源上的高危步骤强制串行。
3. TaskExecutor:分层并发执行
- 逐层执行 Todo:层内可并行,层间严格按依赖拓扑前进。
- 上下文聚合按
todo_id和resource双维度组织。
4. CoordinatorAgent:多子 Agent 协同
- 根据 Todo 的
agent_hint / resource / tool_hint将执行委派给对应的专职子 Agent。 - Coordinator 本身只负责路由与结果聚合。
5. 专职子 Agent
- 继承自
SecurityReActAgent,各自拥有独立的系统提示词和专属工具集。 - 每个子 Agent 维护自己的会话摘要(短记忆),Coordinator 在每轮结束后同步摘要。
6. SummaryAgent
- 从 Coordinator 聚合到的按 Agent 维度的工具执行结果中,生成分节式最终报告。
系统要求
- Node.js 24+
- npm(随 Node.js 附带)
- Ollama(可选,本地推理时需要)
安装(从源码运行)
1. 克隆仓库
git clone https://github.com/iammm0/secbot.git
cd secbot2. 安装依赖
npm install3. 配置环境变量
创建 .env 文件:
# 云端推理(默认推荐)
LLM_PROVIDER=deepseek
DEEPSEEK_API_KEY=sk-your-api-key
DEEPSEEK_MODEL=deepseek-chat
# 或改用本地 Ollama
# LLM_PROVIDER=ollama
# OLLAMA_BASE_URL=http://localhost:11434
# OLLAMA_MODEL=llama3.2
# 可选:探索迭代上限、上下文调试 SSE、关闭自适应重规划、NVD 速率
# SECBOT_EXPLORE_MAX_ITERS=12
# SECBOT_CONTEXT_DEBUG=1
# SECBOT_ADAPTIVE_REPLAN=false
# NVD_API_KEY=your-nvd-key4. 启动
# 一键启动 TUI(默认自动拉起本地后端子进程)
npm run start:stack
# 或分步启动
npm run dev # 后端开发模式(热重载)
npm run start:tui # 另一终端启动 TUI(默认自动拉起本地后端子进程)
# 仅连接已有后端(服务模式,可选)
SECBOT_TUI_BACKEND=service SECBOT_API_URL=http://127.0.0.1:8000 npm run start:tui
# 兼容别名(remote 等同于 service)
SECBOT_TUI_BACKEND=remote SECBOT_API_URL=http://127.0.0.1:8000 npm run start:tui5.(可选)安装 Ollama 本地模型
ollama pull llama3.2
ollama pull nomic-embed-text快速开始
常见开发入口
# 后端开发(热重载)
npm run dev
# 生产构建与启动
npm run build
npm start
# 终端 TUI(默认子进程模式)
npm run start:tui
常用环境变量
| 变量 | 用途 | 默认值 |
|---|---|---|
LLM_PROVIDER | 当前推理后端 | ollama |
DEEPSEEK_API_KEY | DeepSeek API Key | 无 |
DEEPSEEK_MODEL | DeepSeek 默认模型 | deepseek-chat |
OLLAMA_BASE_URL | Ollama 服务地址 | http://localhost:11434 |
OLLAMA_MODEL | Ollama 默认模型 | llama3.2 |
PORT | 后端监听端口 | 8000 |
SECBOT_TUI_BACKEND | TUI 后端模式:spawn/service/remote/auto | 默认优先 spawn,连接已有后端时请显式使用 service/remote |
常见斜杠命令(TUI 内使用)
| 命令 | 说明 |
|---|---|
/model | 选择推理后端、模型、API Key、Base URL |
/agent | 切换 secbot-cli / superhackbot |
/list-agents | 查看当前可用智能体 |
/system-info | 查看系统信息 |
/db-stats | 查看 SQLite 统计 |
目录结构
secbot/
├── server/ # NestJS 后端(TypeScript)
│ └── src/
│ ├── main.ts # 应用入口
│ ├── app.module.ts # 根模块(引入 12 个业务模块)
│ ├── common/ # 公共基础设施(LLM 抽象、过滤器、拦截器)
│ └── modules/ # 业务模块
│ ├── agents/ # 多智能体(含 core/ 子目录)
│ ├── chat/ # SSE 聊天接口
│ ├── tools/ # 54 个安全工具(10 大类)
│ ├── database/ # SQLite 持久化
│ ├── memory/ # 记忆子系统(含向量存储)
│ ├── vuln-db/ # 漏洞数据库(含适配器)
│ ├── network/ # 网络发现与远程控制
│ ├── defense/ # 防御扫描
│ ├── sessions/ # 会话管理
│ ├── system/ # 系统信息与配置
│ ├── crawler/ # 爬虫调度
│ └── health/ # 健康检查
├── npm-bin/ # npm CLI 入口
├── terminal-ui/ # Ink 终端前端(TypeScript)
├── scripts/ # 启动与构建脚本
├── tools/ # 工具能力说明文档
├── skills/ # Agent 技能定义
└── docs/ # 项目文档开发
# 类型检查
npm run typecheck
# 代码检查
npm run lint
npm run lint:fix
# 代码格式化
npm run format
# 运行测试
npm test
# 构建
npm run build
# 打包发布
npm run release:pack文档
| 文档 | 说明 |
|---|---|
| CLAUDE.md | 给 AI / 贡献者的编排说明、SSE、环境变量与目录索引 |
| 快速开始指南 | 安装与启动 |
| API 文档 | REST + SSE 接口说明 |
| LLM 厂商配置 | 多厂商模型后端与配置 |
| Ollama 设置 | 本地模型配置 |
| UI 设计与交互 | TUI 架构说明 |
| 部署指南 | 后端部署 |
| 发布说明 | 发布与打包 |
| 数据库指南 | SQLite 结构与操作 |
| 工具扩展 | 自定义工具开发 |
| 技能与记忆 | 技能注入与记忆管理 |
| 安全警告 | 法律与使用声明 |
贡献
欢迎贡献!请随时提交 Issue 和 Pull Request。
- Fork 本仓库
- 创建您的特性分支 (
git checkout -b feat/amazing-feature) - 提交您的更改 (
git commit -m 'feat: 添加某功能') - 推送到分支 (
git push origin feat/amazing-feature) - 打开一个 Pull Request
提交信息遵循 Conventional Commits 规范。
许可证
本项目采用自定义开源协议,详见 LICENSE 文件。
- 允许:个人学习、学术研究与交流(包括教学、论文、非营利技术分享等)可自由使用、修改与分发(须保留版权与协议声明)。
- 商用:任何商业用途须事先获得版权持有人书面授权。
商用授权联系:wisewater5419@gmail.com
作者
赵明俊 (Zhao Mingjun)
- GitHub: @iammm0
- Email: wisewater5419@gmail.com
致谢
本项目基于众多优秀的开源项目构建(排名不分先后):
| 类别 | 项目 |
|---|---|
| 运行时与语言 | Node.js、TypeScript |
| 后端框架 | NestJS、Express |
| 数据库 | SQLite、better-sqlite3 |
| 前端 | React、Ink |
| AI / LLM | DeepSeek、Ollama、OpenAI |
| 安全工具 | nmap、sqlmap、Nuclei 等外部工具 |
免责声明
本工具仅用于教育和授权的安全测试目的。作者和贡献者不对因使用本工具造成的任何误用或损害负责。用户在使用本工具对任何系统进行测试之前,必须确保已获得适当的授权。
如果您觉得这个项目有用,请考虑给它一个 Star!