第1章
绪论
1.1 用Wireshark分析典型TCP/IP体系中的协议
1.1.1 实验内容
1. 实验目的
通过Wireshark软件分析典型网络协议数据包,理解典型协议格式和存在的问题,为后续学习和相关实验打下基础。
2. 实验内容与要求
(1)安装Wireshark,熟悉功能菜单。
(2)通过HTTP、HTTPS进行访问目标网站(如学校门户网站)、登录邮箱、ping等操作,用Wireshark捕获操作过程中产生的各层协议数据包(要求至少包括IP协议、ICMP协议、TCP协议、UDP协议、HTTP协议),观察数据包格式(特别是协议数据包首部字段值),定位协议数据包中的应用数据(如登录时的用户名和口令在数据包中的位置;如果使用加密协议通信,则看不到应用数据,应明确指出)。
(3)将实验过程的输入及运行结果截图放入实验报告中。
3. 实验环境
(1)实验室环境,实验用机的操作系统为Windows。
(2)最新版本的Wireshark软件(https://www.wireshark.org/download.html)。
(3)访问的目标网站可由教师指定,邮箱可用自己的邮箱。
1.1.2 Wireshark简介
Wireshark的前身是Ethereal,2006年6月,因为商标的问题,Ethereal更名为Wireshark。Wireshark使用WinPcap作为接口,直接与网卡进行数据报文交换。
下面简要介绍Wireshark的安装与使用。需要说明的是,不同系统平台上不同版本的Wireshark的安装和用户界面可能会有所不同。本书示例使用的Wireshark版本为Windows操作系统下的Stable Release 3.2.5, Windows Installer 64-bit。
注意:除了操作系统平台(如Windows、Linux、macOS)不同,同种操作系统也有64位和32位的差别。下载时,需根据计算机的相关信息选择合适的版本,如果选择的版本不对,安装时系统会给出错误提示。
1. Wireshark的安装
从Wireshark官网上下载软件后,进行解压,双击安装文件,弹出安装窗口,单击“Next”按钮即开始安装。在Windows环境下,安装过程中一般直接单击“Next”按钮就可以了。
需要说明的是,Wireshark要求安装Npcap或WinPcap接口(如果系统中没有安装,则在安装过程会提示安装,如图1-1所示)。
图1-1 安装Wireshark所需的Npcap
在安装Npcap时,有一些选项可以设置(如图1-2所示),通常情况下,使用默认设置即可。
图1-2 Npcap安装可选项
2. Wireshark的使用
Wireshark主界面如图1-3所示。
图1-3 Wireshark主界面
主界面上显示了Wireshark能够感知的所有网络接口,也可以通过执行菜单命令“捕获”→“选项”弹出“捕获接口”对话框,在对话框中的“输入”选项卡下也能看到网络接口信息,如图1-4所示。通常情况下,如果主机是通过有线局域网连接的,对应的网络接口是图1-4所示的“以太网”;如果是通过Wi-Fi连接的,对应的网络接口是图1-5所示的“WLAN”。如果Wireshark启动后,软件找不到任何一个网络接口,在Windows 10(Windows 7)操作系统中,一个可能的原因是用普通用户身份启动的Wireshark,用管理员身份启动Wireshark即可解决,启动方法如图1-6所示;其他可能的原因有WinPcap版本或安装过程有问题、没有启动NPF服务等。观察接口名称右边的流量曲线图,即可知网络接口上是否有网络流量,如果没有流量,则是一条直线,如图1-3所示的本地连接*7、*8。
图1-4 “捕获接口”对话框中的网络接口信息
图1-5 WLAN接口
图1-6 在Windows 10中用管理员身份启动Wireshark
为了监听网络流量,需要勾选图1-4中的“在所有接口上使用混杂模式”选项。
如果不勾选“在所有接口上使用混杂模式”选项,则Wireshark只能捕获本机上流入流出的数据包。假如在其他应用中将网络接口设置为混杂模式,而在Wireshark中关闭了这一选项,则Wireshark中该网络接口依旧使用混杂模式进行数据包捕获。但同时也应注意到,设置为混杂模式后,并非就能够获取局域网中的所有数据包,在交换网络中Wireshark依旧只能捕获本机上流入流出的数据包。
“捕获接口”对话框中还有“输出”“选项”等选项卡,一般情况下使用默认设置即可。
在开始捕获网络数据包之前,可以为指定网络接口上的捕获过程设置过滤器,也就是只捕获指定类型的网络数据包,如图1-7所示(单击图1-7下部“所选择接口的捕获过滤器”右边的小橘黄块,弹出预定义的过滤器供用户选择)。Wireshark定义了一些常用的过滤器,如图1-8所示,在该界面中可以新增()、删除()过滤器。
图1-7 为指定网络接口上的捕获过程设置过滤器
图1-8 常用的过滤器
捕获过滤器语法规则如下:
各字段说明如下。
• Protocol:指定捕获的协议,常见协议包括ether、fddi、ip、arp、rarp、decnet、lat、sca、moprc、mopdl、tcp、udp等。如果不指明协议,默认支持全部协议。
• Direction:指定数据包方向,选项包括src、dst、src and dst、src or dst。如果不指明方向,默认使用src or dst。
• Host(s):指定主机,选项包括net、port、host、portrange,默认使用host。
• Logical Operations:指定逻辑运算符,选项包括not、and、or,其中not具有最高优先级,and、or优先级相同,从左向右运算。
下面给出几个过滤器示例:
(1)捕获目标端口为23的TCP协议包:tcp dst port 23。
(2)捕获来源IP地址为18.11.3.22的IP协议包:ip src host 18.11.3.22。
(3)捕获来源端口号在2000~3000之间的TCP协议包:tcp src portrange 2000-3000。
(4)捕获端口号在7000~8000之间和80的TCP协议包:tcp portrange 7000-8000 and port 80。
(5)捕获非TCP协议的包:not tcp。
选择好过滤器或使用默认过滤器就可以开始捕获数据包,单击主界面功能图标行最左边的蓝色小图标(也可以通过“捕获”菜单项进入),即启动了捕获过程,捕获结果窗口如图1-9所示。
图1-9 捕获结果窗口
如图1-9所示,结果显示主要包括三部分:上部为数据包列表项,按时间先后顺序列出了每一个数据包的简要信息,主要包括时间、源地址、目的地址、协议、长度、简要信息等,每个数据包一行。中间部分显示指定数据包(上部数据包列表部分被选中的数据包)的协议信息,从上到下分别显示出该数据包的封装协议,图1-9中所示的HTTP协议数据包通过TCP协议传输,TCP数据包通过IPv4协议传输,IPv4协议包通过Ethernet协议传输等。下部为指定协议(中部协议列表部分被选择的协议)的数据包内容,通常是以十六进制数来表示的。
双击中间部分的某一协议可以弹出该协议的详细信息显示窗口。
由于捕获过程中捕获了各种协议的大量数据包,显示在图1-9所示的结果窗口上部,不利于查看。因此,Wireshark为结果显示提供了显示过滤功能。如图1-10所示,在结果查看过滤器输入处选择了“http.request.method = = “POST””过滤器,则上部的捕获结果窗口只显示HTTP协议的POST请求数据包。不同协议支持的过滤器有所不同,用户在输入协议名称时,软件会适时地提示可供选择的过滤器的主要内容。
图1-10 捕获结果查看过滤器
显示过滤器语法如下:<协议> <字段> <比较运算符> <值>。
其中,比较运算符包括==、!=、<、>、>=、=,逻辑运算符包括and、or、not(没有条件满足)、xor(有且仅有一个条件满足)。
例如,
(1)显示TCP协议的包:tcp。
(2)显示TCP协议源端口为23的包:tcp.srcport==23。
(3)显示UDP协议目标端口大于3000的包:udp.dstport>3000。
(4)显示TCP协议中长度大于512的包:tcp.len>512。
如果要结束数据包捕获,只需单击主界面功能图标行的第2个红色方块小图标即可(也可以通过“捕获”菜单中的下拉菜单来停止)。捕获结束后,软件提供了各种统计分析功能。
1.1.3 实验示例
本节给出实验要求中的部分内容示例(截图对一些敏感信息进行了涂黑处理)。
启动Wireshark并开始监听。
1. 登录某不加密的Web邮箱
Web邮箱登录界面主要部分如图1-11所示。
图1-11 Web邮箱登录界面主要部分
在捕获结果窗口中,设置显示过滤器,只显示HTTP协议的POST请求(通过这个请求来提供用户名和口令),结果如图1-12所示。
在下部POST请求数据包内容部分,我们可以看到输入邮箱名(wulifa)和口令(nnnn)的明文(如图1-12中红框所示),说明该Web邮箱没有启用HTTPS加密传输,而是采用HTTP协议明文传输。需要注意的是,实验时,输入用户名和口令时,不要输入自己真实的用户名和口令,以免泄露自己的隐私信息。
2. 登录支持加密的Webmail(以vip.163.com为例)
登录界面如图1-13所示。
利用Wireshark捕获登录过程的交互数据包,如图1-14所示。从该图中可以看出,登录wulifa@vip.163.com过程中的HTTP协议报文作为TLS安全协议的数据被加密,无法看到用户提交的任何信息。
图1-12 Web邮箱登录请求数据包捕获
图1-13 登录wulifa@vip.163.com
通过登录过程数据包还可以观察到TCP协议的三次握手过程,图1-15所示的是连接请求(第一次握手),图1-16所示的是对请求的响应(第二次握手),图1-17所示的是对响应的响应(第三次握手)。同时,还可以从TCP协议首部数据包中看到相关序列号、源端口、目的端口等信息。图1-18是数据包详细信息弹出窗口中显示的TCP包固定首部的20个字节的内容。
图1-14 登录wulifa@vip.163.com过程中的协议数据包
图1-15 TCP连接的第一次握手(SYN标志置位)
图1-16 TCP连接的第二次握手(SYN、ACK标志置位)
图1-17 TCP连接的第三次握手(ACK标志置位)
图1-18 TCP协议固定首部(20个字节)
3. 通过ping操作观察ICMP协议数据包
启动一个命令窗口(cmd),在命令窗口中执行命令:ping www.njupt.edu.cn,即可用Wireshark捕获到ping命令所产生的ICMP协议报文,如图1-19所示。图中显示ping命令使用的是ICMPv6协议,而不是ICMPv4协议。
图1-19 ICMPv6协议
4. 观察IPv4协议数据包格式
在前述操作过程中,一般都可以捕获到IP协议数据包。IPv4协议数据包示例如图1-20所示。图1-21所示的是在数据包详细信息弹出窗口中显示的IPv4数据包固定首部信息(20个字节),单击首部中某一字段,即可定位到该字段在数据块中的位置,图1-22所示的是源IP地址字段。
图1-20 IPv4协议数据包示例
图1-21 IPv4数据包固定首部信息
图1-22 IPv4首部展开后源IP地址字段内容