“蜥蜴之尾”——長老木馬四代分析報告

wyzsk發表於2020-08-19
作者: 360安全衛士 · 2015/11/17 15:12

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

0x00 長老四之前世今生


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

分析後發現,木馬與“長老三代”有緊密的關係,在長老木馬三代“瘋狂崛起”時,以其子模組的形式存在,功能有限,而且也不具備對抗安全軟體的能力,因此,我們將其命名為“長老四代”。

長老木馬三代核心主體模組debuggerd與此子模組耦合度非常高。比如子模組由虛假debuggerd來啟動,而且子模組執行時需要訪問由假冒debuggerd下載生成的檔案讀取遠端伺服器地址,下載地址等。經過木馬作者的“精心改進”後,子模組從“私生子”華麗“蛻變”為長老木馬核心模組。

0x01 進化篇


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

圖1 兩個長老4代 ELF可執行檔案的對比

對比可以看出,是檔案末尾嵌入32位長度的字串,導致同一版本長老四,出現幾十萬個變種。進一步分析發現,長老四會讀取這段字元,解密後當作KEY,用於私有資料庫等配置檔案的AES/DES加密與解密。程式碼如下:

圖2 獲取AES金鑰的部分程式碼

長老木馬的進化如下:

圖3 長老四代進化圖

經過一段時間的觀察與分析,我們梳理了“長四”的發現過程及關鍵的時間節點,如圖所示:

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

0x02 行為分析


長老木馬四代主要分為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.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業務訂購測試程式。

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。從這些資料推測病毒開發者應該是團隊合作,具有測試流程的專業團隊。

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

相關閱讀連結

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章