1. 程式人生 > >有https就夠安全了嗎?

有https就夠安全了嗎?

在平時工作和日常生活中, “https=安全”這樣的觀點在大多數人的思維中根深蒂固,甚至很多人根本不認為自己會被攻擊。那這個觀點到底對不對呢?難道真的是 too young too simple, sometimes naïve麼?

下面就由筆者來打破人們的這些鬼https的信任吧、(注:本文只討論前端以及中間人的手段來獲取資訊,因為https主要是為了防止資訊被監聽。至於黑站等相關問題,本文暫不討論,大家如有興趣請持續關注。)

第一部分 .  https降級攻擊

降級攻擊這項技術歷史悠久,但由於操作簡單便捷,所以使用率一直很高。這項技術與證書偽造殊途同歸,為了讓讀者能直觀感受這一類直接劫持型別的攻擊,在此做一個簡單的演示。

為了讓大家對整個演示過程印象深刻,把BAT的產品拿來做演示物件應該是最有效的。另外,個人覺得搜尋引擎應該也是大家用的最多的產品,那不妨就讓baidu身先士卒,先上筆者的手術檯被我解剖下。

工具:一臺受害者的電腦或者虛擬機器,另一臺裝有sslstrip或者一堆高度整合的自帶sslstrip功能的中間人工具框架。具體操作請看下面演示 :

在受害者電腦上,這個是正常訪問baidu的樣子。有小鎖圖示,有https協議,然後我們看看如果受到了降級攻擊之後,受害者的百度:

https

很明顯,安全鎖圖示消失了,位址列最前面的https 也不見了。其實,很多攻擊者會通過注入前端的js,讓使用者看起來有https,也有安全鎖圖示。下面,我們登入下試試:

https

在攻擊者的電腦上:

https

由上圖可見,受害者電腦上輸入的使用者名稱和加密後的密碼都已經被擷取到。幸好密碼是加密的,攻擊者無法直接獲取受害者的使用者名稱和密碼。由上可知,即使有了https,對密碼加密也是必不可少的步驟。緊急關頭,這也能給自己加一道最後的防護。

從另一個角度來說:在我們的演示中,密碼已經加了密,所以獲取到了也沒什麼用。而且有的同學說,在位址列裡面這麼明顯的差別,一般人都能看出是受到攻擊了;既然都能看出問題的所在,那也就不存在安全失控這樣的隱患。

那接下來,我們繼續介紹些更隱蔽、更直接地拿到明文密碼的方法。

第二部分 .  js中間人投毒

這個名字其實是筆者根據攻擊原理形象化的描述。其原理是先開展中間人攻擊,然後在使用者請求的時候修改返回的資料包,插入有攻擊性的js程式碼。具體步驟請看下面的演示:

工具:一臺受害者的電腦,一臺攻擊者的電腦,為了方便,直接使用mitmf這個中間人攻擊框架進行操作。

攻擊者電腦開啟mitmf,呼叫jskeylogger模組:

https

看看日誌:

https

已經開始注入惡意的js了。

受害者繼續登入baidu:

安全

密碼是“xiaobaitu”,攻擊者這邊已經收到,如下圖所示。

安全 安全

登入憑證竊取計劃完成,這個方法比第一個方法要方便得多,直接竊取到明文密碼,而且https以及安全圖示都還在。

除了中間人攻擊的方法,攻擊者還可以結合xss,js快取投毒等一系列攻擊手段開展類似的攻擊,危害不可謂不大。

第三部分:瀏覽器惡意外掛

瀏覽器惡意外掛,和中間人關係不大。因為中國有Great Firewall的存在,我們基本可以不用擔心一些惡意外掛能竊取我們的資料。但是由於習慣原因,很多人喜歡用chrome,並且大家也都知道chrome可以裝很多有用的外掛,然而由於Great Firewall的存在,通過正常渠道是訪問不到谷歌應用商店的。於是,很多有需要的使用者會通過各種方法去下載類似的外掛。而對外掛原理不甚明瞭的使用者,就很有可能下載到帶有惡意js的外掛。通常來說,大部分的防毒軟體對帶有惡意js的外掛是沒有特別好的檢測方案的。而無論是谷歌還是火狐的官方外掛商店,都曾經出現過帶有惡意程式碼的外掛,造成了巨大的損失。

背景介紹完了,演示如下:

工具:一臺受害者的電腦,一個筆者寫的chrome外掛,一臺可以訪問接收的web伺服器。

首先,攻擊者在經不住誘惑的情況下(如“美女圖片”外掛,“一元錢搶6s”外掛等描述),下載了惡意的外掛,然後又登入baidu(為了增強大家印象),現在,我們換一個比較“致命”的應用,支付寶。

安全

密碼是“woshidahuilang”。

接收伺服器:

安全

由上圖可以看出,攻擊者端已接收到全部的資訊。

該方法的原理就是通過瀏覽器外掛,在點選登入時,將登入框的資訊通過ajax表單的形式提交的遠端伺服器,無聲無息間賬號密碼已經洩露。

下面貼個實現程式碼:

安全

主要是通過監聽表單的submit事件來實現。

Http安全問題其實是當前的一個重點問題,很多人的賬戶密碼都是由以上攻擊方式而被竊取的。除上三種方式外之外,攻擊方法還有很多,本文就不一一列舉了。使用者必須要理解一個概念:安全是一個需要積累的過程,就像打補丁。

一個補丁剛打上時,暫時可以保證安全。但是時間一久,系統仍有可能出現其他的漏洞。你可能認為某個小補丁不起眼,能一擊而破,可是別忘了,補丁也不是獨自戰鬥。因此,各項安全工作一起合力,就能很好的延長防護的縱深以及拉長防護的戰線,給予我們以及使用者更好的保護。

原文出處:恆生技術之眼

原文連結:http://rdcqii.hundsun.com/portal/article/421.html