关于http:我云了原来wireshark可以抓HTTPS明文包

40次阅读

共计 1662 个字符,预计需要花费 5 分钟才能阅读完成。

前言

以前在应用 wireshark 做协定剖析的时候,始终认为它只能抓 HTTP 的报文,所以在抓 HTTPS 包的时候始终是用的 Fildder,然而有一天我忽然想抓一下HTTP2 的报文看一看,Fildder就不行了,于是在一番 google 之后发现 wireshark 是能够反对的,只不过须要在特定的条件下才能够。

Fildder 存在的问题

Fildder目前还不反对 HTTP2 协定,无奈看到真正的 HTTP2 报文,这里有些人可能会有疑难,说我明明就用 Fildder 抓到了 HTTP2 协定的报文啊,那是因为 Fiddler 中间人攻打服务器通过协商把协定降级成了 HTTP1 协定,所以实际上看到的还是的 HTTP1 的报文,通过上面两个图片能够直观的感触到:

  • 不通过代理,间接拜访反对 HTTP2 的服务

  • 通过代理拜访,进行抓包

能够看到在通过代理抓包的时候,协定变成了http/1.1

应用 wireshark 抓取

当初市面上的支流浏览器实现的 HTTP2 都是基于 TLS 的,也就是说要剖析 HTTP2 报文得先过了 TLS 这一关,不然只能剖析一堆加密的乱码。

wireshark反对两种形式来解密 SSL/TLS 报文:

  1. 通过网站的私钥
  2. 通过浏览器的将 TLS 对称加密秘保留在内部文件中,以供 wireshark 加解密

上面我来一一进行演示

1. 通过网站的私钥

如果你想抓取的网站是你本人的,那么能够利用这种形式,因为这须要应用网站生成证书应用的私钥进行解密,就是那个 nginx 上配置的 ssl_certificate_key 对应的私钥文件,把它增加到 wireshark 配置中:

而后通过 wireshark 就能够看到明文了:

通过上图能够看到,我通过 curl 拜访的 https 协定的 URL,在配置了该服务器对应的私钥后能够抓取到对应的 HTTP 明文。

不过毛病也非常明显,只能剖析本人持有私钥的网站,如果他人的网站就剖析不了了,所幸的是还有第二种计划来反对。

2. 通过浏览器的 SSL 日志性能

目前该计划只反对 ChromeFirefox浏览器,通过设置 SSLKEYLOGFILE 环境变量,能够指定浏览器在拜访 SSL/TLS 网站时将对应的密钥保留到本地文件中,有了这个日志文件之后 wireshake 就能够将报文进行解密了。

  1. 首先设置 SSLKEYLOGFILE 环境变量:

    注:这是在 windows 零碎上进行操作的,其它操作系统同理

  2. 配置wireshake,首选项 ->Protocls->TLS:

    将第一步中指定的文件门路配置好

  3. 重启浏览器,进行抓包:

    同样的能够抓取到 HTTP 明文。

    注:不抓包时记得把环境变量删掉,以防止性能节约和安全性问题

计划二的长处非常明显,能够抓取任意网站的 SSL/TLS 加密的报文,惟一的毛病就是只能是浏览器反对的状况才行,而计划一能够针对任何 HTTP 客户端进行抓包。

通过 wireshake 抓取 HTTP2 报文

下面都是针对 TLS+HTTP1 进行的抓包,市面上支流的浏览器的 HTTP2 都是基于 TLS 实现的,所以也是一样的,把 TLS 这层解密了天然看到的就是最原始的明文。

这里以剖析 https://www.qq.com 为例,为什么不是经典 htts://www.baidu.com,因为百度首页至今还是HTTP/1.1 协定。

  1. 应用下面的第二种计划配置好wiresharke
  2. 通过 http2 关键字做过滤
  3. 浏览器拜访https://www.qq.com
  4. 查看 HTTP2 报文:

    这样就抓取到了 HTTP2 报文了,HTTP2 协定非常复杂,我也还在学习阶段,这里就不多说啥了。

后记

wireshake 真的是一款十分弱小的网络分析工具,在 HTTPSHTTP2日渐成为支流的时候,能够用它来帮忙咱们加深对这些协定的了解,以便迎接新的时机与挑战。

参考

  • 应用 Wireshark 调试 HTTP/2 流量

本文作者: MonkeyWie
本文链接: https://monkeywie.github.io/2020/08/07/wireshark-capture-https/
版权申明: 本博客所有文章除特地申明外,均采纳 BY-NC-SA 许可协定。转载请注明出处!

正文完
 0