【新朋友】點擊標題下面藍字「黑白之道」關注
【老朋友】點擊右上角,分享或收藏本頁精彩內容
【公眾號】搜索公眾號:黑白之道,或者ID:i77169
長老四之前世今生
去年11月份,360安全團隊截獲了惡意手機木馬「長老三代」,詳細剖析挖掘了長老木馬的整個有機生態鏈。並從傳播源頭開始進行強力打擊,致使猖狂一時的長老木馬迅速地消聲滅跡。近期360安全團隊發現改頭換面的新版長老木馬又「重出江湖」。
分析後發現,木馬與「長老三代」有緊密的關係,在長老木馬三代「瘋狂崛起」時,以其子模塊的形式存在,功能有限,而且也不具備對抗安全軟體的能力,因此,我們將其命名為「長老四代」。
長老木馬三代核心主體模塊debuggerd與此子模塊耦合度非常高。比如子模塊由虛假debuggerd來啟動,而且子模塊運行時需要訪問由假冒debuggerd下載生成的文件讀取遠程伺服器地址,下載地址等。經過木馬作者的「精心改進」後,子模塊從「私生子」華麗「蛻變」為長老木馬核心模塊。
進化篇
與之前老版本相比,雖然在惡意行為特徵上仍然以隱私劫取、惡意扣費為主,但是自我保護與對抗安全軟體方面有較大技術突破。例如,在移動安全領域首次採用了靜態感染技術,感染系統運行依賴的lib文件,加大了查殺難度。此外,還採用相似文件路徑欺騙法、 樣本MD5自變化等傳統PC端的病毒技術。下圖的文件MD5分別為778ff1b54aaf88075523f1a8b7c233f9、3a93af95ec45aabb44018fdc4dd34243。
圖1 兩個長老4代 ELF可執行文件的對比
對比可以看出,是文件末尾嵌入32位長度的字符串,導致同一版本長老四,出現幾十萬個變種。進一步分析發現,長老四會讀取這段字符,解密後當作KEY,用於私有資料庫等配置文件的AES/DES加密與解密。代碼如下:
圖2 獲取AES密鑰的部分代碼
長老木馬的進化如下:
經過一段時間的觀察與分析,我們梳理了「長四」的發現過程及關鍵的時間節點,如圖所示:
行為分析
長老木馬四代主要分為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。
distillery框架運行後生成的主要文件及文件夾:
圖10 長老四代生成的主要文件及文件夾
核心插件
distillery主體框架啟動後會解密plugins下的所有加密drk文件,並加載到內存中。
這些插件實現了接受遠程服務端指令、惡意扣費、簡訊攔截監控、心跳、日誌提交、下載和更新插件等長老木馬四代的所有核心功能。
其中,具備核心功能的插件有mojito、margarita和gin。
mojito插件:完成手機簡訊監控的功能,過濾關鍵詞由遠程伺服器下發,主要屏蔽SP扣費業務訂購成功或確認簡訊,使用戶無法察覺到自己訂購了SP業務,簡訊監控相關部分代碼如下:
Margarita插件:完成手機扣費功能,實現扣費功能的代碼片段如下:
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手機急救箱進行一次完整的深度掃描,幫助您安全用機。
附錄一:長老木馬四偽裝的系統文件
附錄二:長老木馬四代launcher的文件名
附錄三:長老木馬四代MD5
相關閱讀連結
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/
比特幣贊助打賞地址:13sbdFRyFBeqmXY9GJQf66s5cwmvLvWaAD
----
要聞、乾貨、原創、專業
關注「黑白之道」 微信:i77169
華夏黑客同盟我們堅持,自由,免費,共享!