1
Wireshark 抓一个 HTTPS 的包
通过 Wireshark 来分析 HTTP 的包,无论是 GET、POST 请求包,在网络传输时可谓是一览无遗,更别提什么隐私信息。那要如何保护隐私信息呢?HTTPS 是一个不错的选择。
HTTPS 相对 HTTP 的优势主要是所有通信的数据包都采用了加密技术,但是目前有很多不同的加密方法,在进行分析时,要结合实际情况去考虑。
程序员最喜欢做的事情,是一首歌从天亮听到天黑,上图是打开 QQ 音乐时抓取的包,过滤条件简单使用 tcp.port == 443 就行,很显然包都被加密了,几乎对它们一无所知。
2
Wireshark 脱掉 HTTPS 的加密外壳
加密包会给排查问题带来不少障碍,所以很有必要知道该如何对它进行解码,接下来看看如何借助 Wireshark 工具来脱掉 HTTPS 的加密外壳。
招式一:采用日志文件的方式进行解密。
第一步:记录 Key,做好准备工作。
#配置环境变量
export SSLKEYLOGFILE=$PWD/keylog.log
#先把其它chrome进程全部停掉,然后在终端执行此命令开启chrome新的进程
open -n /Applications/Google\ Chrome.app
按照上面的配置操作后,浏览器将会在每次 HTTPS 会话结束后,将会话数据解密的 Key 记录到 keylog 文件中。
第二步:使用 Key,解密字节数据。
打开 Wireshark,选择 Preferences -> Protocols -> TLS,配置访问 keylog 文件,如下图所示。
点击 OK,就成功解密捕获到 HTTPS 会话数据流啦,真牛掰。
招式二:采用 RSA Key 文件进行解密。
为了操作方便,本次就直接借用官方提供的例子进行演示。
https://gitlab.com/wireshark/wireshark/-/wikis/uploads/__moin_import__/attachments/SampleCaptures/snakeoil2_070531.tgz
第一步:解压 snakeoil2_070531.tgz,并记住 rsasnakeoil2.key 文件的位置。
第二步:用 Wireshark 打开 rsasnakeoil2.cap。
第三步:选择 Key 文件,进行解密。
妙招一:在 Wireshark 的菜单栏依次选择 Edit -> Preferences -> Protocols -> TLS,然后在弹出的窗口中配置服务端地址、端口、协议以及 RSA Key文件。
配置完成后,就可以把官方提供的 HTTPS 包进行成功解密啦。
妙招二:单击 Wireshark 的 Edit -> Preferences -> RSA Keys。然后选择 key 文件,如下图所示。
然后单击 Wireshark 的 Edit -> Decode As -> OK,包就成功解码了,HTTPS 脱掉加密外壳之后的样子,又一览无遗啦。
3
HTTPS 握手哪些事儿
HTTPS 握手的过程,借助 Wireshark 能够看的很清晰,感兴趣的老铁,可以采取剥洋葱的方式,一层一层去分析,本次不做深入展开。
4
写在最后
纸上得来终觉浅,绝知此事要躬行。本次 Wireshark 分享就写到这里,为了能够让分享不出现纰漏,查阅了很多文档、书籍以及官方资料,归纳汇总一下给老铁,希望对老铁能有所帮助。
资料分享:
经典例子:https://gitlab.com/wireshark/wireshark/-/wikis/SampleCaptures
官方文档:https://www.wireshark.org/docs/wsug_html_chunked/
文章分享的数据包可以从这里 get 到:
https://gitlab.com/wireshark/wireshark/-/wikis/uploads/__moin_import__/attachments/SampleCaptures/snakeoil2_070531.tgz
参考书籍:
《从实践中学习Wireshark数据分析》
《Wireshark网络分析就是这么简单》
一起聊技术、谈业务、喷架构,少走弯路,不踩大坑。会持续输出精彩分享,敬请期待!
历史推文(欢迎转发&点赞&在看):
抓包神器 Wireshark,帮你快速定位线上网络故障(1)
抓包神器 Wireshark,帮你快速定位线上网络故障(2)
抓包神器 Wireshark,帮你快速定位线上网络故障(3)
真实|技术人员该如何接手一个复杂的系统?吐血推荐这几招