近日總部位于意大利的監(jiān)控軟件開(kāi)發(fā)公司HackingTeam被黑,415GB文件被泄露,其監(jiān)控軟件源碼和漏洞源碼流出,對(duì)網(wǎng)絡(luò)安全造成了巨大沖擊。筆者對(duì)HackingTeam開(kāi)發(fā)的適用于安卓系統(tǒng)的監(jiān)控軟件RCS系統(tǒng)進(jìn)行了分析,并對(duì)可能出現(xiàn)的利用該系統(tǒng)源碼的病毒針對(duì)性的展開(kāi)查殺,目前已經(jīng)攔截了數(shù)十個(gè)利用該技術(shù)的變種病毒,這些病毒在隱蔽性,危害性上都非常的強(qiáng)大,已經(jīng)對(duì)用戶(hù)的隱私,數(shù)據(jù)安全構(gòu)成了非常嚴(yán)重的威脅。
目前出現(xiàn)的病毒,很大程度上還只是在RCS系統(tǒng)源碼上做了部分更改,有些變種已經(jīng)開(kāi)始采用一些較不常見(jiàn)的手段規(guī)避殺軟的查殺。
下面就以一個(gè)比較典型的病毒變種為例,來(lái)看看黑客們是怎么利用RCS技術(shù)攻擊我們的。
目錄結(jié)構(gòu):
Librunner.so內(nèi)容如下:
可以看出只定義了一個(gè)函數(shù)invokeRun,做了打印輸出和utf的編碼解碼函數(shù)的調(diào)用。
Messages.bin文件使用AES對(duì)稱(chēng)加密,里面包含了一些敏感的可被作為特征的字符串和api關(guān)鍵字。文件內(nèi)容是使用鍵值對(duì)的方式存儲(chǔ)的,在使用的時(shí)候通過(guò)鍵值(如:13.0)取出對(duì)應(yīng)的字符串(對(duì)應(yīng)13.0的為Content://mms/sent),部分截圖如下:下圖中并不是文件原本的存儲(chǔ)方式,文件中是使用“=”做的分割,這里為了讓大家看清楚經(jīng)過(guò)了作者的處理,其中key為鍵,value為值。
上圖展示了masseges.bin文件的一部分內(nèi)容,如想獲取全部?jī)?nèi)容請(qǐng)自行解密文件
程序結(jié)構(gòu):
下圖中列出了病毒樣本的主要程序結(jié)構(gòu):
AndroidManifest.xml文件結(jié)構(gòu):
應(yīng)用權(quán)限對(duì)比:
通過(guò)兩圖對(duì)比,可以看出病毒樣本比RCS源碼申請(qǐng)了更多的權(quán)限。
組件對(duì)比:
從組件對(duì)比可以看出,RCS源碼和病毒樣本注冊(cè)的廣播接收器receiver和服務(wù)service名稱(chēng)完全相同,只是在監(jiān)聽(tīng)的消息上存在微小差異。
病毒行為:
病毒邏輯:
病毒邏輯主要分為兩部分,一部分使用注冊(cè)的廣播監(jiān)聽(tīng)器,監(jiān)聽(tīng)特定的廣播,手機(jī)如短信,來(lái)電等信息,將收集到的廣播保存在特定的類(lèi)中共其他類(lèi)調(diào)用。另一部分通過(guò)名為core的主線(xiàn)程,進(jìn)行手機(jī)狀態(tài)(是否root,sd卡上是否存在相關(guān)目錄并創(chuàng)建文件等)判斷,獲取硬件信息,用戶(hù)位置,發(fā)送短信,鏈接遠(yuǎn)程服務(wù)器上傳收集到的信息或更新病毒代碼等。
廣播監(jiān)聽(tīng)器部分:
病毒被安裝后,會(huì)注冊(cè)廣播接收器監(jiān)聽(tīng)手機(jī)廣播(短信廣播,來(lái)電廣播,充電廣播,屏幕解鎖廣播等),并通過(guò)服務(wù)獲取用戶(hù)的隱私信息,包括攔截短信,監(jiān)聽(tīng)電話(huà)等。 這里以攔截短信為例進(jìn)行說(shuō)明:
注冊(cè)的廣播接收器,通過(guò)攔截android.provider.Telephony.SMS_RECEIVED系統(tǒng)廣播,在用戶(hù)收到短信時(shí)使用BroadcastMonitorSms類(lèi)攔截到用戶(hù)短信并通過(guò)abortBroadcast()阻斷廣播子繼續(xù)傳播。
上圖中x.a(“26.0”)返回字符串“pdus”,從而獲取intent中額puds結(jié)構(gòu)體重保存的短信息。x這個(gè)類(lèi)中保存了,masseges.bin文件解密后得到的鍵值對(duì),x.a()方法可以通過(guò)鍵(如“26.0”)獲取到字符串(如“pdus”)
獲取到攔截的短信內(nèi)容(包括號(hào)碼,內(nèi)容,時(shí)間)后,保存在一個(gè)類(lèi)中:
將保存信息的類(lèi)加入到列表中,這部分大量使用繼承、多態(tài)等技術(shù),使得通過(guò)這些服務(wù)收集到的信息可被其他類(lèi)獲取、保存并最終上傳。
病毒在BroadcastMonitor廣播接收器被觸發(fā)后,通過(guò)發(fā)送action為com.android.service.app的intent,啟動(dòng)主要服務(wù)ServiceCore
在ServiceCore中會(huì)首先解密保存的加密文件,并將文件內(nèi)容以鍵值對(duì)的方式保存起來(lái),方便后面取用。檢查、安裝并執(zhí)行后門(mén)程序,啟動(dòng)主要線(xiàn)程CORE:
解密massege.bin代碼:在下圖可以看到massege.bin文件,是使用秘鑰為”0x5A3D00448D7A912B” 加密方式為:”AES/CBC/PKCS5Padding”的對(duì)稱(chēng)加密算法。程序在解密文件后,將文件中保存的關(guān)鍵字符串信息以鍵值對(duì)的形式保存在一個(gè) map中,以便在后面使用。
在屏幕關(guān)閉后保持程序運(yùn)行:在用戶(hù)使用電源鍵關(guān)閉手機(jī)屏幕后,手機(jī)的cpu實(shí)際上保持著運(yùn)行,也就是說(shuō)病毒的程序仍然在執(zhí)行,使得用戶(hù)不知不覺(jué)仍然處在監(jiān)控中:
下面是啟動(dòng)的Core線(xiàn)程,在該線(xiàn)程中會(huì)檢查手機(jī)的root狀態(tài),被感染狀態(tài),信息手機(jī)狀態(tài),并收集手機(jī)的各種基本信息,訪(fǎng)問(wèn)遠(yuǎn)程服務(wù)器,發(fā)送短信,控制進(jìn)程的休眠啟動(dòng)等等,這里僅就信息收集部分做說(shuō)明:進(jìn)一步調(diào)用信息收集,上傳的方法如下圖,由于樣本高度混淆,再加上使用了很多的繼承和多態(tài),多線(xiàn)程機(jī)制使得代碼邏輯跟蹤比較復(fù)雜,這里只描述一條邏輯,具體情況請(qǐng)以具體反編譯代碼為準(zhǔn)。下面僅對(duì)幾個(gè)關(guān)鍵類(lèi)進(jìn)行截圖說(shuō)明,其余跳轉(zhuǎn)則不在此處贅述。
圖中的數(shù)字對(duì)應(yīng)的就是病毒企圖隱藏起來(lái)的字符串,經(jīng)過(guò)替換后該語(yǔ)句如下:
this.d=”SID:”+V0_3.e+“, NID:” + v0_3.f+”” , BID:”+v0_3.g;
上圖收集了用戶(hù)的IMSI、IMEI,SID等硬件信息以及所在位置的經(jīng)緯度信息等, 具體獲取方法在U.f()中,截圖如下:
病毒程序在獲取上述信息后以短信的形式發(fā)送出去
可以看出,由于HackingTeam事件發(fā)生沒(méi)有多久,很多黑客就已經(jīng)做出了反應(yīng),利用該事件暴露出來(lái)的工具和技術(shù)對(duì)用戶(hù)進(jìn)行攻擊并且該類(lèi)病毒對(duì)用戶(hù)隱私威脅極大,屬于高危間諜軟件,尤其是使用了比較新穎的使用文件給關(guān)鍵字符串加密,在程序運(yùn)行中解密文件,并以鍵值對(duì)的方式保存關(guān)鍵字符串,在相關(guān)位置使用鍵取值,從而躲避殺軟的查殺,這說(shuō)明黑客在利用網(wǎng)上暴露的公開(kāi)的技術(shù)的同時(shí)更自己進(jìn)行了改造、升級(jí),以更加危險(xiǎn)的形式出現(xiàn)。
建議用戶(hù)安裝殺軟,在日益嚴(yán)峻的移動(dòng)安全形勢(shì)下與安全廠商攜手保護(hù)好自己的權(quán)益