HTTP(超文本传输协议)是互联网上应用最为广泛的协议之一,主要用于在 Web 服务器和客户端浏览器之间传输数据。HTTPS(安全超文本传输协议)可以看作是 HTTP 的安全版本,它在 HTTP 的基础上加入了 SSL/TLS 协议,用于加密数据,确保数据传输的安全。HTTPS 比 HTTP 更加安全,尤其是在涉及敏感信息如登录凭证、金融交易等场景下,推荐使用 HTTPS。随着网络安全意识的提高,越来越多的网站开始采用 HTTPS 协议。
下面以一个没有采用 HTTPS 协议的网站登录界面为例,通过 Wireshark 对其数据进行抓包:
HTTP(不安全)
打开 Wireshark 开始抓包,然后随便输入一个账号和密码点击登录,返回 Wireshark 停止抓包,输入以下过滤条件后过滤:
http.request.method==POST
于是我们便能看到我们刚才输入账号和密码的明文数据:
抓不到?HTTPS!
鉴于 HTTPS 协议比 HTTP 协议更加安全,越来越多的网站和服务正在迁移到 HTTPS,以确保用户数据和交易的安全,但目前仍有一部分网站采用的是 HTTP 协议。
在访问 HTTP 协议下的不安全网站时,目前市面大部分主流浏览器会自动切换为 HTTPS 协议,此时我们在抓包时便不能再看到明文数据。
那就这样结束啦?别急,加密了我们可以解密呀!
操作前我们先关闭浏览器(如果你打开了的话),然后先设置环境变量(以下步骤仅供参考):
打开命令行(cmd 和 PS 均可),先切换到路径 C:\Windows\System32 :
然后输入以下指令后回车(哪个盘哪个路径叫什么名可自选):
setx SSLKEYLOGFIL D:\keylog.txt
接着输入下面的指令:
"C:\Program Files(x86)\Google\Chrome\Application\chrome.exe" --ssl-key-log-file=D:\keylog.txt
其中 "C:\Program Files(x86)\Google\Chrome\Application\chrome.exe” 是你要用的浏览器的地址,D:\keylog.txt 不要忘了改成你的哦!
如果使用的是 PS 的话输入上述指令可能会报错,解决方法:在命令前加上 &
&"C:\Program Files(x86)\Google\Chrome\Application\chrome.exe" --ssl-key-log-file=D:\keylog.txt
然后等待浏览器运行后,访问目标网站,相关密钥信息将存入 keylog.txt。
接下来抓包。
ping 一下目标网站,用其 IP 在 Wireshark 中进行过滤:
然后在编辑(Edit)-> 首选项(Preferences)(快捷键:Ctrl + Shift + P)中的 Protocols 中找到 TLS,在 (Pre)-Master-Secret log filename 项输入 keylog.txt 的路径:
然后点击确定后即可将抓包得到的流量解密,我们再次能看到明文数据: