“蜥蜴之尾”——長老木馬四代分析報告
隨著移動端安全軟體對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。
mojito外掛:完成手機簡訊監控的功能,過濾關鍵詞由遠端伺服器下發,主要遮蔽SP扣費業務訂購成功或確認簡訊,使使用者無法察覺到自己訂購了SP業務,簡訊監控相關部分程式碼如下:
圖13 簡訊監控外掛部分程式碼
Margarita外掛:完成手機扣費功能,實現扣費功能的程式碼片段如下:
圖14 付費外掛部分關鍵程式碼
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 握手連線過程
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 |
相關閱讀連結
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/
相關文章
- 黑狐”木馬分析報告2020-08-19
- 盜號木馬分析報告2017-10-25
- 馬蜂窩:旅途中APP使用行為分析報告(附報告)2018-05-18APP
- Oracle AWR報告分析之–SQL ordered by2016-06-23OracleSQL
- Statspack之六-生成分析報告2007-12-27
- 畢馬威:2022年全球執行長展望報告2023-01-19
- 畢馬威:2017年全球執行長(CEO)展望報告2017-09-19
- 畢馬威:2018年全球金融科技投資分析報告2019-02-21
- 畢馬威:2016全球Fintech投資分析報告(附下載)2017-03-09
- statspack 報告分析2013-03-18
- 老木講的沏茶模型2009-01-30模型
- TruSSH Worm分析報告2020-08-19Worm
- ADDM報告分析2016-08-24
- AWR解析報告分析2015-06-30
- 2022愛分析・出海數字化系列報告之“出海實時互動與通訊”廠商全景報告 | 愛分析報告2023-01-13
- HBS:實時分析報告2019-09-13
- Sodinoki樣本分析報告2019-06-26
- Kong mesh深度分析報告2019-02-12
- python分析文字報告2020-11-15Python
- 原神深度分析報告(上)2022-04-06
- 手工生成AWR分析報告2014-01-16
- statspack報告分析摘錄2008-06-24
- Statspack分析報告說明2010-05-11
- oracle AWR報告提取分析2012-07-10Oracle
- Statspack分析報告詳解2007-11-26
- 伽馬資料1月報告:同比增49.5%,疫情期間王者榮耀到底增長几何?2020-02-18
- 2022愛分析· RPA廠商全景報告 | 愛分析報告2022-10-17
- 2022愛分析· 流程挖掘廠商全景報告 | 愛分析報告2022-08-25
- 2022愛分析· 信創廠商全景報告 | 愛分析報告2022-12-01
- 2023愛分析·大模型廠商全景報告|愛分析報告2024-02-08大模型
- 2022愛分析 · DataOps廠商全景報告 | 愛分析報告2023-02-14
- 畢馬威:初探元宇宙報告(附下載)2022-05-07元宇宙
- 畢馬威:2023年全球科技報告2024-03-18
- 2023愛分析 · 元宇宙廠商全景報告 | 愛分析報告2023-03-16元宇宙
- 2023愛分析 · 認知智慧廠商全景報告 | 愛分析報告2023-03-28
- 2022愛分析・智慧客服廠商全景報告 | 愛分析報告2023-01-28
- 閃耀暖暖遊戲分析報告2020-03-30遊戲
- Joomla 物件注入漏洞分析報告2020-08-19OOM物件