CTF入门之偷偷听你说话,分析流量

11 阅读7分钟

一、什么是流量分析

流量分析是对网络数据传输进行监测、分析和优化的关键技术,广泛应用于IT运维、网络安全和业务优化等领域。它通过捕获网络流量数据,对数据包进行解析、重组和解码,实现对网络通信的实时监控、历史数据分析及异常检测。流量分析可识别流量来源、路径与价值,监测带宽使用、协议分布、应用性能等指标,帮助发现网络攻击、定位故障瓶颈、优化网络拓扑。常用工具包括Wireshark、tcpdump等,支持端口级和设备级深度分析,提供丢包率、时延等高精度性能数据,是保障网络稳定运行和提升运维效率的核心手段。

二、工具:wireshark

Wireshark(前称Ethereal)是一款免费开源的网络封包分析软件,被誉为网络分析领域的"鲨鱼",象征其敏锐精准的数据捕获能力。它通过WinPCAP/libpcap接口直接与网卡交互,将网卡设为混杂模式以捕获所有流经数据包,并支持TCP、UDP、HTTP、HTTPS等数千种协议的深度解析。软件提供实时数据捕获、灵活的过滤引擎、协议分层统计及可视化展示等功能,广泛应用于网络故障排查、安全测试、协议研究及性能调优等场景。Wireshark跨平台支持Windows、macOS和Linux系统,在GNU GPL许可证保障下免费使用,是全球网络工程师、安全分析师和开发人员不可或缺的诊断工具,帮助用户"看见"网络中数据流动的每一细节。

(一)安装

Linux系统

debian系列:debian、kali、ubuntu……

sudo apt install wireshark

redhat系列:fedora、centOS、openEuler……

sudo dnf install wireshark

或者:

sudo yum install wireshark

arch系列:arch、manjaro、steamOS……

sudo pacman -S wireshark-qt

MacOS系统

brew install wireshark

或从官网下载macOS Disk Image (.dmg),按向导安装。

Windows系统

访问官网下载- Windows x64 Installer,以管理员身份运行安装。

安装过程中会安装winPcap,不要取消。

(二)原理

数据捕获流程

网络数据包 → 网卡 → 网卡驱动 → Libpcap/WinPcap → Wireshark
  1. 网卡接收:网络适配器接收流经的数据帧
  2. 混杂模式:Wireshark 通过底层库将网卡设为混杂模式,可接收所有经过网卡的数据包(不仅限于本机)
  3. 驱动传递:网卡驱动将原始数据传递给捕获库
  4. 协议解析:Wireshark 对数据包进行解码,以可读形式展示

系统结构

模块功能
GTK图形界面,处理用户输入/输出显示
核心引擎连接各模块,负责综合调度
捕获引擎依赖 Libpcap/ WinPcap/Npcap进行底层数据捕获
Wiretap读取和保存捕获文件,支持多种文件格式

2026-02-17-21-03-31-image.png

(三)界面

2026-02-17-21-06-50-image.png

按钮介绍:

2026-02-17-21-09-47-image.png

(四)使用

筛选

Wireshark过滤器分两种,一种是捕捉过滤器,一种是显示过滤器。捕捉过滤器(CaptureFilters):用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置。 显示过滤器(DisplayFilters):在捕捉结果中进行详细查找。他们可以在得到捕捉结果后随意修改。在wireshark中一般使用的是显示过滤器。

2026-02-17-21-13-17-image.png

搜索类型说明例子含义
Display filter 表达式筛选使用 Wireshark 内置的语法表达式进行协议或字段级筛选。Not ip
Ip.addr==192.168.0.1
Arp
隐藏无关流量,只保留与该特定 IP 地址通信的所有arp数据包。
Hex Value 十六进制值筛选在原始数据(Raw Data)中按字节匹配特定十六进制序列。00:ff
Ff:ff
00:ab :b1 :f0
快速定位到网络中的广播帧(如 ARP 请求)。
String 字符串筛选在数据包载荷中搜索明文文本字符串。Workstation1
UserB
Domain
明文查找

常用操作符和示例:

1. 比较操作符
操作符说明
==等于 (Equal to)
!=不等于 (Not equal to)
>大于 (Greater than)
<小于 (Less than)
<=小于或等于 (Less than or equal to)
>=大于或等于 (Greater than or equal to)
2. 逻辑操作符
操作符说明
And两个条件需同时满足
Or其中一个条件被满足
Xor有且仅有一个条件被满足
Not没有条件被满足 / 取反
3. 过滤器示例
过滤器说明
!tcp.port==3389排除 RDP (远程桌面协议) 流量
Tcp.flags.syn==1筛选具有 SYN 标志位的 TCP 数据包 (通常是连接请求)
Tcp.flags.rst==1筛选具有 RST 标志位的 TCP 数据包 (通常是连接重置)
!arp排除 ARP (地址解析协议) 流量
http筛选所有 HTTP 流量
Tcp.port==23 || tcp.port==21筛选文本管理流量 (Telnet 或 FTP)
Smtp||pop||imap筛选文本 email 流量 (SMTP, POP3, 或 IMAP)
Ip.addr==192.168.1.1筛选与指定 IP 地址 192.168.1.1 相关的流量
Frame.len<=128筛选长度小于或等于 128 字节的数据包

跟踪TCP流

2026-02-17-21-20-07-image.png

红色表示从源地址前往目标地址的流量,蓝色相反。

流的内容出现的顺序同他们在网络中出现的顺序一致。

2026-02-17-21-23-24-image.png

导出文件

在 Wireshark 菜单栏中点击"文件",选择"导出对象",然后点击"HTTP",系统会列出当前捕获数据中所有通过 HTTP 协议传输的文件对象。

2026-02-17-21-29-29-image.png

2026-02-17-21-29-48-image.png

从中选中一个可疑文件,点击"**保存**"按钮,指定文件名和对应后缀(如 .jpg、.exe、.pdf 等)即可导出查看。该功能类似于 Linux 下的 binwalk 和 foremost 工具,可直接从流量包中提取传输的文件,常用于恶意文件分析、数据恢复和数字取证场景,但仅支持未加密的 HTTP 流量,而HTTPS 需先解密才能使用。

三、其他工具

(一)Binwalk

项目说明
功能固件分析工具,用于扫描、提取及逆向工程二进制文件
特点完全自动化脚本,支持自定义签名、提取规则和插件模块,易于扩展
适用场景CTF杂项、固件分析、文件分离、压缩包提取

常用命令

命令说明
binwalk 文件名分析文件,扫描文件结构签名
binwalk -e 文件名提取探测到的文件系统(-e = --extract
binwalk -Me 文件名递归提取(-M = --matryoshka),仅对 -e--dd 有效
binwalk -Me -d 5 文件名限制递归提取深度为5(默认深度为8)
binwalk -E 文件名执行熵分析

(二)Foremost

项目说明
功能基于文件头、尾部信息及内建数据结构恢复/提取文件
特点命令行工具,当binwalk无法分离时可作为替代方案
适用场景文件恢复、数据取证、CTF文件分离

常用命令

命令说明
foremost 文件名默认提取文件
foremost 文件名 -o 输出目录指定输出目录
foremost -i 文件名交互模式

(三)Stegdetect

项目说明
功能检测JPEG文件中是否包含隐藏内容
特点使用卡方分析、RS分析等统计方法,可分析隐写工具类型
适用场景JPEG隐写检测、CTF图片隐写分析
局限低嵌入率下灵敏度下降,需手动调参

常用命令

命令说明
stegdetect 文件名检测JPEG文件中的隐写内容
stegdetect -t 文件名指定检测的隐写算法类型

(四)Outguess

项目说明
功能提取/嵌入JPEG文件中使用Outguess算法的隐藏信息
特点不改变文件头结构,采用统计冗余的自适应隐写机制
适用场景CTF隐写题、JPEG信息提取

常用命令

命令说明
outguess -r 输入文件 输出文件提取隐藏数据(-r = retrieve)
outguess -k "密码" -r 输入文件 输出文件使用密码提取

(五)Jphide / Jpseek

项目说明
功能基于最低有效位(LSB)的JPEG格式图像隐写算法
特点Jphide用于嵌入,Jpseek用于提取
适用场景JPEG图片隐写、CTF隐写题

常用命令

命令说明
jpseek 文件名提取Jphide嵌入的隐藏信息
jpseek -p 密码 文件名使用密码提取