mariaDB
782
2022-05-30
Wireshark的历史相当久远丰富,其最初的版本叫作Ethereal,由毕业于密苏里大学堪萨斯城分校计算机科学专业的Gerald Combs出于项目需要而开发,并于1998年以GNU Public Licence(GPL)开源许可证发布。
在Ethereal发布8年之后,Combs辞职并另谋高就,但是在那个时候他的雇主公司掌握着Ethereal的商标权,而Combs也没能和其雇主就取得Ethereal商标达成协议。于是Combs和整个开发团队在2006年年中的时候将这个项目重新冠名为Wireshark。
Wireshark随后迅速地取得了大众的青睐,而其合作开发团队也壮大到500人以上,然而Ethereal项目却再没有前进过一步。
如果你喜欢前两个版本,那么相信你也会喜欢这本书。它延续了之前的写作风格,以一种简单易懂的方式来分析解释。
如果你因为缺少关于网络或Wireshark更新的最新信息而不愿意尝试之前的两个版本,那么你可以阅读本书,因为这里包含了新的网络协议扩展内容和关于Wireshark 2.x的更新信息。
我是一个非常随意的人,所以,当我教授你一个概念时,我也会尝试用非常随意的方式来进行解释。
而本书的语言也会同样随意,虽然晦涩的技术术语很容易让人迷失,但我已经尽我所能地保持行文的一致与清晰,让所有的定义更加明确、直白,没有任何繁文缛节。
然而我终究是从伟大的肯塔基州来的,所以我不得不收起我们的一些夸张语气,但如果你在本书中看到一些粗野的乡村土话,请务必原谅我。
如果你真的想学习并精通数据包分析技术,你应该首先掌握本书前几章中介绍的概念,因为它们是理解本书其余部分的前提。
本书的后半部分将是纯粹的实战内容,或许你在工作中并不会遇到完全相同的场景,但在学习本书后你应该可以应用所学到的概念与技术,来解决你所遇到的实际问题。
Wireshark入门
1.1 Wireshark的优点
Wireshark在日常应用中具有许多优点,无论你是初学者还是数据包分析专家,Wireshark都能通过丰富的功能来满足你的需要。我们之前为挑选数据包嗅探工具提出过一些重要的判断特征,让我们来检查一下Wireshark是否具有这些特征。
支持的协议:Wireshark在支持协议的数量方面是出类拔萃的——在本书截稿时Wireshark已提供了超过1000种协议的支持。这些协议从最基础的IP协议和DHCP协议到高级的专用协议,比如DNP3和BitTorrent等。由于Wireshark是在开源模式下进行开发的,因此每次更新都会增加一些对新协议的支持。
用户友好度:Wireshark的界面是数据包嗅探工具中一种很容易理解的界面。它基于GUI,并提供了清晰的菜单栏和简明的布局。为了增强实用性,它还提供了类似于不同协议的彩色高亮,以及通过图形展示原始数据细节等不同功能。与类似于Tcpdump使用复杂命令行的那些数据包嗅探工具相比,Wireshark的图形化界面对于那些数据包分析的初学者而言,是十分方便的。
价格:由于Wireshark是开源的,因此它在价格上面是无以匹敌的。Wireshark是遵循GPL协议发布的自由软件,任何人无论出于私人还是商业目的,都可以下载并且使用。
软件支持:一个软件的成败取决于其后期支持的好坏。虽然像Wireshark这样自由分发的软件很少会有官方正式的支持,它依赖于开源社区的用户群提供帮助。但幸运的是,Wireshark社区是最活跃的开源项目社区之一。
Wireshark网站上给出了很多种软件帮助的相关链接,包括在线文档、支持与开发wiki、FAQ。很多顶尖的开发者也都注册并关注着Wireshark的邮件列表。Riverbed Technology也提供了对Wireshark的付费支持。
源码访问:因为Wireshark是开源软件,所以你可以在任何时间访问到其源码。这对查找程序的Bug、理解协议解释器的工作原理或自己贡献代码都有很大帮助。
支持的操作系统:Wireshark对主流的操作系统都提供了支持,其中包括Windows、Mac OS X以及基于Linux的系统。你可以在Wireshark的主页上查询所有Wireshark支持的操作系统列表。
1.2 安装Wireshark
Wireshark的安装过程极其简单,但在安装之前要确保你的机器满足如下要求。
任意新型的32位或64位CPU。
至少400MB可用内存(主要为了大型流量文件)。
至少300MB的可用存储空间(不包括捕获的流量文件)。
支持混杂模式的网卡。
WinPcap或libpcap驱动。
WinPcap驱动是Windows对于pcap数据包捕获的通用程序接口(API)的实现,简单来说就是这个驱动能够通过操作系统捕捉原始数据包、应用过滤器,并能够让网卡切入或切出混杂模式。
虽然你也可以单独下载安装WinPcap,但一般最好使用Wireshark安装包中的WinPcap。因为这个版本的WinPcap经过测试,能够和Wireshark一起工作。
1.3.1 在微软Windows系统中安装
通过测试的当前Wireshark版本,能够在微软仍维护的Windows操作系统上运行,于本书截稿时包括Windows Vista、Windows 7、Windows 8、Windows 10 和 Windows Servers 2003/2008/2012。虽然Wireshark 也可以在一些其他版本的Windows 中运行(比如Windows XP),但这些版本不被官方支持。
在Windows中安装Wireshark的第一步就是在Wireshark的官方网站上找到Download页面,并选择一个镜像站点下载最新版的安装包。
在下载好安装包之后,遵照如下步骤实装。
(1)双击.exe文件开始进行安装,在介绍页面上单击Next。
(2)阅读许可证条款,如果同意接受此条款,单击I Agree。
(3)选择你希望安装的Wireshark组件,如图1-1所示。在本书中接受默认设置即可,然后单击Next。
图1-1 选择你想要安装的Wireshark组件
(4)在Aditional Tasks窗口中单击Next。
(5)选择Wireshark的安装位置并单击Next。
(6)当弹出是否需要安装WinPcap的对话框时,务必确保Install WinPcap选项已被勾选,如图1-2所示,然后单击Install。安装过程便会随即开始。
图1-2 将安装WinPcap驱动的选项选中
(7)Wireshark的安装过程进行了大约一半的时候,会开始安装WinPcap。在介绍页面单击Next之后,请阅读许可协议并单击I Agree。
(8)你将选择是否安装 USBPcap选项。这是一个从USB设备中收集数据的工具。勾选你想要的复选框并单击Next。
(9)WinPcap和USBPcap(如果你在上一步勾选了的话)应该已经安装到你的计算机上了,在安装完成之后,单击Finish。
(10)Wireshark应该已经安装到你的计算机上了,在安装完成之后,单击Finish。
(11)在安装确认界面中,单击Finish。
1.3.2 在Linux系统中安装
Wireshark可以在大部分基于UNIX的系统中运行。你可以通过系统包管理器下载,并安装针对你的系统所适用的发行版本。我们在这里只介绍几个常见的Linux发行版本的安装步骤。
一般来说,如果作为系统软件安装,你需要具有root权限;但如果你通过编译源代码安装成为本地软件,那么通常就不需要root权限了。
1.基于RPM的系统
对于类似红帽Linux(Red Hat Linux)等使用RPM的Linux发行版,比如 CentOS,很可能系统默认安装了Yum包管理器。如果是这样的话,你可以从发行版本的软件源中获取并快速安装Wireshark。你需要做的是打开一个控制台窗口,并输入以下命令:
$ sudo yum install wireshark
如果需要依赖组件,那么你将通过提示来安装它们。如果一切成功执行,你将可以使用命令行启动它并通过GUI 来操作它。
2.基于DEB的系统
对于类似于Debian和Ubuntu等使用DEB的Linux发行版,你可以使用APT 包管理工具安装Wireshark。要从系统软件源中安装 Wireshark,可打开一个控制台窗口并键入如下命令:如果需要依赖组件,那么你将通过提示来安装它们。
$ sudo apt-get install wireshark wireshark-qt
3.使用源代码编译
因为操作系统架构和Wireshark 功能的改变,所以从源码安装的方法可能也会随之变化,这也是建议从系统包管理器安装的一个原因。
然而,如果你的Linux发行版没有自动安装包管理工具,那么安装Wireshark的一种高效的方法就是使用源代码编译。
下面的步骤给出了安装方法。
(1)从Wireshark网站下载源代码包。
(2)键入下面的命令将压缩包解压(将文件名替换成你所下载的源代码包的名称):
$ tar -jxvf
(3)在安装和设置 Wireshark之前,可能需要安装一些依赖组件。比如,Ubuntu 14.04需要一些额外的软件包才能让 Wireshark 工作。这些依赖组件可以用以下的命令进行安装(你可能需要使用root权限,你可以在命令前面添加sudo):
$ sudo apt-get install pkg-config bison flex qt5-default libgtk-3-dev
libpcap-dev qttools5-dev-tools
(4)进入解压缩后创建的文件夹。
(5)root级别的用户使用./configure命令配置源代码以便于其能正常编译。如果你不想使用默认的设置,那么你可以在这时指定安装选项;如果缺少相关软件支持,那么你应该会得到相关错误信息;如果安装成功了,那么你应该可以得到成功提示,如图1-3所示。
图1-3 由./configure命令得到的成功输出
(6)键入make命令将源代码编译成二进制文件。
(7)使用sudo make install命令完成最后的安装。
(8)运行sudo/sbin/ldconfig来结束安装。
1.3.3 在Mac OS X系统中安装
在OS X系统中安装Wireshark,请依照以下步骤操作。
(1)从Wireshark网站上下载针对 Mac OS X 系统的软件包。
(2)运行安装程序并按照指导依次安装。只有接受了用户使用许可规定,你才能继续安装。
(3)完成安装指引。
1.4 Wireshark初步入门
在成功地在系统中装好了Wireshark之后,你就可以开始学习使用它了。当你终于打开了这个功能强大的数据包嗅探器时,会发现你什么都看不见!
好吧,Wireshark在刚打开的时候确实不太好玩,只有在拿到一些数据之后事情才会变得有趣起来。
1.4.1 第一次捕获数据包
为了能让Wireshark得到一些数据包,你可以开始第一次数据包捕获实验了。你可能会想:“当网络什么问题也没有的时候,怎么能捕获数据包呢?”
第一,网络总是有问题的。如果你不相信,那么请给你网络上所有的用户发一封邮件,告诉他们一切都工作得非常好。
第二,数据包分析并不一定要等到有问题的时候再做。事实上,大多数的数据包分析员在分析没有问题的网络流量上花费的时间要比解决问题的时间多。为了能高效地解决网络问题,你也同样需要得到一个基准来与之对比。举例来说,如果你想通过分析网络流量来解决关于DHCP的问题,那么你至少需要知道DHCP在正常工作时的数据流是什么样子的。
更广泛地讲,为了能够发现日常网络活动的异常,你必须对日常网络活动的情况有所掌握。当你的网络正常运行时,以此作为基准,就能知道网络流量在正常情况下的样子。
闲言少叙,让我们来捕获一些数据包吧!
(1)打开Wireshark。
(2)从主下拉菜单中选择Capture,然后是Interface。
这时你应该可以看到一个对话框,里面列出了你可以用来捕获数据包的各种设备,以及它们的IP地址。
(3)选择你想要使用的设备,如图1-4所示,然后单击Start,或者直接单击欢迎画面中Interface List下的某一个设备。随后数据就会在窗口中呈现出来。
图1-4 选择你想要进行数据包捕获的端口
(4)等上l min左右,当你打算停止捕获并查看你的数据的时候,在Capture的下拉菜单中单击Stop按钮即可。
当你做完了以上步骤并完成了数据包的捕获时,Wireshark的主窗口中应该已经呈现了相应的数据,但此时你可能对于那些数据的规模感到头疼,这也就是我们把Wireshark一整块的主窗口进行拆分的原因。
1.4.2 Wireshark主窗口
Wireshark的主窗口将你所捕获的数据包拆分并以更容易使人理解的方式呈现出来,它也将是你花费时间较多的地方。我们使用刚刚捕获的数据包来介绍一下Wireshark的主窗口,如图1-5所示。
图1-5 Wireshark主窗口的设计使用了3个面板
主窗口的3个面板之间有着互相的联系。如果希望在Packet Details面板中查看一个单独的数据包的具体内容,那么你必须在Packet List面板中单击选中那个数据包。
在选中了数据包之后,你可以在Packet Details面板中选中数据包的某个字段,从而在Packet Bytes面板中查看相应字段的字节信息。
下面介绍了每个面板的内容。
Packet List(数据包列表):这个最上面的面板用表格显示了当前捕获文件中的所有数据包,其中包括了数据包序号、数据包被捕获时的相对时间、数据包的源地址和目标地址、数据包的协议以及在数据包中找到的概况信息等列。
Packet Details(数据包细节):这个中间的面板分层次地显示了一个数据包中的内容,并且可以通过展开或是收缩来显示这个数据包中所捕获到的全部内容。
Packet Bytes(数据包字节):这个最下面的面板可能是最令人困惑的,因为它显示了一个数据包未经处理的原始样子,也就是其在链路上传播时的样子。这些原始数据看上去一点都不舒服而且不容易理解。
1.4.3 Wireshark首选项
Wireshark提供一些首选项设定可以让你根据需要进行定制。如果需要设定Wireshark首选项,那么需要在主下拉菜单中选择Edit并单击Preferences,然后你便可以看到一个首选项的对话框,里面有一些可以定制的选项,如图1-6所示。
图1-6 你可以使用Preferences对话框中的选项自定义Wireshark的配置
Wireshark首选项分为6个主要部分,外加1个高级选项。
Appearance(外观):这些选项决定了Wireshark将如何显示数据。你可以根据个人喜好对大多数选项进行调整,比如是否保存窗口位置、3个主要窗口的布局、滚动条的摆放、Packet List面板中列的摆放、显示捕获数据的字体、前景色和背景色等。
Capture(捕获):这些选项可以让你对于自己捕获数据包的方式进行特殊设定,比如你默认使用的设备、是否默认使用混杂模式、是否实时更新Packet List面板等。
Filter Expressions(过滤器表达式):在之后的章节里我们将探讨 Wireshark 是如何让你基于设定标准去过滤流量的。这个部分中的选项可以让你生成和管理这些过滤器。
Name Resolutions(名称解析):通过这些设定,你可以开启Wireshark将地址(包括MAC、网络以及传输名称解析)解析成更加容易分辨的名字这一功能,并且可以设定并发处理名称解析请求的最大数目。
Protocols(协议):这个部分中的选项可以让你调整关于捕捉和显示各种Wireshark解码数据包的功能。虽然并不是针对每一个协议都可以进行调整,但是有一些协议的选项可以进行更改。除非你有特殊的原因去修改这些选项,否则最好保持它们的默认值。
Statistics(统计):这一部分提供了Wireshark中统计功能的设定选项。在第5章节我们会对之进行更深入的学习。
Advanced(高级):在以上6个部分中没有做的设置会被归类到这里。通常这些设置只有Wireshark的高级用户才会去修改。
1.4.4 数据包彩色高亮
如果你像我一样喜欢五颜六色的物体,那么你应该会对Packet List面板中那些不同的颜色感到兴奋。如图1-7所示(虽然图示是黑白的,但你应该可以理解的),那些颜色看上去就像是随机分配给每一个数据包的,但其实并不是这样的。
图1-7 Wireshark的彩色高亮有助于快速标识协议
每一个数据包的颜色都是有讲究的,这些颜色对应着数据包使用的协议。举例来说,所有的DNS流量都是蓝色的,而HTTP流量都是绿色的。
将数据包进行彩色高亮,可以让你迅速将不同协议的数据包分开,而不需要查看每个数据包的Packet List面板中的协议列。你会发现这样做在浏览较大的捕获文件时,可以极大地节省时间。
如图1-8所示,Wireshark通过Coloring Rules(着色规则)窗口可以轻松地查看每个协议所对应的颜色。如果想要打开这个窗口,那么可以在主下拉菜单中选择View并单击Coloring Rules。
图1-8 你可以在Coloring Rules窗口中查看并更改数据包的着色
你可以创建你自己的着色规则,或者修改已有设置。举例来说,使用下列步骤可以将HTTP流量绿色的默认背景改成淡紫色。
(1)打开Wireshark,并且打开Coloring Rules窗口(View->Coloring Rules)。
(2)在着色规则的列表中找到HTTP着色规则并单击选中。
(3)单击Edit按钮,你会看到一个Edit Color Filter窗口,如图1-9所示。
图1-9 在编辑着色过滤器时,前景色和背景色都可以进行更改
(4)单击Background Color按钮。
(5)使用颜色滚轮选择一个你希望使用的颜色,然后单击OK。
(6)再次单击OK来应用改变,并回到主窗口。主窗口此时应该已经重载,并使用了更改过的颜色样式。
当在网络上使用Wireshark时,可能会发现你处理某个协议的工作要比其他协议多得多。这时彩色高亮的数据包能让你的工作更加方便。
举例来说,如果你觉得你的网络上有一个恶意的DHCP服务器在分发IP,那么你可以简单地修改DHCP协议的着色规则,使其呈现明黄色(或者其他易于辨认的颜色)。
这可以使你更快地找出所有DHCP流量,并让你的数据包分析工作更具效率。你还可以通过基于定制的过滤器创建着色规则,来扩展这些着色规则的使用。
1.4.5 配置文件
当我们想直接修改设置时,明确Wireshark 在哪里储存配置文件是很有帮助的。要想找到该文件,你可以在主下拉菜单中单击Help并选择About Wireshark,然后单击Folders标签卡。该窗口如图1-10所示。
图1-10 定位Wireshark配置文件的位置
Wireshark个性化设置最重要的两个位置是个人和全局设置目录。全局设置目录包含着所有默认的配置选项。个人设置目录只包含了针对你账户的配置选项。任何你所做的新配置都将会使用你提供的名字并储存在个人配置文件夹的子目录里。
全局和个人配置目录的区别是重要的,因为任何有关全局设置的改变都将会影响到每一个在该系统中使用Wireshark的用户。
1.4.6 配置方案
学习了Wireshark 的参数配置后,有些时候会发现你在使用一种配置方案但很快又要切换到另一种配置方案的应用场景。其实我们没必要每次都重新手动设置这些选项,Wireshark 引入了个性化配置方案,让用户可以保存一组配置。
一个配置方案储存了下面的设置。
Preferences 参数选项。
Capture filters 捕获过滤器。
Display filters 显示过滤器。
Coloring rules 着色规则。
Disabled protocols 已禁用的协议。
Forced decodes 强制解码。
Recent settings 最近设置,比如窗格大小、菜单设置和列宽。
Protocol-specific tables针对特定协议的表格,例如SNMP用户和自定义HTTP头。
要查看配置方案列表,可以在主下拉菜单单击Edit,并选择 Configuration Profiles 选项。另一种办法是在屏幕的右下角单击右键并选择Manage Profiles选项。
当处在配置方案的那个窗口时,你将会看到Wireshark的预设配置方案,它包含了如图1-11所示的“缺省”、“蓝牙”和“经典”方案。其中“Latency Investigation”方案是我自定义的方案,它被显示为正体,而其他系统全局或默认的方案被显示为斜体。
图1-11 查看配置方案
配置方案窗口可以让你创建、复制、删除和应用配置方案。创建一个新的配置方案是非常简单的。
(1)把Wireshark设置成你想要储存的配置。
(2)在主下拉菜单单击 Edit,并选择 Configuration Profiles 选项,以调出配置方案窗口。
(3)单击加号(+)按钮并且给该方案取名。
(4)单击 OK。
当你想切换配置方案时,在配置方案窗口下选择方案名,然后单击 OK 即可。有一种更快的方法,就是在屏幕的右下角单击配置文件,然后直接选择你想要的那个方案,如图1-12所示。
图1-12 快速转换配置方案
其中一个特别有用的特性就是,每个配置方案都会储存在单独的目录中,这意味着你可以方便地备份和共享给其他人。
在图1-10所示的 folders 标签卡下提供了全局和个人配置文件的路径。你只要把那个配置方案的整个目录复制到相同的路径下,就可以把当前配置共享给其他计算机了。
之后你也许会需要去创建一些特别的配置方案,来解决常见问题、查找网络延迟的源头和调查安全问题。别被频繁切换配置方案吓着。恰恰相反,这可是很省时间的技巧。我知道很多高手有一堆不同的配置方案用来应对不同的场景。
现在你的Wireshark应该已经安装好并运行起来了,你已经准备好进行数据包的分析了。
《Wireshark数据包分析实战(第3版)》
[美]克里斯 ▪ 桑德斯(Chris Sanders) 著
Wireshark是最流行的一款网络嗅探软件,本书在上一版的基础上针对Wireshark 2.0.5和IPv6进行了更新,并通过大量真实的案例对Wireshark的使用进行了详细讲解,旨在帮助读者理解Wireshark捕获的PCAP格式的数据包,以便对网络中的问题进行排错。
本文转载自异步社区。
Windows Linux
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。