本發(fā)明涉及應用程序安全技術(shù)領(lǐng)域,具體涉及一種應用異常行為識別模型建立方法及裝置、識別方法及裝置。
背景技術(shù):
近年來,隨著移動互聯(lián)網(wǎng)的不斷發(fā)展,電力企業(yè)緊密貼合“互聯(lián)網(wǎng)+”環(huán)境下業(yè)務發(fā)展和新技術(shù)的應用需求,提出了電力服務移動化、作業(yè)移動化和辦公移動化的發(fā)展方向,為企業(yè)員工和電力用戶提供更加開放和智能化的服務,有利于加強企業(yè)員工、合作伙伴和電力客戶之間的聯(lián)系,實現(xiàn)電力業(yè)務信息的實時流動和共享,極大的提高工作效率。然而,在現(xiàn)有傳統(tǒng)互聯(lián)網(wǎng)的信息安全防護方案情況下,作為支撐業(yè)務運行的企業(yè)移動應用,一方面存在自身的安卓安全漏洞,另一方面大部分的電力企業(yè)應用運行在個人移動設備中,運行環(huán)境安全情況未知,移動應用一旦遭到攻擊,很容易獲取企業(yè)業(yè)務數(shù)據(jù),泄露公司機密。
因此,有必要建設面向電力企業(yè)的移動應用異常運行行為的監(jiān)控方案,對移動應用在運行時可能因為使用者的過失行為,或者惡意使用行為進行監(jiān)測、分析、判斷和過濾,在真正產(chǎn)生危害前將其阻止,保障移動應用的運行安全。
目前國內(nèi)外針對運行時的移動應用動態(tài)行為進行分析的檢測技術(shù),多以研究沙箱技術(shù)、hook技術(shù)以及移動應用框架層污點分析技術(shù)為主,獲取應用程序的cpu使用率、網(wǎng)絡數(shù)據(jù)流量、進程數(shù)量、api調(diào)用序列等監(jiān)控指標,然后利用智能算法(如支持向量機、神經(jīng)網(wǎng)絡和貝葉斯分類算法等)分析程序的動態(tài)行為,從而判斷是否為惡意行為或者軟件。然而,現(xiàn)有大部分的移動應用動態(tài)行為檢測平臺(如開源的mobsf和droidbox等)都是在模擬機上安裝移動應用,通過模擬機啟動應用并記錄應用運行信息來分析惡意軟件或異常行為。這種檢測方案無法有效覆蓋實際使用情況下的真機環(huán)境和應用運行時的各類觸發(fā)異常行為的因素,惡意軟件利用模擬機識別技術(shù)或者延遲攻擊時間即可躲避系統(tǒng)的檢測。因此,有必要研究正常使用企業(yè)應用時的惡意行為檢測技術(shù)。
技術(shù)實現(xiàn)要素:
因此,本發(fā)明要解決的技術(shù)問題在于現(xiàn)有的通過模擬機啟動應用并記錄應用運行信息來分析惡意軟件或異常行為的方法,無法有效覆蓋實際使用情況下的真機環(huán)境和應用運行時的各類觸發(fā)異常行為的因素,惡意軟件利用模擬機識別或者延遲攻擊時間即可躲避系統(tǒng)的檢測。
為此,本發(fā)明實施例提供了如下技術(shù)方案:
一種應用異常行為識別模型的建立方法,包括以下步驟:
分別獲取多個正常應用樣本的第一api調(diào)用日志樣本、多個惡意應用樣本的第二api調(diào)用日志樣本;
根據(jù)第一api調(diào)用日志樣本和第二api調(diào)用日志樣本建立異常行為識別模型。
可選地,分別獲取多個正常應用樣本的第一api調(diào)用日志樣本、多個惡意應用樣本的第二api調(diào)用日志樣本的步驟包括:
將jave層的api接口調(diào)用函數(shù)轉(zhuǎn)換為native層api接口調(diào)用函數(shù);
修改native層api接口調(diào)用函數(shù)的屬性以轉(zhuǎn)為調(diào)用native_hook函數(shù);
通過native_hook函數(shù)回調(diào)java層中注入的日志監(jiān)控函數(shù)以實時記錄api接口的調(diào)用。
可選地,根據(jù)第一api調(diào)用日志樣本和第二api調(diào)用日志樣本建立異常行為識別模型的步驟包括分別對第一api調(diào)用日志樣本和第二api調(diào)用日志樣本進行預處理的步驟,包括:
分別對第一api調(diào)用日志樣本和第二api調(diào)用日志樣本中的特征向量元素進行數(shù)值化處理;
對數(shù)值化后的各特征向量元素進行線性變換以使各特征向量元素的數(shù)值處于0-1之間。
可選地,根據(jù)第一api調(diào)用日志樣本和第二api調(diào)用日志樣本建立異常行為識別模型的步驟包括:
構(gòu)建隸屬度函數(shù);
將支持向量機(svm)訓練函數(shù)的權(quán)重參數(shù)設置為隸屬度函數(shù)得到模糊支持向量機(fsvm);
利用第一api調(diào)用日志樣本和第二api調(diào)用日志樣本訓練模糊支持向量機(fsvm)得到異常行為識別模型。
可選地,隸屬度函數(shù)為:
其中,s+i表示異常行為類樣本的隸屬度、s+i表示正常行為類樣本的隸屬度,m+,m-為非平衡特征因子,分別表示異常行為類樣本和正常行為類樣本獲得的統(tǒng)一權(quán)重,
可選地,異常行為識別模型的判別函數(shù)為:
其中,x為待檢測樣本,xi為支持向量,n為支持向量數(shù)目,αi為拉格朗日乘子,k(xi,x)為核函數(shù),ρ為超平面截距,f(x)為分類檢測結(jié)果。
一種應用的異常行為識別方法,包括如下步驟:
獲取應用運行時的api調(diào)用日志;
利用根據(jù)上述任一種方法建立的應用異常行為識別模型對api調(diào)用日志進行分類以識別異常行為。
可選地,獲取應用運行時的api調(diào)用日志的步驟包括待監(jiān)測api接口獲取步驟,包括:
反編譯應用的安裝包文件獲取應用的權(quán)限使用列表;
根據(jù)應用的權(quán)限使用列表獲取應用的敏感api接口。
一種應用異常行為識別模型的建立裝置,包括:
日志樣本獲取單元,用于分別獲取多個正常應用樣本的第一api調(diào)用日志樣本、多個惡意應用樣本的第二api調(diào)用日志樣本;
模型建立單元,用于根據(jù)第一api調(diào)用日志樣本和第二api調(diào)用日志樣本建立異常行為識別模型。
可選地,日志樣本獲取單元包括:
轉(zhuǎn)換子單元,用于將jave層的api接口調(diào)用函數(shù)轉(zhuǎn)換為native層api接口調(diào)用函數(shù);
屬性修改子單元,用于修改native層api接口調(diào)用函數(shù)的屬性以轉(zhuǎn)為調(diào)用native_hook函數(shù);
日志記錄子單元,用于通過native_hook函數(shù)回調(diào)java層中注入的日志監(jiān)控函數(shù)以實時記錄api接口的調(diào)用。
可選地,模型建立單元包括:
數(shù)值化子單元,用于分別對第一api調(diào)用日志樣本和第二api調(diào)用日志樣本中的特征向量元素進行數(shù)值化處理;
歸一化子單元,用于對數(shù)值化后的各特征向量元素進行線性變換以使各特征向量元素的數(shù)值處于0-1之間。
可選地,模型建立單元包括:
構(gòu)建子單元,用于構(gòu)建隸屬度函數(shù);
參數(shù)設置子單元,用于將支持向量機(svm)訓練函數(shù)的權(quán)重參數(shù)設置為隸屬度函數(shù)得到模糊支持向量機(fsvm);
訓練子單元,用于利用第一api調(diào)用日志樣本和第二api調(diào)用日志樣本訓練模糊支持向量機(fsvm)得到異常行為識別模型。
一種應用的異常行為識別裝置,包括:
日志獲取單元,用于獲取應用運行時的api調(diào)用日志;
分類識別單元,用于利用上述任一種方法建立的應用異常行為識別模型對api調(diào)用日志進行分類以識別異常行為。
本發(fā)明技術(shù)方案,具有如下優(yōu)點:
1.本發(fā)明實施例提供的應用異常行為識別模型建立方法及裝置、識別方法及裝置,可以實時地根據(jù)應用在真機上實際運行時采集到的api接口調(diào)用日志來識別應用的行為是否異常,從而可以對應用在實際使用時的行為進行實時檢測。解決了現(xiàn)有的應用異常行為檢測方法,只能在定制的模擬機上運行待檢測應用來采集行為數(shù)據(jù),無法有效覆蓋應用在實際使用情況下的真機環(huán)境和應用運行時的各類觸發(fā)異常行為的因素。另外,由于api接口調(diào)用涉及用戶的隱私,所以通過該方法建立的模型主要適用于一些對保護用戶隱私的要求低的一些基于安卓系統(tǒng)的移動應用,例如可以是面向電力企業(yè)的移動應用。
2.本發(fā)明實施例提供的應用異常行為識別模型建立方法及裝置、識別方法及裝置,利用反射機制對應用運行時的native層進行hook,無需獲取系統(tǒng)root權(quán)限,可以在不影響移動應用正常運行的情況下,實現(xiàn)對應用敏感api調(diào)用的攔截和監(jiān)控。
附圖說明
為了更清楚地說明本發(fā)明具體實施方式或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對具體實施方式或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施方式,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例1中一種應用異常行為識別模型的建立方法的流程圖;
圖2為本發(fā)明實施例1中一種api調(diào)用日志監(jiān)控函數(shù)注入方法的流程圖;
圖3為本發(fā)明實施例1中一種api調(diào)用日志監(jiān)控函數(shù)注入過程的示意圖;
圖4為本發(fā)明實施例1中一種獲取應用異常行為識別分類器方法的流程圖;
圖5為本發(fā)明實施例3中一種應用的異常行為識別方法的流程圖;
圖6本發(fā)明實施例3中一種應用異常行為識別分類器建立和異常行為識別方法的整體流程示意圖;
圖7為本發(fā)明實施例4中一種應用異常行為識別模型的建立裝置的原理框圖;
圖8為本發(fā)明實施例5中一種應用的異常行為識別裝置的原理框圖。
具體實施方式
下面將結(jié)合附圖對本發(fā)明的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
此外,下面所描述的本發(fā)明不同實施方式中所涉及的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互結(jié)合。
實施例1
如圖1所示,本實施例提供了一種應用異常行為識別模型的建立方法,包括以下步驟:
s11:分別獲取多個正常應用樣本的第一api(applicationprogramminginterface,應用程序編程接口)調(diào)用日志樣本、多個惡意應用樣本的第二api調(diào)用日志樣本。該正常應用樣本和惡意應用樣本可以是待檢測應用以外的其他應用。第一api調(diào)用日志樣本和第二api調(diào)用日志樣本所對應的api接口與實際檢測時使用的api調(diào)用日志所對應的api接口是一致的。
s12:根據(jù)第一api調(diào)用日志樣本和第二api調(diào)用日志樣本建立異常行為識別模型。
本實施例提供的應用異常行為識別模型的建立方法,具體利用樣本應用的api接口調(diào)用日志來預先建立識別模型,根據(jù)該方法可以建立應用異常行為識別模型,該識別模型可以實時地根據(jù)應用在真機上實際運行時采集到的api接口調(diào)用日志來識別應用的行為是否異常,從而可以對應用在實際使用時的行為進行實時檢測。解決了現(xiàn)有的應用異常行為檢測方法,只能在定制的模擬機上運行待檢測應用來采集行為數(shù)據(jù),無法有效覆蓋應用在實際使用情況下的真機環(huán)境和應用運行時的各類觸發(fā)異常行為的因素。另外,由于api接口調(diào)用涉及用戶的隱私,所以通過該方法建立的模型主要適用于一些對保護用戶隱私的要求低的一些基于安卓系統(tǒng)的移動應用,例如可以是面向電力企業(yè)的移動應用。
作為可選的具體實施方式,如圖2和3所示,上述步驟s11,也即分別獲取多個正常應用樣本的第一api調(diào)用日志樣本、多個惡意應用樣本的第二api調(diào)用日志樣本的步驟包括:
s111:將jave層的api接口調(diào)用函數(shù)轉(zhuǎn)換為native層api接口調(diào)用函數(shù)(native_api),具體是通過set_method_flag方法將函數(shù)設置為native。
s112:修改native層api接口調(diào)用函數(shù)的屬性以轉(zhuǎn)為調(diào)用native_hook函數(shù)。由于在native函數(shù)體數(shù)據(jù)結(jié)構(gòu)中包含nativefunc屬性,指向該native函數(shù)的入口,通過修改nativefunc屬性可以達到控制函數(shù)流程的目的。因此,可以通過修改native層api接口調(diào)用函數(shù)的nativefunc屬性指向自己實現(xiàn)的native函數(shù)native_hook(),從而實現(xiàn)了對源java函數(shù)的調(diào)用轉(zhuǎn)為調(diào)用native函數(shù)native_hook()。
s113:通過native_hook函數(shù)回調(diào)java層中注入的日志監(jiān)控函數(shù)以實時記錄api接口的調(diào)用,記錄正常應用樣本的api接口調(diào)用即得到第一api調(diào)用日志樣本,記錄惡意應用樣本的api接口調(diào)用即得到第二api調(diào)用日志樣本。
本實施例提供的應用異常行為識別模型的建立方法,利用反射機制對應用運行時的native層進行hook,無需獲取系統(tǒng)root權(quán)限,可以在不影響移動應用正常運行的情況下,實現(xiàn)對應用敏感api調(diào)用的攔截和監(jiān)控。
本實施例中,上述步驟s11,也即分別獲取多個正常應用樣本的第一api調(diào)用日志樣本、多個惡意應用樣本的第二api調(diào)用日志樣本的步驟還包括:
分別在正常應用樣本、惡意應用樣本中通過hook注入日志監(jiān)控函數(shù)后,將其批量運行于安卓模擬器上,采集得到正常應用樣本、惡意應用樣本在運行時的api函數(shù)調(diào)用日志。該安卓模擬器可以在pc機上創(chuàng)建。
本實施例中,由于原始第一api調(diào)用日志樣本和原始第二api調(diào)用日志樣本記錄的是各類api函數(shù)調(diào)用字符串,不能作為svm(支持向量機svm(supportvectormachine))訓練和識別用的輸入數(shù)據(jù),因此需要進行預處理。上述步驟s12還包括分別對第一api調(diào)用日志樣本和第二api調(diào)用日志樣本進行預處理的步驟,具體包括:
首先,分別對第一api調(diào)用日志樣本和第二api調(diào)用日志樣本中的特征向量元素進行數(shù)值化處理。原始第一api調(diào)用日志樣本和原始第二api調(diào)用日志樣本記錄的各類api函數(shù)調(diào)用字符串,可以構(gòu)成7維的特征向量,特征向量元素是固定的,通過對特征向量中每個元素用數(shù)值進行一一映射,從而得到數(shù)值化的特征向量,可表示為x={x1,x2,···,xi}i∈[1,7]i∈z。xi為數(shù)值化后的特征向量元素。
然后,對數(shù)值化后的各特征向量元素進行線性變換以使各特征向量元素的數(shù)值處于0-1之間。將特征向量元素映射到區(qū)間[0,1],可以減少量綱影響。轉(zhuǎn)換函數(shù)為:
其中,xmax為訓練樣本數(shù)據(jù)的最大值,xmin為訓練樣本數(shù)據(jù)的最小值。
針對有些應用,例如電力企業(yè)應用的惡意行為難以采集,樣本極少,與正常行為樣本數(shù)量不平衡,因此選用適用于分類不平衡樣本的模糊支持向量機(fsvm)作為智能檢測算法。具體地,如圖4所示,上述步驟s12,即根據(jù)第一api調(diào)用日志樣本和第二api調(diào)用日志樣本建立異常行為識別模型的步驟包括:
s121:構(gòu)建隸屬度函數(shù)。隸屬度函數(shù)的設計是fsvm訓練和檢測實現(xiàn)的關(guān)鍵。假設現(xiàn)有包含l個樣本的訓練樣本集(xi,yi),xi∈rn,yi∈{-1,+1},i=1,2,......,l,隸屬度函數(shù)為:
其中,s+i表示異常行為類(也叫正類)樣本的隸屬度、s+i表示正常行為類(也叫負類)樣本的隸屬度;m+,m-為非平衡特征因子,分別表示異常行為類樣本和正常行為類樣本獲得的統(tǒng)一權(quán)重,其值由正負類樣本數(shù)量和分散程度決定,反映的是類間樣本不平衡特征,目的是用于減小樣本不平衡對svm分類面偏移的影響;
s122:可以利用libsvm工具包開發(fā)fsvm訓練和檢測算法,將支持向量機(svm)訓練函數(shù)的權(quán)重參數(shù)設置為隸屬度函數(shù)得到模糊支持向量機(fsvm)。fsvm核函數(shù)采用徑向基核函數(shù)exp(-g*||u-v||2),核參數(shù)g和fsvm懲罰系數(shù)v利用網(wǎng)格搜索法參數(shù)尋優(yōu)。
s123:利用第一api調(diào)用日志樣本和第二api調(diào)用日志樣本訓練模糊支持向量機(fsvm)得到作為應用異常行為識別模型的最優(yōu)分類器。具體地,以采集得到的第一api調(diào)用日志樣本和第二api調(diào)用日志樣本作為fsvm輸入,正常行為樣本標簽設置為1,異常行為標簽設置為-1。最優(yōu)分類器的判別函數(shù)為:
其中,x為待檢測樣本,xi為支持向量,n為支持向量數(shù)目,αi為拉格朗日乘子,k(xi,x)為核函數(shù),ρ為超平面截距,f(x)為分類檢測結(jié)果。
本實施例提供的應用異常行為識別模型的建立方法,針對一些應用的異常行為樣本難以獲取,與正常行為樣本存在樣本不平衡的情況,引入不平衡分類算法fsvm來建立實現(xiàn)異常行為智能檢測的識別模型。
實施例2
本實施例提供了一種應用異常行為識別模型的建立方法,包括以下步驟:
第一步:分別獲取多個正常應用樣本和多個惡意應用樣本。
第二步:分別對正常應用樣本和惡意應用樣本重打包注入敏感api接口的nativehook函數(shù)和監(jiān)控日志函數(shù)。
第三步:將注入了監(jiān)控日志函數(shù)的正常應用樣本和惡意應用樣本批量運行于安卓模擬器上,分別采集得到正常應用樣本的第一api調(diào)用日志樣本、惡意應用樣本的第二api調(diào)用日志樣本。
第四步:構(gòu)建隸屬度函數(shù)、選用核函數(shù)。
第五步:以正常應用樣本的第一api調(diào)用日志樣本、惡意應用樣本的第二api調(diào)用日志樣本作為fsvm輸入,正常行為樣本標簽設置為1,異常行為樣本標簽設置為-1,訓練得到最優(yōu)fsvm分類器,作為應用異常行為識別模型。
實施例3
本實施例提供了一種應用的異常行為識別方法,如圖5和6所示,可以適用于電力企業(yè)移動應用,包括如下步驟:
s31:獲取應用運行時的api調(diào)用日志,該api調(diào)用日志是應用在真機上實際運行時的敏感api調(diào)用日志。該應用可以是電力企業(yè)移動應用。
s32:利用根據(jù)上述實施例1或2提供的方法建立的應用異常行為識別模型對api調(diào)用日志進行分類以識別異常行為。
本實施例提供的應用的異常行為識別方法,可以實時地根據(jù)應用在真機上實際運行時采集到的api接口調(diào)用日志來識別應用的行為是否異常,從而可以對應用在實際使用時的行為進行實時檢測。解決了現(xiàn)有的應用異常行為檢測方法,只能在定制的模擬機上運行待檢測應用來采集行為數(shù)據(jù),無法有效覆蓋應用在實際使用情況下的真機環(huán)境和應用運行時的各類觸發(fā)異常行為的因素。另外,由于api接口調(diào)用涉及用戶的隱私,所以通過該方法建立的模型主要適用于一些對保護用戶隱私的要求低的一些基于安卓系統(tǒng)的移動應用,例如可以是面向電力企業(yè)的移動應用。
本實施例中并不需要獲取應用的所有api接口調(diào)用日志,只需要比較敏感的api接口調(diào)用日志來判斷應用是否存在異常行為。因此,上述步驟s31,即獲取應用運行時的api調(diào)用日志的步驟包括提取敏感api接口的步驟,具體如下:
首先,反編譯應用的安裝包文件獲取應用的權(quán)限使用列表,具體可以使用apktool工具來反編譯應用的安裝包文件得到應用的androidmanifest.xml文件,通過遍歷該文件來獲取應用的權(quán)限使用列表;
然后,根據(jù)應用的權(quán)限使用列表獲取應用的敏感api接口。具體是通過查詢開源工具pscout的權(quán)限-api映射表來獲取應用的敏感api調(diào)用列表。權(quán)限-敏感api接口-敏感行為對應關(guān)系如下表1。
表1權(quán)限-敏感api接口-敏感行為
從上表可以看出,可以用于判斷應用的行為是否異常的敏感api接口對應的敏感行為包括發(fā)送短信、讀取短信、打開wifi、打開移動網(wǎng)絡、獲取地址位置信息、撥打電話和連接網(wǎng)絡。
具體地,上述步驟s32,即根據(jù)api調(diào)用日志來識別應用的異常行為的具體過程為:
首先,對獲取的敏感api調(diào)用日志進行預處理,包括數(shù)值化和歸一化兩步,具體處理過程可參照上述實施例1。
然后,利用應用異常行為識別模型對預處理后的敏感api調(diào)用日志進行分類,判斷應用的行為是否異常。應用異常行為識別模型,也即fsvm分類器,其判別函數(shù)為:
其中,x為待檢測樣本,xi為支持向量,n為支持向量數(shù)目,αi為拉格朗日乘子,k(xi,x)為核函數(shù),ρ為超平面截距,f(x)為分類檢測結(jié)果。根據(jù)訓練階段標簽設置情況,如果f(x)=1,則對應的應用行為是正常的,如果f(x)=-1,則對應的應用行為是異常的。即,當f(x)=-1時,就進行實時報警或提醒。
上述步驟s32根據(jù)api調(diào)用日志來識別應用的異常行為的步驟,可由服務器來執(zhí)行。當由服務器來執(zhí)行上述步驟s32的具體步驟時,上述步驟s31獲取的敏感api調(diào)用日志就需要上傳至服務器。
實施例4
如圖7所示,本實施例提供了一種應用異常行為識別模型的建立裝置,包括:
日志樣本獲取單元u41,用于分別獲取多個正常應用樣本的第一api調(diào)用日志樣本、多個惡意應用樣本的第二api調(diào)用日志樣本;
模型建立單元u42,用于根據(jù)第一api調(diào)用日志樣本和第二api調(diào)用日志樣本建立異常行為識別模型。
本實施例提供的應用異常行為識別模型的建立裝置,具體利用樣本應用的api接口調(diào)用日志來預先建立識別模型,利用該裝置建立的識別模型可以實時地根據(jù)應用在真機上實際運行時采集到的api接口調(diào)用日志來識別應用的行為是否異常,從而可以對應用在實際使用時的行為進行實時檢測。解決了現(xiàn)有的應用異常行為檢測方法,只能在定制的模擬機上運行待檢測應用來采集行為數(shù)據(jù),無法有效覆蓋應用在實際使用情況下的真機環(huán)境和應用運行時的各類觸發(fā)異常行為的因素。另外,由于api接口調(diào)用涉及用戶的隱私,所以通過該裝置建立的模型主要適用于一些對保護用戶隱私的要求低的一些基于安卓系統(tǒng)的移動應用,例如可以是面向電力企業(yè)的移動應用。
作為優(yōu)選的具體實施方式,日志樣本獲取單元u41包括:
轉(zhuǎn)換子單元,用于將jave層的api接口調(diào)用函數(shù)轉(zhuǎn)換為native層api接口調(diào)用函數(shù);
屬性修改子單元,用于修改native層api接口調(diào)用函數(shù)的屬性以轉(zhuǎn)為調(diào)用native_hook函數(shù);
日志記錄子單元,用于通過native_hook函數(shù)回調(diào)java層中注入的日志監(jiān)控函數(shù)以實時記錄api接口的調(diào)用。
本實施例提供的應用異常行為識別模型的建立裝置,利用反射機制對應用運行時的native層進行hook,無需獲取系統(tǒng)root權(quán)限,可以在不影響移動應用正常運行的情況下,實現(xiàn)對應用敏感api調(diào)用的攔截和監(jiān)控。
作為可選的具體實施方式,模型建立單元u42包括:
數(shù)值化子單元,用于分別對第一api調(diào)用日志樣本和第二api調(diào)用日志樣本中的特征向量元素進行數(shù)值化處理;
歸一化子單元,用于對數(shù)值化后的各特征向量元素進行線性變換以使各特征向量元素的數(shù)值處于0-1之間。
作為另一可選的具體實施方式,模型建立單元u42包括:
構(gòu)建子單元,用于構(gòu)建隸屬度函數(shù);
參數(shù)設置子單元,用于將支持向量機(svm)訓練函數(shù)的權(quán)重參數(shù)設置為隸屬度函數(shù)得到模糊支持向量機(fsvm);
訓練子單元,用于利用第一api調(diào)用日志樣本和第二api調(diào)用日志樣本訓練模糊支持向量機(fsvm)得到最優(yōu)分類器。
本實施例提供的應用異常行為識別模型的建立裝置,針對一些應用的異常行為樣本難以獲取,與正常行為樣本存在樣本不平衡的情況,引入不平衡分類算法fsvm來建立實現(xiàn)異常行為智能檢測的識別模型。
實施例5
如圖8所示,本實施例提供了一種應用的異常行為識別裝置,包括:
日志獲取單元u51,用于獲取應用運行時的api調(diào)用日志;
分類識別單元u52,用于利用上述實施例1或2提供的方法建立的應用異常行為識別模型對api調(diào)用日志進行分類以識別異常行為。
本實施例提供的應用的異常行為識別裝置,可以實時地根據(jù)應用在真機上實際運行時采集到的api接口調(diào)用日志來識別應用的行為是否異常,從而可以對應用在實際使用時的行為進行實時檢測。解決了現(xiàn)有的應用異常行為檢測方法,只能在定制的模擬機上運行待檢測應用來采集行為數(shù)據(jù),無法有效覆蓋應用在實際使用情況下的真機環(huán)境和應用運行時的各類觸發(fā)異常行為的因素。另外,由于api接口調(diào)用涉及用戶的隱私,所以通過該裝置建立的模型主要適用于一些對保護用戶隱私的要求低的一些基于安卓系統(tǒng)的移動應用,例如可以是面向電力企業(yè)的移動應用。
作為可選的具體實施方式,日志獲取單元u51包括:
權(quán)限使用列表獲取子單元,用于反編譯應用的安裝包獲取應用的權(quán)限使用列表;
敏感api接口獲取子單元,用于根據(jù)應用的權(quán)限使用列表獲取應用的敏感api接口。
顯然,上述實施例僅僅是為清楚地說明所作的舉例,而并非對實施方式的限定。對于所屬領(lǐng)域的普通技術(shù)人員來說,在上述說明的基礎上還可以做出其它不同形式的變化或變動。這里無需也無法對所有的實施方式予以窮舉。而由此所引伸出的顯而易見的變化或變動仍處于本發(fā)明創(chuàng)造的保護范圍之中。