2018-06-10
后期整理字体以及排版问题,修订不适合的翻译
“A wealth of information. Smart, yet very readable, and honestly made me excited to read about packet analysis.” —TECHREPUBLIC
“I’d recommend this book to junior network analysts, software developers, and the newly minted CSE/CISSP/etc.—folks that just need to
roll up their sleeves and get started troubleshooting network (and security) problems.”
—GUNTER OLLMANN, FORMER CHIEF Technical OFFICER OF IOACITVE.
“The next time I investigate a slow network, I’ll turn to Practical Packet Analysis. And that’s perhaps the best praise I can offer on any technical book”. ——MICHAEL W. LUCAS, AUTHOR OF ABSOLUTE FREEBSD AND NETWORK FLOW ANALYSIS
“An essential book if you are responsible for network administration on any level.” ——LINUX PRO MAGAZINE
“A wonderful, simple-to-use, and well-laid-out guide.” ——ARSGEEK.COM
“If you need to get the basics of packet analysis down pat, this is a very good place to start.” —STATEOFSECURITY.COM
“Very informative and held up to the key word in its title, practical. It does a great job of giving readers what they need to know to do packet analysis and then jumps right in with vivid real-life examples of what to do with Wireshark.”—LINUXSECURITY.COM
“Are there unknown hosts chatting away with each other? Is my machine talking to strangers? You need a packet sniffer to really find the answers to these questions. Wireshark is one of the best tools to do this job, and this book is one of the best ways to learn about that tool.” —FREE SOFTWARE MAGAZINE
“Perfect for the beginner to intermediate.” —DAEMON NEWS
数据包实战分析(practical packet analysis)第三版
使用 Wireshark 解决真实世界的网络问题
By Chris Sanders
翻译:vwsk
目录
致谢
引言
第一章:数据包分析以及网络基础
第二章:开发电线
第三章:关于Wireshark的介绍
第四章:和捕获数据包一起工作
第五章:高级Wireshark特点
第六章:在命令行上分析数据包
第七章:网络层协议
第八章:传输层协议
第九章:常见上层协议
第十章:基本真实世界
第十一章:与慢速网络斗争
第十二章:安全数据包分析
第十三章:无线数据包分析
附录一:进一步阅读
附录二:导航数据包
索引
致谢
我想真诚致谢那些支持我写这本书的人。
Ellen,感谢你无条件的爱,在你想睡觉的时候仍然忍受着我不断敲打着键盘。
妈妈,即使你在那遥远的天国,你的善良一直激励着我。爸爸,如果这一切都不会发生,我不会从你那知道什么是艰苦工作。
Jason Smith,你就像我的兄弟一样,十分感谢你一直做我的决策咨询人。
回顾我过去与现在的同事,我很幸运有那么一群人在我身边让我变得更聪明,更完美。我不能详细的说出每一个人,但在这里仍要感谢Dustin ,Alek, Martin, Patrick, Chris, Mike和Grady一直支持着我,接受像个仆人式领导。
感谢Tyler Reguly 担任这个主要技术编辑。我有时犯愚蠢的错误,是你让我的看上去不那么愚蠢。同样的,感谢David Vaughan为我提供了另一双眼睛,感谢Jeff Carrell帮我编辑IPV6的内容,Brad Duncan为我提供了用于安全的那一章的捕获文件,QA Café团队提供了一个Cloud shark许可,让我可以用来为这本书组织数据包捕获。
当然,同样感谢Gerald Combs 和Wireshark开发团队。这是Gerald和数以百计的开发者的奉献,使得Wireshark成为一个相当棒的分析平台。如果不是因他们的努力,信息技术和网络安全早就变得很糟糕了。
最后,感谢Bill, Serena, Anna, Jan, Amanda, Alison以及其他NO Starch Press职员为这本书的编辑和生产做出的勤奋贡献。
引言
大约在第二版发布6年后,第一版的10年后,这本第三版数据包分析实战开始编写。在过去的一年半,从2015年到2017年早期编写完成。这本书增加了大量新内容,有完全新的捕获文件和方案,有涵盖了从命令行使用TShark和tcpdump进行数据包分析的新篇章。如果你喜欢前两个版本,那么你会爱上这第三版。与之前写作风格一样,将晦涩难懂的东西分解成易于理解形式。如果你因为前两个版本没有列入最新的关于网络和Wireshark内容,而在犹豫是否尝试阅读它们。你最好阅读这本,这本包含最新的网络协议的扩展内容以及关于wireshark2.X的最新资料。
为什么选择这本书?
你可能想知道自己为什么要买这本书而不是买其他关于数据包分析书籍。答案就在书名中:数据包分析实战。让我们来面对它。没有什么比真实世界的经验更为重要,你能最为接近的获得这种经验只有通过涵盖在这本书中实际例子和真实场景的学习。
在这本书的前一部分,你需要了解数据包分析和Wireshark知识。在后一部分,这本书完全在描写你在日常网络管理中容易遇到的实际案例。
无论你是一个网络技术员,网络管理员,首席信息officer,桌面技术员,或者甚至是网络安全分析师,通过理解和运用这本书中描述的数据包分析技术,你会受益很多。
概念与方法
我可能是一个懒散的家伙,所以当我教一个概念时,经常尝试这种懒散的方式。使用在这本书中的语言亦是如此。在技术术语中很容易变得糊涂,但是我已经竭尽所能让事情变得随意。我已经清晰的定义了所有术语和概念,没添加任何冗余的解释。毕竟,我来自伟大的state of Kentucky(自豪脸),所以我试着将大话缩减至最少。(But you‘ll have to forgive me for some of the backwoods country verbiage you’ll find throughout the text.)
要理解书的其他章节,这本书的前几章是不可或缺的一部分,所以要做到这点,首先需要掌握这几章中概念。书的另一部分纯粹是练习,你可能在你的工作地点无法看到这些确切的场景,但你将能够在你所遇到的问题中运用那些他们教的概念。下面是关于本书内容的一个细分:
Chapter 1: Packet Analysis and Network Basics
What is packet analysis? How does it work? How do you do it? This chapter covers the basics of network communication and packet analysis.
Chapter 2: Tapping into the Wire
This chapter covers the different techniques for placing a packet sniffer on your network.
Chapter 3: Introduction to Wireshark
Here, we’ll look at the basics of Wireshark—where to get it, how to use it, what it does, why it’s great, and all that good stuff. This edition includes a new discussion about customizing Wireshark with configuration profiles. Introduction xix
Chapter 4: Working with Captured Packets
After you have Wireshark up and running, you’ll want to know how to
interact with captured packets. This is where you’ll learn the basics, including new, more detailed sections on following packet streams and name resolution.
Chapter 5: Advanced Wireshark Features
Once you’ve learned to crawl, it’s time to take off running. This chapter delves into the advanced Wireshark features, taking you under the hood to show you some of the less apparent operations. This includes new, more detailed sections on following packet streams and name resolution.
Chapter 6: Packet Analysis on the Command Line
Wireshark is great, but sometimes you need to leave the comfort of a graphical interface and interact with a packet on the command line.
This new chapter shows you how to use TShark and tcpdump, the two best command line packet analysis tools for the job.
Chapter 7: Network Layer Protocols
This chapter shows you what common network layer communication looks like at the packet level by examining ARP, IPv4, IPv6, and ICMP. To troubleshoot these protocols in real-life scenarios, you first need to understand how they work.
Chapter 8: Transport Layer Protocols
Moving up the stack, this chapter discusses the two most common transport protocols, TCP and UDP. The majority of packets you look at will use one of these two protocols, so understanding what they look like at the packet level and how they differ is important.
Chapter 9: Common Upper-Layer Protocols
Continuing with protocol coverage, this chapter shows you what four of the most common upper-layer network communication protocols—HTTP, DNS, DHCP, and SMTP—look like at the packet level.
Chapter 10: Basic Real-World Scenarios
This chapter contains breakdowns of some common traffic and the first set of real-world scenarios. Each scenario is presented in an easy to-follow format, giving the problem, an analysis, and a solution. These basic scenarios deal with only a few computers and involve a limited amount of analysis—just enough to get your feet wet.
Chapter 11: Fighting a Slow Network
The most common problems network technicians hear about generally involve slow network performance. This chapter is devoted to solving these types of problems.xx Introduction
Chapter 12: Packet Analysis for Security
Network security is the biggest hot-button topic in the information technology area. Chapter 12 shows you some scenarios related to solving security-related issues with packet analysis techniques.
Chapter 13: Wireless Packet Analysis
This chapter is a primer on wireless packet analysis. It discusses the differences between wireless analysis and wired analysis, and it includes some examples of wireless network traffic.
Appendix A: Further Reading
The first appendix of this book suggests some other reference tools and websites that you might find useful as you continue to use the packet analysis techniques you’ve learned.
Appendix B: Navigating Packets
If you want to dig a little deeper into interpreting individual packets, the second appendix provides an overview of how packet information is stored in binary and how to convert binary into hexadecimal notation.
Then it shows you how to dissect packets that are presented in hexadecimal notation with packet diagrams. This is handy if
you’re going to spend a lot of time analyzing custom protocols or using command line analysis tools.
怎样使用这本书?
我建议你们可以用下面两种办法来使用这本书:
-
作为教科书。你要一章一章地阅读这本书,特别要注意后面关于真实世界场景案例,懂得数据包分析。
-
作为参考书。有一些关于Wireshark的功能你不会经常用到,所以你可能忘了他们是如何工作的,这本书可以帮助你快速回想起如何使用特定功能。当你在工作中需要做数据包分析时,你可能想要引用独特的图表,示意图,方法,不过这些我都在书中已经提供了。
关于示例捕获文件
这本书中所用到的捕获文件都可以在 No Starch Press Page上获得(https://www.nostarch.com/packetanalysis3/)为了最大化发挥这本书的潜力,请下载这些文件,在后续的章节中你会用的到它们。
Rural技术基金(RTF)
我不可能写一篇没有提及到数据包分析联系的引言。在这本书的第一版发布不久后,我成立501©(3)非盈利组织(RTF)
农村学生,即使那些有着优异成绩的学生,与他们所在城市或者郊区的同行相比,他们几乎没有机会曝光技术。RTF成立与2008年。成为我梦想中的一个高潮。它旨在缩小农村社区与城市郊区同行之间的差距,RTF通过针对性的奖学金计划,社区参与,给教室赠送教育技术资源,在农村和贫困地区进行普通的推广与宣传。
在2016年,RTF已经能够技术教育资源分到全美超过10000学生手里。我很高兴的宣布,所有从这本书中得到的作者收益将会转到RTF所支持的这些目标中。如果你想了解更多关于RTF信息以及你怎么才能给我们做一点贡献,请访问我们的网站(http://www.ruraltechfund.org/),或者在Twitter关注我们@RuralTechFund。
联系我
能从阅读我所写的书的人得到反馈,我会很高兴。如果你有任何理由想联系我,你可以直接发送所有问题,评论,威胁到 chris@chrissanders.org 给我,我也经常在http://www.chrissanders.org/发表博客文章,或者你可以关注我的twitter @chrissanders88。
第一章:数据包分析以及网络基础
每天都有着数以万计不同的东西由于计算机网络而发生故障,从简单的间谍软件感染到复杂的路由器配置错误。我们不可能马上解决每一个问题。我们所希望最好是充分准备一定的知识与工具,来对这些类型问题做出反应。
为了确切的理解网络问题,我们走去数据包底层层次,所有的网络问题都是基于这一层次。在这个层次上,即使看起来最漂亮的应用程序。这里,没有什么能够被隐藏,没有什么能够被令人费解的菜单结构,醒目的图形或者不受信任的员工所遮蔽,这儿没有真实的秘密(只有被加密的)。在数据包级别我们能操控的越多,我们对网络的控制也就越强,解决的问题也就越多。这是一个分析数据的世界。这本书深入这个世界,通过在真实场景中的学习,你将学会如何解决慢速网络通信问题,分析出应用限制,甚至追踪黑客。在你读完了这本书以后,你将有能力使用这些包分析技术。帮助你将来解决自己的绝大多数网络问题。在这一章,我们将与一些网络通信基础知识打交道。这些知识将帮助你获得用于检查不同方案的工具。
数据包分析与数据包嗅探
数据包分析,经常被认为是数据包嗅探或者协议分析。当在网络上冲浪,为了更好理解在网络上的过程,描述了捕获数据和解释实时数据过程。数据包分析往往是通过网线,由一个用于捕获原始网络数据的数据包嗅探器来执行的。
数据包分析可以起到如下作用:
• 理解网络特性
• 知晓谁在网络上
• 确定谁或是什么程序在占用可用带宽
• 辨别网络识别高峰次数
• 识别恶意进程
• 无用且不安全的应用
有各种免费和付费的数据嗅探程序,每种程序为不同的情况所设计。现在有几个颇为受欢迎的分析工具,如tcpdump, OmniPeek, Wireshark(我们在这本书中主要使用Wireshark)。OmniPeek 和 Wireshark都有图形用户界面,而 tcpdump 是一个命令行程序
评价数据包嗅探器
当你选择某个数据包嗅探器的时候,你需要考虑下面几个因素:
**支持各种协议 **数据包嗅探器都可以解释各种协议。大多数都可以解释常用的网络协议如IPV4和UCMP,传输协议如TCP和UDP,甚至应用协议DNS和HTTP。但是,他们可能不支持一些非传统协议,或者像IPV6,SMBV2,SIP这样复杂的协议。所以当选择嗅探器时,要确保它支持你要使用的协议。
使用友好 考虑数据包嗅探器的安装,配置和工作流程。你应该选择适合你专业水平的工具。如果你基本上没有什么的数据包分析经验,你应该避免使用像TCPdump高级的命令行数据包嗅探器。另一方面,如果你是个数据包分析老手,你会觉得一个高级工具会更有用。随着你的经验不断丰富,结合使用多个数据包嗅探程序来适应特定方案这样会更有用。
成本 数据包嗅探器最大的优点有许多免费的产品同商业产品竞争。它们之间最显著的区别在于报告引擎,商业产品通常包含精美报告生成模块,而免费的要么缺乏这个功能,要么就限制了报告的一些功能。
程序支持 即使你已经掌握了基本的监听程序,你可能仍然需要帮助来解决新产生的问题。可获得帮助的途径有,开发者文档,公共论坛,和邮件列表。尽管像Wireshark这样免费的嗅探程序缺乏正规的商业支持,但社区用户和贡献者经常提供积极讨论板块,Wiki、博客,帮助你学习到更多关于Wireshark的知识。
源码获取 有些数据包嗅探器都是开放源码软件,这就意味这你可以查看源代码程序,甚至在某些条件下对源代码进行修改。如果你有一些特别或者高级功能想要附加在这个程序上,开放源码将是一件很吸引人的事。但大多数商业程序不提供源代码访问条件。
操作系统支持 不幸的是,不是所有的嗅探程序都支持每一种操作系统。你应该选择一个能够在你的需要支持的操作系统上能够运行的程序。如果你是一个高级顾问你可能被要求在各种操作系统上捕获分析数据包,因此你需要一个能够运行在绝大多数系统上的嗅探程序。此外,你有时需要在一台机器上捕获数据,而要在另一台机器上重新审视它。操作系统之间的差异性会迫使你对不同的机器使用不同的嗅探工具。
数据包嗅探器是如何工作的
数据包嗅探过程涉及到软硬件结合,而这一过程又可分为下面三个步骤:
1.****收集 首先,数据嗅探器从网线那端收集到原始的二进制数据,这通常是通过切换网络端口进入混杂模式来办到的。在此模式下,网卡可以监听所有网络,而不仅仅只是网络地址。
2.****转换 接下来,数据包嗅探器将捕获的二进制数据转化为可读的形式,高级的命令行工具都可以办的到,在这一层次上,网络数据的解析只能停留在最基本的水平上,而将接下来的巨大分析任务留给了最终用户。
3.****分析 最后数据包嗅探工具将分析抓取转换后的数据。嗅探器基于抓取转换后的网络数据来验证协议,并且开始分析该协议的特定功能。
计算机间如何通信
为了完全理解包分析过程,你必须知道计算机间是如何进行沟通的。在本节,我们将研究网络协议,开放系统互连模型(OSI),网络数据帧,硬件支持等基础知识。
协议
现代网络由运行在不同平台的各种操作系统组成。为了在不同系统之间通信,我们使用一套共同的语言,也就是被称作协议的语言。常用的协议包括传输控制协议(TCP),互联网协议(IP),地址解析协议(ARP)和动态主机配置协议(DHCP),网络中各层协议的总和被称为协议栈。
协议类似于人类语言的规则,这可能对理解协议有所帮助。每种语言都有自己的规则,如怎样使用动词,怎么和人打招呼,甚至如何正确感谢别人。协议在以很多相同的规则在工作着,允许我们怎样去定义数据包该以怎样的路线发送,如何启动连接,以及如何确认收到数据。
一种协议可以变得极其简单,也可以变的极其复杂,这完全取决于它的功能。虽然不同的协议中有很大的差异,但其中很多协议处理以下问题:
初始化连接 是由客户端还是服务器发起的连接?在通信前必须交换什么信息?
连接特性的谈判 是有加密协议的通信吗?密钥是怎样在通信主机间传输的?
数据格式 数据包中的数据是如何组织在一起的,设备又是按照怎样的顺序处理数据的?
检错修正 数据包需要太长的时间到达目的地,会发生什么?客户端如果不能与服务器建立通信,它又如何在短时间内恢复通信?
连接终止 一台主机如何向其他主机表示通信已经终止?以一种优雅的方式结束通信需要在最后传输怎样的信息?
七层OSI模型
协议是基于行业标准OSI参考模型及其功能来划分的。这个有七个同的层的模型,对于网络通信的理解很有帮助。在图1-1中,OSI模型的各层在右边,每一层的左边有恰当的术语。应用层在最顶部,用来表示访问网络资源的程序。底层是物理层,网络数据在该层进行传输。每一层的协议协调工作保证了数据由上至下被正确处理。<v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"><v:formulas></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:stroke></v:shapetype><v:shape id="图片_x0020_1" o:spid="_x0000_i1057" type="#_x0000_t75" style="width:138.75pt;height:306.75pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png" o:title=""></v:imagedata></v:shape>
Note: OSI 模型最初发表于1983年由国际标准化组织(ISO)作为文件称为 ISO 7498。OSI 模型只不过是行业推荐标准。协议开发者不需要严格地遵守它。事实上,OSI 模型并不是唯一网络模型;例如,有些人喜欢国防部 (DoD) 模型,也叫TCP/IP 模型。
每个 OSI 模型层具有特定的功能,如下:
应用层(层7)OSI模型的最上层为用户提供访问网络资源的手段。这是唯一一层最终用户能明显看到的一层。因为它提供了用于所有网络活动基础的端口。
表示层(层6)这一层将它接收的数据转换为可以由应用层读取的格式。数据编码和解码在这里完成,其形式取决于应用层协议的发送或接收数据。表示层还处理几种用以保护数据的加密和解密格式。
会话层(层5)这一层管理两台计算机间的会话连接。它建立,终止,管理,终止所有通信设备之间的连接。会话层也负责建立全双工(双向)或半双工(单向)的连接,并且优雅的关闭主机之间的连接,而不是突然停止连接。
传输层(层4)传输层的主要目的是为较低层提供可靠的数据传输服务。通过流量控制,分割,误差控制。传输层确保数据准确无误的从一个地点传输到另一点。因为实现数据准确无误的传输极其繁琐。OSI将它作为整个模型的中心。运输层使用面向连接和无连接协议某些防火墙和代理服务器都运行在这一层上。
网络层(层3)这一层是OSI模型中最复杂的之一,负责物理网络之间的路由数据。它负责网络主机上的逻辑地址(例如IP地址)它还可以将数据流分成一个个小部分,并在一些情况下进行错误检测路由器就是在这一层运行着。
数据链路层(层2)这一层提供跨物理网络传输数据的一种手段。其主要目的是提供可以用于标识(例如,MAC地址)的物理设备的寻址方案。网桥和交换机都是运行在数据链路层的物理设备。
物理层(层一)这一层居于OSI模型的最底部,是传输网络数据的物理介质。这一层定义使用,包括电压、 集线器、 网卡、 中继器和布线要求的所有硬件的物理和电气性质。物理层的建立和终止连接,提供了一种手段的通信资源共享,从数字信号到模拟信号的转换,以及从模拟信号到数字信号的转换。
NOTE:记住 OSI 模型的层快捷记忆是Please Do Not Throw Sausage Pizza Away。每个单词的第一个字母是指每一层的 OSI 模型。
<v:shape id="图片_x0020_3" o:spid="_x0000_i1056" type="#_x0000_t75" style="width:328.5pt;height:201.75pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png" o:title=""></v:imagedata></v:shape>
尽管OSI模型不过是推荐的标准,你应该牢记它为探讨和描述网络问题提供了有用的词汇描述。当我们通读这本书后,我们会发现路由问题不久成为第三层的问题,软件问题变成了第七层的问题
NOTE:我的一位同事曾经告诉我关于一些用户不能访问网络资源的问题原因在于用户自己输入密码不正确,他将这个问题称为第八层问题,8层是非正式用户层,这个术语经常被用在那些生活在数据包级别的人身上。
OSI****模型中的数据流动 最初的数据开始在发射系统的应用层上传输,数据沿着7层模型路线一直流动,纸袋它到达物理层,这时发射系统的物理层将数据发送到接受系统的物理层,接受系统在其物理层获得数据,一层一层的向上传输直到最顶层。
在OSI模型中每一层都只有与相邻层进行通信的能力,例如,层2只能从层1或层3接受或发送数据。
没有一个由OS模型的任意给定层中各种协议所提供的服务是多余的。例如,如果有一个层提供了特定的服务,那么在 其他层的其他协议将不会提供与之相同的服务,不同层中的协议可能有相似目标特点,但它们的功能将会有所不同。
在发送和接受设备上相应层协议是相辅相成的。因此,在发送设备的层7中协议负责将被传输的数据格式化,在接收设备的层7中相应的协议预计将负责格式化数据的读取工作。
图1-2是数据在OSI模型流动的图形表示,涉及到两个通信设备,你可以看到数据从一台设备的顶层,再走向底层,接着从另一台设备的底层走向顶层。<v:shape id="图片_x0020_2" o:spid="_x0000_i1055" type="#_x0000_t75" style="width:233.25pt;height:360.75pt;visibility:visible;
mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image003.png" o:title=""></v:imagedata></v:shape>
数据封装 协议在OSI模型的不同层之间互相借助数据封装传递数据。在堆栈中的每一层是负责添加首部或尾部——允许层进行通信的额外信息位——对正在传输的数据。例如,当传输层从会话层接收数据,传输层在把数据传递到网络层前会将自己头信息添加到该数据之中。
封装过程创建协议数据单元(PDU),其中包括正在发送数据的首部与尾部信息。随着数据在OSI模型中的传递,各层中的各种协议不断的向数据添加首部和尾部信息PDU不断的发生改变和成长。当它达到物理层,PDU变成最终形式,此刻再发送到目标设备。接受设备按照相反的过程,一层一层的去除协议首部和尾部,当PDU到达OSI模型顶部时,只有原始的数据被保留下来了。
NOTE:OSI模型使用特定的术语来描述每层打包处理好的数据。物理层包含的位数据,数据链路层包含的数据帧,网络层包含的数据包。最上面三层简单的使用term data,这个术语在实践中用的不是很多,所以我们一般用数据包指来自OSI模型的几层或者多层中包含首部和尾部的部分或完整的PDU。
为了说明封装数据的工作原理,我们看看一个简化的关于创建,传输,接受数据包的应用实例。请记住,我们作为数据分析人员,我们不会过多的讨论会话层和表示层,所以那些将不会出现在本实例中。(本书中其余部分也一样)
在这种情况下,假设我们试图浏览访问http://www.google.com/,首先,我们客户端计算机生成一个请求数据包,发送到目标计算机。这种场景在假定TCP/IP已经被初始化。<v:shape id="图片_x0020_4" o:spid="_x0000_i1054" type="#_x0000_t75" style="width:415.5pt;
height:325.5pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image004.png" o:title=""></v:imagedata></v:shape>
图1-3显示了在此示例中数据的封装过程。
我们从客户端计算机的应用层开始,当我们浏览网站时,所使用的协议时HTTP,HTTP协议将发出命令从google.com下载index.htm文件。
NOTE: 在实践中,浏览器会是首先访问网站的根文档,由正斜杠(/)表示。当服务器收到此请求时,它可以将此请求重定向根目录的任何文件,通常像时index.html或者index.php。我们将在第九章详细讨论HTTP。
一旦我们应用层协议已发送命令,我们将关注得到数据包发送的目的地。数据包中的数据从OSI堆栈中传递下来,一直到传输层。HTTP 是一种使用TCP的应用层协议,所以 将TCP作为用来确保可靠地传输数据包的传输层协议。生成TCP 报头并添加到 PDU,传输层的图1-3所示。这个TCP报头包含序列号和其他被添加到包中的数据,确保正确传送数据包。
NOTE:我们常说某个协议坐在或骑在另一个协议的上面,是因为OSI模型是一种自顶向下的设计。某应用程序协议如HTTP依赖于 TCP 能提供特定的服务然后准确的完成其服务。这些服务都依赖于网络层的地址和传送的数据。因此,HTTP 坐在 TCP之上,而TCP又坐在 IP之上。
当它完成他的任务TCP将数据包传给第三层负责数据包的逻辑寻址协议的IP。IP 创建包含逻辑寻址信息的报头,将它添加到PDU,并将沿以太网数据链路层传递数据包。物理以太网地址存储在以太网报头中。数据包是现在完全组装好,然后传递到物理层,在那里作为 0 和1的数据进行跨网络传输。
已完成的数据包经过网络综合布线系统,最终到达谷歌Web服务器。Web服务器开始从下到上读取数据包,意味着它首先读取数据链路层,其中包含用来确定用于特定服务器数据包的网络卡的物理以太网寻址信息。一旦这一信息加工,第2层信息的剥开,第3层的信息处理。
第3层IP寻址信息读取以确保数据包是妥善处理的,不是支离破碎的。这一层数据处理过,就可以处理下一层。
读取的第四层TCP信息以确保数据包依次到达。然后第四层的首部信息被分开,只剩下可以传递给网站服务程序的托管网站的应用层数据。为了响应来自客户端的这个数据包,服务器传送一个TCP确认数据包,因此客户端知道服务器收到它的请求,紧接着返回index.html文件。
在此实例中,无论使用何种协议,我们都建立处理了所有的数据包。。但同时,请记住不是每个在网络上的数据包来自应用层协议,所以你会只看到包含从第2,3,4层协议生成数据信息。
网络硬件
现在是时候去看看网络硬件了,在那里它们做了一些底层的工作,我们现在将重点放在一些共同的硬件上:集线器,交换机和路由器。
集线器
集线器通常是一个带有多个RJ-45端口的小盒子。就像图1-4中所示的NETGEAR,集线器端口数量从4端口到为企业环境所设计的48端口。
<v:shape id="图片_x0020_5" o:spid="_x0000_i1053" type="#_x0000_t75" style="width:320.25pt;height:149.25pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image005.png" o:title=""></v:imagedata></v:shape>
因为集线器可以产生大量多余的网络流量并且可以在半双工模式下运行(它不可以在同一时间发送和接受数据。)通常你不会在最现代话或者高密度的网络中看到它们被使用,而是使用交换机(我们在下一节讨论)。然而,应该了解集线器的工作方式,因为在下一章讨论总汇出技术,它们对数据包分析十分重要。
集线器只不过是一个运行在OSI模型的物理层上一个重复设备。它将数据包从一个端口发送到其他端口,这要取决于接收设备是否接收数据包。例如,如果位于4端口集线器的1端口的计算机需要将数据发送到位于端口2的另一台计算机,集线器会将这些数据包发送到端口2,3,4.连接在3,4端口的客户端会检查数据包的以太网报头中的目标媒体访问控制 (MAC) 地址字段并查看数据包不是对它们所发送,所以拒绝接收该数据包。图 1-5 中的例子中,计算机 A 将数据传输到计算机 b,当计算机 A 发送该数据时,所有计算机连接到集线器都接收它。然而,只有计算机 B 实际上接受数据;其他计算机不接收。
<v:shape id="图片_x0020_6" o:spid="_x0000_i1052" type="#_x0000_t75" style="width:378pt;height:300pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image006.png" o:title=""></v:imagedata></v:shape>
打个比方,假如你发送一个主题栏为“营销人员注意“的邮件到你所在的公司的每个员工,而不是仅仅那些在营销部门工作的人,市场营销部门员工看到会打开并仔细浏览。而其他员工看到这不是给它们的就会不理睬这封邮件。你看到这种通信方法会导致很多不必要的流量并且浪费时间,然而,这是枢纽功能。
在高密度网络中,交换机是集线器最好的替代品,它是全双工设备,可以同时发送和接收数据。
交换机
就像集线器,交换机就是为了重复的数据而设计的,然而又与集线器不同,它不是对每个端口进行数据广播,交换机将数据针对性发送。如图1-6,交换机看上去很像集线器。
<v:shape id="图片_x0020_7" o:spid="_x0000_i1051" type="#_x0000_t75" style="width:303pt;height:130.5pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image007.png" o:title=""></v:imagedata></v:shape>
市场的几种大型交换机,比如思科品牌的那些交换机,都是由专门供应商的特定软件和web接口进行管理。这些交换机通常都被称作托管交换机。托管交换机提供集中在网络管理中特别有用的功能,包括能够启用或禁用特定的端口,查看端口统计资料,配置更改,远程重启。交换机还提供了用以传输数据的高级功能。为了能够与特定设备,交换机必须能够唯一的标识它们的Mac地址,这意味着它们必须运行在OSI模型的数据链路层。
交换机储存CAM表中每个已连接设备的第二层地址,这像是一个交通警察的行为。当传输数据包时,交换机读取数据包中第二层的信息,并参考CAM表,确定哪些端口需要发送数据,交换机只向那些特定端口传输数据,从而大大减少了网络流量。图1-7说明了交换机中的流量流动,在此图中,计算机a将数据发送到预期收件人,计算机b。
当多个会话连接同时产生,但是直接在交换机与收件人传输人,而不是与所有连接的计算机传输信息。
<v:shape id="图片_x0020_9" o:spid="_x0000_i1050" type="#_x0000_t75" style="width:321pt;height:291.75pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image008.png" o:title=""></v:imagedata></v:shape>
路由器
路由器是比交换机和集线器更高级的网络设备。路由器可以是多种形状和形式,但是大多数设备在背面都有几个LED指示灯和几个网络端口。图1-8是一个小的路由器示例。
<v:shape id="图片_x0020_10" o:spid="_x0000_i1049" type="#_x0000_t75" style="width:415.5pt;height:175.5pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image009.png" o:title=""></v:imagedata></v:shape>
路由器运行在OSI模型的第三层,它们负责两个或者多个网络之间转发数据包。路由器直接控制网络之间的交通流量过程称为路由。几种类型的路由协议决定不同类型数据包路由到其他的网络,路由器通常使用第三层(如IP地址)来唯一标识网络上的设备。
一个好的方法来说明路由的概念是用附近邻里的几条街道做比喻。有了地址的房子,可以被视为一台计算机然后想象每条接到是一个网络段,图1-9显示了这种比喻。从你的房子出发,你可以很容易的从你的前门直走,然后可以访问同一条街道上的其他房子。交换机允许网络段上所有的计算机进行通信会话。然而,与另一条街道的邻居交谈,就像计算机与另一网络段的计算机通信。根据图1-9所示,假设你位于502藤街,而且你要去206山茱萸小道,我们可以认为这是网段跨越。如果在192.168.0.3的计算机需要与在192.168.0.54设备进行通信,在达到目标网络段之前,它必须穿过某个路由器到达10.100.1.x网络,然后穿过目标网段的路由器。
网络路由器的大小和数量通常取决于网络规模大小和规模。个人和家庭办公室网络可能有只有一个小路由器。大公司的网络可能有几个能够传遍各部门的路由器,所有连接到一个大型中央路由器或第 3 层交换机 (高级的交换机还具有充当路由器的内置功能。)
<v:shape id="图片_x0020_8" o:spid="_x0000_i1048" type="#_x0000_t75" style="width:415.5pt;height:282.75pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image010.png" o:title=""></v:imagedata></v:shape>
随着你看过更多的网络图,你会逐渐理解数据在不同的节点的传输方式。图1-10显示了一种常见的路由网络布局。在这个实例中,两个独立的网络通过一个路由器连接起来。如果位于网络A的某台计算机想与网络B中计算机通信,传输的数据必须经过路由器。
通信分类
网络通信可以划分为三种,广播,组播,单播通信,每个分类都是由该类中的被网络硬件处理的数据包所决定的鲜明特点。
广播通信
广播的数据包是发送到网络段上所有的端口,无论给定的端口是集线器或者交换机上的端口。
在第二层和第三层上几种广播通信的形式,在第二层,MAC地址是一个保留的广播地址,任何发送到此地址通信都会广播到整个网络段。第三层也有特别的广播地址,与在使用范围的网络地址有所不同。
IP网络地址范围内最可能IP被保留作为广播地址。例如如果你的计算机有一个IP地址192.168.0.20,和255.255.255.0子网掩码,那么192.168.0.255是广播地址(更多关于IP寻址在第7章)
任何一台计算机不通过路由器可以直接传输数据到另一台计算机的网段称为广播的域。含有多个集线器和交换机的大型网络连接不同媒体,广播的数据包从一台交换机传到网络上其他交换机的所有端口,因为数据包在交换机间重复传输。图1-11显示了一个小型网络上两个广播域。在广播数据到达路由器,由于每个广播域的扩展,广播数据只能分发在指定的广播域中。
<v:shape id="图片_x0020_11" o:spid="_x0000_i1047" type="#_x0000_t75" style="width:414.75pt;height:267pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image011.png" o:title=""></v:imagedata></v:shape>
我们早些时候举了一个邻居的例子,这个也可以很好的研究广播域的工作方式。你可以将广播域想成邻居门廊前的街道,如果你站在门廊前大喊,街道上的人就能过听到你的叫声。然而,如果你想与不同街道上的人交流,你需要寻找一个方法与那人 进行直接交流,而不是从你家门廊前大声喊叫。
组播通信
组播是一种可以将某个数据包从一个源地址同时传送到多个目的地的通信方式,组播的目的是尽可能较少带宽。这种流量优化在于沿着到达目的地的路径上多次复制数据。组播流量的精确控制高度依赖于其个别协议的执行情况。
执行多播的通信的主要方法是通过包收件人加入一个多播组的寻址方案。这是 IP 组播技术的工作原理。此寻址方案确保数据包不被发送到非目标计算机上。事实上,IP 致力于组播的整个地址范围。如果你看到224.0.0.0到239.255.255.255范围内的IP地址,它是最有可能处理多播的通信,因为这些范围地址就是为此保留下来的。
单播通信
单播数据包是直接从一台计算机传送到另一台计算机。单播依赖于它所使用的协议。例如,某个设备想与web服务器进行通信,这是一个一对一的连接,所以这个通信进程将随着客户端设备发送数据包到唯一的web服务器开始产生。
总结
这一章介绍了数据包分析的网络基础,在你能够进行网络故障排除你必须理解在网络的这一层到底发生了什么。在第二章,我们将介绍几种用于捕获数据包的几种技术。
第二章:开发电线
有效率的进行数据包分析工作的一个重要的问题就是在哪安装数据包嗅探器,方便的捕获数据。Packet analysts often refer to placing the packet sniffer as sniffing the wire, tapping the network, or tapping into the wire.
然而,嗅探数据并不是简单的在笔记本网线接口处接上网线,然后捕获数据。事实上,它有时比分析数据还要困难。放置嗅探器具有挑战性,因为可以使用各种各样的网络硬件来连接设备。图2-1展示了一个典型的案例,因为现代网络(交换机,路由器)上的设备,每个处理流量的方式都不同。你必须考虑你正在分析的网络设备的安装。
本章的目标是帮助你理解在不同网络拓扑结构上嗅探器的安装。
<v:shape id="图片_x0020_12" o:spid="_x0000_i1046" type="#_x0000_t75" style="width:415.5pt;height:224.25pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image012.png" o:title=""></v:imagedata></v:shape>
在监听数据包在网络上的之前,你需要有支持混杂模式驱动程序的网络接口卡 (NIC)。混杂模式允许NIC来查看所有经过网线的数据包。
在第一章,我们学了网络广播通信,设备常常接收到实际上不是向它们发送的数据包。例如,地址解析协议 (ARP),我们会在第 7 章深入研究。ARP用于确定任何网络上哪些MAC地址对应于一个特定IP 地址。若要查找匹配的 MAC 地址,设备发送 ARP 广播数据包发送到每个设备的广播域上,希望目标设备会对其响应。在广播域中会有多台设备,但只有正确的收件人的设备可以收到传输的ARP广播数据包。为网络上每台设备处理ARP广播数据包,这是非常没有效率的。相反,如果这个数据包不是传输给预定的设备,也就是说该数据包对该设备是无用的,设备的NIC将无视这个数据包,而不是将它传给CPU进行处理。
丢弃那些不为接受主机所接受的数据包,提高了进程效率。但对于数据分析者却不是那么好。作为分析师,我们通常想捕获每个从网线那端发送过来的数据包,所以我们不要冒险,丢弃某些数据包,而错过一些重要的信息块。
我们确保使用NIC的混杂模式可以捕获所有通信。在混杂模式运行时,每个数据包都通过网卡,经过主机处理器处理。一旦数据包成功传送到CPU,数据包嗅探器就可以抓住该数据包进行分析。
最先进的NIC支持混杂模式。Wireshark包括Libpcap/WinPcap 驱动,它能够使你的NIC可以直接从Wireshark GUI 切换到混杂模式。(我们将在第三章详细讨论关于Libpcap/WinPcap)。
为了完成这本书的目的,你必须要有一个NIC和一个支持混杂模式的操作系统。只有在你想要看仅有的直接发送到你正在嗅探的MAC地址的流量的时候不需要使用混杂模式。
NOTE:大多数操作系统 (包括 Windows) 不会让你使用在混杂模式的网卡,除非你提升你的用户权限。如果不能合法地在这些系统上获取用户权限,很可能,你不应该在特定的网络上执行任何类型的数据包嗅探。
在集线器中进行嗅探
在已安装的集线器进行网络嗅探时每个数据包分析师的梦想。在第一章,你学到了流量是如何通过集线器已连接的端口发送到其他集线器。因此,要分析通过连接到集线器的计算机的流量,你所要做的是将数据包嗅探器连接到集线器的未占用端口。你将能够看到,从该计算机的所有通信以及其他连接到该集线器的设备的所有通信。如图2-2所示,你可见设备是无限的,当你的嗅探器连接到基于集线器的网络。
<v:shape id="图片_x0020_13" o:spid="_x0000_i1045" type="#_x0000_t75" style="width:415.5pt;height:264pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image013.png" o:title=""></v:imagedata></v:shape>
NOTE:可见窗口,在本书的各种图示中,代表你能够使用数据包嗅探器嗅探的网络设备。
不幸的是,基于集线器的网络是十分罕见的,因为它们会让网络管理员头疼。因为只有一台设备可以在某个时间通过集线器进行通信,连接的设备必须与其他连接设备竞争带宽。当两个或多个设备同时进行通信,数据包会产生碰撞 。如图2-3所示。这种结果可能是数据包丢失,通讯设备可能通过重发数据来弥补这损失,进一步增加了网络拥堵。随着流量和碰撞的增加,通讯设备可能需要重复传输数据三到四次,这样网络性能急剧下降。因此,我们就能够理解为什么现代任何规模大小的网络大多数使用交换机。虽然你很少看见集线器在现代网络上的应用,但是你偶尔会在旧式硬件或特定设备网络上碰见。如工业控制系统(ICS)网络。
<v:shape id="图片_x0020_14" o:spid="_x0000_i1044" type="#_x0000_t75" style="width:291pt;height:251.25pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image014.png" o:title=""></v:imagedata></v:shape>
最简单的方法确定是否在网络中使用集线器,就是去服务器房间或网络室去看一看。大多数集线器都可以这么看。当一切都失败了,仅看着在服务器壁橱最阴暗的角落里的网络硬件,上面还有几英寸的尘埃。
在交换机环境中进行嗅探
交换机是在现代网络中连接设备使用的最常见类型。他们提供有效的方法传输数据。广播、组播和单播。交换机允许全双工通信,也就是说,设备可以同时发送和接收数据。
但对于数据包分析师是不幸的,交换机增加了复杂性。当你将某个嗅探器连接到交换机上某个端口后,你可以看到广播流量,安装过嗅探器设备传输或接受的流量。如图2-4所示,要捕获交换机网络上来自目标设备的流量,你需要采取额外的步骤。
<v:shape id="图片_x0020_15" o:spid="_x0000_i1043" type="#_x0000_t75" style="width:415.5pt;height:258pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image015.png" o:title=""></v:imagedata></v:shape>
有四种方法来捕获这流量:端口镜像,总汇,使用分接头,和ARP缓存中毒。
端口镜像
端口镜像,或端口映射,也许是捕获交换机网络上的目标设备流量最简单的方法,要进行这样的设置,你需要能够访问目标计算机所处的交换机命令行工具或者web管理接口面板。此外,交换机必须支持端口镜像,以及有一个空端口,可以让你的嗅探器插入。要启用端口镜像,你要发送一条命令,强制交换机将所有通信从一个端口复制到另一个端口。例如,要捕获来自交换机端口3上设备所有传送和接受通信,你可以在端口4插入你分析工具,将端口3映射到端口4。图2-5所示端口镜像工作原理。
<v:shape id="图片_x0020_16" o:spid="_x0000_i1042" type="#_x0000_t75" style="width:415.5pt;height:224.25pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image016.png" o:title=""></v:imagedata></v:shape>
设置端口镜像方法取决于你交换机的制造商。对于大多数企业交换机,你需要登陆到一个命令行界面,使用特定命令语句配置端口镜像。在表2-1中,列举了一些端口镜像命令。
<v:shape id="图片_x0020_17" o:spid="_x0000_i1041" type="#_x0000_t75" style="width:415.5pt;height:111pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image017.png" o:title=""></v:imagedata></v:shape>
NOTE:一些企业交换机提供了基于web的图形用户界面,并且将端口镜像作为一个选项。但这些并不常见,而且不标准。但是,如果您的交换机提供了配置端口镜像通过 GUI 的有效途径,就用这种方法。此外,更多的小型办公室和家庭办公室(SOHO)交换机已开始提供端口镜像功能,并且可以使用GUI进行配置。
当使用端口镜像时,请注意你镜像端口的吞吐量。某些交换机制造商允许你将多个端口镜像到另一个端口。在分析单个交换机上两个或多个设备上的通信时,这个功能会很有用。
然而,我们再想一下,我们使用基本的数学来计算一下,如果你有一个24端口的交换机,并且将其中23个全双工100Mbps端口镜像到最后一个端口,那么就会有4600Mpbs流向该端口。这远远超过单个端口的物理阈值。因此, 如果通信量达到某个级别, 则可能导致数据包丢失或网络速度减慢。这可以参考一下超额认购。在这些情况下,交换机会完全丢弃多余的数据包,甚至“暂停”其内部电路,从而阻止数据通信。因此你要确保你在进行捕获不会产生这些问题。
端口镜像对于企业网络或需要始终监视特定网络段(如在网络安全监视中)的情况来说,似乎是一个有吸引力的、低成本的解决方案。然而,对于应用程序,这种技术通常是不够可靠的。特别是在高吞吐量级别, 端口镜像可能导致相矛盾的结果,导致难以跟踪的数据丢失。对于这种情况, 建议您使用分接头,我们将在24页讨论使用分路器。
Hubbing out****(插拔)
捕获交换机网络目标设备上的流量的另一种方法是通过插拔(hubbing out真不知道怎么翻译)。使用这种技术,你可以通过将将目标设备和分析系统直接插入集线器中,这样将它们置于同一网络段上。许多人认为这是个作弊行为。但当你无法执行端口镜像但仍对目标设备插入的交换机具有物理访问权限时,这确实是一个有效的解决方案。
如何进行hub out?你需要一个集线器和几根网络电缆。有了硬件条件后,按照如下方式进行连接:
-
找到目标设备所在的交换机, 并将目标从网络中拔出。
-
将目标的网线插入您的集线器。
-
插入将分析仪连接到集线器的另一根电缆。
-
将网络电缆从集线器插入网络交换机,以将集线器连接到网络。
现在, 您已将目标设备和分析器放在同一广播域中,并且将广播目标设备的所有通信,以便分析器可以捕获这些数据包,如图2-6 所示:
<v:shape id="图片_x0020_19" o:spid="_x0000_i1040" type="#_x0000_t75" style="width:405pt;height:230.25pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image018.png" o:title=""></v:imagedata></v:shape>
在大多数情况下, hubbing out(插拔)将目标设备的双工从全双工 (双向) 减少到一半(单向)。虽然此方法不是捕获数据包的最干净方式,但当交换机不支持端口镜像时,这是您唯一的选择。但请记住, 您的集线器也将需要一个电源连接, 这可能很困难找到电源连接。
NOTE:作为提醒,提醒拔出设备的用户。特别该用户恰是公司的CEO。
寻找“真正的”集线器
当hubbing out时,确保你使用的是真正的集线器,而不是带有虚假标记的交换机。网络硬件供应商在经营销售都有一个坏习惯,比如在销售集线器时,将它当作一个低级的交换机。如果你使用没有经过验证,测试的集线器,你将只能看到自己的通信流量,而不能看到目标设备的流量。
当你找到一个可以信赖的集线器时,测试一下确保它真的能用。确定它是不是集线器的最佳方法是将两台计算机连接在上面,并查看其中一台计算机是否能够嗅探该网络段上的其他计算机或者其他硬件设备(如另一台计算机或者打印机)的通信流量。这么做,你就得到了保障。
因为集线器太过时了,它们不在批量生产了,从货架哪里买到一个真正的集线器几乎不可能了,所以你要有创意性的去寻找一个,一个好的来源就是学校区域的二手拍卖。公立学校在处置这些过剩物品之前, 会先进行拍卖, 而且他们经常有闲置的古老硬件。我曾看到有人以不到一盘白豆和玉米面包的价格,从几个中心的拍卖中走了出来。另外, eBay可以是一个很好的集线器来源,但要警惕,因为你可能会遇到与假标签交换机同样的问题。
使用分路器
大家都知道这种表达:“为什么吃牛排的时候有鸡肉?”(或者,你来自南方,为什么吃油炸博路尼亚大红肠有肝糕)这也适合当hubbing out要有分路器。
网络分路器是一种硬件设备,你可以放置在缆线系统的两个点之间,来捕获这两点之间的数据包。与hubbing out一样,你可以在网络上放置一块硬件,来捕获所需数据包。不同之处在于,你需要使用专门的网络分析硬件,而不是使用集线器。
主要有两种类型的分路:聚集和非聚集。这两种类型的分路都安装在两个设备之间,以便嗅探通信信息。聚集分路和非聚集分路主要区别在于聚集的有四个端口,如图2-7所示,并且需要独立的接口来监视通信流量。而非聚集的只有3个端口并且只能使用单个接口监视双向通信。
<v:shape id="图片_x0020_20" o:spid="_x0000_i1039" type="#_x0000_t75" style="width:193.5pt;height:163.5pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image019.png" o:title=""></v:imagedata></v:shape>
分路器还需要一个电源连接,虽然有些分路器自带电池允许短时间内嗅探。
聚合式分路
聚合的分路器是最容易使用的。它只有一个用于嗅探双向通信流量的物理监视端口。使用聚合式分路器插入交换机中,捕获所有通信,请按下列步骤操作:
1.从交换机上拔下计算机。
2.将网线的一端插入计算机, 然后将另一端插入分路器的“入”端口。
-
将另一网线的一端插入分路器的“出“端口,并将另一端插入网络交换机。
-
将最后一根电缆的一端插入分路器的“监视“端口, 然后将另一端插入作为你嗅探的计算机。
聚合式分路器应该按照图2-8所示连接。这样做,你可以捕获所有连接在分路器上计算机进出流量。
<v:shape id="图片_x0020_18" o:spid="_x0000_i1038" type="#_x0000_t75" style="width:309pt;height:198pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image020.png" o:title=""></v:imagedata></v:shape>
非聚集式分路
非聚集式分路其比聚合式稍微复杂点,它在捕获通信流量时有更大的灵活性。非聚集式有两个监视端口, 而不是只有可用于侦听双向通信的单个监视端口。一个监视端口用于嗅探某个方向通信 (从计算机连接到分路器),另一个监视端口用于嗅探其他方向 (连接到的计算机和分路器)的通信流量。
要捕获连接到交换机的单个计算机的所有通信, 请按照下列步骤操作:
-
从交换机上拔下计算机。
-
将网线的一端插入计算机, 然后将另一端插入分路器的“入“端口。
-
将另一网线的一端插入分路器的“出”端口, 并将另一端插入网络交换机。
-
将第三条网线的一端插入分路器的监视端口A, 并将另一端插入计算机上作为您的嗅探程序的NIC中。
-
将最终电缆的一端插入分路器的监视端口B, 并将另一端插入计算机上作为您的嗅探程序的另一个NIC中。
非聚集式分路连接应该如图2-9所示。
<v:shape id="图片_x0020_21" o:spid="_x0000_i1037" type="#_x0000_t75" style="width:370.5pt;height:205.5pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image021.png" o:title=""></v:imagedata></v:shape>
虽然这些例子可能让你看起来只能使用分路器监视单个设备,但实际上您可以通过将分路器放置在特别的位置来监视许多设备。例如,如果要监视整个网络段和因特网之间的所有通信,则可以将分路器放在所有其他设备所连接的交换机和网络的上游路由器之间。这个放置点可以让你收集到你所想要的流量。此策略通常用于安全监视。
选择网络分路器
哪种分路器会更好点?在大多数情况,聚集式是首选的方法,因为不需要太多的缆线,而且不需要两个NIC。但是如果你想要捕获大流量数据或许只关注某方向的通信流量,那么非聚集式分路会是一个更好的选择。
你可以购买各种大小的分路器。从简单的以太网级别到企业级别光纤分路器价格从150美元到6位数不等。我曾使用过的企业级别的分路器都是来自Ixia(以前称作Net Optics),Dualcomm,和Fluke Network。而且我现在还很高心使用它们。但是现在也还有许多不错的分路器可以使用。如果你要为企业应用程序使用分路器,确保分路器有故障重启开放。这意味着,当分路器出现故障过或者死机。数据包仍然可以通过它,并且分路器的网络连接不会中断。
ARP缓存中毒
我最喜欢的技术之一的ARP缓存中毒。我们会在第七章详细介绍ARP协议,这里简单说明一下,以便你能够理解这种技术的工作原理。
APR进程
回顾第一章的两个主要数据包寻址类型是在OSI模型的第2,3层。这第二层地址,或者MAC地址,与你在第三层使用对的其他地址系统一起使用。在本书中,我会参考行业标准,将第三层寻址系统作为IP寻址系统。
网络上的所有设备都使用 IP 地址在第3层上相互通信。因为交换机在OSI模型第2层上运行, 所以它们解析到第二层MAC地址, 所以设备必须能够在它们构造的数据包中包含这些信息。当 MAC地址处于未知状态,必须使用已知的第3层IP地址获得,流量可以转发到相应的设备。此翻译过程是通过第2层协议ARP来完成的。
对于已连接到以太网的计算机,ARP过程是在某台计算机想与另一台计算机通信时开始的。发送数据的计算机首先检查ARP缓存,看它是否具有与目标计算机的IP地址相关联的MAC地址,如果没有,则会发送一个ARP请求到数据链路层广播地址ff: ff: ff: ff: ff: ff正如第一章所述。广播的数据包会被特定网络段的所有计算机接受。但这数据包会问:“哪个IP地址有值为xx:xx:xx:xx:xx:xx的MAC地址?”
如果某台设备没有目标计算机的IP地址,则会抛弃这个请求,目标计算机通过一个叫做ARP回应将其MAC地址回应到数据包中。此时,传输计算机具有与远程计算机的数据链路层的寻址信息,并将该信息储存在其ARP缓存中以进行快速检索。
ARP****缓存中毒原理
ARP缓存中毒,有时又称为ARP欺骗。是一种新的监听线路的形式。它的工作原理是将APR消息发送到以太网交换机或这带有假的MAC地址的路由器,来拦截另一台计算机的流量。图2-10正说明了这种设置。
<v:shape id="图片_x0020_22" o:spid="_x0000_i1036" type="#_x0000_t75" style="width:415.5pt;height:205.5pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image022.png" o:title=""></v:imagedata></v:shape>
攻击者常常使用这种技术向客户端系统发送假的寻址数据包,以便拦截特定的流量,或者导致攻击目标拒绝服务(DOS)。然而,它也是一种在交换机网络上捕获目标计算机数据包的合法方法。
Using Cain & Abel(使用该隐和亚伯,感觉怪怪的)
当试图想要向ARP缓存投毒时,第一步时获取必要的工具,以及收集一些信息。接下来我们的演示,我们将使用流行的安全工具Cain&Abel,(来自oxid.it这网站) (http://www.oxid.it/),它支持windows系统。现在我们根据网站引导下载并安装它。
NOTE:当你准备下载Cain &Abel时,你电脑里的防病毒软件或浏览器有可能会将其标记为恶意软件或者黑客工具。这个工具有多种用途,不外乎一些邪恶的用途。出于我们的目的,它不会对你的系统造成威胁。
在你使用该工具之前,你需要收集一些信息,包括分析系统的IP地址,要捕获流量的远程系统以及其上游路由器。
当你第一次打开这个软件,你会注意到窗口顶部一系列选项卡。ARP缓存中毒只是该软件一个功能而已。我们将使用sniffer这个选项卡达到我们的目的,当你单机这个选项卡,你会看到一个空表,如图2-11所示。
<v:shape id="图片_x0020_24" o:spid="_x0000_i1035" type="#_x0000_t75" style="width:415.5pt;height:266.25pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image023.png" o:title=""></v:imagedata></v:shape>
要完成此表,我们需要激活程序内置嗅探器,并且扫描网络查找主机。为此,按照下列步骤操作。
-
单击工具栏左侧的第二个图标, 类似于 NIC。
-
选择连接到你想要执行ARP缓存中毒的一个网络上,如果这是你 第一次使用Cain & Abel,选择这个接口然后单击OK。否则,你在此之前使用Cain &Abel并且选择过那个接口,你的选择将会保存下来。你需要再次按configuration菜单来选择接口。(确保此按钮被按下,以激活Cain & Abel的内置嗅探器)
-
要生成可用的网络主机列表,单机(+)按钮,显示MAC地址扫描器对话框,如图2-12所示。“All hosts in my subnet”单选框按钮选上,(如果有需要,可以指定地址范围)接着单击OK继续。
<v:shape id="图片_x0020_26" o:spid="_x0000_i1034" type="#_x0000_t75" style="width:159.75pt;height:322.5pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image024.png" o:title=""></v:imagedata></v:shape>
一些Win10用户报告Cain & Abel无法确定其网络接口的IP地址,从而不能完成该过程。如果出现此问题,那么在配置网络接口时你将看到IP地址均是0.0.0.0。为了解决这一问题,请按下列步骤操作:
-
如果Cain & Abel是打开的, 请关闭它。
-
在桌面搜索栏,键入ncpa.cpl打开网络连接面板
-
右键你准备嗅探的网络接口,单击属性选项。
-
双击Internet协议版本4(TCP/IPV4)
-
在弹出的对话框中单击高级按钮,再在弹出的对话框选择DNS选项卡
-
勾上“在DNS注册中使用此连接的DNS后缀”
-
单击确定按钮退出打开的网络连接面板,重新打开Cain & Abel
现在,原来空白的地方全都被网络上的主机列表,以及它们的MAC地址,IP地址,网络供应商所填充,这些将是你在进行ARP缓存中毒是要用到的列表。
在程序窗口的底部, 您应该会看到一组选项卡, 它会将您带到嗅探器标题下的其他窗口。现在, 您已经建立了您的主机列表, 您将工作从 APR(ARP毒路由) 选项卡. 现在通过单击选项卡切换到APR窗口。
在APR窗口,将有两个空表。当你完成上述步骤之后,一个表显示你的可以进行ARP缓存中毒设备,另一个表将显示你与那些设备之间的通信。
要设置投毒,请按照下列步骤操作:
-
单击屏幕上部的空白区域。然后单击程序的标准工具栏上的加号(+)按钮。
-
出现的窗口有两个选择窗格。在左边您将看到网络上所有可用主机的列表。如果您单击 IP目标计算机的地址, 右侧的窗格将显示网络中的所有主机, 但目标计算机的 IP 地址除外。
-
在右窗格中, 直接单击目标计算机的上游路由器IP地址,如图2-13 所示, 然后单击OK。两个设备的 IP 地址现在应列在主应用程序窗口上的表中。
-
为了完成这一过程,单击标准工具栏上的黄色和黑色辐射符号。这将激活Cain& Abel的ARP缓存中毒功能, 使你的分析系统成为目标系统与上游路由器之间的所有通信的中间者。
<v:shape id="图片_x0020_23" o:spid="_x0000_i1033" type="#_x0000_t75" style="width:399pt;height:260.25pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image025.png" o:title=""></v:imagedata></v:shape>
现在, 你应该能够启动数据包嗅探器并开始分析过程。完成捕获通信量后, 只需单击黄色和黑色的辐射标志停止ARP 缓存中毒。
关于ARP缓存中毒的警告
关于ARP缓存中毒的最后一个注意事项: 你应该非常了解您实现此过程中分析器系统的扮演的角色。例如, 当目标设备具有非常高的网络利用率时, 请不要使用此技术。例如一个有1Gbps连接速度的文件服务器 (特别是在分析器系统仅能提供100Mbps连接速度的情况下)。
当你使用本示例中的技术重构路由通信时,目标系统必须首先通过你的分析器系统,然后接受或传送数据,因此你的分析器成为了通信过程的一个阻碍。这种重构路由通信可能对你正在分析的系统造成拒绝服务的影响,从而导致网络性能下降和分析数据错误。通信堵塞也可以同样精致SSL基础通信的如期进行。
Note:通过使用称为非对称路由的功能, 可以避免所有通信都通过分析器系统。有关此技术的详细信息, 请参阅 oxid.it 用户手册(http://www.oxid.it/ca_um/topics/apr.htm)
在路由环境中嗅探
所有用于交换机网络的监听线路技术同样适用于路由网络。在处理路由环境时,唯一需要考虑的问题是你在排除跨越多个网段问题时,嗅探器的放置问题。
正如你所了解的,设备的广播域一直延伸到路由器,然后将通信流量传递到下一个路由器。当数据在多个路由器之间传送时,分析每个路由器各端流量是相当重要的。
例如,考虑您可能遇到在某个网络中有几个网段连接到多个混合路由器这样的问题。在这个网络中, 每个网段与上游网段进行通信以存储和检索数据。在图2-14中, 我们要解决下游子网(网络D) 无法与网络A上的任何设备通信的问题。
<v:shape id="图片_x0020_25" o:spid="_x0000_i1032" type="#_x0000_t75" style="width:330.75pt;height:353.25pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image026.png" o:title=""></v:imagedata></v:shape>
如果您嗅到网络D上的设备通信与其他网络上的设备通信有问题, 您可能可以清楚地看到数据正在传输到另一个网段, 但可能看不到数据传送回来。如果你重新考虑嗅探器的位置, 并开始嗅探上游网络段 (网络 B) 中的通信量, 你将对正在发生的情况有一个更清晰的了解。此时, 您可能会发现网络B的路由器不正确地丢弃路由通信。最终, 这将引导你想到路由器配置问题。纠正后, 解决了一个大问题。虽然这个场景有点宽泛, 但这个示例的目的是, 当处理多个路由器和网络段时, 你可能需要稍微移动你的嗅探器,明白整个蓝图并找出问题所在。
网络映射
在讨论网络布局时, 我们已经检查了几种网络映射。网络映射或网络图解显示网络上的所有技术资源及其连接方式。
没有比可视化网络更好的方法来确定包嗅探器的位置。如果您有可用的网络映射, 请随身携带,因为它将是排除故障和分析过程中的宝贵资产。你甚至可能想给自己的网络制作一份网络映射。请记住,排除故障是你成功收集到正确数据一半的保证。
嗅探器在实际中的放置
我们已经列举了四种在交换环境中捕获网络通信流量的方法。如果我们仅仅考虑从我们想要捕获流量的某个设备上安装一个数据包嗅探器,我们可在增加一种方法。考录到这五种方法,可能有点混淆,如何确定哪一个更合适,表2-2为每个方法提供了一些准则。
<v:shape id="图片_x0020_27" o:spid="_x0000_i1031" type="#_x0000_t75" style="width:415.5pt;height:230.25pt;visibility:visible;
mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image027.png" o:title=""></v:imagedata></v:shape>
<v:shape id="图片_x0020_28" o:spid="_x0000_i1030" type="#_x0000_t75" style="width:415.5pt;height:348.75pt;visibility:visible;
mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image028.png" o:title=""></v:imagedata></v:shape>
当我们在后面的章节中逐步体验实际的场景时, 我们将讨论在逐案基础上捕获所需数据的最佳方法。目前, 图2-15 中的流程图将帮助您选择在给定情况下捕获交通的最佳方法。该流程图考虑了不同的因素, 无论是在家中还是在工作中开始捕获数据包。请记住, 这个流程图只是一个普通的参考, 并没有涵盖每一个监听线路的可能的情况。
<v:shape id="图片_x0020_29" o:spid="_x0000_i1029" type="#_x0000_t75" style="width:356.25pt;height:437.25pt;visibility:visible;
mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image029.png" o:title=""></v:imagedata></v:shape>
第三章:关于Wireshark的介绍
正如第一章所提到的我们有好几个可用的数据包嗅探程序进行网络数据分析,在这本书中我们主要使用Wireshark,这一章将介绍Wireshark。
Wireshark****历史
Wireshark 有非常丰富的历史。Gerald Combs, 堪萨斯市密苏里大学的计算机科学毕业生,最初开发它是出于必要的。第一个版本Comb应用, 称为Ethereal,在GNU公共许可证下于1998年发布。
在Ethereal发布后的第八年,Combs离开了原有的工作去寻求其他的工作机会。不幸的是,他的雇主与此同时对Ethereal有完全的商标注册权利,并且Combs无法与他达成允许他控制Ethereal商标的协议。Combs于是和他的其他开发团队在2006年中期将该项目更名为Wireshark。
Wireshark如今知名度急速增长,他们的协作开发团队现在已经有500多名的贡献者。而以前的Ethereal不再进行开发。
Wireshark****优点
Wireshark提供了几个优点,提供日常使用。针对小白以及专业数据分析人员,它各提供了不同的功能。让我们根据第一章选择数据包标准来审视这个wireshark。
支持多种协议 wireshark所支持的协议数量,远远超过这本书中所提到的。有常见的IP,DHCP,以及高级的DNP3,bt。由于Wireshark是开源的,因此每次更新都会在其中添加新的协议支持。
也许有可能,wireshark不支持你需要的协议,但是你可以编写相关代码来支持这种协议。甚至可以提交给Wireshark开发人员,给以后更新作为考虑。你可以从https://www.wireshark.org/develop.html.了解更多提供Wireshark项目代码内容。
使用友好 Wireshark接口是众多数据包嗅探应用程序中最容易理解的一个了。它有GUI界面,有清楚的文本菜单,简单布局。它同样提供了一些很实用的功能,比如对不同协议显示不同的颜色,原始数据图形展示等等。
与很多复杂的命令行工具不同,如tcpdump,Wireshark GUI是很容易被那些刚刚进入数据分析世界的人儿所接受。
费用 由于它是开源的,并且是在GNU公共许可证 (GPL) 下发布,Wireshark是无法被定价的:它绝对免费。无论你将其用于个人还是商业,您都可以下载和使用 Wireshark。
Note 虽然Wireshark是免费的,但还是有人意外的花钱购买了。如果你在eBay上搜索packet sniffers,你会很惊讶的看到很多人在以Wireshark专业许可证在售卖,只要39.95$。如果你真的想买它,请打电话给我,我有出售。
程序支持 软件包的支持等级。自由分布的软件如Wireshark可能没有正规社区的支持,但是有开源社区的用户提供帮助。幸运的是,Wireshark社区众多活跃的开源社区中的一个。Wireshark 网站有多种形式支持的直链,包括在线文档,wiki,快速帮助(FAQS)。注册Wireshark邮件,这通常被大多数程序开发者监控着。对Wireshark有偿支持可以重Riverbed Technology公司获得。
源码访问 Wireshark是一款开源软件,所以你可以随时访问源代码。这对于解决程序问题,了解协议分离器工作原理,做出袭击的贡献都很有用。
操作系统支持 Wireshark支持现代绝大多数操作系统,包括Windows,Linux,OS X平台。你可以在Wireshark网站主页查看它所能支持所有操作系统列表。
安装Wireshark
Wireshark的安装过程相当简单,但是,在安装前我们要做些检查,确保你的系统满足一下要求:
-
任何现代32位x86或64位CPU
-
400MB 可用RAM, 或者更多用于大型捕获文件
-
至少300MB 的可用存储空间, 以及用于捕获文件存储
-
支持混杂模式的NIC
-
WinPcap/libpcap 捕获驱动
WinPcap捕获驱动是 Windows 中执行的读取数据包捕获应用程序编程接口 (API)。简单地说,这个驱动程序与您的操作系统进行交互,捕获原始数据包数据,应用筛选器,然后切换网卡到混杂模式
虽然你可以从(http://www.winpcap.org/)下载 WinPcap,但更好选择是从Wireshark 的安装包下安装Wincap因为Wireshark中包含的Wincap版本已经经过测试,能够更好的帮助你的工作。
在Windows系统上安装
当前版本的Wireshark在那些还在维护Windows 版本通过测试
在写作这本书, 包括 Windows Vista; Window 7;Window 8; Window 10;和 Windows Servers 2003、2008和2012。虽然 Wireshark可以在其他版本的windows上工作 (如 windows XP), 但这些版本并不受官方支持。在Windows上安装 Wireshark 的第一步是从官方Wireshark 网页中获取最新的安装版本, http://www.wireshark.org/。导航到网站上的 "download Wireshark" 部分, 然后选择 "release mirror"。下载完整安装包后, 请按照下列步骤操作:
1. 双击 .exe 文件开始安装, 然后单击介绍窗口。
2. 阅读许可协议并点击I agree
3. 选择您要安装的 Wireshark 的组件, 如下所示,在图3-1 中。出于需要,您可以通过单击 "next" ,接受默认值。
<v:shape id="图片_x0020_30" o:spid="_x0000_i1028" type="#_x0000_t75" style="width:281.25pt;height:230.25pt;visibility:visible;
mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image030.png" o:title=""></v:imagedata></v:shape>
4. 单击 "其他任务" 窗口中的 "下一步"。
5. 选择要安装 Wireshark 的位置, 然后单击 "下一步"。
6. 当对话框询问您是否要安装 WinPcap 时, 请先
确保已检查安装 WinPcap 框, 如图3-2 所示。然后
单击 "安装"。安装过程应该开始。
7. 大约在 Wireshark 安装的中途, WinPcap 安装应该开始。如果有, 请在介绍窗口中单击 "下一步", 阅读许可协议, 然后单击 "我同意"。
8. 您将获得安装 USBPcap 的选项, 这是一个用于收集
来自 USB 设备的数据。如果希望, 请选中相应的复选框
请单击 "Next"。
<v:shape id="图片_x0020_31" o:spid="_x0000_i1027" type="#_x0000_t75" style="width:318pt;height:270pt;visibility:visible;
mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image031.png" o:title=""></v:imagedata></v:shape>
9. 这是winPcap驱动,如果你选中的它,也会像usbPcap驱动一样安装在你的电脑上。安装完成后单击finish按钮。
10. Wireshark现在已经完成了安装,单击next按钮。
11. 最后单击finish按钮。
在Linux系统上安装
Wireshark可以在绝大多数基于Unix平台上运行,可以通过发行包管理器选择安装或者下载适合你的发行版的安装包来安装。给每一个人都提供安装程序的不现实的,因此我们只提供了部分。通常,对于整个系统软件来说,root权限是必须的。然而,从源码编译的安装可以在不需要root权限下进行安装。、
基于rpm的系统
如果您正在使用Red Hat Linux或基于它的发行版,比如CentOS,那么很有可能该操作系统默认安装了Yum包管理工具。如果是这样,您可以通过从分发软件库中拉出它来快速安装Wireshark。要做这个的话,打开控制台窗口并输入以下命令:
$ sudo yum install wireshark
如果需要安装依赖包,那么系统会自动提示安装。如果这一切顺利完成,你应该可以从命令行运行wireshark,调出GUI界面。
基于DEB系统
大多数基于DEB的发行版,如Debian或Ubuntu,都包含了APT
包管理工具,允许你从操作系统软件资源库安装Wireshark。要使用该工具安装Wireshark,请打开一个控制台窗口并输入以下内容:
$ sudo apt-get install wireshark wireshark-qt
像前面一样,您将被提示安装必需的依赖项,之后完成安装。
从源码编译安装
由于操作系统架构和wireshark的特点,从源代码编译安装的指令可能随着时间的变化也会发生变化,所以我们建议你使用系统软件包管理器安装。但是,如果你的Linux的发行版,没有自动化的软件包管理器,或者你要安装一个独特的软件,那么你可以从源代码手动编译安装。要完成编译安装,可以遵从下列步骤:
-
从wireshark web界面下载源代码包。
-
解压下载源代码压缩包
$ tar –jxvf <file_name_here>.tar.bz2
- 在配置安装wireshark之前,你可能需要安装一些依赖项,这些都要根据你的Linux特点。例如,Ubuntu 14.04需要为wireshark安装一些其他的软件包,你可以使用下列命令进行安装(你需要以管理员权限,或者在命令前面加上sudo):
$ sudo apt-get install pkg-config bison flex qt5-default libgtk-3-dev libpcap-dev qttools5-dev-tools
-
在解决了安装依赖项的问题以后,切换进入到解压后的文件夹中。
-
通过使用命令 ./configure,为你的Linux发行版构建合适的版本。如果您希望不以默认选项进行安装,那么您可以在安装的这一点上指定这些选项。但如果缺少任何依赖项,您将会收到一些错误报告。在继续安装之前,您必须安装和处理这些依赖关系。如果配置成功,你应该会看到配置成功消息,如图3-3所示。<v:shape id="图片_x0020_32" o:spid="_x0000_i1026" type="#_x0000_t75" style="width:372pt;
height:445.5pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image032.png" o:title=""></v:imagedata></v:shape> -
输入make命令将源代码编译成二进制文件。
-
使用sudo命令安装。
-
运行sudo/sbin/ldconfig来完成安装。
Note:如果你遵循这些安装步骤时遇到了错误,你可能需要安装附加软件包。
在OS X 上安装
要在OS X上安装wireshark,请遵循下列步骤:
-
从wireshark web页面下载OS X安装包
-
运行安装包,接受所需用户协议,选择安装位置
-
完成安装向导
Wireshark****基础
一旦你的系统成功安装好了wireshark,你可以逐渐熟悉它了。你现在可以打开这个功能齐全的数据嗅探器了。好吧,其实什么也没有。当你第一次打开wireshark时候,wireshark并不是那么有趣。一旦你有一些数据包以后,它会让你兴奋的。
第一次数据包抓取
为了在wireshark中得到数据包,你需要进行一次数据包捕获工作。你可能会问,我要怎样才能在网络畅通的情况下捕获数据包呢?
首先,在网络上总会出现这样或那样的问题。如果你不相信,你可以常熟给所有网络用户发送网络邮件,看看是否都能发送的到。
其次,当你要进行数据包分析的时候,网络上存在的一些问题也只是小问题。实际上,绝大多数分析人员花在分析问题上的时间远远多于他们检修网络故障时间。毕竟,你需要一个基线来对比检修效率与分析效率。比如如果你希望通过分析流量来解决一个问题,那么你就必须要理解DHCP流量工作流原理。
更为广泛的说法是,为了发现网络活动的异常现象,你必须知道正常的网络活动应该是怎样的。当你的网络通畅的时候,你这时候的观察将会成为你评判网络是否通畅的标准。
那么,我们开始来捕获一些数据包吧。
-
打开wireshark
-
从主下拉菜单中选择 Capture and Option 选项,然后你会看到一个对话框,里面列出了可以用来捕获数据包的interface,以及每个interface的一些基本信息。(如图3-4)<v:shape id="图片_x0020_33" o:spid="_x0000_i1025" type="#_x0000_t75" style="width:414.75pt;height:180.75pt;visibility:visible;
mso-wrap-style:square"><v:imagedata src="file:///C:/Users/mm/AppData/Local/Temp/msohtmlclip1/01/clip_image033.png" o:title=""></v:imagedata></v:shape>
请注意traffic选项卡,它显示了当前通过该interface的传输流量线状图。在这一行的峰值告诉你你实际上正在捕获数据。如果没有的话,线状图应该是平坦的。你还可以通过单击最左边的 >来查看每一个interface的详细信息,比如地址信息,如mac地址,ip地址。
-
选定你要使用的interface,单击Start。然后你会看到有数据逐渐的显示在窗口上。
-
等一分钟或者更长时间。然后你可以通过单击Capture选项卡下拉菜单种的Stop按钮停止捕获数据,然后就浏览已经捕获到的数据。
当你完成了这些步骤以后,也就以为这你成功的完成了一次数据捕获。Wireshark的主窗口包含着活动数据。事实上,你可能被所呈现的大量数据吓到,当我们开始分解。当我们开始把主窗口一个一个分解时,所做的一切都是有意义的。
第四章:和捕获数据包一起工作
第五章:高级Wireshark特点
第六章:在命令行上分析数据包
第七章:网络层协议
第八章:传输层协议
第九章:常见上层协议
第十章:基本真实世界
第十一章:与慢速网络斗争
第十二章:安全数据包分析
第十三章:无线数据包分析