作者:
阿里移動安全
·
2015/12/18 16:55
Author:[email protected]
0x00 惡意應用簡介
近年許多的android市場實現免root安裝應用,也就是下載完成立即自動安裝,而黑產界也同樣利用該技術在進行惡意推廣,靜默安裝。最近攔截到大量惡意應用利用系統AccessibilityService靜默安裝應用。一旦惡意的Accessibility服務被啟用,惡意應用將彈出廣告,即使使用者關閉彈出的廣告該應用程式也會在後臺下載,隨後自動安裝推廣的惡意應用。
0x01 AccessibilityService介紹:
AccessibilityService作用:
Android Accessibility用於那些由於視力、聽力或其它身體原因導致不能方便使用Android智慧手機的使用者,Android提供了Accessibility功能和服務幫助這些使用者更加簡單地操作裝置。開發者可以搭建自己的Accessibility服務,這可以加強應用的可用性。開啟AccessibilityService後應用透過它能實時地獲取當前操作應用的視窗元素資訊,並能夠雙向互動,既能獲取使用者的輸入,也能對視窗元素進行操作,比如點選按鈕。
AccessibilityService的使用場景:
Android應用市場使用android Accessibility來免root安裝應用;近來火熱的搶紅包應用也用使用AccessibilityService自動搶紅包。
0x02 惡意應用分析
我們監測到一款名為“WiFi密碼檢視器(增強版)”的應用濫用AccessibilityService。應用啟動後誘導使用者開啟“WIFI訊號增強服”,其實就是開啟惡意應用自身的AccessibilityService;以檢視WIFI密碼讓惡意應用獲得root許可權,而這一切都是為該惡意自動安裝做鋪墊。下圖是該應用執行圖
圖應用啟動與引導開啟wifi訊號增強介面
應用啟動後會引導使用者開啟WIFI訊號增強服務。應用跳轉到ACCESSIBILITY_SETTINGS介面,提示使用者若要增強Wifi訊號強度,請開啟WIFI訊號增強服務。使用者啟用惡意應用的該服務之後,手機將瘋狂下載該應用雲端準備的應用包,並且在手機上自動安裝執行。
圖啟動Accessibilty Service介面
以下是惡意程式碼執行流程
圖惡意程式碼雲信流程
流程圖解析
- Wifi_list模組,惡意應用利用wifi訊號增強誘導使用者開啟
Accessiblity Service
;檢視Wifi密碼誘導使用者給該應用賦予Root許可權。
- PushDownLoad模組,該模組由
PushCoreService
和ChapingCoreService
服務組成,它們利用後臺服務上傳裝置資訊,獲取待Push的應用包,下載應用包。
- 安裝模組,惡意應用解析下載成功的包,然後彈出
DialogPushActivity
的廣告框,非Root利用 AccessilbityService
安裝,root利用 pm install
完成靜默安裝
- daemon模組, daemon是存放在raw目錄下的elf檔案,它是一個守護程式,保護應用不被殺死。daemon原理是fork出子程式之後,讓子程式成為新的會話的領頭程式,並與其父程式的會話組和程式組脫離,緊接著就是在子程式中定時去啟動java層配置的任務。這裡它保證
PushCoreService
和ChapingCoreService
一直在後臺執行。
以下對核心服務PushCoreService
跟蹤分析
首先向目標伺服器Post裝置的imei,wifimac,SerialNumber資訊,伺服器返回uuid,並記錄在DefaultSharedPreference
檔案的”uuid”欄位
圖請求伺服器獲取uuid
上圖最後呼叫this.m_context.handler.sendEmptyMessage(1)
,啟動執行緒GetPushThread執行緒。該執行緒向http://api.findzhibo.com/ad/open?appCode=1&appVersion=appVerion
請求獲取當前應用的“open_status”欄位。只有“open_status”欄位為True時,雲端伺服器才會繼續執行,否則表示當前應用版本對應的雲端關閉。開啟狀態向http://api.findzhibo.com/index.php/ad/push
,傳送post請求,伺服器返回待push的應用,寫入“cc_push_sp.xml”的push_json欄位
圖雲端惡意推廣app的push_json
圖雲端請求獲取惡意推廣應用
上圖最後呼叫this.m_context.handler.sendEmptyMessage(2)
,解析push_json欄位填充intent,啟動PushDownloadService
進行應用下載和惡意廣告頁面彈出。PushDownloadService
解析appJson,獲取下載資訊,隨後透過handler訊息對應用下載安裝。
圖解析appJson,進行下載安裝
Handler存在4個msg.what值,‘3’處理下載失敗;‘4’下載成功;‘5’彈出DialogPushActivity廣告框若開啟Accessiblity Service,啟動WifiZengQiangService; ‘6’彈出DialogPushActivity廣告框,啟動惡意推廣的應用。 首先傳送“4“表示開始後臺下載,隨後啟動下載安裝的執行緒。該執行緒檢查本次推送的應用是否已經被下載到指定目錄,sdcard/.wifi_ckq儲存下載的應用包以及廣告圖片,appName經過md5加密。
圖sdcard目錄存放下載的推廣應用包
圖下載惡意推廣應用
下載完成後傳送對應用靜默安裝,裝置非root傳送‘5’,root使用 pm install安裝應用隨後傳送‘6’啟動應用。
圖傳送handler安裝應用
handler ‘5’,’6’都會啟動DialogPushActivity,
圖啟動DialogPushActivity
DialogPushActivity其實就是一個ImageView,使用者在觸控該介面後推送的應用將被自動安裝
圖DialogPushActivity介面
啟動WifiZengQiongService自動安裝服務。之前的Ghosh Push,Kemoge等病毒家族,都是先對裝置root然後植入推廣應用。而該惡意應用的AccessibilityService一旦被啟動,隨後應用彈出惡意廣告介面,即使受害者關閉彈出的廣告,該應用程式也會被自動下載,隨後成功安裝。這個過程是呼叫系統的packageinstaller,獲取安裝介面的按鈕位置,Accessibility提供的模擬使用者點選功能,代替使用者自動點選下一步,直到安裝結束。下圖是彈出的廣告圖,觸碰後即可開始下載安裝推廣的應用。下圖AccessibilityService裡喚起安裝介面
圖呼叫系統packageInstaller
AccessibilityService的onAccessibilityEvent方法不僅處理’com.android.packageinstaller’ 的event,還處理一些安全軟體,這樣該惡意應用將會完全控制安全軟體行為,也就意味著該應用可以自動安裝,啟動任意app,解除安裝任意應用,而且利用AccessibilityService控制安全軟體進行免殺。
圖AccessibilityService控制指定應用包
在推廣的應用成功安裝過後,系統將會發出“android.intent.action.PACKAGE_ADDED”
廣播訊息,AppListenerReceiver類接受該廣播並啟動應用。
0x03 總結與建議
到此濫用AccessibilityService
過程分析完畢。該應用已增強WIFI訊號誘惑使用者啟用Accessibility
,以及檢視WIFI密碼是應用獲取root許可權。在此提醒使用者謹慎給不受信應用開啟AccessibilityService
,以免被惡意應用控制;最近火熱的搶紅包應用也會利用AccessibilityService
,實現自動搶功能,我們已發現駭客利用‘自動搶紅包’誘導使用者開啟AccessibilityService
控制手機,建議使用者在安全渠道下載搶紅包軟體,以免不必要的損失。
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!