从 CTF 解题工具到流量分析工作台
FlowSage 的起点是 CTF 里一个很实际的问题:答案通常就在流量包里,但要拿到它,得手动关联会话、解码载荷、重建应用层行为,再反复验证零散的假设。我想把这些重复劳动收敛成一条连贯的分析流程,而不是每次从零拼一堆脚本。
随着版本迭代,它从 Flag 提取扩展到面向网络调查、安全研究与流量取证的协议分析:常见企业网络协议、工控流量、蓝牙与 USB 数据、CAN、流媒体协议,以及命令与控制流量,都在覆盖范围内。
一套分析引擎,两种工作方式
FlowSage 同时提供命令行版本(脚本与批处理)和桌面 GUI(交互式调查),两者共用同一套 Go 分析引擎。
flowchart TB
CLI["CLI / 自动化与批处理"] --> CORE["共享 Go 分析引擎"]
GUI["桌面 GUI / 交互式分析"] --> CORE
CORE --> PROTO["协议感知分析"]
CORE --> ARTIFACTS["分析结果与提取工件"]
GUI 用 Vue 3、TypeScript、Vite 与 Wails v2 构建。交互上支持文件历史、批量导入、结果分类、会话检查、请求与响应查看、十六进制查看器以及 JSON 导出,也可以直接导入 PCAP 与 JSON。CLI 面向自动化脚本、批量任务和服务器环境,我自己最常用的路径是先用 Wireshark 导出分组解析 JSON,再交给 FlowSage 分析。两个入口的平台支持并不相同:GUI 覆盖 Windows 10/11(x64/ARM64),CLI 覆盖 Windows、Linux、macOS(x64/ARM64)。
面向不同流量场景的分析能力
FlowSage 把较广的协议覆盖和针对具体任务的分析器结合在一起。CTF 场景包括 Flag 提取、SQL 注入流量还原、USB 键盘与鼠标数据恢复、Telnet 会话重建;后续版本又加入了 Modbus、Siemens S7 等工控协议,Kerberos 分析、WebShell 流量解码、RTSP/RTMP 流媒体分析、CAN 流量检查,以及 Cobalt Strike Beacon 分析。
v3.6.0 有 38 种协议分析器,并扩展了 CMS 指纹识别引擎。这个数字是该版本的分析器清单,实际覆盖仍以你手上的构建版本和样本为准——协议实现总有边界,我不会承诺”任何样本都能解析”。
工程问题
- 先重建,再解释。 会话重建基于 TCP 序列号,处理分段传输与乱序重组。很多分析真正依赖的是从数据包碎片里把应用层交互拼回来,字段解析反而是后面的事。
- 处理协议异构性。 同一套工作流要面对 HTTP、DNS、工控协议、设备协议——数据模型几乎没有共同点,抽象错了后面全是补丁。
- 围绕任务提取信息。 目标不是把字段解析干净,而是拿到能回答具体问题的工件与行为。文件提取、损坏数据修复、多种编码识别都是为这件事服务的。
- 兼顾两种入口。 共享引擎意味着自动化处理和交互式调查复用同一套能力,而不是维护两套实现、让行为逐渐漂移。