HTTPS是安全通道。如果瀏覽器導航欄前面有一個綠如A股的小鎖,那么感覺就會非常的放心。
把自己見不得人的小心思和污言穢語,統統用這個小鎖鎖起來,為所欲為,想想就讓人激動。
但是等等,Charles為什么能抓到HTTPS的包呢?
(資料圖片僅供參考)
我們希望數據傳輸過程,對用戶來說是個黑盒,對攻擊者來說也是個黑盒。這主要體現在兩方面。
用戶不希望自己的敏感數據被獲取到。比如自己的賬號密碼,比如自己發給女友的聊騷數據。開發者不希望自己的數據被用戶獲取到。比如自己的驗簽方式,被破解了用戶就能干很多非法的事情。HTTP協議屬于一問一答的協議,在傳輸過程中是以明文方式傳遞的。
如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息。比如通過代理方式或者局域網嗅探方式獲取了報文的內容。
相關的工具有很多,比如wireshark、tcpdump、dsniff等。
但如果傳輸的內容是加密的,那么即使你把所有的數據報文都抓到了,那么也沒有什么價值。
HTTPS就是一種傳輸加密數據的協議。如果我們在TCP與HTTP中間,加入一個TLS/SSL?層,那么就會變成HTTPS。
HTTPS包括握手階段和傳輸階段。其中握手階段是最重要的協商階段。
握手的目標,是安全的交換對稱密鑰,全程需要3個隨機數的參與。在Change Cipher Spec之后,傳輸的就都是加密后的內容了。
這個過程可以使用WireShark抓包工具輕易抓取,有大量的文章分析握手過程,在此不再贅述。
當然,HTTPS的效率是非常低的。這里稍微擴展一下。
HTTP3,也就是谷歌的QUIC,除了解決了隊頭阻塞問題,還可以作為TCP+TLS+HTTP/2?的一種替代方案。HTTP3默認就是安全通道,采用UDP協議。在DH秘鑰交換算法的加持下,它可以減少連接建立時間 - 在常見情況下為 0 次RTT往返。
這比HTTPS的握手速度快多了。
Charles抓包雖然HTTPS的傳輸過程是加密的,但如果我們就是請求的發起方,設備也在自己手里,去抓包HTTPS連接中的內容,也是非常容易的。
這讓開發者很頭疼。比如我使用云平臺提供的AK、SK直接發起HTTPS調用,用戶是能夠抓到這兩個關鍵密碼的。所以一般開發者并不能直接把AK、SK在網絡上傳遞,即使這樣在功能上行得通。
我這里以在MacOS本機上抓包瀏覽器的HTTPS請求為例,來說明Charles的使用。
啟動Charles后,我們需要把它設置成系統代理。
然后,在Help/菜單下,找到Root證書進行安裝。
安裝完畢之后,我們還要信任這個證書。這樣,當你的瀏覽器訪問我們的Charles代理時,就可以暢通無阻。
安裝到System Keychains中,而且一定要信任它哦。
通常情況下,我訪問一個HTTPS連接,抓到的內容都是一團糟。
我們還差最后一步。默認情況下,Charles并沒有任何過濾,我么還需要把要抓包的網址,加入HTTPS的代理配置中才可以。
右鍵找到這個連接,然后選擇啟動SSL代理即可。
此時,我們再看一下這些連接的內容,就能夠變成人眼能夠識別的了。
當然,電腦上的代理沒有什么意義。我們做代理,一般是想要抓取手機上的應用產生的請求。
但方法是一樣的,你只需要把這個Root證書,安裝到你的手機中,然后信任它就可以了。
為什么能夠抓到數據?在這個案例中,Charles是作為中間人而存在的。對于Charles來說,對于服務端的請求,是由它發起的。
你可以把它想象成一個瀏覽器,它發出的請求和返回的內容,對于Charles自身來說自然是可見的。欺騙服務器很容易,重要的欺騙客戶端。
Charles通過偽造一個CA證書,來冒充一個服務端。當瀏覽器或者移動手機訪問Charles冒充的服務端時,Charles會攜帶CA證書返回給客戶端。
對于普通的CA證書來說,瀏覽器和客戶端是不信任的。這也是為什么要進行HTTPS抓包,必須安裝CA證書的原因---我們需要把這個信任關系建立起來。
這兩部分是割裂的,可以說是由兩條完全不同的SSL通道。請求報文在全程是加密的,除了一個非常薄弱的交接點。
在通道的粘合處,所有的信息卻是明文的。Charles掌控了這個過程,自然就能夠把原始信息展示出來。
End可以看到,Charles是可以抓取到HTTPS的明文信息的。在中間人場景中,它既作為客戶端發起請求,也作為服務端接收請求,然后在請求的轉發處獲取數據。
作為用戶,我們千萬不能隨意信任來歷不明的證書,否則你的很多隱私數據將暴露在陽光之下。
作為開發者,也不能把敏感數據直接放在URL或者請求體里,防止用戶抓包獲取到這些信息,對服務造成破壞。
當然,在CN,隱私可能是個偽命題。就比如xjjdog,雖然我一直在隱藏自己,但還是有很多朋友知道我到底是不是帶把的。
這個時候,HTTPS就沒什么用。
作者簡介:小姐姐味道(xjjdog),一個不允許程序員走彎路的公眾號。聚焦基礎架構和Linux。十年架構,日百億流量,與你探討高并發世界,給你不一樣的味道。
X 關閉
X 關閉
- 1聯想拯救者Y70發布最新預告:售價2970元起 迄今最便宜的驍龍8+旗艦
- 2亞馬遜開始大規模推廣掌紋支付技術 顧客可使用“揮手付”結賬
- 3現代和起亞上半年出口20萬輛新能源汽車同比增長30.6%
- 4如何讓居民5分鐘使用到各種設施?沙特“線性城市”來了
- 5AMD實現連續8個季度的增長 季度營收首次突破60億美元利潤更是翻倍
- 6轉轉集團發布2022年二季度手機行情報告:二手市場“飄香”
- 7充電寶100Wh等于多少毫安?鐵路旅客禁止、限制攜帶和托運物品目錄
- 8好消息!京東與騰訊續簽三年戰略合作協議 加強技術創新與供應鏈服務
- 9名創優品擬通過香港IPO全球發售4100萬股 全球發售所得款項有什么用處?
- 10亞馬遜云科技成立量子網絡中心致力解決量子計算領域的挑戰