Wireshark全流量分析
1. 时间设置
在Wireshark中看到的时间默认为Seconds Since Beginning of Capture,即时间戳为秒格式,从捕捉开始计时,以后的时间是距离第一个捕获包的时间间隔。
- 日期和时间(1970-01-01 01:02:03.123456):显示日期和每天的时间-时间格式(年月日,时分秒)。
- 时间(01:02:03.123456):只显示时间-日期格式(时分秒格式)。
- 自1970-01-01经过的秒数:格式为1234567890.123456,时间戳、新纪元时间(Epoch Time),自1970年1月1日(00:00:00 GMT)以来的秒数。
- 自捕获开始经过的描述:格式为123.123456(默认),将时间戳设置为秒格式,从捕捉开始计时,以后的时间是距离第一个捕获包的时间间隔。
- 自上一个捕获分组经过的秒数:格式为1.123456,将时间戳设置为秒格式,显示的是距离上一个捕获包的时间间隔。
- 自上一个显示分组经过的秒数:格式为1.123456,将时间戳设置为秒格式,从上次显示的包开始计时,距离上一个显示包的时间间隔。
- UTC日期和时间(1970-01-01 01:02:03.123456):世界标准时间,显示日期和每天的时间-时间格式(年月日,时分秒)。
- UTC时间(01:02:03.123456):世界标准时间,显示时间-日期格式(时分秒格式)。
2. 筛选IP地址
- 筛选单个IP地址的语法
- “
ip.addr = 192.168.1.102
”:显示IP源或目的地址字段为192.168.1.102的所有数据。 - “
!ip.addr = 192.168.1.102
”:显示IP源或目的地址字段不是192.168.1.102的所有数据。 - “
ip.src == 192.168.1.102
”:显示IP源地址字段为192.168.1.102的所有数据。 - “
ip.dst = 192.168.1.102
”:显示IP目的地址字段为192.168.1.102的所有数据 - “
ip.host == www.baidu.com
":显示到达或来自解析www.baidu.com网站后的IP地址数据。
- 筛选一个地址范围的数据方法
- “
ip.src > 192.168.1.102 && ip.src < 192.168.1.105
”:显示IP源地址是192.168.1.103、192.168.1.104的数据。 - “
(ip.src > 192.168.1.102 && ip.src < 192.168.1.105) && !ip.src = 192.168.1.103
”:只显示IP源地址是192.168.1.104的数据。
- 筛选一个网段IP数据的方法如下:
- “
ip.src == 192.168.1.0/24
”:显示IP源地址在192.168.1.0/24网段的数据。
3. 筛选协议和端口
- 筛选TCP数据的常用方法
- “
tcp
”:显示所有基于TCP的流量。 - “
tcp.port == 80
”:显示所有TCP80端口的流量。 - “对话过滤器” - “TCP”:显示某两个IP间通信单一TCP会话的流量。
右键选择“对话过滤器”→“TCP”后,过滤器工具会自动补全命令:(ip.addr eq 192.168.1.102 and ip.addr eq 115.231.236.116) and (tcp.port eq 22494 and tcp.port eq 80)
。
-
筛选DHCP数据的方法
筛选DHCP时,使用的命令不是“dhcp”,而是“bootp”,这是因为DHCP的前身是BOOTP。 -
筛选HTTP数据的常用方法
- “http”:筛选所有的HTTP数据。
- “追踪流”→“HTTP流”:显示HTTP的请求数据和返回数据。
- 筛选HTTP是POST请求的数据:“
http.request.method ==
”。
4. 数据统计
数据统计可以显示单个IP或两个IP会话间的数据。
- 单个IP端点数据发送或接受的统计:“统计”→“端点”。
- 两个IP间会话的统计:“统计”→“会话”。
5. 协议分层统计
由于很多协议具有多层结构,Wireshark为了方便用户分析,提供了协议分层统计功能。对照OSI七层模型,可统计各层协议的分布情况,以及数据包的数量、流量及占比情况。选择“统计”→“协议分级”。
6. 显示带宽的使用情况
Wireshark自带的IO Graph可以将网络流量进行图形化显示,可更直观地将网络情况显示出来。在分析大流量DDOS攻击时会经常使用该功能。选择“统计”→“IO图表”。
7. 从流量中还原文件
在相对应的数据流中点击右键,选择“追踪流”→“TCP流”,将对应的数据复制出来后保存修改后缀。
8. 分割数据
使用Wireshark处理较大的文件时,速度会很慢或者卡死。所以就需要对数据进行分割。
使用capinfos <filename>
,查看数据包信息。
- 按照包的大小进行分割
使用命令editcap -c 20 <filename> <newfilename>
进行分割,每个数据包不超过20kb。
- 按照包的时间进行分割
使用命令editcap -i 20 <filename> <newfilename>
进行分割,没20s一个包。
- 按照指定序号的包提取
在Wireshark中选择“文件”→“导出特定分组”,在Range中输入想提取的包的序号。
9. 导出特定字段内容
使用命令tshark -r dj.pcap -Y http -T fields -e frame.number -e ip.src -e ip.dst -e http.request.method
从dj.pcap中提取HTTP协议的源地址、目的地址、请求方法和对应的帧号,便于定位是哪个帧。
- -r:指定文件
- -Y:包的读取过滤器
- -T:设置编码结果输出的格式
- -e:如果指定-T选项,-e则表示输出哪些字段。
Wireshark过滤包
1. 过滤器表达式
- eq:==
- ne:!=
- gt:>
- lt:<
- ge:>=
- le:<=
- and:&&
- or:||
- not:!
2. 伯克利包过滤
常见三种限定符:
ytpe:host(表示主机名和IP地址)、net(表示子网)、port(表示端口),未指定默认host。
dir:src(源地址)、dst(目标地址),未指定默认"src or dst"。
proto:ether、ip、tcp、arp。
例:
host 192.168.1.1
dst host 192.168.1.1
src host 192.168.1.1
ether host 11:22:33:44:55:66
ether dst 11:22:33:44:55:66
ether src 11:22:33:44:55:66
dst net 192.168.1.0/24
src net 192.168.1.0/24
net 192.168.1.0/24
dst port 8080
src port 8080
port 8080
精准语法proto[expr:size],proto代表协议,expr代表协议层的字节偏移量,size表示字节数(可以是1、2、4中的一个默认是1)。
例如一个IP数据包部的头部长度为20字节
expr长度为12,size为4,地址192.168.1.1转为十六进制为"0xc0a80101",就可以写为ip[12:4] = 0xc0a80101