使用 HTTPS 的網(wǎng)站也能被黑客監(jiān)聽(tīng)到數(shù)據(jù)嗎?
眾所周知,https可以保護(hù)數(shù)據(jù)傳輸?shù)陌踩?,防止黑客監(jiān)聽(tīng)、竊取和篡改傳輸?shù)臄?shù)據(jù),避免發(fā)生中間人攻擊。
一般認(rèn)為,只要網(wǎng)站啟用https協(xié)議,數(shù)據(jù)傳輸就很安全。
然而,事實(shí)真的如此嗎?
2014年,波蘭計(jì)算機(jī)安全應(yīng)急響應(yīng)組發(fā)表了一篇文章,文章中這樣寫道:“很多家用路由器存在未授權(quán)的遠(yuǎn)程修改配置漏洞導(dǎo)致了這次事件的發(fā)生。黑客通過(guò)網(wǎng)上銀行頁(yè)面注入了JavaScript代碼,欺騙用戶輸入賬號(hào)密碼,或者驗(yàn)證碼,最終竊取用戶銀行里的錢。”
當(dāng)年這一事件讓很多人感到十分疑惑。
大部分人都只聽(tīng)說(shuō)過(guò)DNS劫持只會(huì)發(fā)生在http上,從來(lái)沒(méi)聽(tīng)過(guò)https也可以發(fā)生DNS劫持,https也不安全啊!
什么是https?
簡(jiǎn)單地說(shuō),https是http的升級(jí)版,在http下加入了SSL層,以此達(dá)到保護(hù)數(shù)據(jù)傳輸安全的目的。
https主要通過(guò)數(shù)字證書、加密算法、非對(duì)稱加密等技術(shù),實(shí)現(xiàn)互聯(lián)網(wǎng)傳輸安全保護(hù)。它的作用有三個(gè):
1. 數(shù)據(jù)保密性
保護(hù)數(shù)據(jù)內(nèi)容在傳輸過(guò)程中,不會(huì)被第三人查看。就好像商家將商品包裹得嚴(yán)嚴(yán)實(shí)實(shí)的,再通過(guò)快遞發(fā)給你一樣,其他人沒(méi)辦法知道包裹里放著什么。
2. 數(shù)據(jù)完整性
及時(shí)發(fā)現(xiàn)被第三人篡改的傳輸內(nèi)容。就像快遞包裹到了你的手里,發(fā)現(xiàn)包裹破了一個(gè)洞,我們能及時(shí)發(fā)現(xiàn)并拒收。
3. 身份校驗(yàn)
保護(hù)數(shù)據(jù)達(dá)到用戶期望的目目的地。就像商家要求買家提供手機(jī)號(hào)、地址等詳細(xì)信息一樣,通過(guò)身份校驗(yàn)來(lái)確保送對(duì)了地方。
發(fā)生攻擊
為什么DNS劫持也會(huì)發(fā)生在https身上?
原來(lái),黑客使用了一款名為SSLStrip的工具,這種攻擊可以阻止用戶和https網(wǎng)站建立連接,進(jìn)行中間人劫持。
SSLStrip的工作流程為:
- 發(fā)動(dòng)中間人攻擊,切齒http請(qǐng)求流量
- 將https鏈接全部替換為http
- 使用http與受害主機(jī)進(jìn)行連接,與此同時(shí),與網(wǎng)站服務(wù)器建立https連接
- 受害主機(jī)與網(wǎng)站服務(wù)器之間的全部通信請(qǐng)求,全部由黑客的服務(wù)器進(jìn)行轉(zhuǎn)發(fā)
要完成攻擊,SSLStrip還需要解決一個(gè)問(wèn)題。如果用戶訪問(wèn)的是http,瀏覽器會(huì)發(fā)出警告,提醒用戶沒(méi)有使用SSL加密。
為了解決這個(gè)問(wèn)題,SSLStrip會(huì)對(duì)URL進(jìn)行重寫,在域名前面增加“ssl-”的前綴,以此來(lái)迷惑用戶。
黑客在實(shí)施攻擊過(guò)程中,采用了SSL剝離技術(shù),實(shí)現(xiàn)中間人攻擊。自己與銀行之前建立https,但在用于與自己之間卻是http。
可以看出,黑客仍然沒(méi)有辦法突破https。
只不過(guò)很多人都存在一個(gè)誤區(qū),為網(wǎng)站安裝SSL證書,不代表網(wǎng)站與瀏覽器之間的數(shù)據(jù)傳輸就是安全的,黑客雖然沒(méi)辦法繞開(kāi)https的防護(hù),但仍然可以使用其他方法,竊取用戶的數(shù)據(jù)。