安卓ELF惡意軟件深度分析
ELF病毒背景
1.Android病毒發(fā)展趨勢
自 2010 年開始,全球進(jìn)入了移動(dòng)互聯(lián)網(wǎng)時(shí)代,作為主流移動(dòng)操作系統(tǒng)Android也得到了迅猛發(fā)展。Android病毒也從簡單到復(fù)雜,從單純的dex病毒轉(zhuǎn)向?yàn)閑lf病毒(其中elf是Linux下的可執(zhí)行程序)。這一發(fā)展趨勢有幾個(gè)原因:
- 經(jīng)過多年發(fā)展程序編寫人員水平普遍提高,大量的linux程序移植到android系統(tǒng),病毒也隨之發(fā)展。
- android系統(tǒng)碎片化嚴(yán)重,提取漏洞不斷累積導(dǎo)致病毒攻擊方式多元化 ,
- elf文件具有比dex程序更難分析的特點(diǎn)。
- 常規(guī)殺軟沒有root權(quán)限,難以查殺病毒。
2.ELF病毒紀(jì)元圖
感染情況:
root類病毒自2014年9月至2016年7月份的感染量
主要兩大家族感染量
3.感染用戶案例
下面是Facebook上用戶感染ELF病毒的案例,可以看出,由于沒有ROOT權(quán)限,無法直接清除病毒。
ELF病毒危害形式
1.提權(quán)
利用漏洞獲取ROOT權(quán)限,如病毒rootnik:
病毒獲取ROOT 權(quán)限時(shí),運(yùn)行/data/local/tmp/下的Matrix(ROOT組件,命令:./Matrix /data/local/tmp 1),病毒程序Matrix從fileWork中解密并釋放支持文件,調(diào)用腳本wsroot.sh進(jìn)行ROOT。腳本wsroot.sh 運(yùn)行時(shí)傳入?yún)?shù)/data/local/tmp、1,其中/data/local/tmp為支持文件路徑,1代表不安裝superuser,提權(quán)文件為su8。
ROOT后在系統(tǒng)目錄下添加提權(quán)應(yīng)用 在/system/bin/下生成文件su8,作為提權(quán)的su程序,該程序可以被任何App用來獲取ROOT權(quán)限使用,存在巨大隱患。
文件列表(都為提供ROOT 權(quán)限服務(wù))
- /system/xbin/su8
- /system/xbin/sugote
- /system/xbin/supolicy
- /system/xbin/daemonsu
2.對(duì)抗
偽裝替換系統(tǒng)服務(wù)
病毒將系統(tǒng)啟動(dòng)時(shí)init.rc內(nèi)要啟動(dòng)的服務(wù)替換成病毒服務(wù),并在病毒服務(wù)啟動(dòng)后再調(diào)用原始服務(wù)。
如木馬Android.Troj.at_Seed.a,會(huì)將自身的主要模塊拷貝到系統(tǒng)目錄/system/bin內(nèi),偽裝成系統(tǒng)服務(wù)debuggerd(該服務(wù)可以偵測到程序崩潰,并將崩潰時(shí)的進(jìn)程狀態(tài)信息輸出到文件和串口中,以供開發(fā)人員分析調(diào)試使用。),并將原系統(tǒng)服務(wù)debuggerd改名為debuggerd_real,這一方式在ROOT工具中也有使用,下圖是使用kingroot對(duì)手機(jī)進(jìn)行ROOT后,/system/bin/debuggerd文件尾內(nèi)容:
病毒不止利用debuggerd服務(wù),有的病毒會(huì)利用/system/bin/vold服務(wù),如地獄火,一樣的手段,一樣的效果。(vold服務(wù):Volume Daemon存儲(chǔ)類的守護(hù)進(jìn)程,作為Android的一個(gè)本地服務(wù),負(fù)責(zé)處理諸如SD、USB等存儲(chǔ)類設(shè)備的插拔等事件。)
感染boot.img
通過修改boot.img分區(qū)并刷回的方式感染/sbin,修改init.rc文件,達(dá)到每次開機(jī)自啟的目的。
由于/sbin目錄和init.rc文件位于一個(gè)RAM disk中,該RAM disk是一個(gè)只讀的、位于內(nèi)存中的文件系統(tǒng),從設(shè)備磁盤的boot分區(qū)加載而來,所有的更改都不會(huì)寫回磁盤,每次都是直接從分區(qū)中讀取,所以無法通過remount,刪除來清除病毒。需要刷回boot.img來清除病毒,增大清除難度。如病毒oldbot、地獄火。
創(chuàng)建守護(hù)進(jìn)程
創(chuàng)建守護(hù)進(jìn)程,時(shí)刻監(jiān)控自身進(jìn)程或文件,當(dāng)進(jìn)程被結(jié)束或者并文件被刪除時(shí)及時(shí)啟動(dòng)進(jìn)程或恢復(fù)病毒文件。如:病毒ghostpush,舞毒蛾。
修改病毒隱藏權(quán)限
病毒給衍生文件和apk包設(shè)置隱藏屬性(+i),使其無法被刪除,無法被卸載。
linux文件系統(tǒng)可以設(shè)置文件隱藏屬性,如下圖:
將文件的屬性設(shè)置為 +i 屬性則可以使文件不被刪除。如ghostpush病毒等,將自身elf文件設(shè)置成+i屬性。
3.云控
由于android系統(tǒng)的碎片化,各子系統(tǒng)的ROOT模式,控制方案有顯著不同,使病毒大量采取云端控制的方案,使用云控的方式可以根據(jù)不同的子系統(tǒng)下載不同的ROOT方案,使用不同的控制指令,大大減少代碼量,使得病毒更加靈活、可控。
通過云控獲取ROOT方案
病毒通過上傳感染機(jī)器的實(shí)際環(huán)境,獲取相對(duì)應(yīng)的ROOT方案,如danpay家族的client病毒。
client下載加密的ROOT提權(quán)工具壓縮包并根據(jù)不同的手機(jī)設(shè)備下載對(duì)應(yīng)的ROOT工具下載地址和方案:
http://abcll0.us:9009/gamesdk/doroot.jsp
http://my2014.us:9009/gamesdk/advert.jsp
4.注入
通過elf注入系統(tǒng)進(jìn)程,修改程序執(zhí)行或竊取內(nèi)部信息。
注入瀏覽器進(jìn)行流量劫持
注入瀏覽器進(jìn)程,劫持特定網(wǎng)站,可以做詐騙,釣魚等非法活動(dòng),如病毒Android.TROJ.triada.mc通過elf文件rinject將病毒的so文件注入到瀏覽器進(jìn)程,將系統(tǒng)的loadUrl函數(shù)注冊(cè)為靜態(tài)函數(shù)的方式進(jìn)行hook,使得瀏覽器在訪問特定網(wǎng)站時(shí)被劫持。
ringect注入器(通過ptrace):
將病毒so文件/system/lib/libremeth.so注入到瀏覽器進(jìn)程中:
通過hook android.webkit.WebView類的loadUrl函數(shù)實(shí)現(xiàn)劫持:
木馬劫持后訪問網(wǎng)絡(luò)流程:
注入社交應(yīng)用獲取聊天記錄
病毒注入“手機(jī)QQ”、“微信”社交應(yīng)用,獲取聊天記錄并上傳遠(yuǎn)端服務(wù)器, 通過inject將病毒so文件注入到“手機(jī)QQ”或“微信”的進(jìn)程中,獲取其控制權(quán),并在so中動(dòng)態(tài)加載病毒的dex文件以便竊取聊天內(nèi)容,并上傳。
ELF病毒所在目錄
1.所在目錄
- /system/bin
系統(tǒng)內(nèi)可執(zhí)行文件所在路徑,內(nèi)存在大量系統(tǒng)服務(wù),在系統(tǒng)PATH內(nèi)。
- /system/xbin
系統(tǒng)內(nèi)可執(zhí)行文件所在路徑,在系統(tǒng)PATH內(nèi)。
- /sbin
Android系統(tǒng)只讀分區(qū),里面存放了幾個(gè)重要守護(hù)進(jìn)程的二進(jìn)制文件,通過更新boot.img可將病毒刷到此目錄。
- /system/etc/
Linux系統(tǒng)的目錄,存放配置文件。
- /system/usr
用戶文件夾,包含共享、鍵盤布局、時(shí)間區(qū)域文件等。
- /data/local/tmp/
data目錄中的可以提權(quán)目錄,一般用來運(yùn)行可執(zhí)行文件
2.目錄特點(diǎn)
目錄占比圖:
除了/data/local/tmp/目錄外都需要ROOT權(quán)限
1)ELF病毒絕大多數(shù)都具有ROOT權(quán)限。
2)病毒運(yùn)行后首要的行為是獲取ROOT權(quán)限。
/system/bin、/system/xbin目錄占絕大多數(shù)
1)這兩個(gè)目錄是path路徑方便ROOT提權(quán)。
2)bin目錄方便偽裝成系統(tǒng)服務(wù)。
ELF病毒ROOT(提權(quán))方案
1.分類
按照方案獲取分為云端獲取和本地釋放兩種。
按照ROOT程序分為特定漏洞提權(quán)和ROOT工具提權(quán)
2.ROOT工具簡述
PingPongRoot:是由國內(nèi)安全大牛Keen Team團(tuán)隊(duì)開發(fā)出來的主要針對(duì)三星S6的ROOT工具,主要利用CVE-2015-3636漏洞。能ROOT大量Android 5.1及其以下的系統(tǒng)。
TowelRoot:是美國知名黑客Geohot開發(fā)出來的一款ROOT工具,號(hào)稱可以Root所有2014年6月3日之前的Android設(shè)備,利用漏洞CVE-2014-3153。
Mtkfb:該工具由ele7enxxh根據(jù)nforest@KeenTeam的報(bào)告以及網(wǎng)上的提權(quán)代碼整理。該工具利用了mtkfb_ioctl函數(shù)越界寫內(nèi)存提權(quán)漏洞。
FramaRoot:是由XDA論壇用 “Alephzain“發(fā)布的一款一鍵ROOT工具,針對(duì)設(shè)備版本較低,利用了Boromir, Barahir, Frodo, Legolas, Aragorn, Gandalf, Pippin 和 Farahir漏洞(mmap邊界檢查漏洞) 。
Root助手: 深圳市網(wǎng)卓信息科技有限公司開發(fā)的一款ROOT軟件,整合大量漏洞,提供一鍵ROOT功能,被病毒利用。
ELF病毒對(duì)傳統(tǒng)殺軟的挑戰(zhàn)
1.權(quán)限
大量ELF病毒都是主動(dòng)利用漏洞對(duì)中毒手機(jī)進(jìn)行ROOT,大量病毒還會(huì)刪除原有ROOT管理程序,使得其他應(yīng)用無法使用ROOT權(quán)限。
安全軟件需要在已經(jīng)獲取ROOT權(quán)限的手機(jī)上申請(qǐng)ROOT權(quán)限,這就導(dǎo)致殺軟獲取ROOT權(quán)限的數(shù)量比ELF病毒獲取ROOT權(quán)限的數(shù)量少很多,處于被動(dòng)。
2.殘留
普通殺軟在處理Android病毒時(shí),一般的手段是直接卸載,對(duì)于system的應(yīng)用引導(dǎo)用戶進(jìn)行停用,這樣的處理無法滿足對(duì)ELF病毒的處理(elf進(jìn)程將備份的病毒還原或啟動(dòng))。
殘留的ROOT后門,可以被其他病毒直接使用。
1)案例:用病毒殘留的后門文件PPM將sdcard目錄下的apk程序拷貝到/system/app/目錄,當(dāng)手機(jī)重啟后達(dá)到安裝app的目的。
2)案例:運(yùn)行病毒殘留/system/bin/.alpha 直接獲得ROOT權(quán)限
近兩個(gè)月(20160524-20150726)殘留的root后門(elf文件)
3.針對(duì)性
普通殺軟難于針對(duì)性的對(duì)不同危害的ELF進(jìn)行處理。
專殺的解決方案
加強(qiáng)引導(dǎo),在用戶授權(quán)的情況下,積極獲取ROOT權(quán)限,使專殺和病毒處于同一起跑線。
采用模塊化架構(gòu),可以針對(duì)不同危害采取不同的模塊進(jìn)行查殺、修復(fù)。
由于權(quán)限的提高可以完全將殘留的ELF文件刪除。
木馬專殺下載地址:http://cn.cmcm.com/activity/push/cm/stk/1/
查殺效果