2021-02-20 分類: 網站建設
一、前言
隨著安全的普及,https通信應用越發廣泛,但是由于對https不熟悉導致開發人員頻繁錯誤的使用https,例如最常見的是未校驗https證書從而導致“中間人攻擊”,并且由于修復方案也一直是個坑,導致修復這個問題時踩各種坑,故謹以此文簡單的介紹相關問題。
本文第一節主要講述https的握手過程,第二節主要講述常見的“https中間人攻擊”場景,第三節主要介紹證書校驗修復方案,各位看官可根據自己口味瀏覽。
二、HTTPS握手過程
? ? 首先來看下https的工作原理,上圖大致介紹了https的握手流程,后續我們通過抓包看下每個握手包到底干了些什么神奇的事。
? ? 注:本文所有內容以TLS_RSA_WITH_AES_128_CBC_SHA加密組件作為基礎進行說明,其他加密組件以及TLS版本會存在一定差異,例如TLS1. 3 針對移動客戶端有了很大的改動,現在的ECDHE等密鑰交換算法與RSA作為密鑰交換算法也完全不一樣,所以有些地方和大家實際操作會存在一定出入。
1.TCP三次握手
? ? 我訪問的支付寶的官網www.alipay.com抓取的數據。
2.Client Hello
? ? ?TLS的版本號和隨機數random_c:這個是用來生成最后加密密鑰的因子之一,它包含兩部分,時間戳和隨機數 session-id:用來標識會話,第一次握手時為空,如果以前建立過,可以直接帶過去從而避免完全握手 Cipher Suites加密組件列表:瀏覽器所支持的加密算法的清單客戶端支持的加密簽名算法的列表,讓服務器進行選擇 擴展字段:比如密碼交換算法的參數、請求主機的名字,用于單ip多域名的情況指定域名。
3.Sever Hello
? ? 隨機數rando_s,這個是用來生成最后加密密鑰的因子之一,包含兩部分,時間戳和隨機數 32 字節的SID,在我們想要重新連接到該站點的時候可以避免一整套握手過程。 在客戶端提供的加密組件中,服務器選擇了TLS_RSA_WITH_AES_128_CBC_SHA組件。
4.Certificate
? ? 證書是https里非常重要的主體,可用來識別對方是否可信,以及用其公鑰做密鑰交換。可以看見證書里面包含證書的頒發者,證書的使用者,證書的公鑰,頒發者的簽名等信息。其中Issuer Name是簽發此證書的CA名稱,用來指定簽發證書的CA的可識別的唯一名稱(DN, Distinguished Name),用于證書鏈的認證,這樣通過各級實體證書的驗證,逐漸上溯到鏈的終止點,即可信任的根CA,如果到達終點在自己的信任列表內未發現可信任的CA則認為此證書不可信。
? ? 驗證證書鏈的時候,用上一級的公鑰對證書里的簽名進行解密,還原對應的摘要值,再使用證書信息計算證書的摘要值,最后通過對比兩個摘要值是否相等,如果不相等則認為該證書不可信,如果相等則認為該級證書鏈正確,以此類推對整個證書鏈進行校驗。
? ?二級機構的證書。
三、中間人攻擊
? ? https握手過程的證書校驗環節就是為了識別證書的有效性唯一性等等,所以嚴格意義上來說https下不存在中間人攻擊,存在中間人攻擊的前提條件是沒有嚴格的對證書進行校驗,或者人為的信任偽造證書,下面一起看下幾種常見的https“中間人攻擊”場景。
1.證書未校驗
? ? 由于客戶端沒有做任何的證書校驗,所以此時隨意一張證書都可以進行中間人攻擊,可以使用burp里的這個模塊進行中間人攻擊。
? ? 通過瀏覽器查看實際的https證書,是一個自簽名的偽造證書。
2.部分校驗
? 做了部分校驗,例如在證書校驗過程中只做了證書域名是否匹配的校驗,可以使用burp的如下模塊生成任意域名的偽造證書進行中間人攻擊。
? ? 實際生成的證書效果,如果只做了域名、證書是否過期等校驗可輕松進行中間人攻擊(由于chrome是做了證書校驗的所以會提示證書不可信任)。
標題名稱:我們來一起說說HTTPS中間人攻擊與證書校驗
標題URL:http://m.newbst.com/news14/101964.html
成都網站建設公司_創新互聯,為您提供ChatGPT、網站營銷、關鍵詞優化、商城網站、網站設計、網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯
猜你還喜歡下面的內容