天天看點

Android 黑客入門 Http與Https協定

上篇文章中提及了Android的JS腳本漏洞問題,調用addJavascriptInterface的編譯必須為API 17及以上,為了相容更多的裝置,App和第三方架構程式經常用低的API版本編譯,是以即使運作在打了更新檔程式的Android 4.2, 4.3或4.4的裝置上,App仍存在漏洞攻擊風險。

代碼的執行意味着對裝置的無限制通路, 以futex漏洞為例(CVE-2014-3153),它影響目前使用的每個Linux核心版本,包括安卓系統以及最近第一次被成功 root的Galaxy S5 。盡管他們不是等價的,但我們還是應該養成“遠端代碼執行”與“root權限”在嚴重等級上等價的習慣,因為遲早,一個下定決心的黑客将可能從一個地方蹦到另一個地方,擷取裝置的完全控制權。

我們來驗證一下漏洞到底有多容易被利用。

我們來測試 通過中間代理 攻擊劫持 非安全的javascript下載下傳,并注入一些javascript腳本來探查addJavascriptInterface漏洞。

我設定了一個充當透明Web Proxy 的wifi無線接入點(LP)。設定了對任何接入此裝置通過HTTP請求任何腳本時都注入惡意代碼。 即使當LP不受控制時,DNS毒化或ARP緩存欺騙等技術也可以用來實作中間人代理。或者可以安裝一個模仿成合法LP的假LP。也就是說,可以有各種方法實作中間人的代理,使用wifi的任何人都将通過我們的代理通路網絡,為什麼最好不要連接配接到非安全的wifi,這也是其中之一的原因。

javascript的腳本是具有動态性的,意味着我們不需要檢測特定的程式或架構程式以作為目标。當運作時,惡意代碼掃描整個javascript命名空間中的對象,查找不正确地使用了addJavascriptInterface API的對象,然後對每個進行漏洞測試。如果沒有找到漏洞,它就退出。如果成功了,它将運作一個shell指令啟動某個app。

後來成功的運作了,如果動态更改js代碼,也是可以運作的,通過檢視TCP/IP包和監控軌迹,很快發現很多架構程式隻是聯合使用了addJavascriptInterface和非安全HTTP下載下傳的罪魁禍首。

結論——可以看出,通過使用相對簡單的中間代理人技術,無需特定的應用程式、裝置、場景、就可以遠端運作一些腳本程式。

是以,建議開發者,當連接配接到一個不可信的wi-fi無線網絡時不要使用任何Android應用程式來顯示廣告,建議使用者,盡量不要連接配接不可信的Wifi,沒有密碼則更為危險,随時會被抓包、攻破、篡改,分析資訊。

在調查的架構程式中隻有少數使用Https,也就意味着任何使用這些架構程式的app在非安全地下載下傳javascript時也易受到攻擊。去年的調查資料還是有将近40%的程式在使用http,不過一些海外市場已經強制要求使用Https,蘋果也不例外。

現在新的6.0 和 7.0 牛軋糖 安卓版本中,權限代理回到了程式申請,這意味着未來的app将更為安全,如果使用者不同意,則無法處理,而且無法一次性永久申請權限,加之Root權限的限制,其實以後會越來越安全了。

繼續閱讀