1,端点和网络会话
- 想要让网络通信正常进行,你必须至少拥有两台设备进行数据流的交互。端点(endpoint)就是指网络上能够发送或接收数据的一台设备。两个端点之间的通信被称之为会话(conversation)。Wireshark根据交互的特征来标识端点会话。
- 端点在OSI的不同层级上使用多种不同类型的地址。
- 如在数据链路层,通常使用物理网卡的MAC地址。每个设备的MAC地址独一无二(虽然也有办法修改)。
- 在网络层,端点使用IP地址。IP地址可以在任何时间修改。
1.1,查看端点统计
-
Wireshark的Endpoints窗口(统计—>Endpoints),给出了各个端点的许多有用的统计数据,包括每个端点的地址,传输发送数据包的数量和字节数。
-
上面图片(Endpoints窗口)顶部的选项卡(TCP,Ethernet,IPv4,IPv6和UDP)根据协议将当前捕获文件中所有支持和被识别的端口进行分类。单击其中一个选项卡,就可以只显示针对一个具体协议的端口。单击窗口右下角的Endpoints类型多选框,就可以添加额外的协议过滤标签。勾选解析名称多选框,可以开启名称解析功能来查看端点地址。如果在处理大流量且需要过滤出所显示的端点数据,那么可以事先在Wireshark主窗口里应用显示过滤器,然后在端点窗口勾选显示过滤器的限制多选框。此选项会让端点窗口只显示与显示过滤器相匹配的端点。
1.2,查看网络会话
-
访问Wireshark的会话窗口(统计—>Conversations)来显示所有在捕获文件中的会话。
- 会话窗口(上图)展示的是一行两个地址组成的会话,以及每个设备发送或收到的数据包和字节数。地址A列代表着源端点,地址B列代表着目的端口。
1.3,使用端点和会话定位最高用量者
-
使用捕获文件2022.11.281.pcapng举例。下图展示了在这个捕获文件中以字节数目排序的端点列表。
-
注意:以字节排序后的第一个地址是192.168.0.105(本机地址),此外,拥有这个地址的设备是数据集中最活跃的信息源(进行了最多通信的主机)
-
第二个地址61.147.236.26是一个公网地址。
-
有了上述信息,你可以假设:61.147.236.26和192.168.0.105正在各自与很多其他设备进行大量通信,或者这两个IP之间在彼此通信。实际上,最大用量者之间的端点通信是比较常见的。要确定这一点,请打开会话窗口并选中IPv4选项卡,你就可以通过使用字节数对列表进行排序来验证这一点。
-
你可以使用如下显示过滤表达式来检查会话。
-
ip.addr == 61.147.236.26 && ip.addr == 192.168.0.105
-
-
2,基于协议分层结构的统计
-
当在与未知的捕获文件打交道时,有时需要知道文件中协议的分布情况,也就是捕获中TCP,IP,DHCP等所占的百分比是多少。Wireshark提供的协议分层统计(Protocol Hierarchy Statistics)可以帮助你完成此任务。
-
以上面的捕获文件2022.11.281.pcapng为例,选择统计(Statistics)—>协议分级(Protocol Hierarchy)打开协议分层统计窗口。如下。
-
协议分层统计窗口就像一张快照,会让你直观地看到网络活动中地各种类型。
3,名称解析
- 名称解析就是一个协议用来将一个独特的地址转换到另一个的过程,目的是让地址方便记忆。
3.1,开启名称解析
-
Wireshark在显示数据包时,使用名称解析来简化分析。要启用此功能,请选择编辑(Edit)->首选项(Preferences)->Name Resolution。
-
上面这里有一些Wireshark名称解析的主要选项。
- 解析MAC地址(Resolve MAC addresses):
- 此类型的名称解析使用ARP协议,试图将第二层数据链路层的MAC地址转换为网络层地址。
- 如果这种转换尝试失败,那么Wireshark会使用程序目录中的ethers文件尝试进行转换。Wireshark最后的尝试便是将MAC地址的前三个字节转换为设备IEEE指定的制造商名称。
- 解析传输名称(Resolve Transport name):
- 此类型的名称解析尝试将一个端口号,转换成一个与其相关的名字。比如,将端口80显示为http。
- 解析网络名称(Resolve Network/IP name):
- 此类型的名称解析试图转换第三层网络层的地址。如将IP地址转换为一个易读的域名。
- 解析MAC地址(Resolve MAC addresses):
-
此外Wireshark还提供了其他几个有用的选项
- Use captured DNS packet data for address resolution:
- 从已捕获的DNS数据包中解析出了IP地址和DNS域名之间的映射。
- Use an external network name resolver:
- 允许Wireshark为你当前的分析机器使用的外网DNS服务器生成查询,从而获得IP地址和DNS域名之间的映射。
- 当捕获的文件里没有DNS解析数据而你还需要DNS域名解析时,此功能就比较实用。
- Maximum concurrent requests:
- 该参数会限制当前的一次最多DNS请求数量。当你的捕获文件将产生大量的DNS查询而你并不想让DNS查询占用过多带宽的时候,请使用此功能。
- Only use the profile “hosts” file:
- 把DNS解析限制在与活动Wireshark文档关联的host文件中。
- Use captured DNS packet data for address resolution:
3.2,名称解析的潜在弊端
- 网络名称解析可能会失败,尤其是当没有可用的DNS服务器时。
- 名称解析的信息是不会保存在捕获文件里的,所以在你每次打开一个捕获文件的时候都要重新进行一次名称解析。
- 如果你在一个网络环境下捕获了流量,那么在另一个网络环境中打开该捕获文件时,你的系统可能访问不到之前的DNS服务器。
- 名称解析会带来额外的处理开销,当你的内存不剩多少的时候,可能需要关闭名称解析,以节约系统资源。
- 对DNS名称解析的依赖会产生额外的数据包,也就是说你的捕获文件可能会被解析那些基于DNS地址的流量所占据。如果在你分析的捕获文件中含有恶意IP地址,那么试图去解析它们会生成对攻击者控制的基础架构的查询,这样攻击者就有可能知道你的动作,甚至把你自己变成靶子。要避免跟攻击者打交道,请在名称解析选项对话框中关掉Use an external network name resolver。
4,协议解析
- Wireshark最大的优势就是对上千种协议解析的支持。
- Wireshark中的协议解析器允许你将数据包拆分成多个协议区段以便分析。
4.1,更换解析器
-
在协议列右键单击其中一个数据包,选择Decode As。这时会弹出一个对话框,从中选择你想要使用的解析器。
-
选好之后点击ok,就可以立刻将修改应用到捕获文件中去。
- 你可以在同一个捕获文件中多次使用强制解码功能。Wireshark将在**Decode As…**对话框中跟踪你的强制解码操作。
- 在默认情况下,当你关掉捕获文件时强制解码的设置不会保存。补救方法就是在Decode As…对话框中单击Save按钮。这会将协议解码规则保存到你的Wireshark用户配置文件中,因此你使用该配置文件打开任意捕获文件时,它们将会生效。要移除之前保存的解码规则,你可以在对话框中单击减号按钮。
5,流跟踪
-
Wireshark分析功能中令人满意的一点就是它能够将来自不同包的数据重组成统一易读的格式,一般称作packet transcript。
-
流跟踪功能可以把从客户端发网服务器的数据都排好序使其变得更易查看。
-
现有四种类型的流可以被跟踪。
- TCP流:重组使用TCP协议的数据,比如HTTP和FTP。
- UDP流:重组使用UDP协议的数据,比如DNS。
- SSL流:重组加密的协议,比如HTTPS。你必须提供密钥来解密流量。
- HTTP流:从HTTP协议中重组和解压数据。当使用TCP流跟踪但又没有完全解码出HTTP数据时,这个功能就派上用场了。
-
如一个简单的HTTP交互举例来说,选中一个HTTP或TCP数据包,右键单击这个文件并选择追踪流。此时会打开一个新窗口。
- 注意这个窗口中的文字以两个颜色显示,其中红色用来标记从源地址前往目标地址的流量,而蓝色用来区分出相反方向,也就是从目标地址到源地址的流量。这里的颜色标记以哪方先开始通信为准。
6,数据包长度
-
一个或一组数据包的大小可以了解很多情况。在正常情况下,一个以太网上的帧最大长度为1518字节,除去以太网,IP以及TCP头,还剩下1460字节以供应用层协议的头或者数据使用。如果你知道报文传输的最小需求,那么我们可以通过一个捕获文件中数据包长度的分布情况,做一些对流量的合理猜测。Wireshark提供了数据包长度窗口,帮助你查看数据包基于其长度的分布情况。
-
依次点击统计(Statistics)-> 分组长度(packet Lengths)
-
特别需要注意那些大小为1280~2559字节的数据包统计的行。这些较大的数据包通常表示数据传输,而较小的数据包则表示协议控制序列。
-
剩下的大多数数据包都是在40~79字节范围内,而处于这个范围的数据包通常是不含数据的TCP控制数据包。
7,图形展示
7.1,查看IO图
-
Wireshark的IO图窗口允许你对网络上的吞吐量进行绘图。可以利用这些图,找到数据吞吐的峰值,找出不同协议中的性能时滞,以及比较实时数据流。
-
选择统计(Statistics)—>IO Graphs。
7.2,双向时间图
-
Wireshark中的另一个绘图功能就是对给定捕获文件的双向时间绘图。双向时间(Round-Trip Time,RTT)就是接收数据包确认所需的时间。对双向时间的分析通常被用来寻找通信中的慢点或者瓶颈,以确定是否存在延迟。
-
选择统计(Statistics)—>TCP流图形(TCP Stram Graph)—>往返时间(Round Trip Time Graph)
-
图中每一点都代表了一个数据包的双向时间。在默认情况下,这些值以其序列号排序。可以单击这个图中的任何一个点,并在Packet List面板中看到相应的数据包。
7.3,数据流图
-
数据流绘图功能对于可视化连接以及显示一定时间的数据流非常有用,这些信息使你可以更轻松地了解设备的通信方式。数据流图基本上以列的方式,将主机之间的连接显示出来,并将流量组织到一起,以便于你更直观地解读。
-
选择统计(Statistics)—>流量图。