wireshark学习——4.高级特性

协议解析
可以说,Wireshark最为强大的功能之一就是协议解析功能,也是我们最为常用的功能。尽管我们往往不会注意这个功能,但是它却一直实实在在地影响着我们的分析过程。协议的解析是由Wireshark的协议解析器完成的,它可以将网络上获取的原始二进制数据包进行拆分,变成相关协议的不同区段,以便于我们的分析。比如我们之前接触过多次的TCP协议,一旦Wireshark捕获到该协议的数据包,就会自动分析,并且以TCP数据包的格式显示出来,告诉我们每一个数据段的意义。

我们可以将Wireshark的协议解析器看作是网络原始数据流和Wireshark软件之间的翻译器。如果想要让Wireshark支持某个协议,那么它就必须拥有该协议的解析器。当然如果我们在实际的分析过程中遇到了新的协议,也可以使用C语言或者Python来自己编写一个解析程序。

但是这里需要注意的是,Wireshark在进行协议解析的时候并不见得每次都会选择出正确的解析器,尤其是当网络上的一个协议使用了不同于标准的配置时,往往会出现错误的协议解析。一旦遇到这种情况,我们就需要更改Wireshark的协议解析方式。比如我们这里可以分析一下Lab4-1.pcap这个实验文件:

Alt text

可以发现,这个捕获文件中出现了大量的SSL通信。SSL指的是Secure Socket Layer protocol,也就是安全的套接层协议,常用于主机之间的安全加密传输。因为SSL是用于保密传输的,因此一般来说,我们在Wireshark中查看SSL的数据包并不会发现有用的信息。这里我们首先看一下第四个数据包,重点查看一下Packet Bytes面板:

Alt text

可以发现这里出现了明文数据流量,比如“FileZilla Server”,其实这是一个FTP的服务程序。而查看第八和第九个数据包,又可以发现诸如“USER admin”以及“Password”这样的用户名和密码。如果这真的是SSL数据包,那么我们就不会读取到包中的任何有用的数据,更不会看到以明文形式传输的用户名和密码。依据这些信息,我们就可以知道,这应该是FTP数据包,而并非SSL数据包。而导致Wireshark解析错误的原因很可能就是因为这个FTP协议使用了443号端口,而这个端口原本应当是HTTPS(基于SSL的HTTP)使用的。

为了解决这个问题,我们需要强制Wireshark使用FTP协议解析器来解析这些数据包。我们可以用鼠标右键单击需要转换的数据包(比如第八个数据包),选择“Decode As”,就会弹出一个新的对话框:

Alt text

在下拉列表中选择“destination->443”,并在右边列表中选择FTP,也就是让Wireshark使用FTP协议的解析器对所有端口号为443的数据流量进行解析。当我们单击OK后,那么相应的SSL流量就都转化成了FTP流量,这就有助于我们接下来的分析。但是这里所做出的更改,并不会保存下来,也就是说下次我们再打开这个捕获文件时,我们还需要重新进行解码设置。

我们可以对一个捕获文件做多次的解码操作,而且可以在“Decode As”对话框中点击“Show Current”按钮来查看我们的修改记录:

Alt text

由于Wireshark是一款开源的软件,因此我们可以分析该软件的源代码来找出协议解析错误的原因。在其官方网站上,我们就可以下载到软件的源码。比如对于协议解析,我们可以在其epan/dissectors文件夹中找到协议解析器程序。每一个解析器程序都以packet-protocolname.c,即“数据包-协议名称”的形式命名。这些文件都有良好的注释,如果大家想深入研究Wireshark的原理,建议大家可以仔细研究一下这些源代码,从而在未来的分析中,开发出自己想要的功能。

步骤3:跟踪TCP Stream
TCP流量可以说是我们在日常的分析中遇到最多的数据包了。而Wireshark为了方便我们的分析,可以将TCP流重组成易于阅读的形式,而不是一小块一小块地查看。这里我们打开Lab4-2.pcap这个文件,然后用右键单击任意一个TCP或者HTTP数据包,并选择“Follow TCP Stream”,此时TCP流就会在一个新窗口中显示出来:

Alt text

在这里我们可以清晰地看到两台主机之间的绝大多数通信。可以发现,这里最初是对一个站点进行GET请求,之后该站点的服务器回复一个OK表示请求成功。每当客户端希望服务器给予响应的时候,都会出现这样的数据模式。另外,在这个窗口中,我们还可以实现文本搜索、保存文件以及打印等功能。这可以大大节省分析的时间。

查看数据包的长度
在使用Wireshark进行实际的分析时,我们往往可以从一组或者一个数据包的大小中,获取很多的信息。一般来说,以太网上的帧的大小为1518个字节,除去以太网、IP以及TCP等的头部信息,还剩下1460个字节,这些字节可以供应用层协议来使用。知道了这些,我们就可以通过一个捕获文件中数据包长度的分布情况,来对流量进行分析。

这里我们打开Lab4-3.pcap文件,选择菜单栏上的“Statistics”->“Packet Lengths”,然后点击“Create Stat”,则可以打开如下窗口:

Alt text

这里我们需要重点关注的是1280~2559这个区段的数据包。类似于像这种比较大的数据包一般都是用于数据的传输,而较小的数据包则是用于保存协议的控制序列。在这里可以看到,1280~2559这个区段的数据包占据了66.43%的比重,是最多的。那么很明显这里包含有一个或多个的数据传输流量。这有可能是HTTP的下载、FTP的上传,或者其它类型的主机间的通讯等。而余下的占据第二位的是介于40~79这个范围的数据包,占有33.44%的比重。很明显,这部分的数据包所保存的正是TCP控制数据包。

事实上,查看数据包的长度是对捕获文件进行概览的好方法。如果发现了很多较大的数据包,那么极有可能是进行了数据的传输。如果绝大部分的数据包都很小,那么就可以认为这里面包含有很多的控制命令,而不存在大规模数据的传输情况。虽然很多时候,查看数据包的大小并不是一个必需的操作,但是在进行深入分析前对捕获文件的情况做一个概览,还是很有帮助的。

步骤4:了解专家信息
整个网络中的TCP信息,都会被Wireshark的专家信息所记录,如丢包或者网络阻塞等。针对于每个协议的解析器,都会有一些专家信息,我们在分析的时候,可以通过专家信息窗口来查看使用该协议的数据包中一些特定状态的错误、警告以及提示等信息。

专家信息窗口可以通过菜单栏的“Analyze”->“Expert Info”来打开:

Alt text

这个界面中一共有6个选项卡,分别表示的是:

Error:数据包里面或者解析器解析时出现的错误。 Warnings:不正常通信中的异常数据包。 Notes:正常通信中的异常数据包。 Chats:网络通信的基本信息。 Details:显示数据包的详细信息。 Packet Comments:数据包的描述信息。

可以发现,当前的捕获文件中一共有3个警告,19个注意、3个对话以及25个细节信息。选项卡括号中的数字表示消息出现的次数,而括号外的数字表示该类别中不同消息的数量。

具体分析一下当前捕获的数据包,首先看一下Warnings。可以发现第一个是“Previous Segment Not Captured”,表示数据包丢失,当数据流中的一个期望的序列号被跳过时,这个警告就会出现。第二个是“out-of-order”,这个警告是当数据包没有按照顺序接收时出现。

然后看一下Notes选项卡。这里出现了许多“Duplicate ACK”,表示当一台主机没有收到下一个期望的序列号的数据包时,就会生成最近收到一次数据的重复ACK,表明新的数据包未收到。“retransmission”的出现,表示数据包出现了丢失的情况。发生在收到重复的ACK,或者数据包的重传输计时器超时的时候。

Chats选项卡中的内容则是与TCP握手以及HTTP的GET请求相关,我们会在以后的课程中详细分析。最后的Details选项卡的内容则是将前面几个选项卡的内容进行了整合。

由此可见,Wireshark的专家信息对于我们的分析工作很有帮助,特别是当我们无从下手时,不妨先看看警告以及注意信息,或许能够从中找到答案。

猜你喜欢

转载自blog.csdn.net/qq_32392853/article/details/81569034