安全文库

【技術分享】Android Toast Overlay攻擊:無需任何權限的“Cloak and Dagger”


【技術分享】Android Toast Overlay攻擊:無需任何權限的“Cloak and Dagger”

2017-09-19 16:15:28 閱讀:1320次 點贊(0) 收藏 來源: appscan.io

作者:Janus情報局


【技術分享】Android Toast Overlay攻擊:無需任何權限的“Cloak and Dagger”

簡介


Palo Alto Networks公司Unit 42實驗室研究人員在Android overlay系統中發現一個高危漏洞,它允許使用"Toast類型"疊加層,可以發起新型的Android overlay攻擊。所有OS版本<8.0的Android設備都受到這個漏洞的影響,在2017年9月份Android安全公告中發布了該漏洞的補丁。Android 8.0版本剛剛發布,不受此漏洞的影響。正因為Android 8.0剛剛發布,所以這個漏洞幾乎影響到目前市面上所有的Android設備(見表1),用戶應儘快更新補丁。

Overlay攻擊允許攻擊者在受影響的設備上運行其他窗口和應用程序。要發起這樣的攻擊,惡意軟件通常需要請求“draw on top”權限。然而,這個新發現的overlay攻擊不需要任何特定的權限或條件才有效。發起此攻擊的惡意軟件不需要擁有overlay權限,或者從谷歌市場下載安裝。利用這種新的overlay攻擊方式,惡意軟件可以誘使用戶啟用Android可訪問性服務,並授予設備管理員權限或執行其他危險的操作。如果這些權限被授予,那麼就可以在設備上發起一系列強大的攻擊,包括竊取證書、靜默安裝應用程序,以及為了勒索贖金將設備鎖定。

 這項研究的靈感來自於“Cloak and Dagger: From Two Permissions to Complete Control of the UI Feedback Loop”。這篇論文於2017年5月在IEEE Security & Privacy 2017年會議上發表。論文中提出了幾種創新的可訪問性攻擊方法,但前提是惡意應用程序必須顯式請求兩個特殊權限,並從谷歌商店中下載安裝。我們的新研究表明,即使應用程序不是來自谷歌商店,而且只聲明了一個權限“BIND_ACCESSIBILITY_SERVICE”,也可以成功地啟動本文中提到的可訪問性攻擊。

與“Cloak and Dagger”一樣,這種overlay攻擊通過修改屏幕的區域來改變用戶看到的內容,誘使用戶授予額外的權限或識別輸入內容。

這種攻擊的演示視頻地址:

該漏洞被收錄為CVE-2017-0752,並在今年9月份的Android安全公告中披露。

一、無條件Overlay攻擊


利用Toast進行新型overlay攻擊

“Toast”窗口(TYPE_TOAST)是Android上支持的overlay類型之一。Toast overlay通常用來在所有其他應用程序上顯示一個快訊。例如,當用戶未發送郵件,郵件自動保存為草稿時會有一個消息提示。它繼承了其他windows類型的所有配置選項。然而,我們的研究發現,使用Toast窗口作為一個覆蓋窗口,允許應用程序在另一個應用程序的界面上寫入,而不需要特殊請求SYSTEM_ALERT_WINDOW權限。

這個發現允許一個安裝的應用程序在屏幕上用一個Toast窗口製作一個覆蓋層。通過這種方式,應用程序可以在沒有任何特殊權限的情況下啟動overlay攻擊。精心製作的overlay包括兩種類型的視圖(圖1),它們都被嵌入在Toast窗口中。在下面的示例中,view1覆蓋了底部的GUI,並監視用戶單擊行為以推斷攻擊的進展,而view2是一個可點擊的視圖,攻擊者試圖引誘受害者點擊。

【技術分享】Android Toast Overlay攻擊:無需任何權限的“Cloak and Dagger”

圖1  使用Toast窗口製作一個overlay

Android OS <= 7.0

此漏洞是由於缺少權限檢查造成的。在Android的AOSP相關代碼段(版本<= 7)中可以看到,是如圖2所示。通常,將窗口覆蓋在其他應用程序的頂部需要進行權限檢查和操作檢查。然而,在TYPE_TOAST案例中,那些檢查並不到位。請求將自動被授予。根據圖2中的註釋,該應用程序將被授予對TYPE_TOAST窗口的完全控制權。

【技術分享】Android Toast Overlay攻擊:無需任何權限的“Cloak and Dagger”

圖2  TYPE_TOAST未進行權限檢查

Android OS 7.1

Android 7.1引入了兩層緩解措施:一次超時和每個UID的單個toast窗口(見表1)。 第一個緩解強製為每個Toast窗口分配最大超時(3.5秒)(圖3)。 超時后,Toast窗口將消失,以模擬Android上的正常Toast行為。 z毫無意外,這可以被故意設計的重複彈出的Toast窗口擊破。對於第二次緩解,Android 7.1隻允許每個應用程序一次顯示一個Toast窗口(圖4)。 這兩種防禦機制對使用Toast窗口發動overlay攻擊欺騙受害者構成了挑戰。 但是,它並沒有解決基本原因:應用程序不需要任何權限在任何其他應用程序之上顯示Toast窗口。

【技術分享】Android Toast Overlay攻擊:無需任何權限的“Cloak and Dagger”

圖3 Toast窗口超時緩解措施(緩解措施1)

【技術分享】Android Toast Overlay攻擊:無需任何權限的“Cloak and Dagger”

圖4 每個UID允許一個Toast窗口(緩解措施2)

對於Android 7.1版本,想要達到同樣的overlay攻擊,惡意軟件需要利用LooperThread去不停地展示Toast窗口(圖5)。但是在同一時間,只有一個overlay可以使用,所以,惡意程序無法監控用戶是否淡季了覆蓋區域中的預期區域。另一種方法是展示一個overlay,誘導用戶去單擊它,休眠幾秒鐘,然後切換到另外的一個overlay進行其他的步驟。顯然,通過這種緩解措施,overlay攻擊的成功幾率微乎甚微。這種方法同樣適用於Android2.3.7~4.3。因為在上述版本中,Toast窗口中移除了FLAG“FLAG_WATCH_OUTSIDE_TOUCH”(圖6)。

【技術分享】Android Toast Overlay攻擊:無需任何權限的“Cloak and Dagger”

圖5 利用循環繞過超時緩解

【技術分享】Android Toast Overlay攻擊:無需任何權限的“Cloak and Dagger”

圖6  版本2.3.7~4.3中移除了FLAG_WATCH_OUTSIDE_TOUCH

【技術分享】Android Toast Overlay攻擊:無需任何權限的“Cloak and Dagger”

表1 各個Android版本中的overlay攻擊緩解措施

二、可能的後續overlay攻擊


通過上面描述的漏洞,“Cloak and Dagger”中涉及的所有可訪問性攻擊都可以成功執行。此外,我們還演示了一些實際使用TYPE_TOAST浮動窗口的攻擊。

通過設備管理員進行攻擊

通過overlay攻擊,一個已安裝的惡意應用程序可以欺騙用戶授權app設備管理員權限。有了這個,它就有能力發動破壞性的攻擊,包括:

鎖定設備的屏幕

重置設備PIN

清除設備的數據

阻止用戶卸載App

惡意軟件變體已經發動了這種攻擊。如圖7所示,該惡意軟件呈現“安裝完成”對話框,並帶有“Continue”按鈕。然而,這個對話框實際上是一個TYPE_SYTEM_OVERLAY窗口,其中有設備管理員激活對話框。Android API文檔中描述,TYPE_SYSTEM_OVERLAY的描述是“系統覆蓋窗口,顯示在其他所有東西之上”和“這些窗口不能接收輸入焦點”。因此,一旦用戶單擊“Continue”按鈕,單擊事件實際上被發送到真實設備管理員激活窗口的“激活”按鈕。

使用TYPE_TOAST窗口的攻擊也實現了這一點,將視圖flag設置為FLAG_NOT_FOCUSABLE和FLAG_NOT_TOUCHABLE,我們可以在沒有任何特殊權限的情況下發起類似的攻擊。

【技術分享】Android Toast Overlay攻擊:無需任何權限的“Cloak and Dagger”

圖7 Android惡意軟件使用點擊劫持overlay來激活設備管理員

三、惡意鎖屏和勒索軟件攻擊


Android惡意鎖屏和勒索軟件已經在黑市流行很多年了。大多數Android 勒索軟件通過以下方法實現屏幕鎖定:

SYSTEM_ALERT_WINDOW:一個帶有這個權限的Android應用程序可以在任何其他應用程序的頂部顯示一個浮動窗口。通過設置適當的窗口類型和視圖標誌,例如,TYPE_SYSTEM_ERROR、TYPE_SYSTEM_OVERLAY和FLAG_FULLSCREEN,這種浮動窗口將無法被用戶移動。這種技術可以阻止用戶訪問他們的設備。

設備管理員:使用此特權的Android應用程序可以重置屏幕密碼,然後鎖定設備屏幕。如果屏幕被鎖定,PIN被重置,受害者的設備就和板磚一樣了。

我們不需要任何額外的權限,使用TYPE_TOAST類型窗口和默認的視圖標誌,通過顯示全屏的浮動窗口就實現屏幕鎖定的效果,而這種窗口無法被用戶移動。雖然在Android 7.1上有一個時間限制來顯示TYPE_TOAST窗口,但是我們可以像前面介紹的那樣,可以在一個循環中不斷彈出Toast窗口進行繞過。因此,我們可以繞過Android 7.1的限制。


【技術分享】Android Toast Overlay攻擊:無需任何權限的“Cloak and Dagger” 【技術分享】Android Toast Overlay攻擊:無需任何權限的“Cloak and Dagger”

本文轉載自 appscan.io
原文鏈接:http://appscan.io/discover-detail.html?id=5907016