基于隨機(jī)森林分類方法的Android平臺(tái)惡意應(yīng)用檢測(cè)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉移動(dòng)終端軟件安全技術(shù)領(lǐng)域,尤其涉及一種將機(jī)器學(xué)習(xí)領(lǐng)域中的分類算 法應(yīng)用于Andro i d惡意應(yīng)用檢測(cè)的方法。
【背景技術(shù)】
[0002] 近幾年隨著智能終端設(shè)備,尤其是智能手機(jī)的發(fā)展,人們的生活變得越來越方便。 現(xiàn)在的智能手機(jī)甚至能夠完成許多以前必須在PC上才能完成的功能,這更加吸引了人們的 使用。然而,越來越龐大的智能手機(jī)用戶群體也引起了許多惡意應(yīng)用開發(fā)者的注意。隨著智 能手機(jī)用戶群體的發(fā)展,惡意應(yīng)用的數(shù)量也在不斷增長(zhǎng)。惡意應(yīng)用開始成為了手機(jī)安全和 用戶隱私的一大威脅。在這樣的情況下,尋找一種能夠準(zhǔn)確地批量檢測(cè)惡意應(yīng)用的方法就 顯得十分必要。
[0003] 在公開號(hào)為CN104123500A的專利申請(qǐng)中,描述了一種基于深度學(xué)習(xí)的Android平 臺(tái)惡意應(yīng)用檢測(cè)方案,本方案通過對(duì)Andro id應(yīng)用原始安裝文件和運(yùn)行時(shí)進(jìn)行特征提取,然 后通過深度學(xué)習(xí)建立模型來進(jìn)行檢測(cè)。由于需要在運(yùn)行時(shí)進(jìn)行檢測(cè),故其檢測(cè)的效率比較 低,效果不佳。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的發(fā)明目的在于:針對(duì)上述存在的問題,提供了一種Android惡意應(yīng)用的檢 測(cè)方法,通過使用隨機(jī)森林分類方法,實(shí)現(xiàn)了 Android平臺(tái)下惡意應(yīng)用與善意應(yīng)用的區(qū)分, 保障了用戶的利益。
[0005 ]本發(fā)明的基于隨機(jī)森林分類方法的Andro i d平臺(tái)惡意應(yīng)用檢測(cè)方法,包括下列步 驟:
[0006] 獲取Android應(yīng)用(以下簡(jiǎn)稱APP)樣本,包括善意應(yīng)用樣本和惡意樣本;
[0007]獲取APP的所有可申請(qǐng)權(quán)限、所有可調(diào)用API,得到權(quán)限集和API集;
[0008]提取各APP樣本的靜態(tài)特征,包括各應(yīng)用樣本所申請(qǐng)的權(quán)限、所調(diào)用的API;
[0009] 基于各APP樣本的靜態(tài)特征、權(quán)限集和API集構(gòu)建樣本庫(kù),所述樣本庫(kù)包括的表項(xiàng) 有:APP標(biāo)識(shí)符、區(qū)分善意和惡意的類型標(biāo)識(shí)符、對(duì)權(quán)限集中各權(quán)限的申請(qǐng)標(biāo)識(shí)符、對(duì)API集 中的各API的調(diào)用標(biāo)識(shí)符;
[0010] 根據(jù)樣本庫(kù),構(gòu)建隨機(jī)森林的每棵決策樹,得到隨機(jī)森林分類器:
[0011] 基于樣本庫(kù)進(jìn)行取樣,得到不同組的訓(xùn)練數(shù)據(jù)集,將一組訓(xùn)練數(shù)據(jù)集所包括的APP 作為決策樹的根節(jié)點(diǎn)下的APP,對(duì)決策樹的各節(jié)點(diǎn)進(jìn)行分裂處理,得到一棵決策樹:
[0012] 隨機(jī)選擇基于當(dāng)前節(jié)點(diǎn)下的m(其中m為預(yù)設(shè)值,用于計(jì)算最佳的分裂方式,其取值 小于樣本庫(kù)所包括的靜態(tài)特征的總數(shù))個(gè)靜態(tài)特征,并分別計(jì)算各靜態(tài)特征所對(duì)應(yīng)的信息 增益;取信息增益最大的靜態(tài)特征作為當(dāng)前節(jié)點(diǎn)的分裂屬性,基于分裂屬性對(duì)每個(gè)節(jié)點(diǎn)進(jìn) 行分裂,即將具有分裂屬性所對(duì)應(yīng)的靜態(tài)特征的APP分到一個(gè)葉子節(jié)點(diǎn),不具有分裂屬性所 對(duì)應(yīng)的靜態(tài)特征的APP分到另一個(gè)葉子節(jié)點(diǎn),直到當(dāng)前節(jié)點(diǎn)下的APP的個(gè)數(shù)為1或分裂屬性 用完;各葉子節(jié)點(diǎn)所屬的類別取決于其下的APP的類型(善意或惡意),若同時(shí)包括兩類APP, 則取決于包含APP個(gè)數(shù)最多的類型;
[0013] 提取待檢測(cè)APP的靜態(tài)特征,基于所建模型對(duì)待檢測(cè)APP進(jìn)行分類,檢測(cè)待檢測(cè)APP 是否為惡意應(yīng)用。
[0014] 由于采用了上述技術(shù)方案,本發(fā)明的有益效果是:本發(fā)明通過提取APP的靜態(tài)特 征:權(quán)限特征和API調(diào)用特征,結(jié)合機(jī)器學(xué)習(xí)領(lǐng)域中的隨機(jī)森林分類方法,實(shí)現(xiàn)了對(duì)惡意APP 的高效檢測(cè),提高了Android平臺(tái)的安全性。
【附圖說明】
[0015] 圖1是本發(fā)明的流程圖;
[0016] 圖2是【具體實(shí)施方式】中,保存特征信息的文件格式的示例圖;
[0017] 圖3是【具體實(shí)施方式】中,分裂節(jié)點(diǎn)的示意圖;
[0018] 圖4是【具體實(shí)施方式】中,隨機(jī)森林中的一顆決策樹的示意圖。
【具體實(shí)施方式】
[0019] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合實(shí)施方式和附圖,對(duì)本發(fā) 明作進(jìn)一步地詳細(xì)描述。
[0020] 為了實(shí)現(xiàn)準(zhǔn)確地批量分析出APP是惡意的還是善意的這一難題,本發(fā)明提供了一 種基于隨機(jī)森林分類方法的Android平臺(tái)惡意應(yīng)用檢測(cè)方法。參見圖1,本方法主要包括如 下五個(gè)步驟:
[0021 ] S1:獲取APP樣本,包括惡意和善意的APP樣本;
[0022] S2:獲取APP的所有可申請(qǐng)權(quán)限列表、API信息,得到權(quán)限集和API集;
[0023] S3:提取APP樣本的靜態(tài)特征,包括所申請(qǐng)的權(quán)限、所調(diào)用的API;
[0024] S4:基于各APP樣本的靜態(tài)特征、權(quán)限集和API集構(gòu)建樣本庫(kù),所述樣本庫(kù)包括的表 項(xiàng)有:APP標(biāo)識(shí)符、區(qū)分善意和惡意的類型標(biāo)識(shí)符、對(duì)權(quán)限集中各權(quán)限的申請(qǐng)標(biāo)識(shí)符、對(duì)API 集中的各API的調(diào)用標(biāo)識(shí)符;
[0025] S5:基于樣本庫(kù),使用隨機(jī)森林分類算法建立模型,即基于樣本庫(kù)構(gòu)建隨機(jī)森林的 每棵決策樹,得到隨機(jī)森林分類器;
[0026] S6:基于S5所建的隨機(jī)森林分類器對(duì)待檢測(cè)APP進(jìn)行檢測(cè)。
[0027] 下面分別對(duì)各步驟的【具體實(shí)施方式】進(jìn)行描述,以便更好地理解本發(fā)明:
[0028] S1:獲取APP樣本:從各種渠道獲取APP樣本安裝文件,將獲取到的獲取APP樣本分 成善意樣本和惡意樣本,并保存。
[0029] S2:獲取APP的所有可申請(qǐng)權(quán)限列表、API信息:在Google的Android開發(fā)者網(wǎng)站 ( http://developer.android.com/reference/android/Manifest.permission.html) 提供了安卓APP可以申請(qǐng)到的所有權(quán)限信息,將所提供的所有可以申請(qǐng)到的權(quán)限保存到本 地,形成一張列表,作為全集,即權(quán)限集。
[0030]獲取APP的所有調(diào)用的API信息列表,對(duì)所有的樣本執(zhí)行步驟S302操作,得到所有 的樣本調(diào)用到的所有API信息,去除重復(fù)內(nèi)容。優(yōu)選的,基于先驗(yàn)經(jīng)驗(yàn)還可以過濾掉與善意 惡意鑒別基本無關(guān)的API后,再將所有留下的API信息保存到本地,形成一張列表,作為全 集,即API集。
[0031 ] S3:提取APP樣本的靜態(tài)特征:
[0032] S301:提取各APP樣本的權(quán)限信息:
[0033] 本步驟主要是通過使用 androguard(https://github.com/androguard/ androguard)這個(gè)開源庫(kù)來獲取Android應(yīng)用的權(quán)限信息,具體步驟如下:
[0034] (1)導(dǎo)入 androguard庫(kù)。
[0035] (2)將APP的APK(AndroidPackage)安裝文件路徑作為參數(shù)傳遞給androguard庫(kù)的 APK類,調(diào)用這個(gè)類的ge t_permi s s i ons方法,便可以得到所有的這個(gè)應(yīng)用所申請(qǐng)到的所有 權(quán)限信息。
[0036] (3)根據(jù)步驟S2所獲取到的權(quán)限集,對(duì)所得到的權(quán)限信息進(jìn)行過濾,得到這個(gè)應(yīng)用 所使用的Android權(quán)限列表。
[0037] S302:提提取各APP樣本的API調(diào)用信息:
[0038] 本步驟主要是通過對(duì)APP的APK安裝文件進(jìn)行反編譯,然后使用正則表達(dá)式匹配 API調(diào)用信息來進(jìn)行的,具體步驟如下:
[0039] ( 1 )使用unzip工具對(duì)應(yīng)用的APK安裝文件進(jìn)行解壓,獲取應(yīng)用文件中 "classes · dex" 文件。
[0040] (2)使用dex2 jar工具將"classes · dex" 文件轉(zhuǎn)化為 jar文件"classes · jar"。
[0041 ] (3)使用unzip工具對(duì)"classes, jar"文件進(jìn)行解壓,得到相應(yīng)的class文件。
[0042] (4)使用javap工具對(duì)class文件進(jìn)行反編譯
[0043] (5)使用正則表達(dá)式對(duì)反編譯后的文件進(jìn)行匹配,提取API調(diào)用信息。
[0044] (6)根據(jù)步驟S2提供的API集,對(duì)所得到的API信息進(jìn)行過濾,得到當(dāng)前APP樣本的 Andr 〇 i dAP I 列表。
[0045]以上僅僅是給出了一種提取APP樣本的靜態(tài)特征的處理方式示例,本發(fā)明并不局 限于此,本領(lǐng)域技術(shù)人員還可以采用其他慣用方式得到各APP樣本的靜態(tài)特征。
[0046] S4:基于各APP樣本的靜態(tài)特征、權(quán)限集和API集構(gòu)建樣本庫(kù):
[0047] 對(duì)所提取的各APP樣本的靜態(tài)特征按如下格式保存:
[0048] (1)對(duì)獲取到的權(quán)限信息進(jìn)行處理,保存成后綴名為.csv的文件。文件的每行代表 一個(gè)APP。每行的第一列為區(qū)分善意和惡意的類型標(biāo)識(shí)符,若每行的第一列為0,則表示本行 的APP為善意;若每行的第一列為1,則表示本行的APP為善意;接下來的每一列,代表 Android系統(tǒng)的一個(gè)權(quán)限,列的值為0,表示沒有這個(gè)權(quán)限,即沒有申請(qǐng)?jiān)摍?quán)限,列的值為1, 表示APP使用了這個(gè)權(quán)限,即申請(qǐng)到該權(quán)限。同一行每個(gè)數(shù)字之前用逗號(hào)隔開。
[0049] (2)對(duì)獲取到的API調(diào)用信息文件進(jìn)行處理,保存成后綴名為.csv的文件。文件的 每行代表一個(gè)APP。每行的第一列為區(qū)分善意和惡意的類型標(biāo)識(shí)符,若每行的第一列為0,則 表示本行的APP為善意;若每行的第一列為1,則表示本行的APP為善意;接下來的每一列,代 表一個(gè)API,列的值為0,表示沒有調(diào)用這個(gè)API,列的值為1,表示調(diào)用了這個(gè)API。同行的數(shù) 字之間用逗號(hào)隔開。注意保存的時(shí)候,APP的順序應(yīng)當(dāng)與權(quán)限信息的保存順序相同。
[0050] (3)把上述兩個(gè)矩陣拼成一個(gè)。如前文所述,生成矩陣時(shí)保證了每一行對(duì)應(yīng)同一個(gè) APP,所以可以把其中一個(gè)矩陣的第一列去掉,然后把矩陣的行對(duì)齊直接拼接成新的矩陣。 最后得到的文件內(nèi)容如圖2所示。其中,第一列為APP的類型,0表示善意,1表示惡意。第二、 三列為API調(diào)用信息,對(duì)應(yīng)AP11和AP12,第四列為APP權(quán)限信息,對(duì)應(yīng)p erm 1。
[0051] 即基于所提取的各APP樣本的靜態(tài)特征、得到權(quán)限集和API集,通過上述(1)~(3) 構(gòu)建用于隨機(jī)森林分類方法建模的樣本庫(kù),該樣本庫(kù)包括的表項(xiàng)有:APP標(biāo)識(shí)符、區(qū)分善意 和惡意的類型標(biāo)識(shí)符、對(duì)權(quán)限集中各權(quán)限的申請(qǐng)標(biāo)識(shí)符、對(duì)API集中的各API的調(diào)用標(biāo)識(shí)符。
[0052] S5:基于樣本庫(kù),使用隨機(jī)森林分類算法建立模型:
[0053] 在隨機(jī)森林方法中建造每棵決策樹的方法為:從N(表示訓(xùn)練樣本的個(gè)