如果您曾经尝试使用Wireshark监视网络流量,则可能会遇到问题-其中很多都是加密的。实际上,大多数站点都使用SSL或TLS加密来确保用户安全。如果您在亚马逊上购物,无处不在的加密是一件好事,但是,当您尝试管理网络时,这确实是一个痛苦。这是我使用Wireshark解密SSL的方法.
什么是Wireshark和SSL?
Wireshark是一个 网络流量分析仪;它是许多管理员用来解决网络问题的核心实用工具。具体来说,它捕获帧-数据包的构建块-并让您对其进行分类和分析。使用Wireshark,您可以查看网络中的流量并进行剖析,从而窥探原始数据中的帧.
SSL是一种在OSI模型的传输层上运行的加密协议。它使用各种加密方法来保护数据在网络中移动时的安全。注意:在本指南中,我主要将SSL称为SSL和TLS(其后续产品)的统称.
SSL加密使使用Wireshark更具挑战性,因为它阻止管理员查看每个数据包携带的数据。正确设置Wireshark后,它可以解密SSL并恢复查看原始数据的能力.
使用预主密钥解密SSL和TLS
建议使用预主密钥在Wireshark中解密SSL。一种 预先主密钥 由客户端生成并由服务器使用来生成用于加密会话流量的主密钥。这是目前的加密标准,通常是通过Diffie-Hellman实现的.
可以使您的浏览器记录主预密钥,Wireshark使用该预密钥解密SSL和TLS会话.
以下是使用预主密钥解密SSL和TLS的步骤:
- 设置环境变量
- 启动浏览器
- 配置Wireshark
- 捕获并解密会话
完成后,您将可以在Wireshark中解密SSL和TLS会话,而无需访问目标服务器.
设置Windows环境变量
在 视窗, 您需要使用 高级系统设置 效用。此变量名为 SSLKEYLOGFILE, 包含存储主密码前密钥的路径.
首先右键单击 我的电脑, 然后选择 物产 从菜单中。的 系统 菜单将打开.
接下来,点击 高级系统设置 在左侧列表中。的 系统属性 窗口将会打开.
在 高级 标签,点击 环境变量 纽扣.
点击 新… 下的按钮 用户变量. 您还可以在下面创建变量 系统变量 如果您想为系统上的每个用户记录SSL密钥,但我希望将其限制在我的个人资料中.
下 变量名, 输入以下内容:
SSLKEYLOGFILE
在里面 可变值 字段中,键入日志文件的路径。您也可以点击 浏览文件… 按钮并使用文件选择器指定路径.
请注意,如果您要将此设置创建为系统范围的环境变量,则需要使用适当的通配符或将文件存储在所有用户均可访问的位置。例如,您可以选择 %USERPROFILE%\ App Data \ ssl-keys.log 要么 C:\ ssl-keys.log.
完成后,请点击 好 并转到下一组步骤.
设置Linux或Mac环境变量
在 的Linux 和 苹果电脑, 您需要设置 SSLKEYLOGFILE 使用环境变量 纳米. 在 的Linux, 变量存储在 〜/ .bashrc. 在 苹果电脑, 您将在文件中创建变量 〜/ .MacOSX /环境.
打开一个终端,然后 在Linux中使用此命令:
纳米〜/ .bashrc
打开 发射台, 点击 其他, 并启动一个终端 在Mac OSX中运行此命令:
纳米〜/ .bash_profile
两个操作系统的以下步骤相同.
在文件末尾,添加以下行:
导出SSLKEYLOGFILE =〜/ .ssl-key.log
按 Ctrl + X,Y 保存您的更改.
关闭终端窗口,然后打开另一个窗口来设置变量,然后键入以下内容以确认已成功设置:
回声$ SSLKEYLOGFILE
执行命令后,您应该会看到类似于上图的输出. /Users/comparitech/.ssl-key.log 是我的SSL预主密钥日志的完整路径。注意:您需要记下您的笔记,这会有所不同,以输入Wireshark.
现在已经设置了变量,您可以继续执行下一组步骤.
启动浏览器并检查日志文件
在启动Wireshark并将其配置为使用预主密钥解密SSL之前,应启动浏览器并确认正在使用日志文件。.
为了填充日志,请务必访问已启用SSL的网站,这一点很重要。我正在使用自己的Apache服务器进行测试,但是任何站点都可以使用。使用预主共享密钥的最大好处之一是 您不需要访问服务器 解密SSL.
访问启用了SSL的网站后,请检查文件中的数据。在 视窗, 您可以使用 记事本. 在 的Linux 要么 苹果电脑, 使用以下命令:
猫〜/ .ssl-log.key
在任何操作系统上,您的文件都应该像上面的一样。确认浏览器在所选位置记录了预主密钥之后,可以将Wireshark配置为使用这些密钥解密SSL.
配置Wireshark解密SSL
一旦您的浏览器记录了预主密钥,就该配置Wireshark使用这些日志解密SSL.
打开Wireshark并单击 编辑, 然后 优先. 的 优先 对话框将打开,在左侧,您将看到一个项目列表。扩大 通讯协定, 向下滚动,然后单击 SSL协议.
在SSL协议的选项列表中,您会看到以下条目 (Pre)-Master-Secret日志文件名. 浏览到上一步中设置的日志文件,或仅粘贴路径.
完成设置后, (Pre)-Master-Secret日志文件名, 点击 好 然后返回Wireshark。您已准备好继续前进.
捕获会话并解密SSL
最后一步是捕获测试会话,并确保Wireshark成功解密SSL.
- 启动未过滤的捕获会话,将其最小化,然后打开浏览器.
- 访问安全站点以生成数据,并可以选择将显示过滤器设置为“ ssl”以最大程度地减少会话噪音.
- 单击任何包含加密数据的框架.
就我而言,我将选择一个包含HTTP流量的文本/ HTML编码的代码,因为我想查看网络服务器发送到我的浏览器的源代码。但是,使用预主密钥的任何加密流量都可以使用此方法。其中包括通过Diffie-Hellman或类似的密钥交换利用完善前向加密(PFE)的所有数据.
选择了加密的帧后,请查看 包字节视图, 特别是视图下方的标签。您应该会看到以下条目 解密的SSL 数据等.
您会注意到,我的会话看起来仍然充满垃圾,并且看不到任何HTML。这是因为默认情况下,我的Web服务器(和大多数Apache服务器)使用GZIP压缩.
当您单击 未压缩实体 标签(仅在启用SSL解密的情况下显示),您可以查看网站的源代码。例如,这是默认Apache页的纯文本标题元素.
使用RSA密钥解密SSL
您可能之前已经注意到,Wireshark的字段允许您上载RSA密钥并使用它们解密SSL。在实践中, 不建议使用RSA密钥解密.
不再使用RSA密钥解密SSL的原因是完全转发加密(PFE)使其过时了。与Diffie-Hellman协商的会话不会直接使用RSA密钥;相反,它们生成仅存储在RAM中的一次性密钥,该密钥使用磁盘上的密钥进行加密.
如果您以前使用RSA密钥对流量进行解码,并且它停止工作,则可以通过启用SSL日志记录来确认目标计算机正在使用Diffie-Hellman交换。.
要打开日志记录,请单击 编辑 从工具栏菜单中选择 优先. 展开 通讯协定 左侧的菜单项并向下滚动到 SSL协议. 在这里,您可以点击 浏览 按钮并设置您的SSL日志的位置.
设置位置后,所有SSL交互都会记录在指定文件中.
捕获与启用SSL的主机的会话,然后检查日志。具体来说,应该滚动直到找到协商TLS握手的帧。您很可能会在密码字符串中看到一个讲述性的DHE条目.
这意味着启用了Diffie-Hellman密钥交换。在我的情况下,Apache专门使用带有椭圆曲线键的Diffie-Hellman,用字符串表示 早期教育.
进一步滚动,可能会发现找不到主密码.
如果您的日志看起来像这样,并且您无法使用RSA密钥解密流量,那么您别无选择,只能切换到上述的预掌握秘密方法.
由于PFE成为标准做法,因此TLSv1.3可能会导致此问题,因此不建议使用简单的RSA密钥解密,因此不应使用.
Wireshark使解密SSL流量变得容易
我非常喜欢Wireshark处理SSL解密的方式。密码术很复杂,并且标准在不断变化以更加安全。但是,一旦正确设置Wireshark和您的环境,您要做的就是更改选项卡以查看解密的数据。没有比这更容易的了.
这篇文章介绍了如何使用Wireshark解密SSL流量,以便管理员可以查看网络中的流量并进行剖析。文章详细介绍了使用预主密钥解密SSL和TLS的步骤,以及如何使用RSA密钥解密SSL。作者还提到了Wireshark处理SSL解密的方式非常好,一旦正确设置,就可以轻松查看解密的数据。总的来说,这篇文章对于需要解密SSL流量的管理员来说非常有用。