watchtower
LangGraph 驱动的 AI 渗透测试自动化平台,23 种安全工具 + 多 Agent 协作推理
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
LangGraph 驱动的 AI 渗透测试自动化平台,23 种安全工具 + 多 Agent 协作推理
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你经营着一家线上商店,每天有数百名用户下单、付款、留下个人信息。某天,你收到一封匿名邮件:"你们的数据库有个漏洞,5000 名用户的密码已经被我拿到了,不过放心我没做坏事,只是想提醒你。"——这种事在现实中每天都在上演。传统的渗透测试需要聘请安全专家,花费从几千到几万不等;而 Watchtower 的出现,让小团队也能用 AI 做一次系统的"智能体检"。
Watchtower(瞭望塔)由独立开发者 fzn0x 创建于 2026 年 2 月,是一个基于 LangGraph 构建的 AI 网络安全自动化测试平台。与传统的自动化扫描工具(如 Acunetix、Nessus)不同,Watchtower 不依赖预设的漏洞规则库,而是借助大语言模型的推理能力,让 AI Agent 像真正的安全研究员一样思考——根据每一步扫描结果动态调整下一步策略。
从 GitHub 数据来看,该项目目前获得 151 Stars、28 Forks,采用 MIT 许可证开源。主要技术栈为 Python 3.11+,围绕 LangChain/LangGraph 生态构建,同时支持 OpenAI GPT-4、Anthropic Claude、Google Gemini 以及 OpenRouter 等多种 LLM 后端,实现了真正意义上的模型无关(LLM-agnostic)。
Watchtower 的核心定位:一款介于专业安全工具与通用 AI 助手之间的"桥梁产品"——它将 AI 的理解推理能力注入到成熟的安全工具链中,让没有深厚安全背景的开发者也能进行有效渗透测试。

图1:Watchtower 项目 Logo —— 以中世纪城堡瞭望塔为视觉隐喻,寓意"提前发现危险
Watchtower 采用了 LangGraph 的状态图(StateGraph)来编排四个协作节点,形成了一个完整的渗透测试工作流:
Planner 是整个系统的"大脑"。每次收到 Worker 的分析结果后,Planner 会综合当前发现(findings)和原始观察(observations),决定下一步使用哪个工具或工具组合。它的输出被严格约束为 Pydantic 格式,包含三个必填字段:current_plan(当前策略描述)、next_step(下一个工具名称或列表,可为 "finish" 终止任务)、is_finished(是否结束测试)。
Planner 的 prompt 设计体现了安全领域的专业性:它不是简单地让 LLM 猜测漏洞,而是引导 LLM 基于工具输出的实际数据做决策。例如,当 nuclei 报告了多个 CVE,Planner 会综合严重等级和资产价值,决定先处理高危还是中高危漏洞。
Worker 是"执行者",负责运行用户授权的安全工具。工具选择通过交互式 CLI 复选框完成(questionary 库),框架自动检测 PATH 中已安装的 23 种工具,用户可以灵活启用/禁用。Worker 通过 Python subprocess 调用实际的安全工具,捕获 stdout/stderr 并传递给 Analyst。
这 23 种工具覆盖了渗透测试的完整生命周期:网络扫描(nmap、masscan)、Web 探测(httpx、whatweb)、WAF 检测(wafw00f)、子域名发现(subfinder、amass)、漏洞扫描(nuclei、nikto、sqlmap)、SSL 检测(testssl.sh、sslyze)、内容枚举(gobuster、ffuf)、参数挖掘(arjun、kiterunner)、敏感信息检测(gitleaks)、CMS 安全(wpscan、cmseek)以及 XSS/SQL 注入专项(xsstrike、dalfox)。
Analyst 是整个系统的"过滤器"。安全工具的最大痛点之一就是噪声巨大——一次 nmap 扫描可能输出数千行,其中大多数是无关信息。Analyst 的职责是解析 Worker 捕获的工具输出,过滤误报,将真正的漏洞发现转换为结构化的 JSON schema 数据,存入 findings 列表,同时将原始输出存入 observations 供后续 Planner 参考。
Logic Analysis 是 2026 年初新增的节点,负责更高层次的安全逻辑分析。它不只看单次工具输出,而是跨工具关联数据——例如,结合 nmap 的端口信息和 sqlmap 的注入结果,综合评估整个攻击链的可行性。
Watchtower 的状态管理完全基于 LangGraph 的 TypedDict:
AgentState:
scope_targets → 允许扫描的目标列表
available_tools → 用户授权的工具清单
messages → 带注释的追加消息历史
findings → 已确认漏洞的结构化列表
observations → 所有工具原始输出
current_plan → 当前策略描述
next_step → 下一工具名称
auth_metadata → 认证信息(Cookie/Header)
is_finished → 任务是否完成
其中 messages、findings、observations 均使用 Annotated[..., operator.add] 注解,实现增量追加而非覆盖,这是 LangGraph 的核心优势之一。
持久化方面,框架使用 SQLite(pentest_memory.db)存储完整测试历史,支持随时生成 PDF 报告。这对于合规要求严格的金融、医疗行业尤为重要——渗透测试报告往往是合规审计的必要文件。
| 方式 | 难度 | 耗时 | 适用场景 |
|---|---|---|---|
| pip install | ★★★ | 5-10 分钟 | 仅 Python 部分,无工具链 |
| install_tools.sh | ★★★★ | 30-60 分钟 | 完整工具链(需 root) |
| Dockerfile | ★★ | 10-15 分钟 | 推荐方式,含工具链镜像 |
| docker-compose | ★★ | 10 分钟 | 一键启动,配置文件分离 |
Watchtower 的 Dockerfile 采用了多阶段构建策略(约 60 行),将依赖安装分为三个层次:
系统层:通过 apt-get 安装基础工具(nmap、masscan、curl、wget、git、golang、nodejs/npm),设置 Go 环境变量 GOPATH=/go。
Go 工具层:通过 go install 安装 nuclei、httpx、subfinder、ffuf、gobuster、amass、kiterunner 共 7 个项目 Discovery 工具。这些工具都是用 Go 编写的,通过 go install 方式安装到 /go/bin/ 并符号链接到 PATH。
Ruby/Python 工具层:通过 gem 安装 wpscan(Ruby),通过 pip 安装 sqlmap、wafw00f、arjun、dalfox、xsstrike、gitleaks、cmseek、retire、sslyze 共 9 个 Python 工具。
install_tools.sh 脚本(约 300 行)支持 Ubuntu/Debian/Kali、Fedora/RHEL/CentOS、Arch/Manjaro 三类主流 Linux 发行版,自动检测操作系统并选择对应的包管理器。脚本会将工具统一安装到 /opt/security-tools/ 目录,并处理 Go 版本自动安装(检测现有版本,不重复安装)。
# 1. 配置 API Key(任选其一)
cp .env.example .env
# 编辑 .env,填入 OPENROUTER_API_KEY=sk-or-...
# 2. 运行测试(交互模式——选择工具)
python -m watchtower.main -t https://example.com
# 3. 无头模式(CI/CD 集成,自动使用所有可用工具)
python -m watchtower.main -t https://example.com --skip-ask-tools
# 4. 带认证测试
python -m watchtower.main -t https://example.com --cookie "session=abc123" --header "Authorization: Bearer token"
# 5. 生成 PDF 报告
python -m watchtower.main --report my_report.pdf
Watchtower 的 LLM 适配层设计非常优雅。通过 WATCHTOWER_PROVIDER、WATCHTOWER_MODEL、WATCHTOWER_APIKEY_NAME 三个环境变量,可以无缝切换不同模型:
# 支持的模型类型
if provider == "openrouter":
# OpenRouter 聚合了 Claude/GPT/Gemini 等多个模型
base_url = "https://openrouter.ai/api/v1"
elif provider == "anthropic":
# 直连 Anthropic API
elif provider == "openai":
# 直连 OpenAI API
elif provider == "gemini":
# 直连 Google Gemini
elif provider == "litellm":
# LiteLLM 聚合,支持 100+ 模型
elif provider == "ollama":
# 本地部署模型
这种设计让 Watchtower 天然支持"模型竞速"——用户可以先用 GPT-4-Turbo 做一次快速扫描,再用 Claude-3-Opus 做一次深度分析,对比两者的发现差异。
Watchtower 最大的部署痛点在于其依赖的 23 种安全工具。这些工具本身并非 Python 库,而是独立的命令行程序,需要分别安装、配置 PATH、处理权限问题。Dockerfile 体积约 2GB,即使在带宽充足的情况下,镜像拉取也需要数分钟。对于只想快速试用的用户,这是相当高的门槛。
AI 在安全领域的核心挑战是误报(false positive)。Analyst 节点虽然承担了过滤职责,但 LLM 对安全工具输出的理解仍有局限。某些边界情况的漏洞(如依赖于特定业务逻辑的 IDOR 漏洞)可能被漏报。Watchtower 的 README 也明确建议用户结合人工复核。
这是最严肃的话题。Watchtower 的 README 用了大量篇幅强调"仅用于授权测试",并在 LICENSE 中明确要求用户必须拥有目标系统的书面授权。guardrails.py 中的 validate_target() 函数目前已移除 IP 白名单限制——这意味着框架本身不阻止对任何目标的扫描。
Watchtower 代表了 2025-2026 年兴起的一个新趋势:用 LLM 作为安全工具的"胶水层"和"智能层"。传统的安全自动化依赖专家编写的规则库(如 Nuclei 的 YAML 模板),而 Watchtower 让 LLM 自己判断"这个输出意味着什么漏洞,应该如何进一步验证"。
从技术架构看,这种"LangGraph 状态机 + 多工具 subprocess 包装 + 结构化输出"的组合,正在成为一种可复制的 AI Agent 开发模式。Watchtower 的代码结构非常干净,核心只有 4 个 Agent 节点 + 25 个工具包装器,任何有 Python 基础的安全爱好者都可以在此之上扩展新的工具节点。
项目于 2026 年 2 月底创建,在不到一个月的时间内获得 151 Stars(同期同 Stars 档的 AI 项目平均需要 3-6 个月),说明安全 + AI Agent 的交叉赛道有很高的关注度。GitHub Issues 中已有多个 PR 贡献者,涉及新工具集成、文档改进和多语言支持。
| 场景 | 推荐度 | 理由 |
|---|---|---|
| 个人站长/小团队自查 | ★★★★ | 成本低,覆盖面广 |
| Bug Bounty 猎人 | ★★★ | 快速侦察,但需人工验证 |
| 企业 CI/CD 安全扫描 | ★★★ | 可集成,但需完整工具链 |
| 安全竞赛(CTF) | ★★ | 过于重量级,不够灵活 |
| 安全培训演示 | ★★★★★ | 完美展示 AI + 安全概念 |
总结:Watchtower 是一款将 LangGraph 多智能体架构与真实安全工具链深度融合的创新产品。它不是要替代专业的渗透测试人员,而是为广大开发者提供了一个"安全意识入门"和"日常自查"的有力工具。部署门槛较高(Docker 是最推荐方案),但架构设计清晰、代码质量优秀,非常值得 AI 安全爱好者深入研究。