欢迎光临散文网 会员登陆 & 注册

认识 Wireshark——Wireshark 新手使用教程(1)

2022-01-31 21:26 作者:咸菜一梗  | 我要投稿

开始之前,需要对一些专有名词进行说明。本系列教程会涉及到数据包/分组/帧、会话/流的概念,这些概念确实有一些差异,但是这些差异不影响软件的使用,所以这里并不对这些名词进行详细的区分。要理解各个名词的具体定义,可以参考网络上的各种教程。

本系列文章主要针对新手编写,学习 Wireshark 的目的侧重于协议逆向而非网络故障分析。

接下来是正文。


1. Wireshark 的诞生历史

Wireshark 是一款免费开源的数据包嗅探器/分析器,可用于捕获网络上的数据包。Wireshark 最初的版本叫做 Ethereal,由 Gerald Combs 于1998年发布,Wireshark 软件和官网上都可以看到他的名字排在首位:

Wireshark 作者列表

2006年5月,Gerald Combs前往CACE Technologies工作,但是他没能拿到 Ethereal 的商标权。为了保证项目成功运行下去,Combs 和他的开发团队在 2006 年年中将这个项目重新命名为 Wireshark。

随着 Combs 和其他贡献者在接下来十几年内持续维护 Wireshark 的代码并发布新版本,Wireshark 已经成为世界上最流行的数据包分析/嗅探软件之一。


       

上述的 Wireshark 历史在网络上很容易查到,但是这些资料并未提及 Combs 为何要将该软件取名为 Wireshark。

官网上有这样一个问题可以参考:

photoshopia含义未知

这个回答中的 carcharodon 无疑让人想起了最有名的鲨鱼——大白鲨 (Carcharodon carcharias)。

wire意为线缆,故用wireshark(网线鲨鱼)来命名数据包嗅探器真是再合适不过了。

连图标都是鲨鱼鳍的形状

2. Wireshark 能做什么/不能做什么

  • 支持实时捕获数据并保存为pcap文件

  • 支持从已经捕获的数据包中读取数据;

  • 支持超过1000种标准/专用协议解析

  • 支持创建插件解析私有协议;

  • 支持使用捕获和显示过滤器细化数据;

  • 支持TLS协议解密(设置比较复杂,不如使用charles/burp/fidder方便)

  • 不支持编辑修改数据包(需要编辑数据包建议使用 WireEdit)

  • 不支持入侵/检测异常流量


3. 下载 Wireshark

可以到 Wireshark 官网上下载安装包,建议下载最新版本,老版本的某些功能可能会出问题

https://www.wireshark.org/#download

下载完成后,双击安装包安装。记得选中 Npcap,其他选项默认即可。


4. 认识 Wireshark 主界面    

4.1 开始捕获前的界面

打开 Wireshark ,初始界面从上到下是主工具栏、显示和捕获过滤器以及状态工具栏。

主工具栏包含了开始捕获、停止捕获、显示最新分组等操作的按键;

显示过滤器可输入过滤规则,使分组列表窗口仅显示符合规则的数据包;

捕获过滤器可输入规则,在抓包的时候捕获符合规则的数据包;

状态工具栏则显示软件当前状态与已捕获&显示的分组数量。


4.2 捕获时的界面

开始捕获后,Wireshark 会将捕获到的报文显示在界面上。


分组列表显示所有捕获到的报文,顶部为报文序号等各种关键字段;

分组详情显示选中报文的分层情况;

分组字节流显示选中报文的16进制与ASCII码编码的字节流。

  • 分组列表

分组列表显示每个数据包的各种字段,并默认按照序号/捕获时间升序排列分组。

若想要以某个字段降序排列,点击该字段即可。


为了方便我们查看报文中的关键字段,可以右键字段栏,点击 Column Preferences,添加字段。这里我添加了 HTTP 协议的 host 字段和 TLS 协议的 servername 字段。


在这些列中,最左侧的No.列需要额外说明一下。

选中某个数据包时,Wireshark分组列表的No.列会显示一些符号,这些符号标识的是数据包与数据包之间的关系,这里罗列一下 Wireshark 官网的解释:


  • 分组详情

分组详情窗口是TCP/IP五层模型最好的结构化展示,从上到下分别是:

要是计算机通信原理的老师能用 Wireshark 上课就好了...

展开各层,能看到 Wireshark 对各个字段的解析和注释。

标准协议的 RFC 文档阅读起来比较费劲,对照 Wireshark 的解析,能更好地理解标准协议的字段格式。

RFC 791 中对 IP 协议头部的描述


部分分组的分组详情窗口内包含 URI 超链接,或者与其有关系的另一个分组的超链接,双击即可跳转。

前一个请求在86帧,响应在291帧,下一个请求在296帧
  • 分组字节流

分组字节流窗口中显示的是十六进制与ASCII字符对照形式的分组字节内容(从以太层开始的字节)。

分组字节流窗口中的字节和分组详情中的字段是一一对应的:

· 点击字段会选中字节内容;

· 点击某字节的16进制值会选中对应的字段。

分组字节流窗口中的十六进制与ASCII字符也是一一对应的,可以使用这个窗口来观察一些私有协议的字段格式:

十六进制值与ASCII码也是对应的,GET 的 ASCII码为 0x474554

从分组列表到分组详情,再到分组字节流,我们看到了 Wireshark 是如何从大到小为我们显示多个分组——单个分组的多层结构——未解析时的原始字节流。从下而上逆推,我们可以体会到网卡和协议栈是如何实现数据包解析的:

学习计算机通信原理时的PPT


  • 主工具栏中常用的按键

实践中有4个按键比较常用:开始捕获、停止捕获、重新开始捕获和显示最新的分组。

捕获的三个按键比较好理解,不做解释。选中显示最新的分组后,分组列表会一直滚动显示最新捕获的分组。如果要查看某个报文,可以滚动鼠标滑轮,此时分组详情会停止滚动。

分组列表底部一直显示最新的分组


5. 总结及参考文献

作为教程的第一篇,本文简要回顾了 Wireshark 的历史,并详细描述了 Wireshark 主界面的各个区域的作用与一些操作上的细节。下一篇将开始介绍如何捕获数据包。

Wireshark 的使用教程网上已经十分泛滥,但是大部分都比较零散,我这边的教程争取写得细致一些,把图片做得清晰易懂一点,力求读者在几天之内就能入门 Wireshark。

某些部分要详细说的话可以说很多,比如 Wireshark 的作者为什么要在那个年代创造这样一款开源的软件,比如 Wireshark 如何调整着色规则、字体大小、时间显示格式等等,但是这样一来文章就会比较长,既然是要写给新手看就不要那么冗长,否则就很容易变成只是把知识点单纯罗列下来的无聊文章。我在本文以及接下来几篇文章中列举的操作,都是在刚开始使用 Wireshark 的时候有过疑惑,或者是在工作中经常使用的细节,这也是希望这个教程尽可能避免 “知识的诅咒” 吧 。


参考资料

[1] Chris Sanders,诸葛建伟译,2018.Wireshark 数据包分析实战(第 3 版).人民邮电出版社

[2] https://en.wikipedia.org/wiki/Wireshark

[3] https://www.wireshark.org/faq.html

[4] https://www.rfc-editor.org/rfc/rfc791.html





     





认识 Wireshark——Wireshark 新手使用教程(1)的评论 (共 条)

分享到微博请遵守国家法律