2.3.6 流量审计与分析引擎:History 模块深度应用
在前续章节中,我们探讨了如端口扫描、弱口令爆破等一系列主动探测与攻击技术。这些操作,连同所有通过 Yakit MITM 代理的日常浏览行为,都会产生大量的网络交互数据。如何系统性地存储、检索并深度分析这些宝贵的流量数据,是提升安全测试效率与深度的关键。本章将详细介绍 Yakit 的全局流量中枢——History 模块,它不仅是所有网络请求的“数字物证保管库”,更是连接侦察、分析与漏洞利用的作战沙盘。
History 模块承担着对 HTTP(S) 和 WebSocket 流量进行全链路、结构化捕获与存储的核心任务。无论流量来源于被动代理(MITM)、主动扫描(Web Fuzzer、爬虫)还是自定义脚本(Yakit 插件),都将被统一汇入此模块。通过学习本章,您将掌握如何利用 History 模块进行高效的流量回溯、数据筛选、批量操作乃至自动化分析,从而将零散的流量数据转化为可执行的安全情报。用户可以直接通过 Tab 栏点击进入 History 或流量分析器或通过“数据库”直接进入。
图:Yakit History 模块入口位置示意
双视界解析:History功能详解
History 模块的工作台采用了一种经过精心设计的左侧聚合视图 + 右侧数据网格的双视界(Dual-View)交互模型。这种布局旨在平衡宏观洞察与微观分析的需求,让安全工程师能够快速在全局上下文和具体请求细节之间切换。
图:Yakit双视界History功能界面展示
-
左侧聚合视图 (Aggregation View):此区域从宏观视角对流量进行上下文聚合,帮助用户快速定位特定目标或应用产生的流量集合。
-
网站树 (Site Tree):这是最常用的聚合模式。系统会根据请求的域名自动构建层级化的树状结构。这种方式非常符合针对特定网站或域名进行渗透测试的工作流,用户可以方便地折叠或展开特定站点的所有历史请求。
-
进程树 (Process Tree):此模式根据发起网络请求的本地进程进行流量分组。在分析特定客户端应用(如桌面程序、移动App模拟器)的通信行为时,此视图尤为关键。
-
-
右侧数据网格与详情面板 (Data Grid & Detail Panel):此区域聚焦于流量数据的微观呈现与审查。
-
数据网格 (Data Grid):以列表形式展示筛选后的流量条目,包含了序号、方法、状态码、URL、标签等关键摘要信息,支持排序与多选操作。
-
详情面板 (Detail Panel):当在数据网格中选中单条流量时,下方会立即显示其完整的请求(Request)与响应(Response)报文。这是进行深度分析的基础。
-
如图所示,History 工作台采用左列表 + 右详情的双栏布局,兼顾宏观聚合与微观分析。
图:Yakit双视界History功能界面展示
流量的检索、审查与操作
History 模块的核心价值体现在其强大的流量处理能力上,这套能力可以归纳为“检索-审查-操作”的工作流闭环。
- 流量检索与筛选
为了从海量的历史数据中精确找到目标,History 提供了多维度、层级化的筛选机制。
-
基础筛选栏:位于数据网格上方,提供快速筛选功能,包括:
-
流量来源:按
MITM、爬虫、插件等不同来源进行过滤。 -
协议类型:独立筛选
HTTP(S)或WebSocket流量。 -
关键词搜索:在请求或响应中进行全局模糊搜索。
-
-
高级筛选 (Advanced Filter):点击“高级筛选”按钮,可以构建更复杂的查询逻辑。用户可以基于 Hostname、URL 路径、HTTP 方法、状态码、响应类型乃至自定义的
Tags等多个字段组合精确的过滤条件,实现对特定业务场景流量的精准定位。
图:Yakit流量高级筛选与列表配置界面
- 流量审查与分析
选中具体流量后,详情面板提供了丰富的审查工具。
-
多视图查看:响应内容支持多种解码和渲染方式,如 美化 (Pretty) 用于格式化 JSON/XML,渲染 (Render) 用于直接预览 HTML 页面,HEX 用于查看二进制内容。
-
参数提取:在“详细信息”视图中,系统会自动解析并列出请求中所有可供模糊测试的参数。这是一个关键的工作流加速功能,用户只需点击参数旁的“模糊测试”按钮,即可将该请求连同识别出的参数直接发送到
Web Fuzzer模块,极大简化了从流量发现到漏洞测试的流程。
- 流量操作(右键与批量选中操作)
History 支持对单条(点选或右键)或者多条多选的流量记录进行批量处理,可通过右键菜单或顶部的“批量操作”按钮触发。
-
工作流联动:核心操作是将选中的流量批量发送至其他模块,如 发送到 Web Fuzzer 进行批量测试,或 发送到插件 使用自定义脚本处理。
-
数据管理:包括 复制 URL、导出数据、删除 等基础管理功能。
-
视觉标记 (Colorizing):为重要的或有待分析的请求染色,以便在海量流量中进行快速识别与回溯。
图:Yakit流量审查与数据包扫描操作界面
图:Yakit 批量操作菜单与流量列表
高级应用:流量分析器
当需要对大量历史流量执行统一的、程序化的分析或提取任务时,逐条审查的效率将成为瓶颈。为此,History 模块集成了强大的流量分析器 (Traffic Analyzer) 功能,它允许用户通过声明式规则或编程式脚本,对海量历史数据进行自动化批处理,从而将安全分析从“手工作坊”模式升级为“工业化生产”模式。用户可直接在 History Tab 的右边点击“流量分析器”按钮进入该工作台。
图:Yakit界面History右侧的分析器按钮
工作台布局与核心流程
流量分析器采用了一个高度结构化的三区布局,清晰地映射了“数据输入 → 处理逻辑 → 执行与输出”的完整数据处理流程。
图:Yakit流量分析器界面展示MITM规则配置与执行
-
上部:流量筛选区 (Input Filter Area) 该区域负责定义分析任务的输入数据集。其功能与
History主界面的筛选器完全一致,支持来源、协议、关键词及高级筛选等所有方式。用户在此处设定的条件将决定哪些历史流量会被送入下方的分析引擎进行处理。 -
左下:分析逻辑配置区 (Logic Configuration Area) 这是定义**“如何处理流量”**的核心区域,也是流量分析器的“大脑”。它提供两种模式以适应不同复杂度的分析需求。
-
右下:执行与结果区 (Execution & Result Area) 该区域负责启动分析任务并展示处理结果。用户在此配置执行参数,点击“执行”后,下方会实时呈现分析产出的结构化数据。
分析逻辑详解:规则与代码双引擎
流量分析器提供了两种截然不同的分析引擎——“规则”和“热加载”,分别对应声明式匹配和编程式处理,二者相辅相成。
基于规则的分析
此模式旨在实现快速、高效的模式匹配。它直接复用了 MITM 模块的内容匹配规则引擎,允许用户通过正则表达式等方式,在请求或响应中寻找特定的文本模式。
图:Yakit流量分析器基于规则筛选与处理功能界面
-
技术原理:用户定义一系列命名规则,每条规则包含一个正则表达式和其作用范围(请求/响应)。执行时,分析器会遍历所有输入流量,并用这些规则逐一进行匹配。
-
应用场景:此模式非常适用于低代码/无代码的快速筛查场景,例如:
-
从所有响应中提取泄露的API密钥、密码、身份证号等敏感信息。
-
查找包含
(password|secret|key)=等特定参数的请求。 -
识别是否存在硬编码的内网IP地址或调试信息。
-
-
操作指引:用户可以直接在列表中勾选已有的全局规则,或通过“+新增规则”创建临时的分析任务。
任务执行与结果解读
图:双击数据包查看详细请求与响应信息
-
执行配置:
-
数据类型:选择
筛选流量(使用上部筛选条件)或数据包(直接粘贴原始报文进行分析)。 -
并发:设置并行处理流量的最大任务数,显著提升大规模分析的效率。
-
单条记录内数据去重:开启后,如果同一条规则在单次请求/响应中匹配到多个完全相同的内容,结果中将只保留一条,有效减少噪音。
-
-
结果解读: 分析完成后,结果会以表格形式呈现。
-
统计概要:上方会显示“符合条件数”、“提取数据数”、“已处理数”等核心指标。
-
结构化列表:每条结果记录都包含了匹配到的数据、对应的规则名以及数据来源的ID。
-
深度溯源:双击或单击结果列表中的任意一条记录,系统会自动弹出新的窗口展示详情面板中加载并高亮显示其来源的完整HTTP请求与响应报文。 这一功能打通了从分析结果到原始流量的溯源链路,极大地方便了安全工程师对发现进行核验与深度分析。
-
基于热加载代码的分析
当分析逻辑超越了简单的正则匹配,需要进行更复杂的判断、数据处理或外部交互时,“热加载”模式提供了无与伦比的灵活性。
图:Yakit流量分析器热加载代码编辑与执行界面
-
技术原理:该模式提供了一个内置的 Yak 语言代码编辑器。用户需要实现一个名为
analyzeHTTPFlow(flow``,extract``)的核心函数。分析器在执行时,会将每一条符合筛选条件的流量封装成一个flow对象,并调用此函数进行处理。 -
核心能力:在
analyzeHTTPFlow函数内部,用户可以利用 Yak 语言的全部能力,包括:-
复杂逻辑判断:编写
if-else分支,对请求头、Cookie、响应内容等多个字段进行组合判断。 -
数据提取与转换:可以调用
extract回调函数提取相关数据, 以方便在Yakit前端页面进行展示。extract有三个参数:ruleName、flow和可变长参数contents。ruleName为提取本flow的热加载规则名,contents为提取的具体内容。 -
动态标记:根据分析结果,通过
flow.Red()、flow.Yellow()等函数为原始流量动态染色,或添加自定义标签 (Tags)。 -
编程式替代:这是对规则模式的完全覆盖和升级,任何规则能做到的,代码都能以更灵活的方式实现。
-
热加载代码流量分析实战
当分析逻辑超越简单的正则匹配,需要进行更复杂的判断或数据处理时,“热加载”模式提供了无与伦比的灵活性 。它允许用户通过编写 Yak 语言脚本,赋予流量分析强大的“代码能力” 。下面将通过一个实战案例,讲解如何使用热加载代码对流量进行组合判断,并提取其中感兴趣的信息 。
设定分析目标与场景
本次实战的目标是分析 vulinbox 靶场中的 “OpenAPI 3.0 Swagger 泄露” 场景 。
图:Yakit 工具中 OpenAPI 3.0 Swagger 泄漏检测选项
-
目标流量特征:我们关注的是访问 Swagger 配置文件
swagger.json的网络请求 。 -
泄露信息格式:该请求的响应内容是一个 JSON 对象,其中包含了大量的 API 接口路径 (paths) 和其他定义信息 ()。我们的任务就是从这个复杂的 JSON 结构中,精准地提取出所有泄露的 API 路径。
图:Yakit 界面展示 Swagger JSON 接口泄露分析
- 编写热加载分析代码
为了实现上述目标,我们可以在流量分析器的“热加载”标签页中编写一段 Yak 语言代码 ()。这段代码的核心是一个 analyzeHTTPFlow 函数,分析器会对每一条历史流量调用这个函数进行处理 ()
使用热加载代码
analyzeHTTPFlow = func(flow /* *yakit.HTTPFlow */ , extract /*func(ruleName string, flow *yakit.HTTPFlow,contents ...string)*/) {
# 1. 组合判断:筛选出特定的Swagger流量
# 判断URL和请求方法是否完全匹配目标请求
if flow.Url != "http://localhost:8787/sensitive/v2/swagger.json" || flow.Method != "GET"{
return
}
# 2. 解析响应内容
_,body = str.SplitHTTPHeadersAndBodyFromPacket(str.Unquote(string(flow.Response))~)
bodyStr = str.TrimSpace(string(body))
if bodyStr == ""{
return
}
# 3. 动态标记与数据提取
# 将找到的swagger.json主流量染成红色,便于识别
flow.Red()
info = v["info"]
if info == nil {
return
}
title = info["title"]
# 遍历JSON中的 "paths" 字段
for path,_ = range v["paths"]{
# 调用extract函数,提取路径信息
extract("swgger路径泄露-Path提取",flow,path)
}
}
代码逻辑解析:
-
组合判断:代码首先通过
if语句对流量进行精确过滤,只处理对http://localhost:8787/sensitive/v2/swagger.json的GET请求。 -
响应解析:接着,代码解析 HTTP 响应,提取出 JSON 格式的 Body 内容 。
-
动态标记:为了在
History模块中直观地识别目标流量,代码使用flow.Red()和flow.Green()对其进行了染色 。 -
数据提取:代码的核心部分是遍历 JSON 数据中的
paths对象。对于每一个发现的 API 路径,它会调用extract函数,并传入自定义的规则名 “swgger路径泄露-Path提取” 和提取到的路径path。这个extract函数是关键,它负责将提取到的内容发送到最终的结果列表进行展示 。
查看与验证分析结果
执行上述热加载脚本后,可以在“执行结果”区域看到分析产出 。
-
结果呈现:分析结果以表格形式清晰地列出 。
-
数据验证:在结果表格中,“数据”这一列完整地展示了所有从
swagger.json文件中成功提取出的 API 路径,如/api/v1/store/shop、/api/v1/store/shop/takeout等 。这证明了我们的热加载代码成功地完成了复杂的流量分析与信息提取任务。
通过这个实战案例,可以看出热加载代码为 Yakit 的流量分析带来了极高的灵活性,能够实现超越常规规则匹配的、任意复杂的编程式安全分析。
图:Yakit工具提取Swagger路径的界面展示
本节总结
History 模块作为 Yakit 的全局流量中枢,通过其内置的流量分析器,将安全测试工作流从手动的、离散的流量审查,提升到了自动化的、系统性的数据挖掘层面。它巧妙地结合了声明式规则与编程式脚本双引擎,既满足了快速模式匹配的需求,也为复杂的、需要深度定制的分析场景提供了无限可能。通过“筛选→定义逻辑→并发执行→结果溯源”的闭环,流量分析器真正意义上盘活了历史流量数据,使其成为持续发现安全风险、验证攻击面、提取有效情报的核心资产。