CTF 流量分析

分类: 365-002 bet 时间: 2026-01-11 09:04:56 作者: admin

Wireshark 基础操作与流量筛选指南

本文梳理了Wireshark的核心操作流程,从网卡选择、数据保存到多场景流量筛选,结合实操步骤与示例,帮助快速定位目标网络数据包。

一、基础操作流程

CTF流量题

1. 选择网卡并开始抓包

打开Wireshark后,界面会列出所有可用网卡,包括VM虚拟网卡、LAN、WLAN等。

找到需要监控的网卡(如本次选择“WLAN”),双击即可进入该网卡的实时流量抓包页面。

点击界面顶部红色按钮可随时停止抓包(红框标注为停止按钮)。

2. 保存抓包数据

抓包完成后,点击界面右上角的「文件」菜单。

在下拉菜单中选择「保存」,自定义文件名和保存路径,即可存储完整的抓包数据(默认格式为.pcapng)。

二、核心流量筛选方法

Wireshark筛选分为捕获过滤(抓包前限制范围,语法严格)和显示过滤(抓包后筛选数据,灵活度高),以下按场景分类说明。

1. 按协议筛选

直接输入协议名称,快速定位特定协议流量,适用于HTTP、TCP、DNS等常见协议。

筛选类型

语法示例

说明

显示过滤

http/tcp/dns

单独显示HTTP、TCP或DNS协议的数据包

捕获过滤

tcp/not arp

仅捕获TCP包,或排除ARP协议的数据包

2. 按IP地址筛选

按源IP、目的IP或网段筛选,精准定位特定设备的流量。

筛选类型

语法示例

说明

显示过滤

ip.src == 192.168.1.1

仅显示“源IP为192.168.1.1”的数据包

显示过滤

ip.addr == 10.0.0.0/24

显示“源或目的IP在10.0.0.0/24网段”的数据包

捕获过滤

src host 192.168.1.1

仅捕获“源IP为192.168.1.1”的数据包

3. 按端口筛选

针对数据库、Web服务等固定端口的应用,快速定位其流量(如MySQL 3306、MongoDB 27017)。

筛选类型

语法示例

说明

显示过滤

tcp.port == 3306

显示MySQL(默认3306端口)的TCP流量

显示过滤

udp.portrange 50000-50010

显示UDP协议50000-50010端口范围的流量

捕获过滤

tcp portrange 9501-9505

仅捕获TCP协议9501-9505端口范围的数据包

实操示例:数据库流量筛选

MySQL筛选:在过滤栏输入 tcp.port == 3306,选中任意请求后右键选择“追踪流”,可查看完整通信过程。

MongoDB筛选:输入 tcp.port == 27017,直接定位MongoDB默认端口的流量。

4. 进阶筛选(协议字段/内容/时间)

(1)协议字段筛选

深入协议内部字段,定位特定请求或状态(如HTTP POST、TCP重传)。

HTTP:http.request.method == "POST"(筛选POST请求)、http.response.code == 404(定位404错误)

TCP:tcp.flags.syn == 1(检测TCP三次握手的SYN包)、tcp.analysis.retransmission(查看重传报文)

DNS:dns.qry.name contains "baidu.com"(查找查询“baidu.com”的DNS包)

(2)数据内容筛选

搜索数据包中的特定字符串或十六进制内容。

tcp contains "flag"(TCP包中包含“flag”字符串)

data.data contains 0A:0B:0C:0D(数据域包含十六进制字节“0A 0B 0C 0D”)

正则匹配:http.request.uri matches "login\?user=.*"(匹配“login?user=”开头的URL)

(3)时间筛选

按时间范围或间隔筛选数据包。

frame.time >= "2025-10-01 00:00:00"(2025年10月1日后的数据包)

tcp.time_delta > 0.5(相邻TCP包时间间隔超过0.5秒,排查慢请求)

5. 逻辑组合筛选

使用逻辑运算符组合多个条件,缩小筛选范围(括号可调整优先级)。

逻辑与(&&):(tcp.port == 80 || tcp.port == 443) && ip.src == 183.225.235.138(源IP为183.225.235.138的HTTP/HTTPS流量)

逻辑或(||):http || dns(显示HTTP或DNS流量)

逻辑非(!):!arp(排除ARP协议流量)

三、捕获过滤与显示过滤的区别

特性

捕获过滤

显示过滤

作用时机

抓包前(限制捕获范围)

抓包后(筛选已捕获数据)

语法规则

BPF语法(严格,不支持复杂字段)

Wireshark自定义语法(灵活)

性能影响

减少数据量,提升抓包性能

不影响原始数据,仅控制显示

典型示例

tcp port 80 and not src host 192.168.1.1

http.request.method == "POST" && tcp.srcport > 10000

四、工具辅助与快捷键

表达式生成器:点击过滤栏右侧的「Expression」按钮,通过可视化界面选择协议、字段和运算符,自动生成筛选语法(适合新手)。

常用快捷键:

Ctrl+F:快速搜索数据包内容(支持字符串/十六进制)

Shift+F:打开高级过滤界面,分步构建复杂表达式

停止/开始抓包:Ctrl+E

五、典型场景实操示例

排查HTTP慢请求:http.request && tcp.time_delta > 2(筛选响应时间超过2秒的HTTP请求)

检测恶意DNS请求:dns.qry.name matches "malware|phish"(查找包含“malware”或“phish”的DNS查询)

提取敏感SQL语句:mysql contains "SELECT * FROM users"(定位MySQL中查询用户表的数据包)

分析TCP连接异常:tcp.flags.reset == 1 || tcp.analysis.ack_lost_segment(检测TCP RST包或ACK丢失的分段)

补充说明

大多数流量分析操作难度较低,通过筛选关键字符串(如“flag”)即可快速定位目标数据包。

5.1 CTF比赛日志分析示例

(1)CTFhub-MySQL流量分析

(2)CTFhub-MongoDB流量分析

(3)2025网信办CTF流量分析

要不要我帮你整理一份Wireshark筛选语法速查表?包含文中所有核心筛选规则、语法示例和对应场景,方便你日常实操时快速查阅。