HTTPS抓包原理
0x00 知識背景
這篇文章主要介紹使用抓包工具抓取HTTPS的原理以及發生的事情,閱讀這篇文章之前,最好有如下知識背景
- 非對稱密碼簡介
- HTTPS
- 抓包軟件的簡單使用,例如Burp Suite或者Charles。
中間人攻擊:例如在客戶端和服務器中間有很多路由器,路由器的位置就是中間人,路由器篡改,插入通信內容,就屬於中間人攻擊,常見的有運營商插入js廣告等。
0x01 瀏覽器提示您的連接不安全的背后
當我們在瀏覽某些https網站的時候,瀏覽器可能會提示您的連接不安全,例如在12306訂票,訪問 https://kyfw.12306.cn/otn 時,或者訪問一個內網中防火牆或者DNS管理頁面時,會出現如下圖所示的提示
這是為什么呢?
首先從HTTPS協議說起,HTTPS主要能起到兩個作用,一個是保證瀏覽器和服務器的通信內容不被中間人嗅探到明文,二是保證瀏覽器訪問的服務器確實是服務器所宣稱的服務器,而沒有被中間人偽造,例如訪問 https://www.google.com ,服務器必須證明自己就是 https://www.google.com 。實際上要達到第一點,必須先做到第二點。
服務器怎樣證明自己的清白呢?首先,HTTPS服務器提供向客戶端發送自己的證書,證書就是一個公鑰加上一些附加信息,按照證書格式封裝好。服務器的這個證書是哪里來的呢?是CA頒發的,CA在確認了服務器的身份以后使頒發一個證書給服務器,需要確認一個證書是否可信時,使用CA自己的公鑰(也就是CA自己的證書)對服務器的證書做校驗,如果能通過,則說明證書有效,服務器能被信任。
那如何保證CA自己的證書是可信的而沒有被中間人篡改呢?操作系統內置了一些CA的證書,也就是根證書,保證了CA證書的可信。
如果瀏覽器提示您的連接不安全,說明服務器的證書沒有通過CA的校驗。這種情況可能是服務器的證書是服務器自己生成的,不是CA頒發的,所有通不過CA的校驗,或者這個所謂的服務器是中間人偽造的,證書是中間人偽造的,這樣,中間人就能解密客戶端與服務器的傳輸內容了。所以連接是不安全的。
0x02 HTTPS抓包
在使用Burp Suite抓取HTTPS的時候,瀏覽器提示您的連接不安全,這是因為服務器的證書是Burp Suite頒發的,通不過CA的認證。Burp Suite為了解密通訊內容,只能使用自己的CA給自己頒發證書,而這個CA是不受信任的。
怎樣不讓瀏覽器提示呢?信任Burp Suite用來頒發證書的CA就可以了,在Burp Suite中導出CA的根證書,這個根證書是Burp Suite的CA生成的,如果用它來驗證Burp Suite CA頒發的證書,當然可以通過。把這個根證書導入操作系統的根證書中,設置為信任,那么Burp Suite頒發的所有證書都能被信任,瀏覽器就不會產生這個提示了。
