命令行工具
yaklang/yakit avatar
yaklang/yakit

Yakit 实测观察:用 CDSL 和 gRPC 重写 BurpSuite 工作流的开源尝试

Yakit 是一个围绕模块化客户端构建的网络安全工具包,支持安全团队的漏洞扫描、威胁搜寻、资产分析和操作工作流程。

7,738 个 Star824 个 ForkTypeScriptAGPL-3.0
GitHub

秒懂

它是什么?
Yakit 是一个以 Yaklang 语言和 gRPC 架构为核心的交互式安全测试平台,试图用可编程的 CDSL 替代传统 GUI 工具的封闭逻辑。本文基于仓库文档和发布记录,分析其 MITM、Web Fuzzer、反连模块的真实机制与适用边界。
适合谁用?
Yakit 适合需要高度定制流量处理、愿意编写 Yaklang 脚本的安全研究团队,以及希望在一个 GUI 内完成劫持、重放、模糊测试和反连检测的渗透测试人员。不适合只想要开箱即用、不愿接触脚本语言的用户,也不适合需要闭源集成的商业产品。
能商用吗?
可以,但条件严格。AGPL-3.0 是网络 copyleft 许可证:如果别人通过网络使用你修改过的版本(例如作为托管服务),你必须以同一许可证向他们提供源代码。
还在维护吗?
在维护。仓库最近一次提交在 1 天前。
用什么语言写的?
主要是 TypeScript(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决什么问题,为谁设计

Yakit 定位是交互式应用安全测试平台,核心目标是让安全人员在一个客户端里完成漏洞扫描、威胁狩猎、资产分析和渗透操作。它解决的问题很具体:传统工具如 BurpSuite 的 MITM 劫持、重放和 Intruder 是分离的模块,用户要在多个界面间切换,而且扩展能力受限于插件 API。Yakit 的答案是用 Yaklang 这门垂直语言重写底层能力,再通过 gRPC 服务器把能力暴露给 GUI 客户端。README 明确说,对于无法原生集成的工具,Yaklang 可以编写高质量替代,对于生态完整的工具,则直接编译融合。这意味着它的目标用户是愿意写脚本的安全工程师,而不是只点按钮的初级测试员。文档还提到,对于不想写代码的人,Yakit 会为所有能力提供 GUI,但这句话更像愿景,因为当前版本的核心功能,比如 fuzztag 和热加载,依然需要理解标签语法或 Yak 脚本。

CDSL 虚拟机与 gRPC 架构的实际分工

Yakit 的底层不是传统插件系统,而是一个叫 CDSL 的网络安全领域专用语言。README 说他们编写了一个栈虚拟机来承载这门图灵完备语言的运行时。这意味着 Yaklang 脚本不是解释执行,而是在一个自定义虚拟机里跑,这给语言带来了底层控制能力,比如手动实现 HTTP 库。gRPC 服务器是另一条腿,Yakit 客户端通过 gRPC 调用引擎能力,这让部署与平台无关,可以远程部署或本地启动。这个架构的实质是:GUI 只是遥控器,真正的逻辑在 Yaklang 引擎里。好处是脚本可以直接操作流量细节,坏处是调试难度高,因为错误可能发生在虚拟机层面,而不是普通编程语言的堆栈里。文档没有给出性能数据,但栈虚拟机通常比 JIT 慢,对于高并发扫描场景,这可能是一个隐藏瓶颈。

MITM 劫持:从代理到请求修复的完整链路

MITM 模块的机制在 README 里描述得比较详细。它启动一个 HTTP 代理,自动转发流量,用户开启手动劫持后,代理停止自动转发,阻塞请求,然后对请求做解 Gzip、处理 chunk、解码等处理,让数据变得人类可读。用户修改后重放,Yak 引擎会修复请求包,保证有效性。这里的关键是 Yak 引擎手动实现了 HTTP 库,所以用户可以构造畸形的请求和响应包,用于特殊漏洞利用。这比 BurpSuite 的默认行为更底层,因为 Burp 通常会对畸形包做规范化处理。文档声称可百分百替代 BurpSuite,但这是一个强声明,因为 Burp 的扩展生态和社区插件是多年积累的,Yakit 的插件商店目前只看到名称,没有具体数量或质量证据。另外,MITM 的被动扫描依赖插件,被动扫描的覆盖范围取决于用户加载的 Yak 脚本,而不是内置规则,这意味着开箱效果可能不如商业扫描器。

Web Fuzzer 与 fuzztag:减少操作路径的设计

Web Fuzzer 模块支持用户直接编辑 HTTP 原文发送请求,后端自动修复 CRLF、补全 Content-Type、处理 chunk 传输、补全 boundary 和 Content-Length。这个设计减少用户手动构造包的负担。fuzztag 是它的核心创新,用标签语法生成爆破参数,比如 {{int(1-10)}} 生成数字序列,{{file(/tmp/username.txt)}} 导入字典。多个参数爆破时,采用笛卡尔乘积结果,免去了 BurpSuite Intruder 里选择爆破方式和导入字典的步骤。对于复杂数据,比如生成身份证号,用户可以插入热加载标签,直接执行 Yak 脚本生成数据。这个机制确实比 Burp 的 Intruder 更灵活,但代价是用户必须学习 fuzztag 语法和 Yak 脚本语言。文档没有提供标签的完整列表,只给了几个示例,实际使用中可能需要查阅官方文档。另一个限制是,Web Fuzzer 依赖后端修复请求,如果用户想发送完全原始的畸形包,修复逻辑可能会干扰,虽然 README 说支持自定义畸形包,但没有说明如何禁用修复。

反连与端口协议复用:一个端口服务多种协议

反连模块利用 Yaklang 的端口协议复用技术,让一个端口监听多种协议请求,识别协议头后做出相应响应。传统漏洞利用需要为每个服务分配独立端口,比如 LDAP 利用要启动 HTTP 和 LDAP 服务,Yakit 只需一个端口。底层原理是手工识别各种协议头,基于协议标准实现,所以可以构造畸形协议包,或者通过 DNS、ICMP 携带数据,用于后门权限维持或绕过 TCP 不出网的情况。Reverse Shell 功能监听端口作为反弹 Shell 接收端,README 说体验类似原生 ssh,解决 Nc 监听时退格键和方向键乱码的问题。反连利用可以设置不同协议的回连 Payload,反连检测支持 TCP、DNSLog、ICMP。这个模块的实用性很强,但有一个隐含限制:协议识别是手工实现的,对于非标准或加密协议,可能无法识别。文档没有列出支持的协议列表,用户需要自行测试。另外,反连检测依赖外部 DNSLog 服务,如果目标网络封锁 DNS 查询,这个功能会失效。

安装、运行与许可的边界

README 没有提供命令行安装步骤,只引导用户去官网下载,以及查看官方文档。仓库本身是 TypeScript 写的客户端,但核心引擎是 Yaklang,所以安装包应该包含引擎和 gRPC 服务器。由于没有源码构建说明,从仓库直接编译可能不是官方支持路径。许可方面,项目采用 AGPL-3.0,这是一个强 copyleft 许可证,意味着如果修改代码并作为网络服务提供,需要开源整个衍生作品。README 的免责声明还特别强调,商业化使用需要获得官方授权,否则将追究责任。这比纯 AGPL 更严格,因为 AGPL 本身允许商业使用,但 Yakit 增加了额外限制。对于企业内部使用,如果不分发修改版本,通常没问题,但如果想基于 Yakit 构建商业 SaaS,必须联系官方获取商业授权。维护方面,最近发布记录显示 v1.4.8-0828 和 v1.0.4-0828-memfit 在 2026 年 8 月 28 日同日发布,说明迭代频繁,但 memfit 版本名称暗示可能是一个内存优化分支,这暗示主版本和实验版本并存,用户需要区分稳定版和功能版。

替代方案与架构差异

最直接的替代是 BurpSuite,但两者方法不同。Burp 是闭源商业工具,扩展通过 Java 插件 API,用户写代码但受限于 Burp 定义的数据流模型。Yakit 用 CDSL 虚拟机直接控制协议层,脚本可以构造畸形包,这是 Burp 难以做到的。另一个替代是 mitmproxy,它是开源 Python 工具,用 Python 脚本处理流量,但 mitmproxy 没有内置的漏洞扫描和反连模块,需要自己组合。Yakit 的差异在于把劫持、模糊测试、反连检测整合在一个 GUI 里,并且用 fuzztag 减少操作步骤。但 mitmproxy 的优势是 Python 生态,安全团队可能更熟悉 Python 而不是 Yaklang。还有一个替代是 Caido,它是较新的 Web 安全工具,但它的扩展模型基于 JavaScript,与 Yakit 的 CDSL 完全不同。选择哪个取决于团队愿意学习哪种语言,以及是否需要畸形包构造能力。Yakit 的 gRPC 架构是一个独特卖点,因为它允许远程部署引擎,但这也意味着网络延迟可能影响交互体验,文档没有讨论这个。

编辑结论

Yakit 适合需要高度定制流量处理、愿意编写 Yaklang 脚本的安全研究团队,以及希望在一个 GUI 内完成劫持、重放、模糊测试和反连检测的渗透测试人员。不适合只想要开箱即用、不愿接触脚本语言的用户,也不适合需要闭源集成的商业产品。采用前应验证三件事:确认你的目标授权流程符合 README 中的免责声明,检查 Yaklang 脚本在你们现有 CI/CD 中的可维护性,以及评估 AGPL-3.0 对内部工具分发的约束。如果团队已经习惯 BurpSuite 的插件生态,迁移成本可能高于预期,因为 Yakit 的插件商店和热加载机制依赖 Yaklang 语法。最终判断:Yakit 是一个架构上有野心的平台,但它的价值取决于团队是否愿意投入学习 CDSL,而不是一个可以直接替换现有工具的零成本选项。

官方来源

  1. Official README
  2. Project repository
  3. Release notes
社区笔记

社区笔记