追踪活动页面请求

WiresharkBeginner
立即练习

介绍

Grove 活动团队需要一份可靠样例,说明访客如何打开 Night Garden Walk 的详情。你将使用真实录制的 HTTP 流量找到目标访问,为请求配对响应,并准备一份其他分析人员可以重新打开的抓包文件。

你应已能够打开文件、输入简单终端命令和应用基本 Wireshark 显示过滤器。无需编程。本实验始终使用 Desktop;其中的终端、Wireshark 和文本编辑器共用这个训练容器。这些是受控录制数据,并非实时访客流量。本实验独立初始化,预计时长包含阅读和普通操作错误。

隔离一次完整访问

本步骤将找到 Cedar 的正常访问并导出完整会话。从 Desktop 开始,在左下角桌面菜单打开 Applications → Terminal Emulator。准备好的抓包是输入文件,请保持不变。执行以下命令启动 Wireshark 并打开它。Wireshark 运行时终端仍被占用;后续在 Wireshark 窗口中操作。

wireshark /home/labex/project/event-page/input/casebook.pcapng

使用标题栏的最大化按钮放大窗口。顶部窗格列出数据包,中间窗格解释所选数据包,底部窗格显示字节。这个文件记录了对本地活动服务的三次独立访问。服务地址为 127.0.0.1;客户端地址是不同的本地测试身份,并非物理机器。

访问 客户端 本实验中的用途
cedar 127.0.0.2 需要交接的正常访问
willow 127.0.0.3 其他访客,不在本次交接范围内
birch 127.0.0.4 其他访客,不在本次交接范围内

点击数据包列表上方的显示过滤栏,输入以下表达式并按 Enter。ip.addr 匹配任一端点,因此保留两个方向。== 表示相等。显示过滤器只改变视图,不会从输入文件删除数据包。

ip.addr == 127.0.0.2

打开 Statistics → Conversations,选择 TCP 标签页,必要时启用 Limit to display filter。TCP 会话包含双方地址和双方端口。其 Duration 包含空闲时间,因此不能衡量单个 HTTP 响应。确认选中的会话连接 Cedar 与活动服务,然后关闭对话框。

选择 Info 以 GET 开头的请求包。HTTP 是应用使用的请求响应协议。URI 标识请求的资源:这里 view 的值选择 list、details 或 programme。右键点击请求,选择 Follow → TCP Stream。阅读会话两个方向的内容,必要时滚动。Cedar 在同一连接上请求了两次详情。因此,相同 URI 和流不能唯一确定一个请求。

使用 Close 关闭 Follow 窗口。Wireshark 会保留一个流过滤器。保持它:这个视图包含连接的 TCP 分段,而不只是标记为 HTTP 的包。如果误选了其他访问,将过滤器替换为 Cedar 地址表达式,再对 Cedar 请求执行 Follow。

选择 File → Export Specified Packets。保存为 /home/labex/project/event-page/output/evidence.pcapng,格式选 pcapng,数据包范围选 Displayed,并在显示集合中选 All packets。与输入文件分开保存。输出名称错误时,按所需名称重新导出。不要使用 Export Packet Dissections,它生成摘要而非可复用的抓包。

导出显示的完整会话

保存前,核对对话框中的 Displayed 列和 All packets 选项。示例显示 Cedar 的 30 个包。

选择 File → Open,打开新的 evidence.pcapng。在显示过滤栏应用 http。预期有四个 GET 请求和四个 HTTP 响应;既要核对数量,也要检查内容。一个响应可能跨越多个 TCP 分段。即使原窗口能显示完整响应,仅导出标记为 HTTP 的行也可能丢失前面的分段。重新打开导出文件可以发现这种错误。

如果响应缺失或无法重组,重新打开原始输入,恢复 Cedar 地址过滤器,再导出完整连接。不要通过在其他文件中输入文字补齐缺失的响应内容。

为请求找到实际对应的响应

本步骤将区分两次详情请求,并记录全部四组正确配对。从 Desktop 开始,保持 Wireshark 打开。使用 File → Open 返回 /home/labex/project/event-page/input/casebook.pcapng。下表所有帧号均引用原始输入,而非重新编号后的导出文件。

使用 && 组合两个条件,表示两者都必须匹配。http 选择已解码的 HTTP 消息。

ip.addr == 127.0.0.2 && http

选择第一个 GET。在中间窗格点击三角形展开 Hypertext Transfer Protocol,也可以选中该行并按 Right Arrow。阅读 URI 和 X-Request 请求头。这个合成应用为每个请求分配独立标识,例如 cedar-01。

找到 Response in frame。右键该字段,选择 Go to Linked Packet。响应 HTTP 部分的 Request in frame 指回原请求。两个方向的链接都很重要:流中的最后一个响应并不一定对应第一个请求。

展开响应的 JavaScript Object Notation → Object → Member: title 部分,必要时滚动中间窗格;也可以使用 Follow → TCP Stream 阅读完整应用会话。活动标题为 Night Garden Walk。JSON 表示带标签的应用值;title 是标签,后面的引号内容是值。读取实际值,不能只看 200 响应码。如果 JSON 部分不在可见范围,滚动中间窗格。

对每个 Cedar 请求重复操作,包括两次详情请求。在这份固定录制中,应得到以下配对:

输入中的请求帧 对应响应 活动标题
4 10 Night Garden Walk
12 16 Night Garden Walk
17 21 Night Garden Walk
23 27 Night Garden Walk

为了方便比较响应链接,在请求的 Response in frame 上右键并选择 Apply as Column。响应行的这一列为空是正常的,因为它们具有 Request in frame 字段。这列只是辅助,不是必须的配置设置。用它核对重复的详情请求指向不同响应。

通过响应列配对重复请求

读取左侧原始帧号及旁边的 Response in frame。两次详情请求分别指向帧 16 和 27。

在图形文本编辑器中创建简短交接表。再次打开 Applications → Terminal Emulator,在 Desktop 中创建另一个终端。mousepad 启动已提供的文本编辑器;绝对路径指定输出文件。

mousepad /home/labex/project/event-page/output/pairs.csv

输入以下完整 CSV。CSV 使用逗号分隔字段,每行一条记录。表头给出列名。这些标题不含逗号,因此无需额外引号。

request_frame,response_frame,title
4,10,Night Garden Walk
12,16,Night Garden Walk
17,21,Night Garden Walk
23,27,Night Garden Walk

按 Ctrl+S 保存。如果出现保存对话框,确认准确的输出目录和 pairs.csv 文件名。通过窗口或底部面板按钮返回 Wireshark。将每一行 CSV 与输入中的实际请求响应链接比较。表格记录调查过程,但不能代替完整的 evidence.pcapng。

总结

你使用 Wireshark 会话统计和 Follow TCP Stream 隔离了一次访问,重新打开完整导出的抓包,并为重复 HTTP 请求找到了各自的响应。原始输入保持不变;导出的数据包和简短配对表可以独立核对。