亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于非用戶操作序列的惡意軟件檢測方法

        2018-03-20 00:47:41羅文塽曹天杰
        計算機(jī)應(yīng)用 2018年1期
        關(guān)鍵詞:函數(shù)調(diào)用流程圖調(diào)用

        羅文塽,曹天杰

        (中國礦業(yè)大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 徐州 221116)(*通信作者電子郵箱luows@cumt.edu.cn)

        0 引言

        Android自2012年以來一直是最流行的移動操作系統(tǒng),它以其開放性和實(shí)用性贏得了大多數(shù)人的喜愛[1]。由于其開放性等特點(diǎn),Android的市場份額在2016年第三季度達(dá)到了86.8%,僅在中國國內(nèi),Android手機(jī)就賣出了多達(dá)4.25億部,占國內(nèi)智能手機(jī)銷售量的81%。

        近幾年,Android手機(jī)發(fā)展迅猛,Android平臺上的應(yīng)用軟件數(shù)量日益增多,Android手機(jī)為用戶帶來了極大便利,但同時也為黑客提供了各種機(jī)會。由于Android系統(tǒng)的開源性以及市場自身制度的不完善,導(dǎo)致惡意軟件數(shù)量急劇增加[2]。McAfee Labs的一份報告中顯示,移動惡意軟件數(shù)量在2017年第一季度增長了37%[3]。Android惡意軟件數(shù)量一直處于上升階段,并且新的惡意軟件數(shù)量也在不斷增加。今天,雖然用戶享受了Android應(yīng)用程序帶來的便利,但用戶的個人信息,如電話號碼、當(dāng)前位置和聯(lián)系信息等,可能會被一些不良的應(yīng)用程序開發(fā)商濫用。許多惡意的智能手機(jī)應(yīng)用程序未經(jīng)用戶許可竊取用戶信息,撥打電話,發(fā)送短信等,給用戶帶來了巨大的威脅。為了保護(hù)用戶,Android應(yīng)用市場非常需要強(qiáng)大的分析工具來識別和刪除惡意應(yīng)用,因此,如何有效地完成對惡意軟件的檢測已經(jīng)成為了一項(xiàng)亟待解決的問題。

        1 相關(guān)工作

        近些年Android惡意軟件的檢測被越來越多的研究學(xué)者所關(guān)注,目前惡意軟件檢測工作主要分為靜態(tài)檢測和動態(tài)檢測[4]。

        靜態(tài)分析是在不運(yùn)行代碼的情況下,對應(yīng)用程序進(jìn)行反編譯,然后對其進(jìn)行源代碼級的解析。Junaid等[5]提出了一個Dexteroid的靜態(tài)分析框架,它通過反向工程生命周期模型來捕獲Android組件的行為,導(dǎo)出事件序列并使用它們來檢測由特定事件序列發(fā)起的攻擊。Wu等[6]通過提取數(shù)據(jù)流相關(guān)的應(yīng)用程序編程接口(Application Programming Interface, API)級特征,并采用機(jī)器學(xué)習(xí)方法進(jìn)一步優(yōu)化數(shù)據(jù)流相關(guān)的API列表進(jìn)行惡意軟件檢測,該方法大幅度提高了敏感數(shù)據(jù)傳輸分析的效率,得到了97.66%的準(zhǔn)確率。Arzt等[7]提出了一個靜態(tài)污點(diǎn)分析系統(tǒng)FlowDroid,通過構(gòu)建一個過程間控制流圖,采用圖可達(dá)性分析來識別可能的隱私泄露路徑。Du等[8]提出了一種基于多源的方法來檢測Android惡意軟件,強(qiáng)調(diào)傳統(tǒng)的靜態(tài)特性、控制流圖和重打包的特點(diǎn)。每個類別的特征被視為特征提取規(guī)則建立和分類中的獨(dú)立信息源。使用Dempster-Shafer算法來融合這些信息源,以提高惡意軟件檢測的準(zhǔn)確性,而不增加從反匯編代碼中提取的太多不穩(wěn)定特性,并且在抗代碼混淆技術(shù)方面具有更好的性能。Guan等[9]提出了一個RepDetector的原型,該原型基于語義的方法來檢測重打包的應(yīng)用程序。通過使用狀態(tài)流圖捕獲函數(shù)的輸入輸出狀態(tài),以描述應(yīng)用程序的語義行為,通過使用馬氏距離比較不同應(yīng)用程序之間函數(shù)的相似度,從而進(jìn)行惡意軟件識別,該方法可以有效地檢測出重打包的應(yīng)用程序,并且可以容忍某些噪聲插入或復(fù)雜的混淆,因此具有抗混淆性。Feizollah等[10]提出了AndroDialysis,一個分析兩種不同類型的Intent對象的系統(tǒng)。該系統(tǒng)評估顯式和隱式Android Intents的有效性,作為識別惡意應(yīng)用程序的一個顯著特征。實(shí)驗(yàn)結(jié)果表明Intents擁有語義豐富的特征,與其他特征如權(quán)限相比,能夠?qū)阂廛浖囊鈭D進(jìn)行編碼,具有更快、更好的惡意軟件檢測效果。Wang等[11]提出了一個DroidChain的原型系統(tǒng),通過結(jié)合靜態(tài)分析和行為鏈模型,使用矩陣?yán)碚揥xshall-extend來計算可達(dá)性矩陣從而進(jìn)行惡意軟件檢測。

        動態(tài)分析通過在受控環(huán)境中運(yùn)行應(yīng)用程序并監(jiān)視其行為來完成惡意軟件的檢測。動態(tài)檢測使用的技術(shù)手段主要是軟件行為監(jiān)控,從而得到軟件的行為信息。Xiao等[12]使用系統(tǒng)調(diào)用序列來區(qū)分惡意軟件。通過跟蹤在不同事件下的應(yīng)用程序的系統(tǒng)調(diào)用,使用兩個不同的特征模型頻率向量和共生矩陣,從系統(tǒng)調(diào)用序列中提取特征,并應(yīng)用重力向量的自適應(yīng)正則化和其他機(jī)器學(xué)習(xí)算法,分別基于上述兩個模型來識別Android惡意軟件。實(shí)驗(yàn)結(jié)果表明,共生矩陣具有更好的檢測率。Enck等[13]提出TaintDroid,目的是跟蹤隱私敏感數(shù)據(jù)流,并監(jiān)視應(yīng)用程序如何訪問和操縱用戶個人數(shù)據(jù),以便檢測敏感數(shù)據(jù)何時通過不受信任的應(yīng)用程序離開系統(tǒng)。孫潤康等[14]分析了當(dāng)前Android惡意軟件特征,提出了一種Android軟件行為動態(tài)監(jiān)控框架,并通過采用信息增益、卡方檢驗(yàn)和Fisher Score的特征選擇方法評估了支持向量機(jī)、決策樹、k-近鄰和樸素貝葉斯分類器在Android惡意軟件分類檢測方面的有效性。Feng等[15]提出了一個SCDFLOW(Selecting Critical Data Flows)系統(tǒng),該系統(tǒng)通過特征選擇算法CFlowSel,基于每個流的頻率差來自動選擇Android應(yīng)用程序中的關(guān)鍵數(shù)據(jù)流,并將這些關(guān)鍵數(shù)據(jù)流作為異常行為檢測特征,通過關(guān)鍵數(shù)據(jù)流進(jìn)行惡意軟件識別。

        靜態(tài)檢測可以對軟件進(jìn)行全面分析,并且檢測速度較快,但對未知惡意軟件的檢測具有一定滯后性。動態(tài)檢測準(zhǔn)確率較高,但同時檢測成本也較高,檢測時間較長,且無法覆蓋程序中的所有路徑。本文采用靜態(tài)檢測的方法。對于智能手機(jī)惡意軟件的靜態(tài)檢測主要是針對應(yīng)用程序中敏感數(shù)據(jù)傳輸?shù)臋z測,即用戶的隱私數(shù)據(jù)是否離開設(shè)備。然而,在這個時代,許多良性的應(yīng)用程序通常需要收集敏感數(shù)據(jù),如位置、聯(lián)系人來提供給用戶更多的功能和服務(wù)。云的出現(xiàn),使得大多數(shù)應(yīng)用程序的數(shù)據(jù)向云端發(fā)送;同時,竊取用戶數(shù)據(jù)的惡意應(yīng)用程序也可能表現(xiàn)出相同的行為,使用戶的隱私信息遭到泄露,這大幅度增加了通過敏感數(shù)據(jù)傳輸?shù)臋z測來識別惡意應(yīng)用程序的難度,因此,敏感數(shù)據(jù)的傳輸本身可能不表示真正的隱私泄露。本文提出了一種靜態(tài)的惡意軟件檢測方法,通過提取API調(diào)用信息,構(gòu)建應(yīng)用程序的函數(shù)調(diào)用流程圖,提取出其中的非用戶操作序列進(jìn)行惡意軟件檢測,并通過不斷更新惡意行為庫的方式來解決對未知惡意軟件的檢測的滯后性問題。

        2 相關(guān)概念

        2.1 敏感API

        應(yīng)用程序的字節(jié)碼中包含應(yīng)用程序的代碼等信息,如API調(diào)用信息。應(yīng)用程序使用這些API函數(shù)完成應(yīng)用程序所需功能,如獲取手機(jī)的個人信息,發(fā)送短信、撥打電話等;同樣惡意軟件也需通過調(diào)用API函數(shù)來完成相應(yīng)的惡意行為。所以,利用API調(diào)用信息,可以間接地推斷出應(yīng)用程序的行為和意圖,尤其是那些權(quán)限受到保護(hù)的API調(diào)用函數(shù)。敏感API只占API總數(shù)的一小部分,然而,通過它們,惡意軟件可以訪問敏感信息或執(zhí)行敏感任務(wù)。為了識別惡意軟件,本文重點(diǎn)關(guān)注受Android權(quán)限管理的部分敏感API。

        2.2 函數(shù)調(diào)用流程

        函數(shù)調(diào)用流程圖表示了應(yīng)用程序中函數(shù)的調(diào)用關(guān)系,函數(shù)之間的調(diào)用關(guān)系反映了應(yīng)用程序的行為,本文使用它將給定的應(yīng)用程序轉(zhuǎn)換為圖形表示,即函數(shù)調(diào)用流程圖,其中包含必要的結(jié)構(gòu)信息來描述應(yīng)用程序的行為。

        通過使用反編譯工具對應(yīng)用程序進(jìn)行反編譯得到應(yīng)用程序的字節(jié)碼文件,從中捕獲應(yīng)用程序中函數(shù)之間的調(diào)用關(guān)系。它可以表示為有向圖G=(V,E)。V={vi|1≤i≤n}表示給定應(yīng)用程序調(diào)用的函數(shù)集合,其中每個vi∈V對應(yīng)一個函數(shù)名稱。E?V×V表示函數(shù)調(diào)用集合,其中邊(vi,vj)∈E表示從調(diào)用函數(shù)vi到被調(diào)用函數(shù)vj存在一個調(diào)用,vi是調(diào)用函數(shù),vj是被調(diào)用函數(shù)。

        2.3 非用戶操作序列

        Android應(yīng)用程序經(jīng)常在不經(jīng)過用戶同意的情況下,將用戶的隱私數(shù)據(jù)傳輸?shù)轿粗康牡?。尤其是在云的出現(xiàn)后,許多良性的應(yīng)用程序提供從云到終端用戶的服務(wù),這些應(yīng)用程序通常需要收集用戶的隱私數(shù)據(jù)發(fā)送到云以完成應(yīng)用程序的某些功能。同時,惡意應(yīng)用程序利用云作為中介進(jìn)行用戶的隱私數(shù)據(jù)的竊取。所以,敏感數(shù)據(jù)的傳輸本身不能表示真正的隱私泄露。本文將非用戶意圖的敏感數(shù)據(jù)傳輸視為隱私泄露,而用戶意圖的敏感數(shù)據(jù)傳輸視為正常行為,因此,使用非用戶操作序列的方式進(jìn)行惡意軟件檢測。

        1)用戶意圖的數(shù)據(jù)傳輸。為了使用應(yīng)用程序提供的一些功能,用戶經(jīng)常通過應(yīng)用程序發(fā)送其移動終端的隱私信息。例如,當(dāng)使用信息管理應(yīng)用時,用戶可以通過在觸摸屏上點(diǎn)擊幾個按鈕來將信息轉(zhuǎn)發(fā)到第三方。當(dāng)使用地圖等基于位置的應(yīng)用程序時,用戶通常會發(fā)送其所在的位置得到用戶想要獲取的一些信息。由于應(yīng)用程序獲取用戶隱私信息是在用戶知情且與用戶意圖一致的情況下,所以本文不應(yīng)將這種傳輸視為隱私泄漏。

        2)非用戶意圖的數(shù)據(jù)傳輸。應(yīng)用程序在未經(jīng)用戶的許可下對用戶的隱私數(shù)據(jù)進(jìn)行傳輸被定義為非用戶意圖的數(shù)據(jù)傳輸或隱私泄漏。在大多數(shù)情況下,用戶不知道這種傳輸,因?yàn)閻阂鈶?yīng)用程序總是以隱身的方式這樣做。

        3)非用戶操作序列。本文將應(yīng)用程序的所有函數(shù)調(diào)用流程中不存在用戶操作的序列定義為非用戶操作序列。本文通過提取應(yīng)用程序中的API調(diào)用信息構(gòu)建應(yīng)用程序的函數(shù)調(diào)用流程圖,刪除函數(shù)流程圖中的用戶操作調(diào)用序列,進(jìn)一步提取出其中的非用戶操作序列。

        2.4 編輯距離

        編輯距離(Edit Distance),又稱Levenshtein距離,是指兩個字符串之間由一個轉(zhuǎn)成另一個所需的最少編輯操作次數(shù)。編輯操作包括將一個字符替換成另一個字符、插入一個字符、刪除一個字符。編輯距離越小,兩個字符串的相似度越大。為了計算出兩個非用戶操作序列的相似度,本文通過計算兩個非用戶操作序列之間的編輯距離從而得到序列之間的差異度,進(jìn)行相似度判斷。本文通過替換、插入、刪除操作求出兩個序列的最小編輯距離。

        3 本文惡意軟件檢測方法的實(shí)現(xiàn)

        本文惡意軟件檢測方法如圖1所示,主要由敏感API的選取、非用戶操作序列的提取、非用戶操作序列之間的相似性度量以及惡意軟件的檢測識別四部分組成。

        該檢測方法的主要工作步驟如下:

        1)通過使用Androguard分析工具對應(yīng)用程序進(jìn)行反編譯,提取出其中的API調(diào)用信息。對惡意樣本中使用的API進(jìn)行統(tǒng)計分析,提取出其中在惡意樣本中使用頻率較高的API作為敏感API。

        2)對訓(xùn)練樣本進(jìn)行API調(diào)用信息提取,并以其所調(diào)用的API函數(shù)為核心構(gòu)建樣本的函數(shù)調(diào)用流程圖,提取出函數(shù)調(diào)用圖中的非用戶操作序列作為惡意軟件檢測的惡意行為庫。

        3)通過對待檢測樣本進(jìn)行反編譯,提取出其中的敏感API,構(gòu)建函數(shù)流程圖,并提取出樣本中的非用戶操作序列。采用編輯距離算法計算待檢測樣本的非用戶操作序列與惡意行為庫的差異度。

        4)將計算出來的差異度值與設(shè)定的閾值相比較來進(jìn)行惡意軟件檢測。如果待檢測樣本與惡意行為庫的差異度小于或等于該閾值,則判定該檢測樣本為惡意軟件;否則為正常樣本。

        3.1 敏感API的選取

        Android平臺提供了一些API,應(yīng)用軟件可用這些函數(shù)與底層Android系統(tǒng)進(jìn)行交互。這些API涉及收集用戶的私人信息或系統(tǒng)信息,訪問Web服務(wù),發(fā)送和刪除手機(jī)短信服務(wù)(Short Message Service, SMS)消息,錄音,訪問和閱讀內(nèi)容提供商等。例如:“getLine1Number()”函數(shù)用于獲取用戶手機(jī)號碼,造成用戶手機(jī)號碼泄露;“getDeviceId()”函數(shù)用于獲取設(shè)備Id,造成設(shè)備IMEI泄露。本文以統(tǒng)計方式通過對實(shí)驗(yàn)樣本中用到的API進(jìn)行分析以確定惡意軟件經(jīng)常使用的敏感API,如表1所示。

        表1 敏感API

        3.2 非用戶操作序列的提取方法

        由于良性軟件和惡意軟件都會對用戶的敏感信息進(jìn)行操作,因此敏感信息的傳輸本身可能不代表真正的隱私泄露,但通常用戶不希望應(yīng)用程序在不知情的情況下對隱私信息進(jìn)行操作,所以敏感數(shù)據(jù)是否經(jīng)用戶操作來進(jìn)行傳輸可用來作為識別惡意行為的一個指標(biāo)。因此,本文中重點(diǎn)研究未經(jīng)用戶操作的敏感信息傳輸是否存在惡意行為,進(jìn)而判斷其是否為惡意軟件。函數(shù)之間的調(diào)用關(guān)系反映了應(yīng)用程序的行為,本文使用函數(shù)調(diào)用圖來表示應(yīng)用程序的函數(shù)調(diào)用關(guān)系,進(jìn)而從中提取應(yīng)用程序的非用戶操作序列,進(jìn)行惡意軟件行為識別。

        本文通過使用Androguard分析工具對Android安裝包(Android Package, APK)進(jìn)行反編譯,提取出API調(diào)用信息。以其所調(diào)用的敏感API函數(shù)為核心構(gòu)建應(yīng)用程序的函數(shù)調(diào)用流程圖。對于調(diào)用了敏感API的函數(shù),采用向后遍歷調(diào)用圖以查找可能觸發(fā)它的所有事件。在所有觸發(fā)事件中通過KMP(Knuth-Morris-Pratt)算法搜索是否存在用戶操作。在本文中將所有觸發(fā)事件的操作序列作為主串,用戶操作作為模式串進(jìn)行用戶操作序列匹配,從而查找是否存在非用戶操作序列,流程如圖2所示。

        3.2.1 函數(shù)調(diào)用圖的構(gòu)建

        本文通過廣度優(yōu)先遍歷構(gòu)建每個敏感API函數(shù)的函數(shù)調(diào)用流程圖,并將所有流程圖合并為應(yīng)用程序的完整函數(shù)流程圖,構(gòu)建函數(shù)調(diào)用流程圖的具體步驟如下:

        1)對于應(yīng)用程序調(diào)用的每個敏感API函數(shù),采用廣度優(yōu)先遍歷的方式,獲得該敏感API函數(shù)所調(diào)用的函數(shù)集合以及被調(diào)用的函數(shù)集合,形成該敏感API函數(shù)的函數(shù)調(diào)用關(guān)系圖。

        2)對圖中每個函數(shù)分別提取其所調(diào)用的函數(shù)的集合以及被調(diào)用的函數(shù)集合插入圖中,重復(fù)遍歷直至應(yīng)用程序中的所有函數(shù)均已被遍歷或程序流程結(jié)束。

        3)將應(yīng)用程序的每個敏感API函數(shù)調(diào)用關(guān)系圖進(jìn)行合并,去除重復(fù)操作成為該應(yīng)用程序的完整函數(shù)調(diào)用關(guān)系圖。

        圖2 非用戶操作序列提取流程

        在上述過程中生成的函數(shù)調(diào)用流程圖,每個節(jié)點(diǎn)代表一個函數(shù),每條邊代表函數(shù)之間的先后調(diào)用關(guān)系。本文采用給節(jié)點(diǎn)編號的方式來表示一個應(yīng)用程序的函數(shù)調(diào)用流程圖,以方便后續(xù)生成的非用戶操作序列之間進(jìn)行比較,從而得出非用戶操作序列之間的差異度。如惡意樣本在獲取設(shè)備ID和發(fā)送信息中所調(diào)用的敏感API函數(shù)getDeviceId()和sendTextMessage()生成的函數(shù)流程如圖3所示,其在生成惡意樣本的整體函數(shù)調(diào)用流程圖的過程中刪除重復(fù)節(jié)點(diǎn),最終形成如圖4所示的函數(shù)調(diào)用流程。

        圖3 惡意樣本中敏感API函數(shù)調(diào)用流程

        3.2.2 非用戶操作序列的提取

        本文通過采用向后遍歷調(diào)用圖以查找函數(shù)調(diào)用流程圖中可能觸發(fā)敏感API函數(shù)的所有事件。在所有觸發(fā)事件中通過KMP算法搜索是否存在用戶操作,進(jìn)而形成非用戶操作序列。提取非用戶操作序列的具體步驟如下:

        1)將上述形成的應(yīng)用程序函數(shù)調(diào)用流程圖采用從尾節(jié)點(diǎn)向后遍歷的方式查找可能觸發(fā)路徑中的敏感API函數(shù)的函數(shù)節(jié)點(diǎn)。

        2)在所有觸發(fā)事件中通過KMP算法搜索是否存在用戶操作。若存在用戶操作,則在函數(shù)調(diào)用流程圖中刪除該路徑,若與其他路徑存在共同部分,則刪除其余部分路徑以保證其他路徑的完整性。

        3)重復(fù)遍歷上述操作直至所有路徑均以被遍歷。函數(shù)調(diào)用流程圖中的所有路徑形成操作序列,最終形成應(yīng)用程序的非用戶操作序列集合。

        在上述過程中,每個非用戶操作序列代表該序列中敏感API函數(shù)的函數(shù)調(diào)用流程,通過將該敏感API函數(shù)的函數(shù)調(diào)用序列與惡意行為庫中相同敏感API函數(shù)下的函數(shù)調(diào)用序列進(jìn)行對比,從而判斷該應(yīng)用程序是否存在惡意行為。

        3.3 非用戶操作序列的相似性度量方式

        本文以敏感API函數(shù)調(diào)用的非用戶操作序列為特征,計算應(yīng)用程序與惡意軟件的相似性,也就是計算相同敏感API函數(shù)調(diào)用的非用戶操作序列的相似性。本文采用編輯距離來計算操作序列的相似性。

        設(shè)str1,str2為需要比較的兩個非用戶操作序列,為了計算兩個非用戶操作序列之間編輯距離,本文通過替換、插入、刪除操作求出兩個序列的最小編輯距離,因此,兩個非用戶操作序列的編輯距離為:

        其中:d[i-1,j]+1代表str2插入一個操作所需代價,d[i,j-1]+1代表字符串str1刪除一個操作所需代價。當(dāng)xi=yj時,表示兩個操作相同,所以與d[i-1,j-1]代價相同;否則代價加1,d[i,j]為以上三者中代價最小的一項(xiàng)。在本文的實(shí)驗(yàn)中,本文將兩個非用戶操作序列的長度分別定義為n,m,則兩個非用戶操作序列的差異度定義為兩個序列的編輯距離之和與兩個序列長度的比值,即:

        在上述計算兩個非用戶操作序列相似性的過程中,兩個序列的編輯距離越小,差異度就越小,相似性越大;反之,編輯距離越大,差異度就越大,相似性越小。

        3.4 惡意軟件的識別

        通過上述的相似性度量方法,計算待檢測樣本中每個敏感API函數(shù)的非用戶操作序列與惡意行為庫中相同敏感API函數(shù)的非用戶操作序列之間的差異度值,將該差異度值與設(shè)定的閾值進(jìn)行比較,當(dāng)待檢測樣本與惡意行為庫的差異度值小于或等于該閾值,則判定該樣本為惡意軟件;否則為正常樣本。

        4 實(shí)驗(yàn)與分析

        4.1 實(shí)驗(yàn)樣本

        為了對本文的方法進(jìn)行驗(yàn)證,從VirusShare和Google官網(wǎng)獲得1 500個樣本,其中有1 200個惡意樣本和300個正常樣本。首先把收集的1 200個惡意軟件分為兩部分,其中70%用于訓(xùn)練作為樣本數(shù)據(jù)集;另外的30%作為檢測數(shù)據(jù)集。通過殺毒軟件對從Google收集的300個應(yīng)用程序進(jìn)行檢測確保實(shí)驗(yàn)的準(zhǔn)確性。

        4.2 度量指標(biāo)

        1)召回率(recall rate)。惡意軟件被正確地檢測為惡意軟件的數(shù)量在所有惡意軟件中的比例:

        recall_rate=TP/(TP+FN)

        2)漏報率(false negative rate)。惡意軟件被錯誤地檢測為良性軟件的數(shù)量在所有惡意軟件中的比例。

        false_negative_rate=FN/(TP+FN)

        3)準(zhǔn)確率(precision rate)。良性軟件被正確地檢測為良性軟件的數(shù)量在所有良性軟件中的比例:

        precision_rate=TN/(TN+FP)

        4)誤報率(false positive rate)。良性軟件被錯誤地檢測為惡意軟件的數(shù)量在所有良性軟件中的比例:

        false_positive_rate=FP/(TN+FP)

        數(shù)值模型中,僅在A2和A3兩個控制孔內(nèi)設(shè)置恒定控制水壓,以此改變煤體中孔隙壓力分布,形成非對稱的孔隙壓力場,如圖6所示。模型邊界荷載為定值,分別為8、12 MPa;控制水壓為一變量,分別為0~10 MPa,每個模型控制水壓相差2 MPa,煤、巖體各項(xiàng)參數(shù)見表1。模擬結(jié)果及分析如下。

        5)正確率(accuracy)。被正確檢測的軟件的數(shù)量在所有軟件中比例:

        accuracy=(TP+TN)/(TP+TN+FP+FN)

        4.3 實(shí)驗(yàn)結(jié)果

        為了驗(yàn)證本文提出的方法的有效性,本文應(yīng)用收集的360個惡意樣本和300的正常樣本進(jìn)行檢測,并與著名的Android惡意應(yīng)用檢測工具Androguard和FlowDroid[7]進(jìn)行對比。Androguard惡意應(yīng)用檢測工具是一個Android惡意軟件靜態(tài)檢測工具,該檢測方法可以查看應(yīng)用程序使用權(quán)限,獲取應(yīng)用程序中的所有方法,獲取調(diào)用某個特殊API的方法信息以及獲取應(yīng)用程序的整體函數(shù)調(diào)用流程,通過靜態(tài)分析應(yīng)用程序代碼檢測惡意應(yīng)用程序。

        本文通過對惡意樣本進(jìn)行逆向分析,提取出惡意樣本中的權(quán)限和API調(diào)用信息。以其所調(diào)用的API函數(shù)為核心構(gòu)建惡意樣本的函數(shù)調(diào)用流程圖,進(jìn)而獲取惡意樣本的非用戶操作序列形成惡意行為庫。對上述待檢測樣本采用相同方法獲得每個API調(diào)用函數(shù)的非用戶操作序列并采用編輯距離算法計算待檢測樣本與惡意行為庫中的編輯距離,將計算出來的差異度值與設(shè)定的閾值作比較,進(jìn)而判斷該檢測樣本是否為惡意軟件。本文選擇不同的閾值進(jìn)行惡意軟件判斷,并對相應(yīng)的檢測效果進(jìn)行比較,結(jié)果如圖5~6所示。

        圖5 不同閾值下的檢測成功率

        綜合圖5~6可以看出,在閾值為0.07時,檢測總體正確率達(dá)到90.3%,此時本文提出的方法具有較好的檢測效果。對于應(yīng)用程序的誤報和漏報情況,主要是由于一些應(yīng)用仍然存在非用戶操作的隱私泄露,其中大多數(shù)應(yīng)用程序是社交網(wǎng)絡(luò)服務(wù)(Social Networking Services, SNS)應(yīng)用程序或具有嵌入式廣告模塊的應(yīng)用程序。另一方面,惡意數(shù)據(jù)泄漏可能會隱藏在一些正常數(shù)據(jù)傳輸之中,以繞過最先進(jìn)的安全驗(yàn)證。

        圖6 不同閾值下的漏報率和誤報率

        將上述實(shí)驗(yàn)中閾值為0.07的檢測結(jié)果與Androguard和FlowDroid進(jìn)行比較,對樣本的檢測結(jié)果如表2所示。

        由表2可以看出,本文所述的惡意軟件檢測方法與Androguard檢測方法相比在正常樣本檢測方面存在一些不足,但在惡意樣本檢測中相比Androguard檢測方法能夠檢測出更多的惡意軟件,檢測效果更優(yōu),比Androguard檢測方法在召回率上提升了30%。與FlowDroid檢測方法相比本文所述的檢測方法在正常樣本和惡意樣本檢測中召回率和準(zhǔn)確率均有提升,在正常樣本檢測中準(zhǔn)確率提升了10%,在惡意樣本檢測中召回率提升了4%。

        表2 3種方法的對比結(jié)果

        5 結(jié)語

        本文通過提取API調(diào)用信息構(gòu)建應(yīng)用程序的函數(shù)調(diào)用流程圖,進(jìn)一步提取出其中的非用戶操作序列,并通過判斷各非用戶操作序列的相似性來進(jìn)行惡意軟件檢測。實(shí)驗(yàn)結(jié)果表明,本文所提出的方法在閾值為0.07的條件下達(dá)到了90.8%的召回率和90.3%的正確率,具有較好的檢測結(jié)果。本文的檢測方法有夠有效地識別出惡意軟件,但在SNS應(yīng)用程序和具有嵌入式廣告模塊的應(yīng)用程序的檢測中存在一定的誤報。

        References)

        [1] 彭國軍,李晶雯,孫潤康,等.Android惡意軟件檢測研究與進(jìn)展[J].武漢大學(xué)學(xué)報(理學(xué)版),2015,61(1):21-33.(PENG G J, LI J W, SUN R K, et al. Android malware detection research and development [J]. Journal of Wuhan University (Natural Science Edition), 2015, 61(1): 21-33.)

        [2] 卿斯?jié)h.Android安全研究進(jìn)展[J].軟件學(xué)報,2016,27(1):45-71(QING S H. Research progress on Android security [J]. Journal of Software, 2016, 27(1): 45-71)

        [3] McAfee Labs. McAfee labs threats report [EB/OL]. [2017- 06- 01]. https://www.mcafee.com/us/resources/reports/rp-quarterly-threats-jun- 2017.pdf.

        [4] FEIZOLLAH A, ANUAR N B, SALLEH R, et al. A review on feature selection in mobile malware detection [J]. Digital Investigation, 2015, 13: 22-37.

        [5] JUNAID M, LIU D, KUNG D. Dexteroid: detecting malicious behaviors in Android apps using reverse-engineered life cycle models [J]. Computers & Security, 2016, 59: 92-117.

        [6] WU S Y, WANG P, LI X, et al. Effective detection of android malware based on the usage of data flow APIs and machine learning [J]. Information and Software Technology, 2016, 75(C): 17-25.

        [7] ARZT S, RASTHOFER S, FRITZ C, et al. FlowDroid: precise context, flow, field, object-sensitive and lifecycle-aware taint analysis for android apps [C]// PLDI 2014: Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation. New York: ACM, 2014: 259-269.

        [8] DU Y, WANG X Q, WANG J F. A static Android malicious code detection method based on multi-source fusion [J]. Security & Communication Networks, 2015, 8(17): 3238-3246.

        [9] GUAN Q, HUANG H, LUO W, et al. Semantics-based repackaging detection for mobile apps [C]// ESSoS 2016: Proceedings of the 2016 International Symposium on Engineering Secure Software and Systems. Berlin: Springer, 2016: 89-105

        [10] FEIZOLLAH A, ANUAR N B, SALLEH R, et al. AndroDialysis: analysis of Android intent effectiveness in malware detection [J]. Computers & Security, 2016, 65: 121-134.

        [11] WANG Z, LI C, YUAN Z, et al. DroidChain: a novel Android malware detection method based on behavior chains [J]. Pervasive & Mobile Computing, 2016, 32:3-14.

        [12] XIAO X, XIAO X, JIANG Y, et al. Identifying Android malware with system call co-occurrence matrices [J]. Transactions on Emerging Telecommunications Technologies, 2016, 27(5): 675-684.

        [13] ENCK W, GILBERT P, CHUN B G, et al. TaintDroid: an information flow tracking system for real-time privacy monitoring on smartphones [J]. Communications of the ACM, 2014, 57(3): 99-106.

        [14] 孫潤康,彭國軍,李晶雯,等.基于行為的Android惡意軟件判定方法及其有效性[J].計算機(jī)應(yīng)用,2016,36(4):973-978.(SUN R K, PENG G J, LI J W, et al. Behavior oriented method of Android malware detection and its effectiveness [J]. Journal of Computer Applications, 2016, 36(4): 973-978.)

        [15] FENG P, SUN C, MA J. Selecting critical data flows in android applications for abnormal behavior detection [J]. Mobile Information Systems, 2017, 2017: Article ID 7397812.

        This work is partially supported by the National Natural Science Foundation of China (61303263).

        LUOWenshuang, born in 1993, M. S. candidate. Her research interests include network security, mobile terminal security.

        CAOTianjie, born in 1967, Ph. D., professor. His research interests include cryptology, information security.

        猜你喜歡
        函數(shù)調(diào)用流程圖調(diào)用
        基于C語言的數(shù)學(xué)菜單的設(shè)計與實(shí)現(xiàn)
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        基于函數(shù)調(diào)用序列模式和函數(shù)調(diào)用圖的程序缺陷檢測方法*
        探討C++編程中避免代碼冗余的技巧
        Unity3D項(xiàng)目腳本優(yōu)化分析與研究
        中國新通信(2017年1期)2017-03-08 03:12:21
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
        專利申請審批流程圖
        河南科技(2016年8期)2016-09-03 08:08:22
        專利申請審批流程圖
        河南科技(2016年6期)2016-08-13 08:18:29
        寧??h村級權(quán)力清單36條
        亚洲国产精品午夜电影| 亚洲av无码一区二区乱子伦| 91短视频在线观看免费| 午夜国产在线精彩自拍视频| 日本一区二区三区高清在线视频| 成人性生交大片免费| 国产曰批免费视频播放免费s| 自拍视频国产在线观看| 男男亚洲av无一区二区三区久久 | а√天堂资源8在线官网在线 | 亚洲人成网址在线播放| 国产a级午夜毛片| 国产精品人成在线765| 看日本全黄色免费a级| 曰韩无码二三区中文字幕| 99精品成人片免费毛片无码| 精品日韩av专区一区二区 | 色费女人18毛片a级毛片视频| 日本强好片久久久久久aaa| 亚洲av综合色区在线观看| 嫩呦国产一区二区三区av| 风流老熟女一区二区三区| 国产午夜亚洲精品不卡福利| 蜜桃精品国产一区二区三区| 日韩日韩日韩日韩日韩日韩日韩| 欧妇女乱妇女乱视频| 99综合精品久久| 精品综合久久88少妇激情| 色狠狠色噜噜av天堂一区| 亚洲成a人片在线观看久| 国产一区二区三区日韩精品| 亚洲av精二区三区日韩| 国产精品久久久久久52avav| 美女视频很黄很a免费国产| 日本综合视频一区二区| 亚洲av无码乱码国产精品| 78成人精品电影在线播放| 国产av熟女一区二区三区蜜臀| 国产精品无码素人福利| 国产成人www免费人成看片| 日韩美女av二区三区四区|