Wireshark网络分析从入门到实践(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-04 21:46:32

点击下载

作者:李华峰 陈虹

出版社:人民邮电出版社有限公司

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Wireshark网络分析从入门到实践

Wireshark网络分析从入门到实践试读:

前言

数百年前显微镜的发明为人类探索微观世界开启了一扇大门,而如今,Wireshark的出现则为我们观察网络世界打开了另一扇大门。作为世界上最为流行的数据包分析软件,Wireshark拥有着其他同类工具所不能比拟的强大优势。无论你是一个刚刚开始接触计算机网络知识的大学生,还是一个已经拥有多年从业经验的工程师,Wireshark都可以为你带来极大的帮助。很多国内外的知名企业也将Wireshark的使用技能明确写入了招聘的要求之中。

在开始写作本书之前,我曾经翻译和编写了一些网络安全方面的书籍。这些书籍介绍了很多常见的网络攻击手段,读者在掌握了这些技能之后,大都对其实现细节产生了兴趣。例如到底为什么Nmap可以扫描出目标主机的状态,以及为什么中间人攻击就可以监听网络中的通信,泛洪攻击又是如何实现的呢?这些攻击的手段各种各样,实现这些攻击的工具也大都采用了不同的语言,这些都为我们的学习带来了很大的困难。不过,任何的网络攻击行为最终都是通过发送数据包来实现的,如果我们从数据包这个层次来分析问题,一切就会清晰起来。

虽然此前国内外已经有了很多关于Wireshark的优秀书籍,但是它们大都着眼于网络故障的排除,并没有涉及Wireshark的另外一个重要领域——网络安全。而本书以此作为研究的重点,讲述了如何使用Wireshark来分析常见的网络攻击手段,并根据它们的特点给出了解决方案。目标读者

本书的目标读者如下:● 网络安全渗透测试人员;● 运维工程师;● 网络管理员和企业网管;● 计算机相关专业的学生;● 网络安全设备设计与安全软件开发人员;● 安全课程培训人员。如何阅读本书

全书分为6个部分共16章,其中前3章为第1部分,主要讲解了Wireshark的基本使用方法;第4章~第6章为第2部分,主要讲解了eNSP的使用以及网络的一些知识。第7章和第8章为第3部分,讲解了常见网络故障的排除。而第9章~第15章为本书最为重要的部分,主要讲解了如何使用Wireshark来分析各种常见的网络攻击,这些内容按照链路层、网络层、传输层和应用层这个顺序来介绍。最后两章讲解了一些Wireshark的扩展功能和辅助工具。

第1章“走进Wireshark”,这一章对Wireshark的功能和工作原理进行了简单的介绍,然后讲解了Wireshark的下载和安装过程。本章最后演示了一个Wireshark的使用实例,这个实例虽然很简单,但是却包含了完整的使用过程。

第2章“过滤无用的数据包”,详细地讲解了Wireshark中对数据包的过滤机制,这里面包括捕获过滤器和显示过滤器的使用方法。

第3章“捕获文件的打开与保存”,讲解了Wireshark中的各种保存功能,包括对数据包捕获文件保存位置和格式的设置,对过滤器的保存,对配置文件的保存。

第4章“虚拟网络环境的构建”,讲解了eNSP和VMWare两种工具的使用。在它们的帮助下,我们可以模拟出各种和真实环境一模一样的网络结构,并以此来进行练习。

第5章“各种常见的网络设备”,介绍了网络中常见的几种硬件,并给出了一些实例。了解这些硬件可以更好地帮助我们使用Wireshark。

第6章“Wireshark的部署方式”,讲解了如何在各种网络情况下进行Wireshark的部署。

第7章“找到网络发生延迟的位置”,从这一章起我们开始了对网络实际问题的分析。本章就延迟位置的确定进行了讲解,并在这个实例中穿插讲解了Wireshark中的时间设置。

第8章“分析不能上网的原因”,在这一章中,我们就“不能上网”这个问题进行了分析,在问题分析过程中使用到了很多Wireshark的技巧。

第9章“来自链路层的攻击——失常的交换机”,从这一章起,我们开始了对网络安全问题的分析。围绕着交换机面临的典型攻击手段——Mac泛洪攻击,给出了详细的介绍。首先从一个案例开始,对案例中的数据包文件进行了分析和总结,进一步得出了这种攻击的特点,最后给出了这种攻击手段的实现和解决方案。

第10章“来自网络层的欺骗——中间人攻击”,对第ARP欺骗技术进行了讲解。ARP欺骗技术是中间人攻击的实现基础,这一章从ARP欺骗的原理开始讲解,并在Wireshark的帮助下对ARP欺骗进行了深入的分析。同时还介绍了Wireshark中的强大工具——专家系统的使用方法。最后给出了如何完成ARP欺骗,以及如何防御这种攻击的方法。

第11章“来自网络层的攻击——泪滴攻击”,讲解了针对IP协议的一种典型攻击手段:泪滴攻击。首先讲解了IP协议的格式,然后介绍了IP协议的一个重要概念:分片。同时也详细讲解了基于这种技术的攻击手段——泪滴攻击。这一章还介绍了Wireshark的着色规则,只需查看数据包的颜色,就可以判断出它的类型。在本章的最后,介绍了IP协议头中一个很有用的字段TTL。

第12章“来自传输层的洪水攻击(1)——SYN Flooding”,介绍了针对服务器的攻击方式——SYN Flooding攻击。并在Kali Linux2平台中演示了如何进行这种攻击,同时也使用Wireshark的流量图对这种攻击进行了分析。

第13章“网络在传输什么——数据流功能”,在这一章中,介绍了TCP数据的传输,并详细讲解了Wireshark中的数据流功能,利用这个功能可以监控整个网络中传输的文件。本章最后给出了一个非常优秀的Wireshark学习资源。

第14章“来自传输层的洪水攻击(2)——UDP Flooding”,这一章讲解了UDP Flooding攻击的原理与实现方法,并使用Wireshark中的图表功能对这种攻击的技术进行了分析。最后重点介绍了Wireshark中自带的图表功能以及amCharts的使用方法。

第15章“来自应用层的攻击——缓冲区溢出”,这一章介绍了一种全新的攻击方式——缓冲区溢出,它的攻击建立在应用层的协议上。本章首先介绍了HTTP协议,然后模拟了一次缓冲区溢出的攻击过程。在这个实例中还介绍了数据包的查找功能。在最后介绍了如何使用Wireshark来分析http协议的升级版https协议。

第16章“扩展Wireshark的功能”,这一章介绍了如何在Wireshark中编写插件,这个功能在实际应用中相当有用,相关的实例都采用了Lua语言编写。

第17章“Wireshark中的辅助工具”,介绍了Wireshark中常见的各种工具,包括Tshark、Dumpcap、Editcap、Mergecap、Capinfo和USBPcapCMD等工具的功能和使用方法。

大家可以根据自己的需求选择阅读的侧重点,不过我还是推荐按照顺序来阅读,这样可以对Wireshark的使用有一个清晰的认识,同时也可以深入了解网络中常见的攻击方法。资源与支持

本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。配套资源

本书提供配套代码资源,要获得该配套资源,请在异步社区本书页面中点击,跳转到下载界面,按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。

如果您是教师,希望获得教学配套资源,请在社区本书页面中直接联系本书的责任编辑。提交勘误

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,点击“提交勘误”,输入勘误信息,点击“提交”按钮即可。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。与我们联系

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问www.epubit.com/selfpublish/submission即可)。

如果您是学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。关于异步社区和异步图书“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。异步社区微信服务号第1章 走进Wireshark

在1000多年前的唐代,高僧玄奘为了探究佛教各派学说的分歧,独自一人西行了五万里到达印度那烂陀寺,将600多部经书带回了中国,期间共经历了17年。而在进入工业时代之后,从北京乘坐飞机到达新德里只需要7小时。在互联网时代的今天,如果将这些经书以计算机数据的形式存储起来,那么只需要在几秒(甚至更短),就可以将它们通过网络从新德里传输到北京。

网络的出现改变了我们的工作和生活方式。可以这样说,我们无时无刻都离不开网络,它已经像电力一样成为了这个世界不可或缺的资源之一。但是在享受着网络带来便利的同时,却很少有人关心其中的运行机制,当然人们也无法用肉眼观察到网络世界。

因此,当你希望能够深入地了解网络,一个可以观察到它内部活动的“显微镜”将会是必不可少的。目前世界上可以实现这种功能的“网络显微镜”其实有很多,如果你听过著名的哈佛大学公开课《计算机科学cs50》的话,那么一定会注意到David J. Malan在上课时使用的TcpDump,这就是一个很受欢迎的“网络显微镜”。另外比较著名的例如Sniffer、Ethereal和Wireshark等,它们都曾经或者正在人们对网络世界的观察中起着重要的作用。不过,本书要介绍的并非TcpDump,因为它没有尽如人意的图形化操作界面。而Wireshark则在拥有了TcpDump的各种优势的同时,还弥补了TcpDump的这个缺陷,成为了当前最为流行的网络分析工具。在本书中,我们将在Wireshark的帮助下来体验网络世界的神奇。

在本章中,我们先来简单地了解Wireshark,这部分内容将会围绕以下几个主题展开:● Wireshark是什么;● Wireshark是如何工作的;● 如何下载和安装Wireshark;● 一次完整的Wireshark使用过程。1.1 Wireshark是什么

简单来说,Wireshark是一个可以运行在各种主流操作系统上的数据包分析软件。下面我们将分别了解它的功能、历史、工作原理和优势。1.1.1 Wireshark的功能

在开始回答“Wireshark是什么?”这个问题之前,我们应该先来简单地了解网络的工作模式。当我们使用应用程序(比如QQ)向目标发送一份文件的时候,这份文件会被分割成多个数据单元并在网络上传输。这是因为现代网络采用了一种叫作“分组交换”的方法,它最大的特点就是将较大的信息拆分成基本单元。而这种基本单元就是我们平时所说的“数据包”。简单来看,数据包由包头和包体两部分组成,其中包头主要是一些源地址和目标地址的信息,包体里面则是要传输的真正信息。打个比方,这些数据包就好像我们日常发送物品所使用的快递一样,包头就好像快递标签,而包体则如同里面的物品。

对于数据包进行研究可以找出很多问题的原因,但是在正常情况下,应用程序和操作系统在产生了数据包之后,会发送到网卡,然后再由网卡交给网络中的设备发送出去。这个过程中,我们是无法见到这些数据包的。而如果你使用了Wireshark的话,那么网卡无论是接收还是发送数据包的时候,都会将这些数据包复制一份发送给Wireshark。这样不管数据包来自哪里,还是去往何处,经过这个网卡的数据包都会被Wireshark所获取了。这个获取流经网卡数据包的过程,也被称为“捕获数据包”或者简称为“抓包”。

可是如果只是捕获到了这些数据包的话,我们还是很难弄清楚这些数据包的真正含义。因为这些数据包是以0和1进行编码的,也就是说无论是你在访问一个网站,还是在看在线视频,或者联机游戏,在网络中产生的数据包都是大量的0和1的组合,比如“00010100 01000100”这种形式,如果使用手工来分析这些数据含义的话,那么付出的工作量之大将会是无法想象的。这也是我们要使用Wireshark的第二个原因,它可以将捕获到的数据包进行自动分析,把这些0和1的组合解析成我们容易理解的形式,这个过程就是“数据包分析”。

好了,现在我们来回答一下“Wireshark是什么”,答案就是一个可以进行数据包的捕获和分析的软件。1.1.2 Wireshark的历史

现在我们已经知道Wireshark是什么了,但是它又是怎么产生的呢?“生命里最重要的事情是要有个远大的目标,并借才能与坚毅来达成它。”在20多年前,一个叫Gerald Combs的年轻人在密苏里大学堪萨斯分校完成了自己的学业,进入到了当时名不见经传的NIS(Network Integration Services)工作。NIS是一家小型的互联网服务提供商,因此Gerald Combs经常需要对网络的各种故障进行分析。这些工作如果仅仅依靠手工来完成的话将会十分复杂。虽然在当时的世界上已经有了一些可以完成网络分析的工具,但是它们的缺点十分明显,一方面价格过高,另一方面只能运行在特定的操作系统中。

当时的大部分网络工程师们只有两个选择,要么继续依靠手工来完成工作,要么只能使用盗版的网络分析工具,可能还得更换操作系统。不走寻常路的Gerald Combs做出了一个大多数人都不看好的选择,那就是自行去编写一个网络分析软件。虽然没有人相信Gerald Combs会成功,但是他仅仅用了一年的时间就证明了自己。1998年7月,Gerald Combs开发的网络分析软件就面世了,这款工具当时被命名为Ethereal,也就是现在Wireshark的前身。

如果Gerald Combs以此赚钱的话,那么现在世界上可能会多一家网络巨头公司,不过他放弃了这个机会,选择了以开源免费的形式将Ethereal发布了出去。由于这个工具强大且易用,很快就得到了人们的喜爱,而世界各地的开发者们也纷纷参与到了这个项目中。Ethereal也正式进入了高速发展的时期,迅速成为了世界上最受欢迎的软件之一。在2006年的时候,Ethereal更名为Wireshark,继续着演绎着它的传奇。

而现在Wireshark的应用更为广泛,无论你是一个要解决实际问题的网络工程师,还是一个希望了解网络世界的爱好者,Wireshark都将是你最好的选择。1.1.3 Wireshark的工作原理

接下来我们来了解Wireshark的工作原理,这里面涉及一个最为重要的概念就是网卡。

网卡在对接收到的数据包进行处理之前,会先对它们的目的地址进行检查,如果目的地址不是本机的话,就会丢弃这些数据,相反就会将这些数据包交给操作系统,操作系统再将其分配给应用程序。如果启动了Wireshark的话,操作系统会将经过网卡的所有数据包都复制一份并提供给它,这样我们就可以在Wireshark中查看到本机所有进出的数据包了。

但是我们有时要查看的不仅仅是本机的数据包,还会查看其他计算机上的数据包,这时如果网卡按照上面一段讲到的方式进行工作的话,那么其他计算机上的数据包在到达网卡时,都会被丢掉,而无法显示。所以我们必须调整网卡的工作方式,目前的网卡除了前面提到的那种普通模式之外,还提供了一种混杂模式。默认情况下,网卡只会将发给本机的数据包传递给操作系统,其他的一律丢弃。而混杂模式下,网卡则会将所有通过它的数据包(不管是不是发给本机)都传递给操作系统。所以在使用Wireshark进行网络分析时,我们经常需要使用混杂模式。

在了解了混杂模式的概念之后,我们再来看Wireshark的工作流程。(1)捕获:Wireshark将网卡调整为混杂模式,在该模式下捕获网络中传输的二进制数据。(2)转换:Wireshark将捕获到的二进制数据转换为我们容易理解的形式,同时也会将捕获到的数据包按照顺序进行组装。(3)分析:最后Wireshark将会对捕获到的数据包进行分析。这些分析包括识别数据包所使用的协议类型、源地址、目的地址、源端口和目的端口等。Wireshark有时也会根据自带的协议解析器来深入地分析数据包的内容。1.1.4 Wireshark的优势

Wireshark就像网络世界的显微镜,你可以在它的帮助下了解网络中发生的一切。不过也许有接触过网络分析的读者会有异议,为什么是Wireshark?TcpDump用起来不是显得更专业?另外Sniffer不也有人在用?没错,这些工具都曾经或者正在人们对网络世界的观察中起着重要的作用。那么相比起这些工具,Wireshark的优势又在哪里呢?● Wireshark可以在所有的主流操作系统中运行。无论你是哪一个

操作系统Windows、Linux或者Mac OS的忠实用户都没关系,在

Wireshark的官方网站上你都可以下载到适合自己操作系统的版

本。● Wireshark支持更多的网络协议。如果两个人要进行交谈的话,

他们就必须使用相同的语言,比如英语。而不同的设备之间如果

要进行通信,那么这些设备之间必须要使用相同的网络协议。这

些协议就如同我们现实世界中的语言一样,数量众多。显然哪一

种分析工具支持的网络协议越多,它可以应用的场景也就越多,

这也正是Wireshark的优势之一。随着Wireshark版本的不断更新,

里面也添加了大量的新协议,例如最新的2.6版中又添加了数十

种协议,支持了世界上所有常见的网络协议。● 极为友好的使用界面。虽然使用TcpDump命令行式的工作界面

会让你看起来很酷,但是对于初学者来说这种工作方式却是十分

令人难以接受的。即使是熟练使用命令行工具的老手也不得不承

认图形化工作界面要便利很多。因此,无论你是一个刚刚接触网

络科学的初学者,还是一个已经工作很久的工程师,Wireshark

优秀的图形化操作界面都会给你带来惊喜。● 对网络数据实时的显示。以前的很多网络分析工具都采用了先捕

获网络中的数据,等到捕获停止的时候,再显示出这些数据的工

作方式。这样使用者是无法实时地观察网络中的运行情况的。而

Wireshark采用了实时的工作方式,它可以立刻将捕获到的数据

显示出来,以便我们对网络进行实时的监控,及时掌握整个网络

的运行状况。● Wireshark是开源项目,目前全世界有很多爱好者都参与了

Wireshark的开发。而Wireshark中也提供了极为友好的扩展功能

开发环境,当你有了新的需求时,就可以自己编写代码来实现。

这样Wireshark就不再只是一个单纯的“武器”了,而是变成了

一个可以生产各种“武器”的“兵工厂”。

有了这些优势,Wireshark当之无愧地成为了现在世界上极为流行的数据包分析工具,它得到几乎所有网络行业人员的喜爱。

在刚接触到Wireshark时,你可能并不知道会在什么场合下使用这个工具,而下面给出了一些Wireshark可以大展身手的场景。● 经过多年的努力,你如愿进入了理想的大学,成为了一名计算机

专业的大学生,从此可以在阳光充足的教室里听着教授精彩的课

程。可是“既然有了IP地址,为什么还有硬件地址?”“网络为

什么要分层呢?”“数据帧是什么?数据包是什么?数据报又是

什么?”你是不是也正在为这些问题所困扰呢?没错,书上的知

识太过抽象了。这时你不妨在Wireshark的帮助下好好了解一下

网络运行的真实情形,相信会对你有很大的帮助。● 经过了数年的学习,现在你大学毕业了,很快找到了一份理想的

工作。你要负责一家企业的网络管理工作。你的耳边每天总是不

断地响起 “快来看看,为什么我不能上网了?”“为什么网络变

得这么慢?”“为什么公司的服务器不能访问了?”你每天都要

为解决同事们提出的这类问题而疲于奔命。如果你希望快速找出

网络中出现问题的源头,此时Wireshark绝对是一个最佳的选

择。● 几年后你从原来的单位离职,进入了一家网络设备销售厂家,负

责将这些设备部署到客户的网络中。很快客户的网络不断地出现

各种问题,当然这些问题可能根本与部署的设备无关。客户把解

决问题的希望全部放在你的身上,可是你偏偏身处异地。这时一

个不错的选择就是让客户使用Wireshark将发生问题时数据包保

存成文件,而你就可以在远方使用Wireshark对这个文件进行分

析,从而找出问题的所在。

总而言之,当你需要对网络进行研究时,Wireshark绝对是一个最为理想的帮手。1.2 如何下载和安装Wireshark

现在可以开始我们的Wireshark体验之旅了,首先要做的就是在计算机中安装Wireshark。在本节中,我们将会讲述如何在常见的Windows和Linux系统中安装Wireshark。首先来看一下安装Wireshark对系统的需求。因为我们工作在不同的环境,所以网络流量的差异很大,而Wireshark如果工作在一个十分繁忙的网络环境中将会消耗掉大量的系统资源,另外如果当你试图打开一个很大的数据包捕获文件(例如几百MB的大小)时,也需要大量的系统资源,所以你在实际使用中的设备最好比下面1.2.1节中推荐的配置要高很多。1.2.1 安装前的准备

目前的Wireshark已经发展到了第2版,当前最新的版本为2.60。这个版本的Wireshark可以运行在Vista以上的所有Windows操作系统以及大多数的Linux系统上。当你的计算机安装有这样的操作系统时,还需要具备以下的所有条件。● 至少400MB的内存空间,如果你需要处理较大的数据包捕获文

件,那么就需要更大的内存。● 至少300MB的硬盘空间,这只是安装Wireshark所需的空间,同

样如果要处理较大的数据包捕获文件,那么就需要更大的硬盘空

间。● 一个支持混杂模式的网卡设备。● 系统中安装有WinPcap(目前的Wireshark安装程序中都自带这

个程序)。

目前几乎所有的计算机都能满足上述官方给出的推荐条件,在实际应用中,越高的硬件配置可以带来更好的使用体验。通过实际的应用,我发现如果需要流畅处理一些大型数据包文件的话,Wireshark对内存的要求是比较高的,至少8GB的内存是推荐的选择。1.2.2 下载Wireshark

接下来我们就可以下载Wireshark了。因为这个软件是完全免费的,所以你可以在互联网上很容易地找到它。目前在Windows环境下Wireshark的最新稳定版本为2.6.0(见图1-1)。你可以根据自己系统类型(32位还是64位)选择要下载的安装文件。图1-1 Wireshark的官方下载页面1.2.3 Wireshark的安装

当你选择了合适的Wireshark版本之后,就可以开始安装过程了,这里我们以在64位Windows 7环境下进行安装为例,首先单击下载页面中的“Windows Installer (64-bit)”,将这个文件保存在计算机的硬盘上之后,双击它就可以执行安装了。整个安装过程只需要注意以下几点。(1)Windows环境下软件的安装过程都是相似的,在大多数出现“Next”按钮的界面中,只需要单击这个按钮即可。(2)安装过程中会出现许可协议(License Agreement),这时单击“I Agree”按钮。(3)Wireshark的运行需要WinPcap的支持,所以如果你的计算机之前没有安装这个软件的话,Wireshark就会在安装过程中出现WinPcap的安装界面,在这个界面同样单击“Next”按钮即可。(4)最新版本的Wireshark还会提醒用户是否安装USBPcap,如果需要对USB的设备进行抓包测试,那么可以勾选“Install USBPcap 1.2.0.3”这个选项。默认不会安装这个工具。我们在本书后面的部分会提到USBPcap,这里建议大家安装这个功能。

在Linux下安装Wireshark要比Windows麻烦一些,不过许多常见的Linux中已经默认安装了Wireshark,例如大名鼎鼎的Kali Linux就内置了这个工具。同样需要注意的是,Wireshark需要在root权限下进行安装。鉴于Linux众多的版本,下面只介绍在几种常见版本中的安装方法。

如果你的系统可以使用yum的话,那么你可以使用如下命令:yum install wireshark wireshark-qt

另外使用rpm安装也是一个不错的选择:rpm -ivh wireshark-2.0.0-1.x86_64.rpm wireshark-qt-2.0.0-1.x86_64.rpm

Debian系统下可以使用aptitude来安装:aptitude install wireshark

关于更多Linux系统的安装方法可以参考Wireshark的官方指导,官方指导提供了目前大多数Linux版本的Wireshark安装方法。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并不会自动关闭,而是保持之前的状态。只需要删除显示过滤器中的内容就可以查看全部捕获的数据包。而如果你需要打开之前保存的那个文件,只需在菜单栏上依次单击“文件”→“打开”,然后在文件对话框中选中文件,单击“打开”即可。1.4 小结

在本章中,我们开始了Wireshark的使用之旅。本章首先对Wireshark的功能和工作原理进行了简单的介绍,然后讲解了Wireshark的下载和安装过程。在最后,我们演示了一个Wireshark的使用实例,这个实例虽然很简单,但是却包含了完整的使用过程,包括网卡的选择、数据包的捕获、无用数据包的过滤以及如何将这些数据包保存成文件。通过这一章的学习之后,你已经可以使用Wireshark完成一些基础的工作了。

从下一章开始我们将会就Wireshark使用过程中后两个步骤:无用数据包的过滤以及将数据包文件的保存进行详细的讲解。第2章 过滤无用的数据包

通过前面的学习,我们已经了解了Wireshark中的基本工作方式。但是又一个重要的问题出现在了我们的面前,在一台连接到互联网的计算机上往往会运行着多个应用程序,在短短的一秒时间里就会产生成千上万的数据包(见图2-1),那么如何才能在其中找到目标数据包呢?这也正是我们在第1章介绍Wireshark使用过程时提到的第3个步骤。图2-1 在Wireshark中显示的大量数据包

单单依靠肉眼来查找目标数据包也是一种方法,这很像在前一段时间很火的电影《唐人街探案》中天赋异禀的秦风做的那样,使用32倍的速度来同时观看长达7天的两个监控录像,从而找到了案件的真相。不过这是普通人无法做到的,从海量信息中找到自己的目标,难度无异于大海捞针。同样,在我们的网络世界中,无时无刻不在流经不计其数的数据包,想从这些数据包中找到目标,这比起秦风做的事情只会更困难。

好在Wireshark并不是给秦风这种超人设计的,它提供了一些帮助我们找到目标数据包的功能。其中最为高效的就是Wireshark中提供的过滤功能,利用这种过滤机制,Wireshark的使用者就可以轻松地在海量数据中找到自己的目标。其实在实际工作中,对Wireshark过滤器的使用也很能看出一个工作人员的基本功。

接下来我们就来讲解如何从这些流量中找到目标数据包,本章将就以下几点来展开讲解:● 伯克利包过滤的介绍;● Wireshark中的显示过滤器;● Wireshark中的捕获过滤器。2.1 伯克利包过滤

Wireshark中的数据包过滤指的只显示那些我们感兴趣的数据包。在前面的实例中,我们就曾经利用IP地址将一部分无用的数据包隐藏了起来。但是这种仅仅依靠IP地址来过滤的方法有很大的局限性,下面我们来介绍一种功能更加完善的方法。

1993年,Steven McCanne与Van Jacobson在Usenix'93会议上提出的一种机制——伯克利包过滤(Berkeley Packet Filter,BPF),它采用了一种与我们自然语言很接近的语法,利用这种语法构成的字符串可以确定保留哪些数据包以及忽略掉哪些数据包。

这种语法很容易理解,例如最简单的空字符串,表示就是不过滤任何数据包,也就是保留所有的数据包。如果这个字符串不为空的话,那么只有那些使字符串表达式值为“真”的数据包才会被保留。这种字符串通常由一个或者多个原语所组成。每个原语又由一个标识符(名称或者数字)组成,后面跟着一个或者多个限定符。

伯克利包过滤中的限定符有下面3种。● type:这种限定符表示指代的对象,例如IP地址、子网或者端口

等。常见的有host(用来表示主机名和IP地址)、net(用来表示

子网)、port(用来表示端口)。如果没有指定的话,就默认为

host。● dir:这种限定符表示数据包传输的方向,常见的有src(源地址)

和dst(目的地址)。如果没有指定的话,默认为“src or dst”。

例如“192.168.1.1”就表示无论源地址或者目的地址为

192.168.1.1的都使得这个语句为真。● proto:这种限定符表示与数据包匹配的协议类型,常见的就是

ether、ip、tcp、arp这些协议。

伯克利包过滤中的标识符指的就是那些进行测试的实际内容,例如IP地址192.168.1.1,子网192.168.1.0/24,或者端口号8080都是常见的标识符。host 192.168.1.1和port 8080就是两个比较常见的原语,我们还可以用and、or和not把多于一个原语组成一个更复杂的过滤命令。例如host 192.168.1.1 and port 8080也是符合规则的过滤命令。

下面给出了一些常见的原语实例。● host 192.168.1.1,当数据包的目标地址或者源地址为

192.168.1.1时,过滤语句为真。● dst host 192.168.1.1,当数据包的目标地址为192.168.1.1时,过

滤语句为真。● src host 192.168.1.1,当数据包的源地址为192.168.1.1时,过滤

语句为真。● ether host 11:22:33:44:55:66,当数据包的以太网源地址或者目

的地址为11:22:33: 44:55:66时,过滤语句为真。● ether dst 11:22:33:44:55:66,当数据包的以太网目的地址为

11:22:33:44:55:66,过滤语句为真。● ether src 11:22:33:44:55:66,当数据包的以太网源地址为

11:22:33:44:55:66,过滤语句为真。● dst net 192.168.1.0/24,当数据包的IPv4/v6的目的地址的网络号

为192.168.1.0/24时,过滤语句为真。● src net 192.168.1.0/24,当数据包的IPv4/v6的源地址的网络号为

192.168.1.0/24时,过滤语句为真。● net 192.168.1.0/24,当数据包的IPv4/v6的源地址或目的地址的

网络号为192.168.1.0/24时,过滤语句为真。● dst port 8080,当数据包是tcp或者udp数据包且目的端口号为

8080时,过滤语句为真。● src port 8080,当数据包是tcp或者udp数据包且源端口号为8080

时,过滤语句为真。● port 8080当数据包的源端口或者目的端口为8080时,过滤命令

为真。所有的port前面都可以加上关键字tcp或者udp。

如果需要对数据包进行更细微的操作,伯克利包过滤也支持精确到位的操作。具体的语法为proto[expr:size],这里面的proto指代协议,expr表示相对给出协议层的字节偏移量,size表示要操作的字节数。其中size的值是可选的,可以是1、2、4中的一个,默认值为1。

例如,一个IP数据包头部的长度为20字节(图2-2中8位为1字节),其中的第12、13、14、15这4个字节表示的就是这个数据包的源地址。图2-2给出了一个IP数据包头的格式。图2-2 IP数据包头的格式

现在我们使用这个格式来改写dst host 192.168.1.1,这里面要操作的dst host是源地址,它位于IP数据包头的第12,13,14,15位,expr的值为12,长度size的值为4,地址192.168.1.1转换为十六进制为“0xc0a80101”,最后就可以写成:ip[12:4] =0xc0a80101

这种偏移量的写法在很多情形下是相当有用的,例如对各种类型

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载