6.3.1 利用Wireshark进行协议分析(一)
Wireshark是目前全球使用最广泛的抓包软件,也是很强大的抓包软件,不管从事网络测试还是软件开发工程师,Wireshark都是一个非常实用的好工具。单纯的学习网络理论知识很抽象,更难以深入理解网络协议内部的工作过程,有了Wireshark之后,网络推进的细节以及每个协议分组的结构都以非常直观的方式展现在我们眼前。
这里我们学习达到以下目的
- 熟练使用网络流量捕获工具Wireshark
- 掌握使用Wireshark分析网络协议的方法
- 掌握常用的与网络操作相关的系统内部命令
- 了解常用的网络应用服务内部的协议工作过程
Wireshark工作环境
-
本地流量的获取:仅仅捕获本地主机产生和接收到的网络流量,本地流量的捕获是最简单Wireshark应用,只要将主机接入到互联网中,在主机上运行Wireshark软件就可以实现,所有本地网络应用进程生成的流量或接收来自网络的流量,只要流进网卡就能被捕获到。
-
相同冲突域流量的捕获:如集线器构建的局域网范围内的网络流量,这种方式是把主机直接接入到以太集线器端口上,我们知道集线器实际是工作在物理层的网络设备(4.3.1 局域网的扩展(一)),负责将一个端口接收到的比特,不加区分的抓发给其他所有端口,一个集线器下的所有主机都工作在一个相同的冲突域中,任何一个主机发送的数据不管接受者是谁,连接到这台集线器上的所有主机除了发送者之外都能接收到,我们在任何一个主机上安装并运行Wireshark软件就能捕获由集线器构建的网络内的所有流量,这种使用方法充分利用了集线器的物理层广播特性,无需额外的软件或硬件
-
交换机多端口流量的捕获:采用一些方法或措施捕获交换机构建网络下的流量。这种方式是将主机接入到本地交换机的任意接口上,交换机与集线器不同,我们知道交换机是工作在数据链路层的(4.3.3 局域网的扩展(三)数据链路层扩展局域网)也就是说交换机需要根据目的主机的MAC地址来转发数据分组
如图
主机C发送给主机B的数据帧,交换机只会转发给B主机所连接的端口上,如果不做处理的话主机A是捕获不到该流量的。在这种情况下如果在主机A上安装运行Wireshark想要捕获其他端口的流量就可以采用以下两种方法获取。
- 端口镜像技术,简单的说就是把交换机的某个端口接收或者发送的数据复制给其他的端口,这个功能我们可以通过对交换机执行相关的配置命令来实现,不同交换机的命令形式也有所不同,为了使主机A能够捕获到主机B和C之间的通信流量,我们可以将主机B和C连接的交换机端口配置成镜像的源端口,主机A连接的端口配置成镜像的目的端口。
- ARP欺骗(5.2.6 地址解析协议ARP),这个需要借助于执行ARP欺骗功能的特定的软件来实现,我们知道ARP欺骗是利用ARP协议自身不足而实施的攻击行为,为了捕捉B和C之间的流量,A主机可以伪造成B或者C的身份,利用虚假的地址来更新C或者B主机的ARP缓存,从而截获B或者C的流量,这种方式这里并不推荐。
我们先来做一些准备主要通过以下示例来进行协议分析
-
捕获并解析ICMP报文
我们知道ICMP的主要任务是报告其他协议过程中出现的差错情况(5.2.7 因特网控制报文协议ICMP),但是这种差错报告一般不太容易捕获到,为了便于协议的分析我们通过执行系统内部命令ping来主动产生ICMP报文。具体的过程是
- 执行ping命令,在程序的运行过程中我们会发送和接收到ICMP报文
- 在Wireshark中设定过滤条件来捕获ICMP报文
-
捕获并解析ARP报文
我们已经知道ARP协议的作用(5.2.6 地址解析协议ARP),在以太网中ARP协议是如何进行地址解析的,我们知道一般情况下主机都会设置ARP高速缓存,用来存放已经解析过的或者已经获知的IP地址和MAC地址的映射。所以我们可以使用
ARP -a
命令来查看本机的ARP高速缓存,查看有哪些地址绑定的信息,通过运行Wireshark软件设定过滤条件,从而捕获ARP报文并进行格式分析。我们也可以手动设置本机IP地址看看在这样的情况下会不会产生相应的ARP报文。
-
网页提取过程的协议分析
网页提取是属于万维网的服务,为了捕获网页浏览动作,和产生的网络协议数据报文,需要我们事先做好一些准备工作比如
- 清空浏览器历史记录、清空本地DNS缓存
- 运行浏览器、Wireshark软件,输入网址或者点击链接
- 设定过滤条件,捕获HTTP报文、DNS报文、TCP报文
- 分析协议工作过程。