“蜥蜴之尾”——长老木马四代分析报告
隨著移動端安全軟件對APK的查殺能力趨于成熟以及Google對Android安全性重視的提高,病毒與反病毒的主戰場已逐漸從APP層擴展到Linux底層。而且病毒作者也開始把PC端的病毒自我保護手段運用到移動端上,在移動端大量使用了免殺、加密、隱藏、反虛擬機等傳統PC端病毒自我保護技術。但是之前一直還未出現過通過感染技術實現自我保護的病毒,此次,360安全團隊首次發現了在Android系統中通過感染方式隱藏自身惡意代碼的木馬病毒——長老木馬之四。
一、長老四之前世今生
去年11月份,360安全團隊截獲了惡意手機木馬“長老三代”,詳細剖析挖掘了長老木馬的整個有機生態鏈。并從傳播源頭開始進行強力打擊,致使猖狂一時的長老木馬迅速地消聲滅跡。近期360安全團隊發現改頭換面的新版長老木馬又“重出江湖”。
分析后發現,木馬與“長老三代”有緊密的關系,在長老木馬三代“瘋狂崛起”時,以其子模塊的形式存在,功能有限,而且也不具備對抗安全軟件的能力,因此,我們將其命名為“長老四代”。
長老木馬三代核心主體模塊debuggerd與此子模塊耦合度非常高。比如子模塊由虛假debuggerd來啟動,而且子模塊運行時需要訪問由假冒debuggerd下載生成的文件讀取遠程服務器地址,下載地址等。經過木馬作者的“精心改進”后,子模塊從“私生子”華麗“蛻變”為長老木馬核心模塊。
二、進化篇
與之前老版本相比,雖然在惡意行為特征上仍然以隱私劫取、惡意扣費為主,但是自我保護與對抗安全軟件方面有較大技術突破。例如,在移動安全領域首次采用了靜態感染技術,感染系統運行依賴的lib文件,加大了查殺難度。此外,還采用相似文件路徑欺騙法、 樣本MD5自變化等傳統PC端的病毒技術。下圖的文件MD5分別為778ff1b54aaf88075523f1a8b7c233f9、3a93af95ec45aabb44018fdc4dd34243。
圖1 兩個長老4代 ELF可執行文件的對比
對比可以看出,是文件末尾嵌入32位長度的字符串,導致同一版本長老四,出現幾十萬個變種。進一步分析發現,長老四會讀取這段字符,解密后當作KEY,用于私有數據庫等配置文件的AES/DES加密與解密。代碼如下:
圖2 獲取AES密鑰的部分代碼
長老木馬的進化如下:
圖3 長老四代進化圖
經過一段時間的觀察與分析,我們梳理了“長四”的發現過程及關鍵的時間節點,如圖所示:
圖4 長老四代發現過程及響應
三、行為分析
長老木馬四代主要分為launcher和核心作惡的ELF可執行模塊。ELF可執行模塊又包括distillery、plugins及redbean三個主要部分。 redbean模塊會注入系統Phone進程,具有Phone進程權限,可以在未經用戶允許下,后臺私自訂購SP業務,屏蔽訂購確認和成功短信,給用戶造成經濟上的損失。
長老木馬四代作惡流程如下:
圖5 長老四代流程圖
從啟動方式來看,長老三代主要以替換系統原生文件為自身鏡像,隨系統啟動時執行,由于安全軟件對于這種類型的查殺方法已比較成熟,長老木馬四代采用更加隱蔽的“靜態感染”啟動方式,將惡意代碼插入到被感染的系統文件,在被感染系統文件中完成長老木馬四代的啟動工作。長老四代是在Android系統中首次采用感染技術的木馬。
“長老四代”靜態感染啟動原理如下:
1、感染守護進程啟動時依賴的正常庫文件。在庫文件的導入表里添加launcher的路徑,使守護進程隨操作系統啟動時,加載并執行launcher的惡意代碼。如下圖所示,被感染的系統庫文件的導入表中包含惡意庫文件libs6x.so的路徑。
圖6 被感染的系統庫文件\system\bin\libglog.so
2、Linux的動態鏈接器在加載ELF可執行文件或動態鏈接庫時完成裝載、映射、重定向后,首先依次執行pre_init、init、init_array節中描述地址指向的函數。這些函數都是早于入口點執行的。
圖7 Launcher的init_array節
Linux的動態連接器執行這些函數的初衷原來是為了程序執行前初始化C++靜態構造函數,C庫的IO等等。木馬作者巧妙利用Linux動態鏈接器對ELF文件的裝載原理,在init_array段里寫入了啟動病毒長老四代的代碼。
圖8 啟動長老木馬可執行文件的代碼片段
這種“靜態感染”方式加大了我們的查殺難度。首先,增強了長老四代的隱蔽性,被感染的系統文件裝載時加載惡意launcher,接著launcher啟動ELF可執行文件。由于被感染的系統庫文件除了導入表多了一行字符串(launcher的路徑)之外,與其他正常系統庫文件完全相同,容易躲過安全軟件的“火眼金睛”。其次,增加殺毒軟件的修復難度,由于被感染的庫文件隨系統進程啟動時嘗試加載導入表中的所有so文件,可能會因為安全軟件的暴力刪除導致手機系統掛機。
長老四代被launcher調度啟動后,會生成隱藏的空文件“/data/local/tmp/.l1”和“/data/local/tmp/.l6”。根據長老木馬版本,這些隱藏的空文件名有所不同。隨后,生成加密的主體模塊“distillery-1.0.7.drk”,解密后生成“distillery.dex.jar”,并加載執行其中的函數“com.alkohol.Main.main”。
主要模塊說明如下:
- distillery
distillery.dex.jar為長老木馬四代病毒的核心主體框架,實現長老四代的核心功能。distillery模塊的“com.alkohol.Main.main”函數,運行時接受4個參數:
arg0=長老木馬路徑、arg1=null、arg2=長老木馬版本、arg3=null。
圖9 長老木馬運行時實際傳遞的參數值
distillery框架運行后生成的主要文件及文件夾:
圖10 長老四代生成的主要文件及文件夾
圖11 實際運行時留下的的文件及文件夾
- 核心插件
distillery主體框架啟動后會解密plugins下的所有加密drk文件,并加載到內存中。
這些插件實現了接受遠程服務端指令、惡意扣費、短信攔截監控、心跳、日志提交、下載和更新插件等長老木馬四代的所有核心功能。
圖12 插件列表
其中,具備核心功能的插件有mojito、margarita和gin。
1、mojito插件:完成手機短信監控的功能,過濾關鍵詞由遠程服務器下發,主要屏蔽SP扣費業務訂購成功或確認短信,使用戶無法察覺到自己訂購了SP業務,短信監控相關部分代碼如下:
圖13 短信監控插件部分代碼
2、Margarita插件:完成手機扣費功能,實現扣費功能的代碼片段如下:
圖14 付費插件部分關鍵代碼
3、Gin插件:注入相關核心模塊,解密后是redbean.dex.jar。redbean.dex.jar打包了whitebean和libblackbean模塊。whitebean和libblackbean的最終目的是把readbean.dex.jar注入到Phone進程中。注入成功后readbean.dex.jar可以實現讀取攔截短信內容,后臺撥號等敏感惡意行為。
長老四代的注入流程是,whitebean在遠程進程中加載libblackbean.so,libblackbean.so調用JNI_CreateJavaVM實現加載核心模塊readbean.dex.jar。
whitebean啟動時接受6個參數:
arg0=待注入的目標進程、arg1=負責加載jar的so模塊、arg2=核心模塊、arg3=保存臨時dex文件(jar運行時生成的臨時dex存放路徑)、arg4=運行模式(Debug模式和Release模式)、arg5=服務端日志存放路徑。
運行時實際傳遞的參數值:
./whitebean
com.android.phone
libblackbean.so
/data/usr/readbean.dex.jar
/data/usr/cache Release
/data/usr/server.log
whitebean運行后在遠程進程com.android.phone的導入表中搜索獲取dlopen、 dlsym、dlclose、dlerror等函數的調用地址,通過這些函數實現遠程加載libblackbean.so,并調用libblackbean.so的inject_entry函數,把其余的參數(redbean.dex.jar、/data/usr/cache Release、/data/usr/server.log)全部傳遞給它。
libblackbean.so的inect_entry導出函數被執行后,調用JNI_CreateJavaVM加載redbean.dex.jar,并且調用redbean.dex.jar中com.android.phone.os.Program的Main函數。以此整個注入過程結束,下圖為注入過程相關運行日志。
圖15 注入過程相關運行日志
- Redbean
Redbean模塊注入到Phone進程后具備了與Phone進程相同權限,可以獲取敏感短信內容(比如手機驗證支付密碼)、私自訂購SP業務、攔截短信(攔截刪除SP訂購成功短信)、后臺撥號、關閉WIFI、打開G網等。
其函數com.android.phone.os.Programs.main被調用時接受2個參數:
arg0=運行日志保存路徑、arg1=日志輸出級別。
main函數首先會初始化16個Command類。這些類會根據遠程服務端下發的指令實現IMSI獲取、短信發送與攔截、短信讀取、切換APN、獲取用戶地里位置等指令。
圖16 初始化16個Command類
注入后,發送用戶手機信息(包括病毒版本、IMEI、IMSI、MAC地址等)到遠程服務器(v9bt.heycould.org/crutch):
圖17 發送的用戶信息
接著監聽本地3549端口,等待遠程服務端下發指令:
圖18 握手連接過程
四、長老四背后的陰謀
我們在跟進長老木馬四代時,發現了疑似作者開發的木馬測試程序。主要有注入測試程序和SP業務訂購測試程序。
1、注入測試程序
通過該測試程序我們能更加清晰的了解木馬作者的意圖。木馬作者編寫調試工具對自己編寫的所有模塊的功能進行了全面測試,如獲取手機信息、注入行為成功與否、短信屏蔽與攔截、短信發送、APN切換等多種功能。
下圖中可以看到幾個非常敏感的功能,比如“后臺通話”、“編輯屏蔽內容”、“注入”等:
圖19 redbean注入測試程序
后臺通話功能可以在后臺給某特定電話號碼撥號。在測試程序中發現了木馬作者用作測試用的手機號,該手機號是否為木馬作者本人還無法確定。
圖20 后臺通話測試相關代碼
2、SP業務訂購測試程序
木馬作者為了方便測試SP業務訂購模塊,還做了SP業務訂購測試工具。從該測試工具中可以看到木馬作者事先已開通了SP業務通道,通過發送短信驗證訂購SP業務,并屏蔽掉SP提供商發送的確認短信和定制成功短信等。
圖21 SP業務訂購測試程序
測試程序的開發期時間線:
圖22 木馬測試工具開發時間線
測試程序的IP地址主要集中在北京與天津,美國也曾出現過,從開發的頻率中可以看出,在2015年春節的時候,是開發版本最少的,5月和8月的高峰期,是主要功能的開發,作者對10多個手機品牌進行了病毒兼容性測試,在測試程序開發初期的2014年6月到2015年初進行了大量的兼容性測試,開發者主要使用的手機有ZTE_P6、 TCL_S960、 VOTO_V6、Sony_S39h。從這些數據推測病毒開發者應該是團隊合作,具有測試流程的專業團隊。
五、感染數據統計
我們從360安全中心后臺統計該木馬總感染量已經超過80萬,近半年感染趨勢如下圖所示:
圖23 長老四代感染數量
受長老四代影響的手機用戶機型和系統也是非常的廣泛,感染該木馬的機型和系統分布如下圖所示:
圖24 木馬感染機型分布
圖25 木馬感染系統分布
從地域分布來看,廣東省是受到該木馬影響最大,分布圖如下圖所示:
圖26 木馬感染地域分布
六、解決方案
隨著360手機急救箱用戶數的增長,被查殺到的木馬越來越多,360手機急救箱獨有的深度完整掃描,可以深度掃描和完美清除底層ELF病毒和APK病毒,目前市場上的主流手機安全產品幾乎沒有支持ELF完整深度掃描的功能,如果您的手機刷過第三方ROM或者手機已經Root,建議您采用360手機急救箱進行一次完整的深度掃描,幫助您安全用機。
圖27 360手機急救箱查殺修復界面
圖28 掃碼安裝360手機急救箱
手機急救箱下載地址:?http://jijiu.360.cn/
?
附錄一:長老木馬四偽裝的系統文件
| /system/bin/playlpn | /system/bin/tinycapr |
| /system/bin/sdiokit | /system/bin/racdvd |
| /system/bin/kyexe | /system/bin/mkaswap |
| /system/bin/setfatr | /system/bin/tunefs |
| /system/bin/chcomn | /system/bin/s6xd |
| /system/bin/getnforce | /system/bin/swaproff |
| /system/bin/bcdcmd | /system/bin/md2pd |
| /system/bin/rstrcon | /system/bin/dtfexe |
| /system/bin/lpnkey | /system/bin/ftmdmn |
| /system/bin/thrmal | /system/bin/tinyplayr |
| /system/bin/hvdcpy | /system/bin/setnforce |
| /system/bin/lowcat | /system/bin/ipoctl |
| /system/bin/setsebl | /system/bin/dhdp6s |
| /system/bin/rildm2 | /system/bin/npsobex |
| /system/bin/confwexe | /system/bin/ccaptst |
| /system/bin/hciattch | /system/bin/ntfsfixr |
| /system/bin/mc640d | /system/bin/srvcext |
| /system/bin/getsebl | /system/bin/clatdc |
| /system/bin/smdiexe | /system/bin/ddcexe |
附錄二:長老木馬四代launcher的文件名
| /system/lib/libbcd.so | /system/lib/libkye.so | /system/lib/libs6xd.so |
| /system/lib/libbcdcmd.so | /system/lib/libkyexe.so | /system/lib/libsdi.so |
| /system/lib/libcca.so | /system/lib/liblan.so | /system/lib/libsdioki.so |
| /system/lib/libccapts.so | /system/lib/liblow.so | /system/lib/libsetfat.so |
| /system/lib/libchc.so | /system/lib/liblowcat.so | /system/lib/libsetnfo.so |
| /system/lib/libcon.so | /system/lib/liblpn.so | /system/lib/libsetseb.so |
| /system/lib/libchcomn.so | /system/lib/liblpnkey.so | /system/lib/libsim.so |
| /system/lib/libcla.so | /system/lib/liblsm.so | /system/lib/libsimg2l.so |
| /system/lib/libclatdc.so | /system/lib/liblsm3cm.so | /system/lib/libsmd.so |
| /system/lib/libcon.so | /system/lib/libmc6.so | /system/lib/libsmdiex.so |
| /system/lib/libconfwe.so | /system/lib/libmc640d.so | /system/lib/libsrv.so |
| /system/lib/libddc.so | /system/lib/libmd2.so | /system/lib/libsrvcex.so |
| /system/lib/libddcexe.so | /system/lib/libmd2pd.so | /system/lib/libthr.so |
| /system/lib/libddd.so | /system/lib/libmka.so | /system/lib/libthrmal.so |
| /system/lib/libdhd.so | /system/lib/libmkaswa.so | /system/lib/libtin.so |
| /system/lib/libdhdp6s.so | /system/lib/libnps.so | /system/lib/libtinyca.so |
| /system/lib/libdtf.so | /system/lib/libnpsobe.so | /system/lib/libtinypl.so |
| /system/lib/libdtfexe.so | /system/lib/libntf.so | /system/lib/libtun.so |
| /system/lib/libftm.so | /system/lib/libntfsfi.so | /system/lib/libtunefs.so |
| /system/lib/libftmdmn.so | /system/lib/libpla.so | /system/lib/libswa.so |
| /system/lib/libgetnfo.so | /system/lib/libplaylp.so | /system/lib/libswapro.so |
| /system/lib/libgetseb.so | /system/lib/libracdvd.so | /system/lib/libget.so |
| /system/lib/libgeu.so | /system/lib/librac.so | /system/lib/libset.so |
| /system/lib/libhci.so | /system/lib/libril.so | /system/lib/libs6x.so |
| /system/lib/libhciatt.so | /system/lib/librildm2.so | /system/lib/librim.so |
| /system/lib/libhvd.so | /system/lib/librstrco.so | /system/lib/libipoctl.so |
| /system/lib/libhvdcpy.so | /system/lib/librst.so | /system/lib/libipo.so |
附錄三:長老木馬四代MD5
| 329846b610c76e884095ea9d5f5c8834 |
| 082bf566cc352c394577af7f1f797ae5 |
| 4659b1400f48318d0f63c47dc2b9b72e |
| a86827029a76240557e6c30b2792df14 |
| 789295e3d7887a4c3c32b3a6e75e554f |
| cef52d7da4882ab0a0501842d394295a |
| 2dab85922133d23af30daa3d77d09476 |
| f7ba67aa8d5675f18990375e3454235b |
| eac6a1cbae6f58a44cdbf7238ef91fa2 |
| 0dbf5bdfc6dd1bca39cff140e4fc7d59 |
| d4e4e3f6cbef3808f8ad917a540f836d |
| da7a39444869e39264f8f1ddc9c42a97 |
| e42b6ce6c3931989c975ce59c457d66a |
| e111dcc031a84ef725bcf3e81ed71f36 |
| 8de2c6ae586916cba989e0019105d274 |
| ad18e3a36d3a67e1ecbc2220cae1483f |
| 8e2b79548050e4b9ad60d1d984f12d9d |
| 933a65e0105c4c0f5440aeffb3c1a764 |
| 8b2bd87da31254ef4ecb4ffcb8f26aa6 |
| ae4936e5aad44b320f2bf5d698c92db4 |
| 706c4b63184a2ab2f809169a2b8fe9eb |
| 803573b88583e4b81dec39643d6f41b7 |
| 09ba245c80582cf115a870f43f3bc053 |
| 09dbbc772799723e43c34c9fae2f4ad8 |
| 0ae3e4a351cfe9d6228296537db418ec |
| 0fd672c1f0333403a59bbdf04c0af05e |
| 148c7874455c10834f0e7937f15dbddf |
| 18d8f5803e1f580c2410bb98b59a127d |
| 22046f82b2a72e5686603ab538b3a08a |
| 24af8fc3faf1a488d444e9a4de066073 |
| 25e881576d9c389e445787626f6cf43f |
| 2cce7a5f8d1b64b8f5b2e2760cc85894 |
| 33d5e3e723d3873420fc70a767de5e40 |
| 37fc9630b0dabe98b6d23bf6e5cc3aa2 |
| 3b2d947123032f130938fb361d2bd2cd |
| 3feab5d93fe5ff6a17f43ecfccd52274 |
| 45bf3cd32b9926ad516dd114c2f86fd2 |
| 5562b855d6355c963e12a66bea648c9e |
| 55eb106019a630b89b506feda186c287 |
| 5e9053e17e962cbbd8b36d6b1077684a |
| 5ff96879be23ac965bc2e2b6ded9234e |
| 60bab93a8a7930334283aee53089c746 |
| 6289059110505539e2feb61aecfcafee |
| 6405d4d65e2a7e124f6b067a87e2a3c3 |
| 691fe3e6f56fc2dcb2acd67c68c95c16 |
| 73f98eaa2ce77a5027a5dbff80841b90 |
| 79f1d3d921279777a0922e09c579815c |
| 7b8dfae2e5bedec452af3c2187d3dfdf |
| 8bb83547ec903cbb272ec21e6ff8c11e |
| 99b246167b11d9aa912a346a3f976486 |
| 9ded2e0b0557a18412ff8d17141594df |
| 9fdc479b76099b099ad85fafb3d80d17 |
| a5dcad67df52793cc72a706697ddfb00 |
| a91fb51b9ecaff59e0aa3f9131ae9f0d |
| b7a29b102f332dc7ddc94c86d514e9fc |
| bf12b4062293e553878e5a8ed5e5c8ee |
| c372ab758d39e6e03ac544c053dba011 |
| c4a942a1b5cffd89f79b9ed9c0dc7fc1 |
相關閱讀鏈接:
FakeDebuggerd.A:http://blogs.360.cn/360mobile/2014/03/06/fakedebuggerd-android-rootkit/
FakeDebuggerd.B:http://blogs.360.cn/360mobile/2014/06/18/analysis_of_fakedebuggerd_b/
FakeDebuggerd.C:http://blogs.360.cn/360mobile//2014/11/24/analysis_of_fakedebuggerd_c_and_related_trojans/
原文地址:?http://blogs.360.cn/360mobile/2015/11/16/analysis_of_fakedebuggerd_d/
總結
以上是生活随笔為你收集整理的“蜥蜴之尾”——长老木马四代分析报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 管家病毒查杀模块逆向分析
- 下一篇: 利用Cydia Substrate进行A