基于程序切片的android惡意代碼檢測(cè)_第1頁(yè)
基于程序切片的android惡意代碼檢測(cè)_第2頁(yè)
基于程序切片的android惡意代碼檢測(cè)_第3頁(yè)
基于程序切片的android惡意代碼檢測(cè)_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

基于程序切片的android惡意代碼檢測(cè)

android是目前智能手機(jī)操作系統(tǒng)之一。這一系統(tǒng)的開(kāi)放性是系統(tǒng)成功的原因之一。由于它的開(kāi)放性以及缺乏嚴(yán)格的審查制度,使得Android平臺(tái)的惡意軟件越來(lái)越多本文在程序切片的基礎(chǔ)上,將靜態(tài)分析方法與動(dòng)態(tài)分析方法結(jié)合,實(shí)現(xiàn)對(duì)Android應(yīng)用程序的檢測(cè)1靜態(tài)切片分析靜態(tài)切片本質(zhì)是一種數(shù)據(jù)流分析,通過(guò)分析找到一組程序語(yǔ)句,這組語(yǔ)句直接或者間接的影響目標(biāo)值。向后切片是一種切片的實(shí)現(xiàn)方法,切片包含了直接或者間接影響目標(biāo)值的程序語(yǔ)句,本文通過(guò)向后切片完成對(duì)目標(biāo)的分析。使用靜態(tài)切片的目的有:(1)對(duì)目標(biāo)程序的Smali代碼進(jìn)行分析,為敏感函數(shù)及其參數(shù)進(jìn)行向后程序切片,完成數(shù)據(jù)流分析,如分析是否有向固定號(hào)碼發(fā)送短信的行為。(2)為Smali代碼中使用混淆或者反射機(jī)制的部分生成程序切片,通過(guò)動(dòng)態(tài)運(yùn)行提取出的切片來(lái)獲取真實(shí)值,如實(shí)際執(zhí)行的函數(shù)名等。1.1靜態(tài)特征提取為了對(duì)目標(biāo)函數(shù)及其參數(shù)進(jìn)行向后切片,需要定義切片準(zhǔn)則C,記做<m,c,p,i,t>,其中,m是函數(shù)名,c是函數(shù)所在類的完整名稱,p是參數(shù)列表,i是參數(shù)的索引,如c=android/telephony/SmsManager;m=sendTextMess;p=Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent,切片準(zhǔn)則中的函數(shù)主要以Android中的敏感API為主,部分切片準(zhǔn)則見(jiàn)表1;t為Smali代碼中的操作碼類型,其中大部分為invoke類型的操作碼。這些切片準(zhǔn)則是分析目標(biāo),以切片準(zhǔn)則為基本生成程序切片,同時(shí)這些切片準(zhǔn)則組成用于查找的預(yù)定義檢索集。定義記錄點(diǎn)為<s,r>,其中,s代表一條程序語(yǔ)句,r為s中的寄存器的名稱,記錄點(diǎn)最終組成可疑代碼區(qū)域。根據(jù)切片準(zhǔn)則中的類型t,檢索Smali代碼中的對(duì)應(yīng)操作碼找到目標(biāo)語(yǔ)句,之后通過(guò)索引i找到對(duì)應(yīng)參數(shù)所使用的寄存器,然后向后搜索Smali代碼中的所有操作碼,找到對(duì)該寄存器操作的語(yǔ)句,將涉及到的寄存器繼續(xù)向前搜索迭代這一過(guò)程,通過(guò)這一過(guò)程,可以獲取到所有使用或者修改該寄存器的程序語(yǔ)句。向后切片算法詳細(xì)地描述了這一過(guò)程。隊(duì)列Q用于存放尚未回溯的寄存器,它存儲(chǔ)了寄存器的名稱和其所在語(yǔ)句的行號(hào)。首先根據(jù)切片準(zhǔn)則,找到參數(shù)使用的寄存器r,用該寄存器初始化隊(duì)列Q,然后向后搜索操作碼,找到操作寄存器r的語(yǔ)句,將該語(yǔ)句中涉及到的寄存器入隊(duì)列,如被回溯的寄存器v0通過(guò)move操作碼被寄存器v1重寫,則寄存器v1需要入隊(duì)列進(jìn)行回溯。這樣所有操作目標(biāo)寄存器的操作碼以及它們所涉及到的寄存器都被放入隊(duì)列中進(jìn)行回溯。通過(guò)這一過(guò)程生成記錄并最終生成程序切片。如當(dāng)切片準(zhǔn)則為sendTextMessage()以及該方法的第1個(gè)參數(shù)電話號(hào)碼時(shí),當(dāng)檢索到寄存器的值為常量時(shí)停止,從而可以檢測(cè)到發(fā)送短信到固定號(hào)碼的行為。1.2靜態(tài)片段提取在諸如Obad或者FakeInstaller2靜態(tài)切片執(zhí)行動(dòng)態(tài)分析方法在代碼執(zhí)行覆蓋率上往往不夠理想,同時(shí)傳統(tǒng)的靜態(tài)切片是根據(jù)測(cè)點(diǎn)來(lái)生成某一種執(zhí)行環(huán)境下的可執(zhí)行代碼切片,無(wú)法模擬出多種執(zhí)行環(huán)境,從而導(dǎo)致在執(zhí)行的過(guò)程中無(wú)法獲取真實(shí)的值。如圖2中的list1是來(lái)自于Pincer惡意軟件中的部分代碼,在第26行會(huì)發(fā)送短信到付費(fèi)號(hào)碼,接收方的電話號(hào)碼存儲(chǔ)在變量number中,然后根據(jù)不同的國(guó)家號(hào)碼生成不同的電話號(hào)碼,同時(shí)代碼中還有對(duì)模擬器的檢查,當(dāng)在模擬器環(huán)境中運(yùn)行時(shí)會(huì)隱藏惡意行為。當(dāng)測(cè)點(diǎn)為<26,number>時(shí),loginfo和第5行的檢查與測(cè)點(diǎn)不相關(guān),所以被移走,生成的切片見(jiàn)圖2中的list2。當(dāng)在模擬器中執(zhí)行l(wèi)ist2中的切片時(shí),由于第10行的模擬器檢查失敗,導(dǎo)致number的值為null,因?yàn)樵撿o態(tài)切片是在當(dāng)前的執(zhí)行環(huán)境下構(gòu)建出一個(gè)可以最小化描述原始程序行為的切片,在模擬器執(zhí)行環(huán)境下這個(gè)切片是正確的,它使得number的值為null,但是對(duì)于分析卻毫無(wú)意義。為了能夠模擬出所有的執(zhí)行環(huán)境和執(zhí)行邏輯,獲取正確的值,需要對(duì)影響測(cè)點(diǎn)值的條件做特殊處理,擴(kuò)展所有可能的執(zhí)行路徑,因?yàn)槊恳环N執(zhí)行路徑會(huì)潛在生成一個(gè)真實(shí)值,為此用布爾表達(dá)式來(lái)替換所有與測(cè)點(diǎn)相關(guān)的條件語(yǔ)句,通過(guò)Bool值的組合,組合出多種執(zhí)行路徑。如list3,共有4個(gè)Bool表達(dá)式,這樣就可以組合出16種執(zhí)行路徑,這樣就模擬出所有的執(zhí)行路徑,從而得到變量number的所有值。最終每個(gè)APK所生成的切片會(huì)構(gòu)建出一個(gè)新的、裁剪過(guò)的APK,其中每一個(gè)被提取出的切片會(huì)在該APK中生成一個(gè)新的方法,為了能夠執(zhí)行切片,該APK會(huì)包含一個(gè)專門用于執(zhí)行這些方法的Activity,該Activity會(huì)依次調(diào)用生成的方法,同時(shí)該Activity會(huì)將運(yùn)行時(shí)的值寫入SQLite數(shù)據(jù)庫(kù)或者SDCard中。由于這些切片是直接執(zhí)行,并不需要在意它們?cè)诔绦蛑械脑嘉恢?也不需要與用戶交互。例如,當(dāng)代碼的執(zhí)行需要一個(gè)按鈕點(diǎn)擊事件來(lái)觸發(fā)時(shí),這時(shí)就需要模擬這樣的用戶交互或者一個(gè)自動(dòng)化的工具來(lái)模擬按鈕點(diǎn)擊事件。然而由于直接執(zhí)行切片代碼,并不需要考慮上述問(wèn)題。同時(shí),被裁剪的APK不包含任何AndroidGUI組件,它包含了一些與原程序相同的資源,這樣當(dāng)切片從外部加載資源的時(shí)候,就可以找到這些資源,確保程序的正常運(yùn)行。由于需要擴(kuò)展所有分支來(lái)獲取所有可能的目標(biāo)值,這意味著用于執(zhí)行的Activity必須要設(shè)置所有可能的Bool值組合,然后重新運(yùn)行切片。通常情況下,當(dāng)條件數(shù)量是n時(shí),需要執(zhí)行23靜態(tài)切片實(shí)驗(yàn)本文中用于實(shí)驗(yàn)的程序主要以java和python編寫,其中靜態(tài)切片提取部分使用python編寫,用于執(zhí)行靜態(tài)切片的Activity以java編寫。在實(shí)驗(yàn)的過(guò)程中也使用了一些第三方的程序,如用于將AndroidAPK文件轉(zhuǎn)換為Smali代碼的Apktool;Dex-lib23.1實(shí)驗(yàn)環(huán)境實(shí)驗(yàn)中,APK樣本來(lái)自于GooglePlay3.2動(dòng)態(tài)運(yùn)行切片分析對(duì)APK文件樣本進(jìn)行靜態(tài)切片分析,其中所有的測(cè)點(diǎn)數(shù)量為固定的30個(gè),且主要為敏感的AndroidAPI。從圖3中可以得出所有的APK靜態(tài)切片分析可以在20s內(nèi)完成,且多數(shù)的處理時(shí)間分布在6-12s內(nèi)。為了能夠?qū)?dòng)態(tài)運(yùn)行切片進(jìn)行性能評(píng)測(cè),采用的實(shí)驗(yàn)樣本主要來(lái)自于VirusShare的282個(gè)樣本,200個(gè)來(lái)自于Genome項(xiàng)目的App,這些app大部分含有短信木馬以及200個(gè)來(lái)自MobileSandBox的惡意軟件樣本。其中設(shè)置的測(cè)點(diǎn)為電話號(hào)碼和相應(yīng)的短信內(nèi)容,通過(guò)使用該方法可以在平均1.5-2分鐘內(nèi)提取出接收方電話號(hào)碼和部分短信內(nèi)容。3.3系統(tǒng)服務(wù)的使用情況通過(guò)靜態(tài)切片分析,發(fā)現(xiàn)大部分的應(yīng)用程序會(huì)讀取IMEI和IMSI,其中有53%的惡意軟件會(huì)調(diào)用API獲取上述信息,而在GooglePlay中只有24%;對(duì)AndroidAPIexec以及其參數(shù)進(jìn)行分析,該函數(shù)用于在shell中執(zhí)行命令,發(fā)現(xiàn)有惡意軟件會(huì)使用該函數(shù)來(lái)執(zhí)行“su”完成應(yīng)用程序安裝、重新掛載文件系統(tǒng)以及檢索正在運(yùn)行的進(jìn)程等;發(fā)現(xiàn)有應(yīng)用程序會(huì)向固定號(hào)碼發(fā)送短信和一些固定的短信內(nèi)容,其中54%的惡意軟件有這樣的行為,而GooglePlay中只有3.4%;通過(guò)分析還總結(jié)了應(yīng)用程序?qū)ο到y(tǒng)服務(wù)的使用情況詳細(xì)見(jiàn)表2,表項(xiàng)的內(nèi)容為Context.getSystemService這個(gè)函數(shù)的參數(shù),惡意軟件使用最多的服務(wù)是用于獲取電話狀態(tài)的TelephonyManager、用于獲取連接狀態(tài)的ConnectivityManager和用于獲取地理位置信息的LocationManager;Android系統(tǒng)通過(guò)Intents來(lái)完成進(jìn)程間的通信,分析發(fā)現(xiàn)一些惡意軟件會(huì)使用SMS_SENT和SMS_DELIVERED這樣的Intents,而在GooglePlay中會(huì)使用一些正常的系統(tǒng)Intents,如.conn.CONNECTIVITY_CHANGE。對(duì)3款具有代表性的惡意軟件進(jìn)行靜態(tài)切片提取、動(dòng)態(tài)運(yùn)行切片,其中測(cè)點(diǎn)主要涉及到URI、短信號(hào)碼、短信內(nèi)容和反射函數(shù),詳細(xì)見(jiàn)表3~表5,這3款惡意軟件會(huì)泄露隱私數(shù)據(jù),它們大量的使用反射來(lái)隱藏對(duì)敏感API的調(diào)用,結(jié)果表明該方法可以有效地提取出運(yùn)行時(shí)的值。4靜態(tài)切片分析Android是當(dāng)前最為流行的智能手機(jī)操作系統(tǒng)之一,其開(kāi)放性是該系統(tǒng)成功的原因之一。由于它的開(kāi)放性以及缺乏嚴(yán)格的審查制度,使得Android平臺(tái)的惡意軟件越來(lái)越多。本文在程序切片的基礎(chǔ)上,使用了靜態(tài)切片分析和動(dòng)態(tài)運(yùn)行切片對(duì)Android應(yīng)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔