本工具仅用于授权的安全测试。未经授权使用本工具进行网络攻击是违法的。
- ✅ 仅对您拥有或已获得明确书面授权的系统使用
- ✅ 确保遵守所有适用的法律法规
- ✅ 负责任和道德地使用
- 🤖 多种智能体模式: ReAct、Plan-Execute、多智能体、工具使用、记忆增强
- 🌐 AI Web 研究子智能体: 独立的 WebResearchAgent,基于 ReAct 自动完成联网搜索、网页提取、多页爬取和 API 调用
- 💻 本地控制界面: 提供简单直观的命令行入口与配置工具
- 🖥️ 持久化终端会话: 为 hackbot 提供仅由智能体驱动的专用终端,会话内多步命令执行与系统信息收集=
- 🕷️ AI 网络爬虫: 实时网络信息捕获和监控
- 💻 操作系统控制: 文件操作、进程管理、系统信息
- 🔍 信息收集: 自动化信息收集(主机名、IP、端口、服务)
- 🔍 漏洞扫描: 端口扫描、服务检测、漏洞识别
- ⚔️ 漏洞利用引擎: 自动化执行SQL注入、XSS、命令注入、文件上传、路径遍历、SSRF等漏洞利用
- 🔗 自动化攻击链: 完整的渗透测试工作流自动化
- 信息收集 → 漏洞扫描 → 漏洞利用 → 后渗透
- 📦 Payload生成器: 自动生成各种攻击payload
- 🎯 后渗透利用: 权限提升、持久化、横向移动、数据exfiltration
- ⚔️ 网络攻击: 暴力破解、DoS测试、缓冲区溢出(仅限授权测试)
- 🛡️ 主动防御: 信息收集、漏洞扫描、网络分析、入侵检测
- 📊 安全报告: 自动化详细安全分析报告
- 🔍 网络发现: 自动发现网络中的所有主机
- 🎯 授权管理: 管理对目标主机的合法授权
- 🖥️ 远程控制: 在授权主机上执行远程命令和文件传输
- 🔎 智能搜索:基于 DuckDuckGo 的智能搜索 → 抓取结果页面 → 由 LLM 进行综合总结
- 📄 网页提取:按模式提取网页内容——纯文本、结构化(表格/列表)或自定义 AI schema
- 🕸️ 深度爬取:从起始 URL 进行 BFS 多页爬取,支持深度/URL 过滤和可选 AI 提取
- 🔌 API 客户端:通用 REST API 客户端,内置天气、IP 信息、GitHub、汇率、DNS 等常用模板
- 🤖 Web Research 工具:既可委托给 WebResearchAgent 自主研究,也可由主智能体直接按模式调用 smart_search / page_extract / deep_crawl / api_client
- 📝 提示词链管理: 灵活的智能体提示词配置
- 💾 SQLite 数据库: 持久化存储对话历史、提示词链、配置
- ⏰ 任务调度: 支持定时执行渗透测试任务
- 🎨 终端输出优化: 支持颜色化日志与结构化输出,便于阅读与排错
为了便于理解 secbot 内部各层组件与多智能体之间的协作关系,这里给出一个尽量完整且可对照源码的架构说明。
提示:下面先给出一张静态架构图(
assets/secbot_architecture.png),便于在 GitHub / 代码托管平台中直接预览;其详细文字说明与对应源码文件请参考本节后续内容与 mermaid 图。
- 入口路由
router/chat.py/api/chat(SSE):将前端请求封装为ChatRequest,创建EventBus,订阅关键事件类型(PLAN_START/THINK_*/EXEC_*/CONTENT/REPORT_END/ERROR等),然后调用SessionManager.handle_message()。_event_to_sse():把 EventBus 事件映射为前端可消费的 SSE 事件,并将data.agent一路透传给前端,便于区分不同 Agent 的输出。
- SessionManager(会话编排器)
- 负责一次完整交互的三阶段流程:
- 路由:判断是否直接走 QA / 闲聊回复,还是进入技术流(Planner + Hackbot)。
- 规划:调用
PlannerAgent.plan()生成PlanResult,并经EventBus广播规划摘要与 Todos。 - 执行:根据 Todos 是否存在以及 Agent 能力,选择:
- 分层执行模式:
TaskExecutor + CoordinatorAgent(推荐路径,支持多 Agent 并行)。 - 兼容模式:直接调用 ReAct 风格的
agent.process()。
- 分层执行模式:
- 对 Agent 的回调事件统一经过
_bridge_agent_event()包装,补上agent字段,同时自动更新 Planner 中 Todo 的执行状态(PLAN_TODO事件)。
- 负责一次完整交互的三阶段流程:
- 将用户请求拆解为
TodoItem列表,每个 Todo 带上:depends_on:依赖关系(形成有向无环图)。resource:目标资产标识,例如:host:192.168.1.10/subnet:192.168.1.0/24web:https://example.comdomain:example.com/osint:<关键字>
risk_level:low/medium/high,根据工具类型与描述粗略推断(如 exploit / fuzz / brute 等归为高风险)。agent_hint:推荐由哪个子 Agent 执行(network_recon / web_pentest / osint / terminal_ops / defense_monitor)。
get_execution_order():- 先按
depends_on对 Todos 做拓扑排序,保证依赖拓扑正确。 - 在每一拓扑层内,根据
resource与risk_level进一步划分实际执行层:- 同一资源上
risk_level="high"的 Todo 不会出现在同一执行层内,强制串行。 - 尊重全局并行上限
max_parallel_per_layer,避免一次性打爆系统。
- 同一资源上
- 返回
List[List[todo_id]],供TaskExecutor按层并发执行。
- 先按
- 根据
PlannerAgent.get_execution_order()的层级顺序执行:- 单 Todo 的层:串行执行,直接向前端发送事件。
- 多 Todo 的层:使用
asyncio.gather并发执行,执行完成后再按计划顺序线性发射事件,保证前端展示顺序与规划一致。
- 上下文聚合策略:
by_todo:以todo_id为 key 的结果映射(兼容旧逻辑)。by_resource:以resource为 key 的结果列表,挂在context["_by_resource_"]下,方便后续步骤/子 Agent 按资产维度复用前置信息。
- 对外仍暴露为
"hackbot",但内部不再直接调用具体工具,而是:- 在普通
process()模式下,委托给历史的HackbotAgent,保持兼容。 - 在分层执行模式下,通过
execute_todo()按 Todo 的agent_hint / resource / tool_hint选择对应的专职子 Agent:network_recon→NetworkReconAgentweb_pentest→WebPentestAgentosint→OSINTAgentterminal_ops→TerminalOpsAgentdefense_monitor→DefenseMonitorAgent
- 若无法匹配,则退回默认
HackbotAgent。
- 在普通
- 在每次
execute_todo()后,将结果按 Agent 维度聚合到_agent_results中,最终交给SummaryAgent做「多 Agent 汇总报告」。
- 所有子 Agent 继承自
SecurityReActAgent,拥有:- 独立的系统提示词(明确各自职责,如“只做网络扫描”“只做 Web 基础渗透”等)。
- 独立的工具集:
NetworkReconAgent:CORE_SECURITY_TOOLS + NETWORK_TOOLSWebPentestAgent:WEB_TOOLSOSINTAgent:OSINT_TOOLS + WEB_RESEARCH_TOOLSTerminalOpsAgent:TerminalSessionToolDefenseMonitorAgent:DEFENSE_TOOLS
- 自己的会话摘要
_session_context_summary,用于跨轮记忆;Coordinator 在每轮结束时会调用append_turn_to_session_context()同步本轮关键结论。
- 接收:
- 规划结果
PlanResult.todos(包含每步的完成状态与result_summary)。 - ReAct 思考 / 观察历史(
_react_history)。 - 聚合后的工具执行结果(含「按 Agent 维度」的
_agent_results)。
- 规划结果
- 输出:
- 结构化报告(Markdown),包括:任务总结、Todo 完成情况、关键发现、风险评估、修复建议、综合结论等。
- 按 Agent 维度的局部总结,例如:
- 「一、外部情报(来自 OSINTAgent)」
- 「二、网络攻击面(来自 NetworkReconAgent)」
- 「三、Web 资产安全状况(来自 WebPentestAgent)」等。
-
SecurityReActAgent._emit_event()为所有事件自动附加agent字段(优先self.agent_type,其次self.name)。 -
SessionManager._bridge_agent_event()会将这些事件映射为EventBus的标准事件类型:- 思考类:
THINK_START / THINK_CHUNK / THINK_END - 执行类:
EXEC_START / EXEC_RESULT - 内容类:
CONTENT(包含规划说明 / 观察信息等) - 报告类:
REPORT_END - 错误类:
ERROR
- 思考类:
-
router/chat.py::_event_to_sse()将上述事件转成前端 SSE 事件:- 例如
THINK_CHUNK→thought_chunk,EXEC_START→action_start,并透传agent。
- 例如
-
前端(
ChatScreen.tsx)根据agent字段在 UI 上作区分:ThinkingBlock/ExecutionBlock头部会显示[network_recon]/[web_pentest]等标签,明确当前思考/动作来自哪个子 Agent。- 将用户请求拆解为
TodoItem列表,每个 Todo 带上depends_on、resource(如host:192.168.1.10、web:https://example.com)、risk_level以及agent_hint。 - 通过
get_execution_order()基于依赖关系 + 资源 / 风险做「安全可控的并行」:同一资源上的高危步骤强制串行,不同资源之间尽量并行。
-
TaskExecutor:分层并发执行器
- 根据
PlannerAgent.get_execution_order()输出的层级执行顺序,逐层执行 Todo:层内可并行,层间严格按依赖拓扑前进。 - 在传给 Agent 的
context中,既保留按todo_id的结果映射,又额外按resource聚合结果(context["_by_resource_"]),方便后续步骤或子 Agent 直接基于同一资产历史信息进行推理。
- 根据
-
CoordinatorAgent(Hackbot 主体):多子 Agent 协同
- 对外仍以
"hackbot"身份暴露,但内部不再单体执行,而是根据每个 Todo 的agent_hint/resource/tool_hint将执行委派给相应的专职子 Agent:network_recon→NetworkReconAgentweb_pentest→WebPentestAgentosint→OSINTAgentterminal_ops→TerminalOpsAgentdefense_monitor→DefenseMonitorAgent
- Coordinator 本身只负责路由与结果聚合,不直接运行具体安全工具。
- 对外仍以
-
专职子 Agent:窄而深的 ReAct 能力
- 所有子 Agent 继承自
SecurityReActAgent,拥有各自的系统提示词和专属工具集,仅在自己负责的域内做 ReAct 推理和工具调用。 - 每个子 Agent 都维护自己的会话摘要(短记忆),Coordinator 在每轮任务结束后将摘要同步到所有 Agent,保证下一个任务能参考历史情报。
- 所有子 Agent 继承自
-
SummaryAgent:多 Agent 结果汇总
- 从 Coordinator 聚合到的「按 agent 维度的工具执行结果」中,生成分节式的最终报告,例如:网络攻击面、Web 安全状况、外部情报、本机防御等,清晰体现多智能体协作过程。
-
EventBus + SSE:带 agent 标签的事件流
- 所有 THINK / EXEC / REPORT 事件都会带上
agent字段,前端(ChatScreen.tsx)在渲染ThinkingBlock、ExecutionBlock等组件时,会标注[network_recon]/[web_pentest]/[osint]等来源,便于用户理解每一步是由哪个智能体完成的。
- 所有 THINK / EXEC / REPORT 事件都会带上
- GitHub 远程仓库现已统一为
secbot,项目早期名称为 hackbot,文档中的命令和包名会逐步迁移为secbot(保留hackbot作为兼容入口)。
- Python 3.10+
- uv - 快速 Python 包管理器
- Ollama (用于 LLM 推理)
- 依赖在
pyproject.toml中管理
若不想安装 Python,可直接使用单文件可执行程序(Windows / macOS / Linux):
- 在 Releases 下载对应平台 zip(如
secbot-linux-amd64.zip),解压得到secbot目录。 - 配置 DeepSeek API Key(启动前唯一必须条件):环境变量
DEEPSEEK_API_KEY=sk-xxx,或在secbot目录内创建.env写入该变量。 - 进入
secbot目录,运行./secbot(Linux/macOS)或secbot.exe(Windows)即可进入交互式界面。
详见 发布版使用说明。
git clone https://github.com/iammm0/secbot.git
cd secbotuv 是一个快速的 Python 包安装器和解析器。
# 如果尚未安装 uv,请先安装
curl -LsSf https://astral.sh/uv/install.sh | sh
# 使用 uv 安装依赖
uv sync# 从 https://ollama.ai 安装Ollama
# 下载所需模型
ollama pull gemma3:3b
ollama pull nomic-embed-text
# Ollama服务默认运行在 http://localhost:11434cp .env.example .env编辑 .env 文件:
OLLAMA_MODEL: 推理模型(默认:gemma3:1b,本地没有时打开模型列表会自动拉取)OLLAMA_EMBEDDING_MODEL: 嵌入模型(默认:nomic-embed-text)
# 构建包 (使用 uv)
uv run python -m build
# 安装包(包名为 secbot,版本见 pyproject.toml)
uv pip install dist/secbot-*.whl
# 现在可直接使用 hackbot / secbot(无参数即交互模式)
secbot# 无参数运行即进入交互模式(占据整个终端,退出后恢复)
python main.py
# 或
uv run secbot
# 或(若已安装)hackbot / secbot所有交互(对话、切换智能体、工具、斜杠命令)均在交互会话内完成。输入 / 后回车可列出命令;输入 exit 或 quit 退出。
启动后可以:
- 渗透/扫描:例如「扫描 192.168.1.1 的端口」,或使用斜杠命令
/list-targets、/list-authorizations、/defense-scan、/defense-blocked - 系统/数据库/语音/提示词:使用
/system-info、/db-stats、/db-history、/prompt-list等;输入/后回车可查看全部命令
远程控制、防御、系统状态、数据库、语音、提示词等均在交互模式内通过斜杠命令或自然语言使用(如 /list-authorizations、/defense-scan、/system-info、/db-stats、/prompt-list 等),输入 / 后回车可查看全部命令。
终端界面采用 TypeScript 生态(Ink + React),通过 HTTP/SSE 连接 Python 后端:
- 先启动后端:
python -m router.main或uv run hackbot-server - 在另一终端进入
terminal-ui并运行:npm install && npm run tui
配置后端地址:环境变量 SECBOT_API_URL 或 BASE_URL(默认 http://localhost:8000)。一键启动:Windows 运行 .\scripts\start-ts-tui.ps1,Linux/macOS 运行 ./scripts/start-ts-tui.sh。详见 terminal-ui/README.md。
也可使用上述 Python 交互模式(无参数运行 python main.py 或 uv run secbot),作为无需 Node 的备用方式。
pytest tests/# 使用 uv (推荐)
uv run python -m build
# 或使用构建脚本
./build.sh- 快速开始指南
- UI 设计与交互 — 终端 UI(TypeScript/Ink)架构说明
- API 文档
- 移动应用指南
- 技能与记忆系统
- 数据库指南
- Docker 设置
- Ollama 设置
- 安全警告
- 提示词指南
- 语音指南
- SQLite 设置
- 部署指南
- API Key 配置说明:API Key(如 DeepSeek / Groq / OpenRouter 等)推荐通过前端/TUI 内的设置或
/model等配置入口完成,不再提供独立的 Typer+Rich CLI 配置命令;底层仍按 配置与环境变量范式 约定使用.env+ keyring/数据库安全存储敏感信息。
欢迎贡献!请随时提交Pull Request。
- Fork 本仓库
- 创建您的特性分支 (
git checkout -b feature/AmazingFeature) - 提交您的更改 (
git commit -m '添加一些AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开一个Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
赵明俊 (Zhao Mingjun)
- GitHub: @iammm0
- Email: wisewater5419@gmail.com
- 本项目基于众多优秀的开源项目构建,在此向所有参与其中的个人与社区致以诚挚感谢(以下仅为部分代表,排名不分先后,包括但不限于):
- 语言与运行时:Python、TypeScript/JavaScript、Node.js
- 后端框架与基础设施:FastAPI、Starlette / sse-starlette、uvicorn、uv、SQLite
- LLM 与 AI 生态:LangChain、
langchain-openai、langchain-anthropic、langchain-google-genai、langchain-community、DeepSeek/OpenAI/Anthropic/Google Gemini 等云端推理服务、Ollama - 终端与日志:终端布局/渲染与日志相关组件(如 loguru 等)
- 安全与网络相关:项目中集成和封装的各类安全/网络/OSINT 工具及其依赖(如 nmap/scapy 等),感谢这些工具长期维护者
- 前端与移动端:React、React Native、Expo、Ink、React Navigation 以及相关 UI / 状态管理生态
- 其他依赖库:
requests/httpx、pydantic、sqlalchemy等在项目中被直接或间接使用的第三方库
若有任何开源项目未在上文列出而已被本项目使用,属疏漏之处,亦在此一并致谢。
本项目采用自定义开源协议,详见 LICENSE 文件。
- 允许:个人学习、学术研究与交流(包括教学、论文、非营利技术分享等)可自由使用、修改与分发(须保留版权与协议声明)。
- 商用:任何商业用途须事先获得版权持有人书面授权,未经授权不得商用。
商用授权联系:wisewater5419@gmail.com 或 GitHub @iammm0。
本工具仅用于教育和授权的安全测试目的。作者和贡献者不对因使用本工具造成的任何误用或损害负责。用户在使用本工具对任何系统进行测试之前,必须确保已获得适当的授权。
⭐ 如果您觉得这个项目有用,请考虑给它一个星标!⭐
