1.1 简介

Wireshark(前称Ethereal)是一款功能强大的网络抓包分析工具,利用它可将捕获到的各种各样协议的网络二进制数据流翻译为人们容易读懂和理解的文字和图表等形式,极大地方便了对网络活动的监测分析。它有十分丰富和强大的统计分析功能,可在Windows,Linux 和UNIX等系统上运行。它的名称于2006年5月由原Ethereal改为Wireshark。Wireshark网络协议分析软件可以十分方便直观地应用于计算机网络原理,网络的日常安全监测,网络性能参数测试,网络恶意代码的捕获分析,网络用户的行为监测,黑客活动的追踪等。因此它在世界范围的网络管理专家,信息安全专家,软件和硬件开发人员中,大学科研和实验工作中得到广泛的应用。

1.2 安装工具

1、安装TCPdump工具

输入命令:yum install tcpdump

安装TCPdump。
2、安装Wireshark工具

输入命令:yum install wireshark

安装Wireshark。
3、安装wireshark-gnome

输入命令:yum install wireshark-gnome

安装wireshark-gnome。

1.3 使用wireshark

1、 打开wireshark界面

输入命令:wireshark

打开wireshark界面如下图所示:

2、 Capture Options(捕获选项)各项的含义与设定点击右上角接口按钮,或点击菜单栏"Capture"的"Options"打开接口列表对话框,如下图所示:
在接口列表对话框中,点击“Options”按钮,弹出下图所示的捕获选项窗口:

通过上图,可以看到,Capture Options弹窗根据设置内容的不同,大致可以分为五个区域【图中分别用五个红色方框标注】。下面按照从上到下,从左到右的顺序,分区域依次介绍各个选项所包含的涵义,设置与否对我们有何影响。

  1. Capture[抓包相关设定]

    通过上图,可以看到,这个区域的选项都是会对数据包的捕获产生直接影响的,按照自上而下的顺序,具体包括:
    (1) 网卡列表
    位于此区域最上方,用于网卡的选择,勾选一项或多项复选框,则可在所选的网卡上抓包。
    (2) 选项:Capture on all interfaces
    勾选此选项,则表示捕获本机所有网卡上的网络数据包【这和上方的列表中勾选了所有的网卡是等价的】;反之,则只捕获网卡列表中指定网卡上的数据包。
    (3) 选项:Use promiscuous mode on all interfaces
    勾选此选项,则意味着Wireshark在抓包的时候让网卡开启混杂模式。简单点说,开启混杂模式的网卡可以捕获所有流过该网卡的帧,不开启则只能捕获广播帧以及发给该网卡的帧。
    (4) 按钮:Manage Interfaces点这个按钮,可以增、删“网卡列表”里的条目。【里面还可以设置管道以及远程网卡作为数据包来源】

  2. Capture Files[存包相关设定]
    这个区域的选项仅当你想要自动存包时才需要设置。实际应用中,有些情况下只是一个简单的临时分析,是不需要存包的;也有些情况是我们先实时捕获放在缓存,先大致看过后再选择性地存文件。这两种情况下,都不用设置这个区域的选项。
    (1) 输入框:File直接通过输入或是使用后方的Browse按钮,指定存放的文件名及其完整路径。默认是空白,意味着捕获的数据包存放在默认缓存目录下的临时文件中。

(2) 选项:Use pcap-ng format勾选这个选项,则Wireshark存文件时使用pcapng格式。当同时指定在多块网卡上抓包时,必须使用pcapng格式存文件;出于兼容考虑,单块网卡上的抓包不建议勾选。
(3) 选项:Use multiple files勾选此选项,则Wireshark会使用多个文件存储数据包;反之,则默认使用单文件存储。使用单文件还是多文件,取决于数据量的大小、你的目的等多个要素。
(4) 选项:Next file every N megabytes(s)/minute(s)
如果上面没有勾选“Use multiple files”,则此选项被禁、无效。使用多个文件存储时,必须指定切换下一个文件的条件。切换条件有两种形式,一是每当捕获多少流量(默认单位是Mb,也支持更小一点的Kb,以及更大一点的Gb)后切换,另一种是每当捕获间隔多长时间(默认单位分钟,也支持秒、小时、天)后切换。使用多个文件存储时,两种切换方式至少选其一!
(5) 选项:Ring buffer with N files如果上面没有勾选“Use multiple files”,则此选项被禁、无效。使用多个文件存储时,如果对文件数量有限制,且允许文件覆盖,可以勾选并设定此选项。这意味着,Wireshark在存包时最多创建N个文件,当达到切换条件需要创建第N+1个文件时,它会直接把捕获的数据包存入到当前最“老”(生成时间最早)的文件中,从而让最“老”的文件变成最“新”的文件。这就好比建立了一个容量为N的环形缓冲队列。
(6) 选项:Stop capture after n file(s)如果上面没有勾选“Use multiple files”,则此选项被禁、无效。使用多个文件存储时,如果对文件数量有限制,且不允许文件覆盖,可以勾选并设定此选项。这意味着,Wireshark在存包时最多创建N个文件,当达到切换条件需要创建第N+1个文件时,它就直接停止抓包。这种自动停止抓包的方法仅适用于指定使用多个文件存储时。
3) Stop Capture Automatically After[自动停止抓包设定]

在这个区域的选项可以帮助我们通过设置一些条件来让Wireshark自动停止抓包,需要额外提到的是,这些选项之间不是互斥的,可以勾选多个,他们之间是“或”的关系。
(1) 选项:N packet(s)勾选此选项后,Wireshark会在捕获到指定个数的数据包后,会自动停止抓包。
(2) 选项:N megabytes(s)勾选此选项后,Wireshark会在捕获到指定大小的数据流量后,会自动停止抓包。默认流量
单位是Mb,也支持更小一点的Kb,以及更大一点的Gb。
(3) 选项:N minute(s)勾选此选项后,Wireshark会以开始捕获为计时起点,经过指定长短的时间后,自动停止抓
包。默认时间单位分钟,也支持秒、小时、天。
4) Display Options[显示选项设定]

这个区域的选项用来对实时捕获的展示效果施加影响。
(1) 选项:Update list of packets in real time
勾选这个选项,会使得Wireshark在抓包时同时开启两个进(线)程,一个进(线)程负责捕获数据包,另一个进(线)程负责实时地解析、展示捕获的数据包;反之,Wireshark就会“一心一意”地抓包,等到停止抓包后,再一次性解析、展示所有捕获的数据包。显然的是,实时地解析、展示数据包,或多或少都会消耗CPU资源,所以会对捕获性能产生不小的影响,丢包率可能会因此而增大。
(2) 选项:Automatic scrolling in live capture
如果上面没有勾选“Update list of packets in real time”,则此选项被禁、无效。勾选这个选项,会使得Wireshark在开始抓包后, 将主窗口中的“数据包列表”子窗口自动滚动到最后一行,以便你随时都能在该子窗口的最底部看到最新捕获的数据包。不勾选,手动拖一下该子窗口的滚动条,效果也是一样的。
(3) 选项:Hide capture info dialog勾选这个选项, 会使得Wireshark抓包时,不弹出概要信息窗口,反之,则弹出该窗口。
5) Name Resolution[名称解析相关设定]

这个区域的选项用来对展示捕获结果时数据包各层的地址解析、显示效果作出设定。需要说明的是,这些解析结果只是临时性的,如果你把捕获的数据包存下来,Wireshark只会保存最原始的各层地址,而不会保存这些解析结果。
(1) 选项:Enable MAC name resolution勾选此选项后,Wireshark会尝试(但不保证)将MAC地址解析成更易识别的形式,例如:

仔细观察一下,你很容易发现,它其实只解析了MAC地址的前三个字节,后三个字节原封不动的保留在了解析结果里。这种解析的理论依据是,六字节的MAC地址其实可以对半分为两部分:前三个字节由IEEE的注册管理机构统一分配,称为OUI(组织唯一标识符)或是Company_id(公司标识符),一般可以通过这三个字节识别出生产厂商;后三个字节由厂商自行分配,意义不大。
(2) 选项:Enable network name resolution
勾选此选项后,Wireshark会尝试将网络层地址(一般就是IP地址)解析成更易识别的形式(例如域名、主机名)。它的实现一般是通过调用gethostname()的反向域名查询【参看《DNS中的正向解析与反向解析》】形式,这可能导致两个问题:
1.会因查询产生额外的DNS流量,在某些分析过程中,会影响分析结果的准确性;
2.会因查询占用系统资源而导致捕获性能受到影响。所以不建议抓包的时候勾选这个选项,分析的时候可以设置这个。
(3) 选项:Enable transport name resolution勾选此选项后,Wireshark会尽可能将传输层地址(一般就是端口号)解析成其对应的应用层服务。例如:

1. 80、8080 ==> http
 2. 21 ==> ftp
 3. 23 ==> telnet
 4. 25 ==> smtp
 5. 53 ==> dns
 6. 110 ==> pop3
 7. 443 ==> ssl、tls

这种解析的原理在于,很多常用的服务往往绑定固定的端口号(0~1023),这些端口号一般称为熟知端口号或是系统端口号。

1.4 捕获和分析数据包

1、开始捕获数据包
如下图所示,可以在捕获接口窗口或捕获选项窗口点击start开始捕获数据包。几分钟后就捕获到许多的数据包了,主界面如图所示:


如上图所示,可看到很多捕获的数据。
第一列是捕获数据的编号;
第二列是捕获数据的相对时间,从开始捕获算为0.000秒;
第三列是源地址,第四列是目的地址;
第五列是数据包的信息。
选中第一个数据帧,然后从整体上看Wireshark的窗口,主要被分成三部分。上面部分是所有数据帧的列表;中间部分是数据帧的描述信息;下面部分是帧里面的数据。

2、开始分析数据

  1. arp协议数据分析
    在下图中Filter后面的编辑框中输入:arp(注意是小写),然后回车或者点击“Apply”按钮

    现在只有ARP协议了,其他的协议数据包都被过滤掉了。注意到中间部分的三行前面都有一个右三角号,点击它,这一行就会被展开。如下图所示:

    现在展开第一行。看到的结果如下:

在上图中我们看到这个帧的一些基本信息:
帧的编号:1(捕获时的编号)
帧的大小:42字节。再加上四个字节的CRC计算在里面,满足最小64字节的要求。
帧被捕获的日期和时间:Jan 11,2017……
帧距离前一个帧的捕获时间差:0.000000000……
帧距离第一个帧的捕获时间差:0.000000000……
帧装载的协议:ARP
现在展开第二行,我们可以看到:

Ethernet II帧格式
目的地址(Destination):ff:ff:ff:ff:ff:ff(这是个MAC地址,这个MAC地址是一个广播地址,就是局域网中的所有计算机都会接收这个数据帧)
源地址(Source):Vmware_6a:00:e6(00:0c:29: 6a:00:e6)。
帧中封装的协议类型:0x0806,这个是ARP协议的类型编号。
展开第三行:

地址解析协议
硬件类型:以太网
协议类型:IP
硬件大小:6
协议大小:4
发送方MAC地址:Vmware_6a:00:e6(00:0c:29: 6a:00:e6)
发送方IP地址:192.168.112.128(192.168.112.128)
目的MAC地址:00:00:00_00:00:00(00:00:00:00:00:00)
目的IP地址:192.168.112.254(192.168.112.254)
2) tcp协议数据分析
在下图中Filter后面的编辑框中输入:tcp(注意是小写),然后回车或者点击“Apply”按钮选中数据帧的列表中一行,则如下图所示,中间显示该数据帧的描述信息,注意到中间部分的三行前面都有一个右三角号,点击它,这一行就会被展开。


现在展开第一行。看到的结果如下:

在上图中我们看到这个帧的一些基本信息:
帧的编号:144(捕获时的编号)
帧的大小:60字节。再加上四个字节的CRC计算在里面,满足最小64字节的要求。
帧被捕获的日期和时间:Jan 11,2017……
帧距离前一个帧的捕获时间差:0.000005089……
帧距离第一个帧的捕获时间差:1671.429518118……
帧装载的协议:TCP
现在展开第二行,我们可以看到:Ethernet II帧格式目的地址(Destination):Vmware_ea:ea:68(00:50:56:ea:ea:68)

源地址(Source):Vmware_6a:00:e6(00:0c:29: 6a:00:e6)。
帧中封装的协议类型:0x0800,这个是TCP协议的类型编号。
展开第三行:

协议版本信息
版本:4位字段
数据报协议头长度:20字节
与源数据报的起始端相关的分片数据位置:0
Time-to-Live计数器:128
接收导入数据包的上层协议:TCP(6)
源主机IP地址:172.217.24.14(172.217.24.14)
目标主机IP地址:192.168.112.128(192.168.112.128)
展开第四行:
传输控制协议
源端口:443
目的端口:45317
序列号:4347
确认序列号:5274
协议头长度:20字节
接收缓冲区的空闲空间:64240

Logo

更多推荐