流量分析之WireShark使用

01 基本介绍

在能力验证中,对于流量包的分析是一种十分重要的题型。

通常这类题目都是会提供一个包含流量数据的pcap文件,参赛选手通过该文件筛选和过滤其中无关的流量信息,根据关键流量信息找出相关解题线索。

pcap流量包的分析通常都是通过图形化的网络嗅探器——WireShark。

02 基本使用

WireShark的基本使用分为数据包筛选、数据包搜索、数据包还原、数据提取四个部分。

1. 数据包筛选:

数据包筛选功能是WireShark的核心功能,比如需要筛选出特定的协议如HTTP,Telnet等,也可能需要筛选出ip地址,端口等。

1.1  筛选ip:

●源ip筛选

输入命令:

ip.src == 地址

或者手动操作:

点击任意一个符合筛选条件的数据包,找到IPv4下的Source字段。

右键点击Source字段,作为过滤器应用 – 选中。

●目的ip筛选

输入命令:

1ip.dst == 地址


或者手动操作:

点击任意一个符合筛选条件的数据包,找到IPv4下的Destination字段,右键点击Source字段,作为过滤器应用 – 选中。

其他字段筛选与上面类似:

1.2 mac地址筛选:

 eth.dst ==A0:00:00:04:C5:84 筛选目标mac地址
 eth.addr==A0:00:00:04:C5:84 筛选MAC地址

1.3 端口筛选:

 tcp.dstport == 80  筛选tcp协议的目标端口为80 的流量包
 tcp.srcport == 80  筛选tcp协议的源端口为80 的流量包
 udp.srcport == 80  筛选udp协议的源端口为80 的流量包

1.4 协议筛选:

 tcp  筛选协议为tcp的流量包udp
 筛选协议为udp的流量包arp/icmp/http/ftp/dns/ip
 筛选协议为arp/icmp/http/ftp/dns/ip的流量包

1.5 包长度筛选:

 udp.length ==20   筛选长度为20的udp流量包
 tcp.len >=20  筛选长度大于20的tcp流量包ip.len ==20
 筛选长度为20的IP流量包frame.len ==20 筛选长度为20的整个流量包

1.6 http请求筛选

 请求方法为GET:http.request.method==“GET”筛选HTTP请求方法为GET的  流量包
 请求方法为POST:http.request.method==“POST”筛选HTTP请求方法为POST的流量包
 指定URI:http.request.uri==“/img/logo-edu.gif”筛选HTTP请求的URL为/img/logo-edu.gif的流量包
 请求或相应中包含特定内容:http contains “FLAG” 筛选HTTP内容为/FLAG的流量包

2. 数据包搜索

在WireShark界面按“Ctrl+F”,可以进行关键字搜索:

WireShark的搜索功能支持正则表达式、字符串、十六进制等方式进行搜索,通常情况下直接使用字符串方式进行搜索。

搜索栏的左边下拉,有分组列表、分组详情、分组字节流三个选项,分别对应WireShark界面的三个部分,搜索时选择不同的选项以指定搜索区域:

分组列表

分组详情

分组字节流

3. 数据包还原

在WireShark中,存在一个交追踪流的功能,可以将HTTP或TCP流量集合在一起并还原成原始数据,具体操作方式如下:

选中想要还原的流量包,右键选中,选择追踪流 – TCP流/UPD流/SSL流/HTTP流。

可在弹出的窗口中看到被还原的流量信息:

4. 数据提取

WireShark支持提取通过http传输(上传/下载)的文件内容,方法如下:

选中http文件传输流量包,在分组详情中找到data或者Line-based text data:text/html层,鼠标右键点击 – 选中 导出分组字节流。

如果是菜刀下载文件的流量,需要删除分组字节流前开头和结尾的X@Y字符,否则下载的文件会出错。鼠标右键点击 – 选中 显示分组字节…

在弹出的窗口中设置开始和结束的字节(原字节数开头加3,结尾减3)

最后点击save as按钮导出。