「蜥蜴之尾」——長老木馬四代分析報告

360安全衛士 · 2015/11/17 15:12android

隨着移動端安全軟件對APK的查殺能力趨於成熟以及Google對Android安全性重視的提升,病毒與反病毒的主戰場已逐漸從APP層擴展到Linux底層。並且病毒做者也開始把PC端的病毒自我保護手段運用到移動端上,在移動端大量使用了免殺、加密、隱藏、反虛擬機等傳統PC端病毒自我保護技術。可是以前一直還未出現過經過感染技術實現自我保護的病毒,這次,360安全團隊首次發現了在Android系統中經過感染方式隱藏自身惡意代碼的木馬病毒——長老木馬之四。數據庫

0x00 長老四以前世此生


去年11月份,360安全團隊截獲了惡意手機木馬「長老三代」,詳細剖析挖掘了長老木馬的整個有機生態鏈。並從傳播源頭開始進行強力打擊,導致猖狂一時的長老木馬迅速地消聲滅跡。近期360安全團隊發現改頭換面的新版長老木馬又「重出江湖」。安全

分析後發現,木馬與「長老三代」有緊密的關係,在長老木馬三代「瘋狂崛起」時,以其子模塊的形式存在,功能有限,並且也不具有對抗安全軟件的能力,所以,咱們將其命名爲「長老四代」。服務器

長老木馬三代核心主體模塊debuggerd與此子模塊耦合度很是高。好比子模塊由虛假debuggerd來啓動,並且子模塊運行時須要訪問由假冒debuggerd下載生成的文件讀取遠程服務器地址,下載地址等。通過木馬做者的「精心改進」後,子模塊從「私生子」華麗「蛻變」爲長老木馬核心模塊。框架

0x01 進化篇


與以前老版本相比,雖然在惡意行爲特徵上仍然以隱私劫取、惡意扣費爲主,可是自我保護與對抗安全軟件方面有較大技術突破。例如,在移動安全領域首次採用了靜態感染技術,感染系統運行依賴的lib文件,加大了查殺難度。此外,還採用類似文件路徑欺騙法、 樣本MD5自變化等傳統PC端的病毒技術。下圖的文件MD5分別爲778ff1b54aaf88075523f1a8b7c233f九、3a93af95ec45aabb44018fdc4dd34243。函數

圖1 兩個長老4代 ELF可執行文件的對比工具

對比能夠看出,是文件末尾嵌入32位長度的字符串,致使同一版本長老四,出現幾十萬個變種。進一步分析發現,長老四會讀取這段字符,解密後看成KEY,用於私有數據庫等配置文件的AES/DES加密與解密。代碼以下:測試

圖2 獲取AES密鑰的部分代碼加密

長老木馬的進化以下:spa

圖3 長老四代進化圖

通過一段時間的觀察與分析,咱們梳理了「長四」的發現過程及關鍵的時間節點,如圖所示:

圖4 長老四代發現過程及響應

0x02 行爲分析


長老木馬四代主要分爲launcher和核心做惡的ELF可執行模塊。ELF可執行模塊又包括distillery、plugins及redbean三個主要部分。 redbean模塊會注入系統Phone進程,具備Phone進程權限,能夠在未經用戶容許下,後臺私自訂購SP業務,屏蔽訂購確認和成功短信,給用戶形成經濟上的損失。

長老木馬四代做惡流程以下:

圖5 長老四代流程圖

從啓動方式來看,長老三代主要以替換系統原生文件爲自身鏡像,隨系統啓動時執行,因爲安全軟件對於這種類型的查殺方法已比較成熟,長老木馬四代採用更加隱蔽的「靜態感染」啓動方式,將惡意代碼插入到被感染的系統文件,在被感染系統文件中完成長老木馬四代的啓動工做。長老四代是在Android系統中首次採用感染技術的木馬。

「長老四代」靜態感染啓動原理以下:

一、感染守護進程啓動時依賴的正常庫文件。在庫文件的導入表裏添加launcher的路徑,使守護進程隨操做系統啓動時,加載並執行launcher的惡意代碼。以下圖所示,被感染的系統庫文件的導入表中包含惡意庫文件libs6x.so的路徑。

圖6 被感染的系統庫文件\system\bin\libglog.so

二、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.jarredbean.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.jarcom.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 握手鍊接過程

0x03 長老四背後的陰謀


咱們在跟進長老木馬四代時,發現了疑似做者開發的木馬測試程序。主要有注入測試程序和SP業務訂購測試程序。

一、注入測試程序

經過該測試程序咱們能更加清晰的瞭解木馬做者的意圖。木馬做者編寫調試工具對本身編寫的全部模塊的功能進行了全面測試,如獲取手機信息、注入行爲成功與否、短信屏蔽與攔截、短信發送、APN切換等多種功能。

下圖中能夠看到幾個很是敏感的功能,好比「後臺通話」、「編輯屏蔽內容」、「注入」等:

圖19 redbean注入測試程序

後臺通話功能能夠在後臺給某特定電話號碼撥號。在測試程序中發現了木馬做者用做測試用的手機號,該手機號是否爲木馬做者本人還沒法肯定。

圖20 後臺通話測試相關代碼

二、SP業務訂購測試程序

木馬做者爲了方便測試SP業務訂購模塊,還作了SP業務訂購測試工具。從該測試工具中能夠看到木馬做者事先已開通了SP業務通道,經過發送短信驗證訂購SP業務,並屏蔽掉SP提供商發送的確認短信和定製成功短信等。

圖21 SP業務訂購測試程序

測試程序的開發期時間線:

圖22 木馬測試工具開發時間線

測試程序的IP地址主要集中在北京與天津,美國也曾出現過,從開發的頻率中能夠看出,在2015年春節的時候,是開發版本最少的,5月和8月的高峯期,是主要功能的開發,做者對10多個手機品牌進行了病毒兼容性測試,在測試程序開發初期的2014年6月到2015年初進行了大量的兼容性測試,開發者主要使用的手機有ZTE_P六、 TCL_S960、 VOTO_V六、Sony_S39h。從這些數據推測病毒開發者應該是團隊合做,具備測試流程的專業團隊。

0x04 感染數據統計


咱們從360安全中心後臺統計該木馬總感染量已經超過80萬,近半年感染趨勢以下圖所示:

圖23 長老四代感染數量

受長老四代影響的手機用戶機型和系統也是很是的普遍,感染該木馬的機型和系統分佈以下圖所示:

圖24 木馬感染機型分佈

圖25 木馬感染系統分佈

從地域分佈來看,廣東省是受到該木馬影響最大,分佈圖以下圖所示:

圖26 木馬感染地域分佈

0x05 解決方案


隨着360手機急救箱用戶數的增加,被查殺到的木馬愈來愈多,360手機急救箱獨有的深度完整掃描,能夠深度掃描和完美清除底層ELF病毒和APK病毒,目前市場上的主流手機安全產品幾乎沒有支持ELF完整深度掃描的功能,若是您的手機刷過第三方ROM或者手機已經Root,建議您採用360手機急救箱進行一次完整的深度掃描,幫助您安全用機。

附錄一:長老木馬四假裝的系統文件

/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

相關閱讀連接

相關文章
相關標籤/搜索