我們來一起說說HTTPS中間人攻擊與證書校驗

2021-02-20    分類: 網(wǎng)站建設

一、前言

隨著安全的普及,https通信應用越發(fā)廣泛,但是由于對https不熟悉導致開發(fā)人員頻繁錯誤的使用https,例如最常見的是未校驗https證書從而導致“中間人攻擊”,并且由于修復方案也一直是個坑,導致修復這個問題時踩各種坑,故謹以此文簡單的介紹相關(guān)問題。

本文第一節(jié)主要講述https的握手過程,第二節(jié)主要講述常見的“https中間人攻擊”場景,第三節(jié)主要介紹證書校驗修復方案,各位看官可根據(jù)自己口味瀏覽。

二、HTTPS握手過程

wKioL1jQ0TDSCF9YAAOqkzFkO04037.jpg

? ? 首先來看下https的工作原理,上圖大致介紹了https的握手流程,后續(xù)我們通過抓包看下每個握手包到底干了些什么神奇的事。

? ? 注:本文所有內(nèi)容以TLS_RSA_WITH_AES_128_CBC_SHA加密組件作為基礎進行說明,其他加密組件以及TLS版本會存在一定差異,例如TLS1. 3 針對移動客戶端有了很大的改動,現(xiàn)在的ECDHE等密鑰交換算法與RSA作為密鑰交換算法也完全不一樣,所以有些地方和大家實際操作會存在一定出入。

1.TCP三次握手

? ? 我訪問的支付寶的官網(wǎng)www.alipay.com抓取的數(shù)據(jù)。

wKiom1jQ0gqyHDw3AAIbuOpSblw910.jpg

2.Client Hello

wKiom1jQ3UHzO_kBAAFSTy1NKhE603.png

? ? ?TLS的版本號和隨機數(shù)random_c:這個是用來生成最后加密密鑰的因子之一,它包含兩部分,時間戳和隨機數(shù) session-id:用來標識會話,第一次握手時為空,如果以前建立過,可以直接帶過去從而避免完全握手 Cipher Suites加密組件列表:瀏覽器所支持的加密算法的清單客戶端支持的加密簽名算法的列表,讓服務器進行選擇 擴展字段:比如密碼交換算法的參數(shù)、請求主機的名字,用于單ip多域名的情況指定域名。

3.Sever Hello

wKiom1jQ1vSjB4rkAAEniwyCJJc540.png

? ? 隨機數(shù)rando_s,這個是用來生成最后加密密鑰的因子之一,包含兩部分,時間戳和隨機數(shù) 32 字節(jié)的SID,在我們想要重新連接到該站點的時候可以避免一整套握手過程。 在客戶端提供的加密組件中,服務器選擇了TLS_RSA_WITH_AES_128_CBC_SHA組件。

4.Certificate

wKioL1jQ19LC5P1rAAFRYccKCTs243.png

? ? 證書是https里非常重要的主體,可用來識別對方是否可信,以及用其公鑰做密鑰交換??梢钥匆娮C書里面包含證書的頒發(fā)者,證書的使用者,證書的公鑰,頒發(fā)者的簽名等信息。其中Issuer Name是簽發(fā)此證書的CA名稱,用來指定簽發(fā)證書的CA的可識別的唯一名稱(DN, Distinguished Name),用于證書鏈的認證,這樣通過各級實體證書的驗證,逐漸上溯到鏈的終止點,即可信任的根CA,如果到達終點在自己的信任列表內(nèi)未發(fā)現(xiàn)可信任的CA則認為此證書不可信。

? ? 驗證證書鏈的時候,用上一級的公鑰對證書里的簽名進行解密,還原對應的摘要值,再使用證書信息計算證書的摘要值,最后通過對比兩個摘要值是否相等,如果不相等則認為該證書不可信,如果相等則認為該級證書鏈正確,以此類推對整個證書鏈進行校驗。

wKioL1jQ2HfgI-EJAAHv9sesa5w340.jpg

? ?二級機構(gòu)的證書。

wKioL1jQ2YWDc5YmAABPF3Cf72U600.png

三、中間人攻擊

? ? https握手過程的證書校驗環(huán)節(jié)就是為了識別證書的有效性唯一性等等,所以嚴格意義上來說https下不存在中間人攻擊,存在中間人攻擊的前提條件是沒有嚴格的對證書進行校驗,或者人為的信任偽造證書,下面一起看下幾種常見的https“中間人攻擊”場景。

1.證書未校驗

? ? 由于客戶端沒有做任何的證書校驗,所以此時隨意一張證書都可以進行中間人攻擊,可以使用burp里的這個模塊進行中間人攻擊。

wKiom1jQ4r6hr1TIAAFmXIM3NGk336.jpg

? ? 通過瀏覽器查看實際的https證書,是一個自簽名的偽造證書。

wKioL1jQ4wLgdrFbAAHNqwQQY3k355.jpg

2.部分校驗

? 做了部分校驗,例如在證書校驗過程中只做了證書域名是否匹配的校驗,可以使用burp的如下模塊生成任意域名的偽造證書進行中間人攻擊。

wKioL1jQ4zfAxNX2AAF0fUR50IE281.jpg

? ? 實際生成的證書效果,如果只做了域名、證書是否過期等校驗可輕松進行中間人攻擊(由于chrome是做了證書校驗的所以會提示證書不可信任)。

wKiom1jQ40_AZx3TAAGxytrHkBs843.jpg

網(wǎng)站標題:我們來一起說說HTTPS中間人攻擊與證書校驗
網(wǎng)頁路徑:http://muchs.cn/news/101964.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計、App設計、微信公眾號、ChatGPT、品牌網(wǎng)站設計品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)