「Burp Suite开源替代」+「OWASP ZAP」+「AI渗透工具」:OpenTRAP 758星偏不做AI
原创
句芒安全实验室
句芒安全实验室
句芒安全实验室
2026年11月5日 20:46
上海
去阅读
一个 AI 渗透 Agent 在报告里写「发现 SQL 注入,已验证」。你信不信?
它可能真的发了 payload,也可能只是看见一个报错就下了结论。它可能把测试数据打到了生产库,也可能把目标域名、Cookie 和一段响应一起发给了模型厂商。要判断这些,最后还是要回到一个最原始的位置:请求和响应。
OpenTRAP 就是做这个位置的。它 2026 年 10 月 19 日建仓,10 月 31 日还在推代码,现在 758 星、11 个 fork、0 个未关条目。README 里有一句话写得很硬:There are no AI features on the roadmap, by design. 翻成中文:路线图上没有 AI 功能,这是故意的。
在所有安全工具都忙着接大模型的月份,这句话比功能列表更值得看。
它是什么
OpenTRAP 全名 Open Traffic Replay and Analysis Proxy,直译「开放流量重放与分析代理」。一句话:Burp Suite 的交互方式,跑在 OWASP ZAP 的检测引擎上。
界面是 Burp 那套:Proxy 抓包改包、Repeater 重放、Intruder 爆破、Collaborator 带外、Sequencer 随机性分析、Decoder 编解码、Comparer 对比、Logger 全量日志、Organizer 收藏、Target 站点地图、Scanner 扫描规则。
引擎是 ZAP 2.17.0。爬虫、主动扫描、被动扫描都用 ZAP 的规则包,另外带了 ascanrulesBeta 67 和 pscanrulesBeta 50 两套 beta 规则,AJAX 爬虫用 spiderAjax 23.33.0。ZAP 以无头守护进程运行,用户看不到它的窗口。
交付是一个 Linux AppImage,227MB。里面塞了自己的 JDK 25 运行时和 ZAP 引擎,下载、chmod +x、双击就能跑,不需要另外装 Java,也不需要配 ZAP。
代码是 187 个 Java 文件,AGPL-3.0,仓库约 30MB;测试 37 个套件,放在 tests/ 下,不打进发布 jar。
为什么「不做 AI」反而值得看
README 的原话是:A security tool runs in environments where sending traffic to a third-party model is not acceptable, so OpenTRAP ships none and will not add any.
这不是姿态,是威胁模型。代理坐的位置太敏感:它生成自己的 CA 私钥,能解密信任它 CA 的客户端流量;它看见的是 Cookie、Authorization 头、内网主机名、业务参数、员工个人信息。把这些东西发给模型厂商,等于把测试对象和测试者的凭证一起交出去。
不少 AI 渗透工具的做法是,把请求和响应的摘要发到云端,让模型判断哪里可疑。方便,但数据边界变了。OpenTRAP 把这条路径直接砍掉:不做 AI 分级,不做 AI 报告,不做 AI 自动利用。检测仍由 ZAP 规则完成,判断仍由人做。
这里有个容易忽略的细节。OpenTRAP 代码里还留着 Unbuilt 机制:功能没做完时,控件不置灰,点下去会弹「Not yet implemented」面板,并给你一段可以直接粘给 AI 的施工说明。也就是说,自带功能不碰 AI,开发流程并不排斥 AI。README 那句「路线图上没有 AI 功能」说的是产品能力,不是开发方式。两件事分开看,才不会被「反 AI」的口号带偏。
另一个细节:仓库的 ROADMAP.md 现在是 0 open items,Discover 页的 Roadmap 也显示「Everything on the roadmap is built」。但 README 的 Extensions 一行还写着「Laid out and on the roadmap」。代码里 ExtensionsTool 已经有 Installed、Store、APIs、Custom scan checks、Script library、Extensions settings 六个子页。文档落后于代码,这在半个多月的新项目里正常,但也提醒一句:别把 README 当规格书。
骨架:藏起来的 ZAP
OpenTRAP 没有把 ZAP 的界面搬出来。它把 ZAP 当无头守护进程跑在回环地址上:随机端口、64 位十六进制随机 API key,只绑 127.0.0.1。用户看不到 ZAP 的任何窗口,也不需要知道它在跑。发布 jar 里内置引擎,第一次启动时懒解压;启动后先等引擎应答,再把代理接上。
关闭时也不是简单 kill。它先调 ZAP 的 ajaxSpider/stop,再调 core/shutdown,让 Selenium 驱动的浏览器正常退出;如果进程还在,再按进程树兜底清理。这个细节说明作者知道 ZAP 会拉起一堆 headless 浏览器,直接 SIGTERM 会留下孤儿进程。
扫描配置分四档:Lightweight、Fast、Balanced、Deep。四档检查的规则、输入点、报告阈值完全一样,差别只在爬虫深度、AJAX 预算和每条规则的攻击强度。这个设计比「Deep 多扫几种漏洞」诚实:它不会让你以为换了档就能多查出几类问题。
上手:一个文件,一条命令
wget https://github.com/opentrap/opentrap/releases/latest/download/opentrap-x86_64.appimage
chmod +x opentrap-x86_64.appimage
./opentrap-x86_64.appimage
第一次运行会在 Linux 上要求允许执行,右键属性里勾「Allow executing file as a program」,或者用上面三行命令。
默认监听 8080。把浏览器或 Agent 的 HTTP 代理指到 127.0.0.1:8080,流量就进来了。要抓 HTTPS,需要让客户端信任 OpenTRAP 的 CA;内置浏览器已经把这一步做完了。
Proxy 页有个「open browser」,点一下会拉起自带的 Chromium:独立 profile,已经走代理,已经信任 CA,启动页是 http://opentrap/ 的证书说明页。启动参数里有 --proxy-bypass-list=<-loopback>,本地地址也走代理;有 --disable-quic,避免 Chromium 对支持 Alt-Svc 的站点切到 HTTP/3 绕过代理;有 --disk-cache-size=1,每次导航都真的打到代理。
范围:先划边界,再谈扫描
OpenTRAP 的 Scope 有两种规则。一种是 URL 前缀,比如 https://example.com/app,可以选择是否包含子域名;另一种是高级规则,分别写 protocol、host、port、file 四段正则。两种规则都能启用、停用、排序。
有个小细节:正则写坏了,不会「匹配不到任何东西」,而是退回字面量子串匹配。半截写错的正则不会把整个范围悄悄清空,这个选择偏安全。
Scope 不只管显示。它约束每一个工具,也约束扫描引擎:扫描只爬、只打范围内的目标。Target 页会把范围外的主机灰掉,代理会问要不要停止记录范围外的流量。
默认的请求记录规则也值得看:静态后缀不记(gif、jpg、jpeg、png、css、js、ico、svg、woff、woff2、ttf),只记带参数的请求,只记范围内的请求。响应规则只记 text、未被修改、非 304。默认不是「全都记下来」,而是先过滤噪音。
证书:它握着什么
OpenTRAP 第一次运行会生成一个长期 CA:RSA 2048,SHA256WithRSA,有效期 10 年,存成 ca.p12。之后每个 host 现签一张短期叶证书;为了快,所有 host 复用同一对叶密钥,只换证书里的名字。上下文缓存上限 512,避免一个长会话访问几千个域名后内存一直涨。
证书模式有四种:per-host(默认)、self-signed、specific hostname(一张叶证书应付所有 host,给做了名字 pin 的客户端用)、custom(用你自己的 PKCS#12)。切换模式会换 cache key,不会拿旧模式的上下文继续用。
避坑
第一,CA 私钥的保护很薄。ca.p12 的密码写死在源码里,不是随机生成,也不来自系统钥匙串;文件权限是 0600。也就是说,谁能读到 ~/.opentrap/ca/ca.p12,谁就能解出 CA 私钥,给任意域名签证书。别把 home 目录整体同步到网盘,别把 .opentrap 打进备份镜像,别在共享机器上长期留这个文件。要换 CA,删掉 ca.p12 重启即可,但所有信任过旧 CA 的客户端都要重新信任。
第二,扩展就是代码。 Load extension 支持 .jar、.py、.rb,加载后以你的权限运行;界面里没有签名校验,也没有「这个扩展可不可信」的确认。Store 页的 Install 只是打开 ZAP 市场页面,不会自动装;Script library 里的脚本是 .java,放在 ~/.opentrap/scripts/ 下,扫描器会对每个 audit item 跑启用的 check。别从聊天群、网盘、issue 附件里随便下扩展往这个工具里装。
第三,带外默认走公共服务器。 Collaborator 用的是 interactsh 协议,和 Nuclei 一样:注册 RSA 公钥和 correlation id,签发 payload 主机名,轮询 DNS、HTTP、SMTP 回调。默认服务器是 https://oast.pro,公共实例,不用配置。测敏感目标时,目标名、回调时间、部分请求元数据会经过第三方;要自建 interactsh,或者在测试计划里明确这条边界。加密是 RSA-OAEP SHA-1 + AES-CFB,协议对不上就什么都解不开。
第四,只有 Linux。 今天只有 x86\_64 AppImage,227MB;没有 Windows、没有 macOS 原生包。源码要 Java 17+,构建用 JDK 25。想在 macOS 上用,得自己编译,或者开 Linux 虚拟机。
第五,0 个未关条目不等于质量证明。 建仓半个多月,11 个 fork,0 个未关 issue/PR,社区还很小。37 个测试套件是作者自己的 harness,不是行业基准;ZAP 引擎和 Chromium 的漏洞按 SECURITY.md 也不在它的范围内,要报给上游。
第六,不做 AI 不等于不用判断。 它不给你 AI 分级、AI 报告、AI 自动利用,发现仍然要你自己看请求、看响应、看证据。响应改写开关(去 CSP、去 X-Frame-Options、去 JS 校验、显示隐藏字段)会让浏览器里的 PoC 真的跑起来,但也会改变你看到的页面行为;扫描器仍然审原始响应,所以不会因此多出「缺安全头」的假发现。
适合谁
- 想用 Burp 的工作流、又不想买 license 的渗透测试和 SRC 选手;
- 在 Linux 上做 AppSec、需要看包和重放的工程师;
- 给 AI Agent 配代理、想确认 Agent 到底往外发了什么的安全团队;
- 不需要 Windows/macOS、不需要 AI 自动分级、不需要开箱即用漏洞利用的人,可以跳过。
最后
AI 渗透 Agent 会越来越强,但「Agent 说它发现了什么」和「请求响应里到底发生了什么」是两件事。OpenTRAP 选的是后者,而且明确不把前者交给模型厂商。
如果你手上正好有一个 Agent 在跑,先把它的 HTTP 代理指到 127.0.0.1:8080,让它跑一遍你自己的业务,然后打开 Logger 看它到底发了哪些请求。很多「Agent 发现了漏洞」的故事,到这一步就变成了「它只是把登录页爬了三遍」。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论