一種啟發(fā)式靜態(tài)識別Android系統(tǒng)惡意代碼的方法
【專利摘要】本發(fā)明提出一種Android惡意軟件檢測方法。采用構(gòu)建Andorid應(yīng)用Apk軟件的異構(gòu)方法調(diào)用圖,標定敏感函數(shù),利用圖的連通性對惡意代碼進行定位。具體流程包括:對異構(gòu)方法調(diào)用圖進行圖的連通性掃描,得到各個子圖,對各個子圖進行敏感函數(shù)打分,超過閾值的子圖即為惡意代碼模塊。本發(fā)明可以啟發(fā)式地發(fā)現(xiàn)未知惡意軟件,為廣大Android第三方市場和個人用戶提供安全掃描和保護。
【專利說明】一種啟發(fā)式靜態(tài)識別Android系統(tǒng)惡意代碼的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及移動互聯(lián)網(wǎng)【技術(shù)領(lǐng)域】,主要涉及一種通過啟發(fā)式靜態(tài)分析來識別Android系統(tǒng)上的惡意代碼的方法。
【背景技術(shù)】
[0002]隨著智能手機的高速發(fā)展,Android平臺逐漸成為了世界上第一大的移動終端平臺,產(chǎn)品覆蓋了機頂盒,手機,平板,以及各種智能終端,從各個角度影響著人們的生活。而且這些智能終端的功能越發(fā)的強大,包括了語音通話,數(shù)據(jù)業(yè)務(wù),NFC近場通訊等。Android智能終端已經(jīng)深入的進入到了我們每個人的生活中,支付類服務(wù),生活類服務(wù),地圖類服務(wù),娛樂類服務(wù),個人信息類服務(wù)。在這樣的情況下,Android平臺上的安全問題逐漸成為了 一個不得不被關(guān)注的問題。
[0003]據(jù)安全公司TrustGo最新數(shù)據(jù)表明,Android上惡意應(yīng)用數(shù)量自2011年9月到2012年9月增長了 580%。全球Android惡意軟件數(shù)量已從2年前的百余款到了今天的過百方,從簡單的竊取用戶通信記錄發(fā)展到了全面監(jiān)控用戶手機,竊取包括個人記錄,銀行記錄,第三方軟件保存信息,后臺發(fā)送吸費短信,后臺靜默點擊廣告等多個方面。
[0004]現(xiàn)有Android平臺惡意代碼檢測技術(shù)大多采用特征庫方式,對新的未知惡意軟件幾乎沒有查殺能力。
【發(fā)明內(nèi)容】
[0005]針對現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種Android惡意代碼檢測方法,通過啟發(fā)式靜態(tài)分析,提高對惡意代碼的識別和查殺能力。
[0006]為實現(xiàn)以上發(fā)明目的,本發(fā)明的技術(shù)方案為:
[0007]一種Android惡意代碼檢測方法,包括以下步驟:
[0008]第一步,采集Android軟件的惡意樣本,進行手動分析,提取其中的敏感函數(shù);
[0009]第二步,提取所述惡意樣本中經(jīng)常使用的敏感接收器;
[0010]第三步,對第一步和第二步提取的敏感函數(shù)和接收器進行打分,打分原則為高危操作或者敏感信息竊取方向的分值最高,危害程度越低,分值越低;
[0011]第四步,對待測的apk文件進行反編譯,得到程序內(nèi)部各個類的smali格式源碼,搜索其中每一個類的每一個方法,將搜索到的方法入口作為起點,將其對內(nèi)部函數(shù)、java系統(tǒng)函數(shù)和Android系統(tǒng)函數(shù)的調(diào)用抽取出來,形成一條完整方法調(diào)用序列;通過對所述smali文件的搜索,將所有繼承并實現(xiàn)敏感接收器的子類標注出來,將敏感接收器與其子類進行關(guān)聯(lián);所述完整方法調(diào)用序列和所述敏感接收器與其子類之間的關(guān)聯(lián)關(guān)系構(gòu)成異構(gòu)方法調(diào)用序列;
[0012]第五步,對所述異構(gòu)方法調(diào)用序列根據(jù)方法所在的類進行聚合,形成全局方法調(diào)用圖;
[0013]第六步,對第五步生成的圖進行連通性掃描,利用圖的深度遍歷算法,劃分出獨立子圖;
[0014]第七步,對第六步劃分出來的子圖進行降噪處理;
[0015]第八步,對經(jīng)降噪處理的子圖進行白名單處理,通過對子圖的包名檢測,凡是在廣告白名單中的,均標定為廣告模塊,使其不參與后續(xù)處理;
[0016]第九步,對上一步處理過的子圖,利用第三步中的分值結(jié)構(gòu)進行敏感性打分,并計算每個獨立子圖的評分;
[0017]第十步,上一步中評分超過閾值0.8的即為惡意代碼子圖模塊,進行標定與記錄。
[0018]本發(fā)明的有益效果為:啟發(fā)式地發(fā)現(xiàn)未知惡意軟件,提高識別和查殺能力,為廣大Android第三方市場和個人用戶提供安全掃描和保護。
【專利附圖】
【附圖說明】
[0019]圖1是本發(fā)明提出的Android惡意代碼檢測方法的流程示意圖。
【具體實施方式】
[0020]以下結(jié)合附圖對本發(fā)明的技術(shù)方案進行詳細說明。
[0021]如圖1所示,本發(fā)明采用構(gòu)建Apk軟件異構(gòu)方法調(diào)用圖,標定敏感函數(shù),繼而實現(xiàn)以圖的相關(guān)性方式對Android惡意代碼進行定位。在一個特定實施例中,檢測方法具體包括以下步驟:
[0022]第一步,采集Android軟件的惡意樣本,進行手動分析,提取其中的敏感函數(shù)。
[0023]所述敏感函數(shù)包括網(wǎng)絡(luò)類,短信類,電話類,文件操作類,設(shè)備操作類,代碼執(zhí)行類,地理位置類等七大類。在一個實施例中,敏感函數(shù)共計31個敏感api函數(shù)接口,如表I所示。
[0024]表I敏感函數(shù)和敏感接收器示例
[0025]
【權(quán)利要求】
1.一種Android惡意代碼檢測方法,包括以下步驟: 第一步,采集Android軟件的惡意樣本,進行手動分析,提取其中的敏感函數(shù); 第二步,提取所述惡意樣本中經(jīng)常使用的敏感接收器; 第三步,對第一步和第二步提取的敏感函數(shù)和接收器進行打分,打分原則為高危操作或者敏感信息竊取方向的分值最高,危害程度越低,分值越低; 第四步,對待測的apk文件進行反編譯,得到程序內(nèi)部各個類的smali格式源碼,搜索其中每一個類的每一個方法,將搜索到的方法入口作為起點,將其對內(nèi)部函數(shù)、java系統(tǒng)函數(shù)和Android系統(tǒng)函數(shù)的調(diào)用抽取出來,形成一條完整方法調(diào)用序列;通過對所述smali文件的搜索,將所有繼承并實現(xiàn)敏感接收器的子類標注出來,將敏感接收器與其子類進行關(guān)聯(lián);所述完整方法調(diào)用序列和所述敏感接收器與其子類之間的關(guān)聯(lián)關(guān)系構(gòu)成異構(gòu)方法調(diào)用序列; 第五步,對所述異構(gòu)方法調(diào)用序列根據(jù)方法所在的類進行聚合,形成全局方法調(diào)用圖; 第六步,對第五步生成的圖進行連通性掃描,利用圖的深度遍歷算法,劃分出獨立子圖; 第七步,對第六步劃分出來的子圖進行降噪處理; 第八步,對經(jīng)降噪處理的子圖進行白名單處理,通過對子圖的包名檢測,凡是在廣告白名單中的,均標定為廣告模塊,使其不參與后續(xù)處理; 第九步,對上一步處理過的子圖,利用第三步中的分值結(jié)構(gòu)進行敏感性打分,并計算每個獨立子圖的評分; 第十步,上一步中評分超過閾值0.8的即為惡意代碼子圖模塊,進行標定與記錄。
2.如權(quán)利要求1所述的Android惡意代碼檢測方法,其中,第一步中提取的敏感函數(shù)包括網(wǎng)絡(luò)類、短信類、電話類、文件操作類、設(shè)備操作類、代碼執(zhí)行類和地理位置類七大類。
3.如權(quán)利要求1所述的Android惡意代碼檢測方法,其中,第二步中,所述經(jīng)常使用的敏感接收器包括接受短信接收器、接通電話接收器、掛斷電話接收器、接受來電接收器和開機啟動接收器。
4.如權(quán)利要求1所述的Android惡意代碼檢測方法,其中,第三步中的打分采用以下分值結(jié)構(gòu):分值分為六檔,以5分為最低檔,30分為最高檔,優(yōu)選的,步長為5。
5.如權(quán)利要求1所述的Android惡意代碼檢測方法,其中,第七步的降噪處理中,將至少滿足以下條件之一的對象標定為噪聲部分: a.只有單個類,且無敏感函數(shù)調(diào)用; b.方法總數(shù)少于7個,且無敏感函數(shù)調(diào)用; c.只是單獨的監(jiān)聽器或空方法體,而無實際意義的部分。
【文檔編號】G06F21/56GK103440458SQ201310443094
【公開日】2013年12月11日 申請日期:2013年9月25日 優(yōu)先權(quán)日:2013年9月25日
【發(fā)明者】陶敬, 周文瑜, 胡文君, 趙雙, 馬小博 申請人:西安交通大學(xué)