了解針對「所有」版本Android的Cloak&Dagger攻擊
Cloak&Dagger攻擊是一種利用許可權不匹配問題來訪問Android設備的攻擊方法,版本在7.1.2及以下的Android設備都會受到這種攻擊的影響。Cloak&Dagger可以捕獲用戶的PIN碼和密碼,並且能夠幫助攻擊者在不會被檢測到的情況下獲取目標設備的所有許可權。目前,廠商還沒有修復相關漏洞,而且安全社區也沒有很好的解決方案。
Cloak&Dagger攻擊機制
Cloak&Dagger攻擊主要針對的是兩個功能,即SYSTEM_ALERT_WINDOW和BIND_ACCESSIBILITY_SERVICE。如果應用程序得到了這兩個許可權,它就可以成功進行這種攻擊。
SYSTEM_ALERT_WINDOW允許應用程序顯示屏幕覆蓋層,例如通知等等。BIND_ACCESSIBILITY_SERVICE則允許應用程序跟蹤和查詢手機屏幕所顯示的元素,而這兩種許可權既可以單獨使用,也可以配合使用。
SYSTEM_ALERT_WINDOW許可權允許應用程序覆蓋其他的應用界面,如果我們從GooglePlay下載並安裝了一款App,Android默認會賦予該許可權,並不需要得到用戶同意。這也就意味著,惡意App同樣可以在後台悄悄獲取該許可權,這樣也就完成了攻擊的第一個階段,即在用戶毫不知情的情況下獲取用戶許可權。
當我們得到了SYSTEM_ALERT_WINDOW許可權之後,我們就可以欺騙用戶去授權BIND_ACCESSIBILITY_SERVICE許可權了,這一步可以通過在App中嵌入視頻或利用社工技術來實現。
BIND_ACCESSIBILITY_SERVICE是什麼?
BIND_ACCESSIBILITY_SERVICE允許應用程序發現顯示在手機屏幕上的UI對象,查詢內容,並與它們進行交互,這些小工具可以讓殘疾人用戶更加輕鬆地使用Android設備。考慮到安全性方面的問題,這種許可權必須用戶在設置界面單獨的菜單中開啟才能激活。
比如說,惡意軟體可以向用戶請求該許可權,然後再請求窗口上添加額外的顯示層,而這一層顯示的請求是一些無害請求,並留下原本請求窗口中的「OK」按鈕。當用戶點擊「OK」之後,惡意App將能夠跟蹤屏幕上的對象,並與他們進行交互了(甚至還可以修改內容)。因此,如果惡意App獲取到了這種許可權,後果就會很嚴重了。
所以,當攻擊者得到了這個許可權後,他們就能夠實現鍵盤記錄和釣魚攻擊,甚至是安裝其他惡意軟體以實現深入攻擊。
如何發動Cloak & Dagger攻擊
當惡意軟體獲取到上述這兩種許可權之後,攻擊者可以實現以下幾種攻擊(不僅限於此):
1、攻擊者可修改用戶所見的內容;
2、攻擊者可以控制用戶輸入;
3、攻擊者可以控制屏幕顯示的內容;
4、攻擊者可以通過安裝木馬和其他惡意軟體來竊取用戶數據;
接下來,我們詳細介紹一下攻擊者可以發動的攻擊類型和步驟。
一、點擊劫持覆蓋攻擊
攻擊者可以利用這種技術來獲取目標設備的管理員許可權,目前也有很多惡意軟體可以實現這種攻擊。如下圖所示,惡意軟體可以在屏幕上顯示一個「安裝完成」的對話框,並帶有「繼續『按鈕。實際上,這是一個TYPE_SYTEM_OVERLAY窗口,其真實意圖是要激活設備的管理員許可權。
根據Android API文檔的描述,TYPE_SYTEM_OVERLAY是系統覆蓋窗口,它需要顯示在所有內容之上,而且不能接收輸入焦點。所以當用戶點擊了「繼續」按鈕之後,點擊事件將會傳遞給真實設備管理員激活窗口的「激活」按鈕。
二、安全PIN碼竊取
當安全屏幕鍵盤生成輔助事件時,這種攻擊就可以執行了。甚至在屏幕鎖定狀態下,針對輔助App設計的惡意應用仍然可以查看到PIN碼的輸入事件。
三、手機屏幕解鎖
輔助App還可以在手機鎖定的情況下注入事件,輔助App可以通過注入事件來輸入PIN碼屏並解鎖手機,然後實施下一步攻擊,而且整個過程可以在手機不亮屏的情況下完成。
四、App靜默安裝
這也是這種攻擊技術最巧妙的地方,當目標設備感染了初始階段的惡意App之後,它還可以安裝其他的惡意軟體(例如木馬),並請求獲取完整控制許可權。更重要的是,整個過程都可以在後台瞧瞧完成,而且不會顯示應用程序安裝窗口,並且還會禁用程序的卸載按鈕。
五、啟用所有許可權
當惡意App安裝完成之後,它可以通過自動點擊來獲取目標設備的完整許可權。
六、擊鍵推斷
在這種攻擊技術的幫助下,只擁有YSTEM_ALERT_WINDOW許可權的應用程序也有可能獲取到目標用戶在屏幕鍵盤上輸入的內容。此時,惡意App需要在虛擬鍵盤的每一個鍵上添加額外的透明覆蓋層,這些覆蓋層不會攔截點擊事件,這裡需要涉及到鍵盤的底層設計。如果點擊事件是從不同的覆蓋層傳遞過來的,那麼FLAG_WINDOW_IS_OBSCURED標識將會設置為「true『,再配合上運動事件和疊加層堆棧的順序,攻擊者可以大致推測出用戶的按鍵情況。
七、鍵盤App劫持
這種攻擊允許攻擊者通過鍵盤劫持來竊取用戶輸入的數據。一般來說,當App顯示密碼輸入文本框時,getText方法將會返回一個空字元串。但是在BIND_ACCESSIBILITY_SERVICE許可權的幫助下,鍵盤App本身將會被視作普通的非特權App,而每一個按鍵所生成的鍵盤事件都將被記錄下來。
八、目標密碼竊取
輔助服務可以用來檢測目標用戶啟動的應用程序,攻擊者可以顯示一個看似像用戶名和密碼編輯框的可視層來竊取用戶密碼。但是,當用戶在輸入完憑證並點擊「提交「按鈕之後,這些信息將會發送到攻擊者的伺服器上。
九、2FA令牌竊取
現在很多網站服務或應用程序都採用了雙因素身份驗證功能(2FA)來驗證用戶的合法性。通過這種攻擊技術,攻擊者可以完全控制目標設備,並讀取用戶的簡訊消息,從而獲取到訪問令牌。
十、廣告劫持
惡意軟體可以知道一款App顯示廣告的時間和位置,並在目標位置通過額外的可視層來顯示其他的廣告,並以此來牟利。
* 來源:FreeBuf.COM
歡迎關注官方微信:APP那些事兒(yitichuanmei)匯聚最有趣最好玩的APP資訊,歡迎和APP君一起探討APP那些事兒!
APP君|歡迎你
微信ID:yitichuanmei
TAG:三體科技 |