我們日常用https訪問網站的時候,和網站交互的數據是加密的,所用的協議就是SSL/TLS。所以即使我們截獲了這些數據包,我們也不能看到加密的內容。
比如我們隨便打開百度的網址,用wireshark抓一下https的數據包。
首先獲取百度服務器地址:
開始抓包:
注意到通信的數據都是以二進制的形式表現出來的:
那我們怎么才能獲得明文信息呢?
SSL采用的是對稱加密和非對稱加密相結合的方式進行通信。加密數據的過程是對稱加密,也就是客戶端和服務器的報文都是由一把鑰匙進行加密的。那么只要我們能獲取到這把鑰匙,就能對上面的報文進行解密。
chrome和Firefox瀏覽器都可以記錄這個密鑰,前提是需要設置系統的環境變量SSLKEYLOGFILE,當用chrome和Firefox瀏覽器訪問網頁的時候,瀏覽器會檢查這個環境變量,存在的話會向指定的文件里寫入這個密鑰。
配置環境變量:
可以看到文件里被寫入了很多密鑰信息:
在wireshark中進入進入首選項
選擇協議TLS或者SSL,將pre-master-secret log設置為記錄密鑰的log路徑
點擊確認后,就能對TLS流量進行解密了: