1.3 一次完整的Wireshark使用过程
我们已经了解Wireshark的功能以及工作方式了,下面开始简单地了解一下Wireshark的使用过程,通常这个过程应该包含如下的几个步骤:
•选择合适的网卡;
•开始捕获数据包;
•过滤掉无用的数据包;
•将捕获到的数据包保存为文件。
本章就以浏览器访问“www.wireshark.org”的过程作为一次观察目标,演示Wireshark的操作方法,在这期间不会涉及复杂的操作,但是会包含Wireshark的完整工作流程。通过本章的讲解,你将会了解Wireshark的使用流程。
1.3.1 选择合适的网卡
好了,现在我们首先来启动Wireshark,图1-2中就是这个工具的启动界面。
图1-2 Wireshark的启动界面
每次启动Wireshark时你都会看到这个界面,这里面使用方框标记出来的部位是我们需要考虑的第一个问题:在这次操作时应该使用哪一个网卡?
这是一个很重要的问题,大多数时候我们所使用的计算机都会有两个以上的网卡,比如笔记本计算机上都会有无线和有线两块网卡,如果计算机安装了虚拟机软件的话,还会多出来一些虚拟网卡(图1-2中VMware和Virtual开头的网卡就是虚拟网卡)。而一些有特殊用途的计算机,例如同时连接到两个网络的服务器也会安装多个网卡。这样往往会给Wireshark的初学者带来困惑,我们如何才能选择合适的网卡来捕获数据包呢?
在图1-2的Wireshark的启动界面中列出了当前计算机上所有网卡设备的名称以及流经该网卡的数据包信息。但是在这个界面中并没有显示出所有网卡的详细信息,例如硬件地址、IP地址等,这会给网卡选择带来一些困难。通常我们应该选择的是有数据包经过的活动网卡,那么如何才能判断一个网卡中是否有数据包经过呢?这些网卡中有数据包经过的时候,就会在后面以曲线图的形式展示数据包的数量,而如果没有数据包经过时,后面就会显示为直线,例如图2-1中的无线网络连接7和无线网络连接8都是没有数据包经过的。
接下来,如果希望查看网卡的IP地址信息,就可以在工具栏上选择“捕获选项”,这样就可以打开如图1-3所示的Wireshark捕获窗口。
图1-3 Wireshark的工具栏
在这个窗口中每个网卡左侧都有一个三角形按钮,单击这个按钮就可以显示详细信息,这些信息中最有用的就是IP地址,例如图1-4中所示的“本地连接2”这个网卡使用的地址192.168.1.100。
图1-4 Wireshark的捕获接口界面
在这个操作窗口中,选中需要使用的网卡,然后单击下面的“开始”按钮,就可以开始捕获数据包了。
1.3.2 开始数据包的捕获
从现在开始起,Wireshark将会捕获所有流经选定网卡设备的数据包,包括从Wireshark所在主机发出的和发往Wireshark所在主机的。而所有捕获到的数据包都会展示在Wireshark的工作界面中,如果你之前没有使用过数据包捕获工具的话,可能会觉得这些信息非常难以理解。不过随着对本书的阅读,这些问题都会迎刃而解。图1-5就给出了一个正在进行数据包捕获的Wireshark工作界面。
图1-5 Wireshark在进行数据包捕获时的工作界面
现在不要关掉Wireshark,然后启动操作系统中的浏览器(例如firefox),在地址栏中输入目标地址“www.wireshark.org”,如图1-6所示。
图1-6 www.wireshark.org的主页
等到这个页面完全打开之后,Wireshark就已经捕获到了在此期间产生的所有数据包。然后你就可以在Wireshark中停止这个捕获过程,单击菜单栏上的红色方框按钮,如图1-7所示。
图1-7 Wireshark工具栏上停止捕获按钮
现在已经成功地完成了数据包的捕获操作了,在开始对这个数据包进行分析之前,我们先来了解一下Wireshark友好的操作界面,图1-8中将Wireshark工作界面分成了8个部分。
图1-8 Wireshark操作界面的8个部分
图1-8中展示的Wireshark操作界面的8个部分如下所示。
(1)标题栏,这部分位于操作界面的最上方,用来显示所分析的捕获数据包文件的名称、捕获的设备(网卡)名称。例如,现在我们就是使用“本地连接2”所对应的网卡进行捕获数据包。
(2)菜单栏,这部分位于标题栏的下方。使用Windows操作系统的读者对于这个界面应该不会感到陌生,例如常见的“文件”“编辑”“视图”和“帮助”等菜单选项。另外也有一些Wireshark所特有的菜单选项,例如“捕获”“分析”和“统计”等。
(3)工具栏,在菜单栏下方的就是工具栏,它是由一个一个的工具图标组合而成,每一个工具图标对应着特定的功能。但这些功能都是菜单选项包含的,往往是那些在数据包捕获和分析期间最常用的操作。
(4)显示过滤器,工具栏下面是Wireshark的显示过滤器,需要注意的是在Wireshark中有两个不同的过滤器(捕获过滤器和显示过滤器)。显示过滤器的作用是将捕获的所有流量进行筛选,过滤掉不需要的流量。
(5)数据包列表面板,这个面板按照顺序显示实时捕获到的数据包,列表中的每一行表示一个捕获到的数据包,而每一列表示数据包的特定信息。
每一列所对应的信息如下所示。
•No:按顺序的唯一标识数据包的序列号。
•Time:捕获数据包时的时间戳。
•Source:捕获数据包的源IP地址。
•Destionation:捕获数据包的目的IP地址。
•Protocol:捕获数据包的协议类型。
•Length:捕获数据包的大小。
•Info:数据包的附加信息。
(6)数据包细节面板,在前面的数据包列表面板中,我们可以看到一系列捕获到的数据包。如果想要查看某个数据包的详细信息,就可以选中它,这样在下方的数据包细节面板中就会显示出它的详细信息。
在这个面板中按照协议显示了数据包的详细内容,这些协议按照树状结构组织,可以展开和折叠。展开和折叠的状态可以通过单击协议前面的三角形图标来切换。例如图1-8中的Frame、Ethernet、Internet Protocol Version 4等部分都是折叠的,而User Datagram Protocol部分就是展开的,你可以在下方看到这个数据包UDP协议部分的详细信息。
(7)数据包字节面板,这个面板以我们易于理解的方式显示了数据包的内容,但是这并不是数据包真实的样子。在数据包字节面板这里则显示了数据包未经处理的本来面目,这也就是数据包在网络上传输时的样子。
数据包细节面板将信息分成了3列,左侧灰色的第1列表示数据的偏移量。第2列是以十六进制表示的数据包内容,第3列是以ASCII码表示的数据包内容。
(8)状态条,这个面板显示了当前操作的状态,从这个面板中可以看到捕获状态,包括已经捕获到数据包的数量和已经使用的配置文件。单击状态条最左侧的黄色圆形按钮可以启动Wireshark提供的“专家系统”。
1.3.3 过滤无用的数据
现在你已经可以使用Wireshark来开始分析数据包了,现在又一个难题摆在面前了。就在你选择了合适的网卡,并按下了Wireshark的开始按钮之后,数据包列表面板就会快速显示出大量的数据包,如何才能在其中找到我们想要的内容呢?
Wireshark中提供了丰富的数据包过滤机制,这些内容将在下一章中进行详细的讲解。在本节中我们只介绍一种最为简单也最为有效的方法,那就是根据IP地址来过滤掉无用的数据。因为源IP地址和目的IP地址是所有数据包都必须具备的两个值,这样可以很容易地找到那些我们感兴趣的IP发出的或者收到的数据包。最简单的办法就是使用Wireshark中提供的会话统计功能,Wireshark将相同的源地址和目的地址(例如192.168.0.1到1.1.1.1)之间的所有数据包看作是一个对话,我们可以在对话统计功能中查看所有的对话。
在Wireshark的菜单栏上,依次单击“统计”→“对话”,然后在打开的“对话”窗口中选中“IPv4”选项卡。如图1-9所示,这个选项卡以一个表格的形式显示,其中的标题包括“Address A”“Address B”“Packets”“Bytes”“Packets A->B”“Bytes A->B”“Packets B->A”“Bytes B->A”“Res Start”“Rel Start”“Duration”“bits per second(bps)”,它们的含义分别如下所示。
图1-9 Wireshark的“对话”窗口
•Address A:该次对话的A地址。
•Address B:该次对话的B地址。
•Packets:该对话中的数据包数量。
•Bytes:该对话中产生全部数据包的大小。
•Packets A→B:从A地址发往B地址数据包的数量。
•Bytes A→B:从A地址发往B地址数据包的大小之和。
•Packets B→A:从B地址发往A地址数据包的数量。
•Bytes B→A、从B地址发往A地址数据包的大小之和。
•Rel Start、这个值表示的是从Wireshark开始捕获数据包到对话建立之间的时间间隔。
•Duration:这个对话建立的时间。
•Bits/s A→B:这个对话从A到B每秒钟平均网络流量。
•Bits/s B→A:这个对话从B到A每秒钟平均网络流量。
这些“标题”不仅有提示作用,还可以实现排序的功能,例如我们想要知道哪个会话中产生最多的流量,就可以在“Bytes”标题上单击,这样这些会话就会按照流量从大到小的顺序重新排列。图1-10中就是按照流量进行排序后的对话列表。
图1-10 Wireshark中的对话列表
如果在这个期间你没有从事过其他的网络活动(例如在线看视频、下载等),那么现在最上方的也就是流量最大的对话就是在你的浏览器和www.wireshark.org之间建立的。
从图1-10中可以看出来,104.25.219.21与192.168.1.102之间对话产生的流量最多为21k。再看这一行的“Bytes A→B”列的值为13k,这说明大部分网络流量是从104.25.219.21发往192.168.1.102的。不过这里可能有人会感到好奇,这个会话真的是我们所在观察的那个吗?
之所以会有这样的疑问,原因很简单,平时我们所使用的都是域名,但是Wireshark中显示的却是IP地址。而我们现在最大的困难在于并不知道www.wireshark.org所对应的IP地址是什么。不过,Wireshark中提供了一种“名字解析”的功能,如果启用了这个功能的话,那么你以后看到的就不再是那些难以理解的IP地址,而是很容易理解的域名了。
但是这个转换并不是Wireshark本身的功能,而是它向DNS服务器发送请求得到的。在Wireshark进行数据包捕获的时候,如果启用了这个“名字解析”功能的话,在给我们带来极大便利的同时,也将会给系统带来很大的负担。所以,在默认情形下,Wireshark是不会开启这个功能的。一个很好的解决方法就是,我们可以在数据包捕获过程结束之后,再启用“名字解析”的功能。
好了,下面我们来看一下启用“名字解析”的过程,依次在菜单栏上单击“视图”→“解析名称”→“解析网络地址”,然后Wireshark就会尝试将捕获到数据包中的IP地址转换为域名,你可以观察一下现在Wireshark的数据包列表面板,如图1-11所示。
图1-11 启用了“解析网络地址”之后的数据包细节面板
现在我们返回到“对话”窗口中,这时里面的IP地址没有任何的变化。Wireshark为了方便我们自行选择查看IP地址还是域名,在这个窗口的左下方有一个“解析名称”的复选框,只有当选中了这个复选框之后,里面的IP地址才会被解析为域名,如图1-12所示。
图1-12 启用了“解析网络地址”之后的会话列表
好了,现在已经可以看到我们的主机与Wireshark之间通信的统计数据了。但是这里面的详细信息还是显示在数据包列表面板中,而且那些与这次会话无关的流量也都显示在这里了,有没有什么办法可以在数据包列表面板中只显示当前会话呢?
Wireshark中提供了十分强大的过滤功能,这一点我们将会在后面进行详细的讲解。这里有一个简单的方法来对捕获到的数据进行过滤,例如只保留主机与www.wireshark.org之间进行通信的流量。方法如下,首先在“会话”窗口里选中第一个会话,然后单击鼠标右键,在弹出的菜单中依次单击“作为过滤器应用”→“选中”→“A←→ B”(见图1-13)。
图1-13 在会话列表中创建过滤器
这样一来,Wireshark就会自动创建并应用这个过滤器。在数据包列表面板中除了主机与Wireshark会话所产生的数据包就都被过滤掉了。这时你也可以观察一下显示过滤器部分,这里面已经多了一个表达式(见图1-14)。
图1-14 创建好的显示过滤器
这个表达式的含义很简单,就是只保留ip地址为104.25.219.21和192.168.1.102的数据包,这样在分析起来的时候就可以过滤掉大量无用的数据包。
用鼠标拖动右侧的滚动条来查看所有的数据包列表面板里面的数据包,就可以发现这里面所有的数据包都是来自或者发往www.wireshark.org的。但是这些显示的数据包的序号(No.)大都是不连续的,表示里面有很多数据包被隐藏了。
1.3.4 将捕获到的数据包保存到文件
现在已经从那些流量中找到了我们感兴趣的部分,接下来就将这部分保存起来以便日后学习和研究使用。
将这些数据包保存为文件的方法如下,依次在菜单栏上单击“文件”→“导出特定分组”,这时会弹出“导出特定分组”对话框,在这里面“保存在”的后面选中你要保存文件的目录。然后在“文件名”输入要保存的名称,在保存类型选择保存的格式,默认为Pcapng(见图1-15)。
图1-15 导出特定分组
我们可以控制保存数据包的范围,这个可以通过“Packet Range”来实现。默认情况下,Wireshark下方的“All packets”选项是选中状态。这时右侧两个单选框可以选择,如果“Captured”被选中的话,表示将所有的数据包都保存起来。
如果在这次过滤过程中使用了过滤器的话,则可以选择“Displayed”,这样就只会将符合过滤规则的部分保存起来,也就是只包含了我们主机和Wireshark服务器之间通信的数据包。完成了这些工作之后,单击“保存”即可。
当你保存了这些数据之后,Wireshark并不会自动关闭,而是保持之前的状态。只需要删除显示过滤器中的内容就可以查看全部捕获的数据包。而如果你需要打开之前保存的那个文件,只需在菜单栏上依次单击“文件”→“打开”,然后在文件对话框中选中文件,单击“打开”即可。