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