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