我們來(lái)一起說(shuō)說(shuō)HTTPS中間人攻擊與證書(shū)校驗(yàn)

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

一、前言

隨著安全的普及,https通信應(yīng)用越發(fā)廣泛,但是由于對(duì)https不熟悉導(dǎo)致開(kāi)發(fā)人員頻繁錯(cuò)誤的使用https,例如最常見(jiàn)的是未校驗(yàn)https證書(shū)從而導(dǎo)致“中間人攻擊”,并且由于修復(fù)方案也一直是個(gè)坑,導(dǎo)致修復(fù)這個(gè)問(wèn)題時(shí)踩各種坑,故謹(jǐn)以此文簡(jiǎn)單的介紹相關(guān)問(wèn)題。

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

二、HTTPS握手過(guò)程

wKioL1jQ0TDSCF9YAAOqkzFkO04037.jpg

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

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

1.TCP三次握手

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

wKiom1jQ0gqyHDw3AAIbuOpSblw910.jpg

2.Client Hello

wKiom1jQ3UHzO_kBAAFSTy1NKhE603.png

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

3.Sever Hello

wKiom1jQ1vSjB4rkAAEniwyCJJc540.png

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

4.Certificate

wKioL1jQ19LC5P1rAAFRYccKCTs243.png

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

? ? 驗(yàn)證證書(shū)鏈的時(shí)候,用上一級(jí)的公鑰對(duì)證書(shū)里的簽名進(jìn)行解密,還原對(duì)應(yīng)的摘要值,再使用證書(shū)信息計(jì)算證書(shū)的摘要值,最后通過(guò)對(duì)比兩個(gè)摘要值是否相等,如果不相等則認(rèn)為該證書(shū)不可信,如果相等則認(rèn)為該級(jí)證書(shū)鏈正確,以此類(lèi)推對(duì)整個(gè)證書(shū)鏈進(jìn)行校驗(yàn)。

wKioL1jQ2HfgI-EJAAHv9sesa5w340.jpg

? ?二級(jí)機(jī)構(gòu)的證書(shū)。

wKioL1jQ2YWDc5YmAABPF3Cf72U600.png

三、中間人攻擊

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

1.證書(shū)未校驗(yàn)

? ? 由于客戶(hù)端沒(méi)有做任何的證書(shū)校驗(yàn),所以此時(shí)隨意一張證書(shū)都可以進(jìn)行中間人攻擊,可以使用burp里的這個(gè)模塊進(jìn)行中間人攻擊。

wKiom1jQ4r6hr1TIAAFmXIM3NGk336.jpg

? ? 通過(guò)瀏覽器查看實(shí)際的https證書(shū),是一個(gè)自簽名的偽造證書(shū)。

wKioL1jQ4wLgdrFbAAHNqwQQY3k355.jpg

2.部分校驗(yàn)

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

wKioL1jQ4zfAxNX2AAF0fUR50IE281.jpg

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

wKiom1jQ40_AZx3TAAGxytrHkBs843.jpg

標(biāo)題名稱(chēng):我們來(lái)一起說(shuō)說(shuō)HTTPS中間人攻擊與證書(shū)校驗(yàn)
標(biāo)題URL:http://www.bm7419.com/news14/101964.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站營(yíng)銷(xiāo)關(guān)鍵詞優(yōu)化、商城網(wǎng)站、網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)

廣告

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

成都定制網(wǎng)站建設(shè)