近期,獵豹移動安全實驗室(CMSL)監控顯示,在韓國和哥倫比亞分別爆發了針對當地手機銀行和Google錢包的支付病毒。這兩個病毒都采用技術手段對抗卸載,一旦安裝,將很難卸載,我們稱之為“頑固木馬”。
根據Android特性,要阻止用戶卸載應用,不要讓用戶看到卸載應用的界面或沒有機會去點確認卸載的按鈕就行。為了達到上述目的,韓國手機銀行病毒采用了注冊設備管理器并阻止取消激活設備管理器的手段;而哥倫比亞病毒則彈出自定義界面,屏蔽按鍵消息,讓用戶無法操作。
除了近期發現的韓國銀行和哥倫比亞病毒,此前兩年也陸續出現了幾款知名度較大的“頑固木馬”,我們先回顧下這幾款“頑固木馬”。
2012年出現的“銀行悍匪”是獵豹移動安全實驗室監控到的國內第一款對抗卸載的病毒。但此后國內就沒有出現過知名度較大的“頑固木馬”,反倒是在國外此類木馬頻繁出現,比如敲詐者(Cryptolocker)病毒。從地域上劃分,“頑固木馬”主要出現在俄語地區和韓國,美國偶爾會出現一些。
“頑固木馬”對抗技術詳解
木馬會啟動一個監聽系統日志的服務,使用Logcat命令讀取日志信息
當用戶打開特定界面(如卸載應用界面)時,木馬會強制返回桌面,導致無法卸載應用
火眼動態跑出木馬會監聽的界面如下:
通過搶占屏幕焦點,既可以使用戶無法正常使用手機,強制顯示木馬要展示的內容,同時也可覆蓋系統的卸載界面,達到對抗卸載的目的。搶占屏幕焦點的方法有如下幾個:
1、頻繁調用Activity
Cryptolocker采用了每隔1s啟動一次Activity的策略,讓用戶在這1s時間內無法進行其他操作。
2、重寫onPause等回調函數
木馬會啟動一個Activity到前臺,并重寫onPause等函數,當該Activity切換到后臺時,木馬會立刻響應,再次調用啟動一個Activity,這會讓用戶沒有時間去做其他事情。
3、Activity劫持
上述兩種方法會頻繁彈出一個界面,過于殘暴,通常適用于敲詐者這一類病毒,強迫用戶看到自己的界面去完成指定的事情(如填賬戶密碼等),并且還可以讓用戶沒有機會去卸載該木馬。
對于需要偷偷在后臺干活并能防止被卸載的木馬,上面兩種方法很容易暴露自己。這里有一種Activity劫持的方法。木馬會在后臺輪詢Activity棧,如果棧頂是指定的組件(系統的卸載界面),則彈出自定義界面進行覆蓋或返回桌面阻止用戶進一步的操作。
4、神奇的懸浮窗
除了在界面上覆蓋一個Activity,大部分木馬會選擇直接覆蓋一個懸浮窗
type = 2002 = TYPE_PHONE,表示該懸浮窗置于所有應用程序之上,狀態欄之下
flags = 32 = FLAG_NOT_TOUCH_MODAL,懸浮窗將獨占所有的設備點擊事件,而不管它們是不是發生在窗口范圍內。
上述設置可以保證懸浮窗置于頂層,并且可以接收到點擊消息。
但是窗口接收到點擊消息后不做任何響應,也就是屏蔽了用戶的按鍵消息。
同時,木馬還可以發送“android.intent.action.CLOSE_SYSTEM_DIALOGS”廣播,關閉系統對話框(包括通知欄、長按開機鍵后的重啟對話框)
注冊為設備管理器的應用,只有在取消激活之后才能被卸載。“頑固木馬”會想盡辦法讓用戶把木馬注冊為設備管理器,并防止用戶取消激活。
1、誘騙激活注冊設備管理器
木馬會彈出激活設備管理器的界面,但是有些人不會輕易點擊激活按鈕,這導致激活設備管理器的概率降低,有些木馬會利用穿透點擊的技術達到目的。
木馬會在激活設備管理器界面上覆蓋一層view,并設置android:focusable=”false”,這樣用戶在點擊確定后,會穿透到下層view,實際上點擊的是激活按鈕。
使用hierarchyviewer查看的布局結構如下:
2、利用設備管理器漏洞
2012年爆出設備管理器漏洞,木馬可以利用漏洞在設備管理器列表中“隱身”,無法手動取消激活設備管理器。
具體做法是,在AndroidManifest文件中不注冊android.app.action.DEVICE_ADMIN_ENABLED廣播
3、阻止取消激活設備管理器
“頑固木馬”會重寫onDisableRequested方法,當用戶點擊取消激活設備管理器按鈕時,該回調函數會被調用。如果在函數添加調用其他界面、返回桌面、鎖屏等操作,確認取消激活設備管理器的界面將被覆蓋,用戶將無法取消激活設備管理器。
同樣也可以重寫onDisabled方法,取消激活設備管理器成功后會調用該函數,有些木馬會不斷彈出激活設備管理器的界面,重新讓用戶再次激活設備管理器。
“頑固木馬”通常會將上述幾個對抗技術結合起來使用,用最小的代價就可以讓用戶手足無措,但是“頑固木馬”的對抗技術遠不止這些,此文僅是拋磚引玉,希望大牛們不吝賜教,也期盼獵豹移動安全實驗室挖掘出更深層次的東西。
文章來源:FreeBuf黑客與極客(FreeBuf.COM)