在傳統流行的web服務中,由於http協議沒有對資料報進行加密,導致http協議下的網路包是明文傳輸,所以只要攻擊者攔截到http協議下的資料報,就能直接窺探這些網路包的資料。
簡而言之,https協議在應用層的http協議和以及傳輸層tcp協議之間的會話層加入了 ssl/tls協議,用作加密資料報。會話層的這個加密協議,在真正資料傳輸之前,進行握手通訊,握手的資訊交換主要包括:雙方確認加密協議的版本,確認身份(其中瀏覽器客戶端的身份有時是不需要確認的),確認傳輸真正資料的加密密碼(對稱加密)。
在用作資訊傳輸的加密密碼確認之後,接下來的通訊資料都會加密後再傳輸,從而達到防竊取的作用。
0x01 https 協議降級
那麼使用了https就能確保安全傳輸了嗎?
可以說理想上是的,現實卻不是。
原因簡單來說就是:設計和實現ssl/tls協議出現了漏洞,導致攻擊者同樣可以攻擊一些舊版本的ssl/tls協議。當ssl/tls加密協議漏洞爆出來之後,最新版本的ssl/tls協議修復了已知漏洞,但舊版本的加密協議卻變得不安全了。
那麼什麼又是「https協議降級」?
在上一小節我們提到ssl/tls協議通過握手來確定通訊資訊,其中握手雙方要統一加密協議版本。
在握手過程中這樣確認加密協議版本:
由客戶端(如瀏覽器)傳送第乙個資料報 clienthello,這個資料報中儲存著客戶端支援的加密協議版本。
伺服器收到這個clienthello資料報,檢視裡面客戶端支援的加密協議版本,然後匹配伺服器自己支援的加密協議版本,從而確認雙方應該用的加密協議版本。
伺服器傳送serverhello資料報給客戶端,告訴客戶端要使用什麼加密協議版本。
在上述過程中,如果客戶端傳送給伺服器的clienthello資料報中說自己僅支援某個有漏洞的舊版本加密協議(比如僅支援sslv3.0),伺服器有兩種可能:
伺服器支援很多版本,其中包括有漏洞的舊版本和新版本(包括了sslv3.0協議),那麼伺服器會認可使用有漏洞的舊版本協議,從而告訴客戶端使用有漏洞的舊版本(可以使用sslv3.0)。
伺服器不支援有漏洞的舊版本,拒絕客戶端的這次請求,握手失敗。
對於攻擊者,作為中間人只能監聽到加密過的資料,如果這些資料通過沒有漏洞的加密版本加密,攻擊者並不能做什麼。
但是,如果伺服器提供有漏洞的舊版本加密協議的支援,而同時攻擊者又能作為中間人控制被攻擊者的瀏覽器發起漏洞版本的https請求,那雖然攻擊者監聽到的也是加密過的資料,但因為加密協議有漏洞,可以解密這些資料,所以資料就和明文傳輸沒有什麼差別了。
這就是https協議降級。
HTTPS攻擊(SSL TLS中間人攻擊)
攻擊機 kali 目標機 win7 攻擊前提 客戶端已經信任偽造證書頒發機構 攻擊者控制了核發證書頒發機構 客戶端程式禁止了顯示證書錯誤告警資訊 攻擊者已經控制客戶端,並強制其信任偽造證書。角色 客戶端 客戶路由器 真實伺服器 攻擊者 伺服器 攻擊者 伺服器 攻擊者通過arp欺騙客戶端通過攻擊者做閘...
Https中間人攻擊
https也不是絕對安全的,如下圖所示為中間人劫持攻擊,中間人可以獲取到客戶端與伺服器之間所有的通訊內容。中間人擷取客戶端傳送給伺服器的請求,然後偽裝成客戶端與伺服器進行通訊 將伺服器返回給客戶端的內容傳送給客戶端,偽裝成伺服器與客戶端進行通訊。通過這樣的手段,便可以獲取客戶端和伺服器之間通訊的所有...
Https中間人攻擊
防範方法 一 https連線過程及中間人攻擊原理 https協議就是http ssl協議,如下圖所示為其連線過程 1.https請求 客戶端向服務端傳送https請求 2.生成公鑰和私鑰 服務端收到請求之後,生成公鑰和私鑰。公鑰相當於是鎖,私鑰相當於是鑰匙,只有私鑰才能夠開啟公鑰鎖住的內容 3.返回...