亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

Android惡意應(yīng)用程序檢測方法、系統(tǒng)及設(shè)備的制作方法

文檔序號:6378227閱讀:533來源:國知局
專利名稱:Android惡意應(yīng)用程序檢測方法、系統(tǒng)及設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及惡意應(yīng)用程序檢測技術(shù),具體涉及一種安卓(Android)惡意應(yīng)用程序檢測方法、系統(tǒng)及設(shè)備。
背景技術(shù)
Android系統(tǒng)作為一種開源的智能手機(jī)操作系統(tǒng),吸引了大量應(yīng)用程序開發(fā)者。由于智能手機(jī)中存有大量的用戶隱私信息,因此吸引了大量的惡意應(yīng)用程序涌入應(yīng)用程序市場,竊取用戶的隱私信息;加之各個應(yīng)用程序市場的監(jiān)督管理制度和檢測方法尚不完善,無法對應(yīng)用程序的惡意性進(jìn)行甄別,因此使用戶隱私信息大量外泄,給應(yīng)用程序的使用者蒙受很大損失。Android惡意應(yīng)用程序是指在未明確提示用戶或未經(jīng)用戶許可的情況下,在用戶計(jì)算機(jī)或其他終端上安裝運(yùn)行,侵犯用戶合法權(quán)益的軟件。主要惡意行為包括惡意扣費(fèi)、隱私竊取、遠(yuǎn)程控制、惡意傳播、資費(fèi)消耗、系統(tǒng)破壞、誘騙欺詐、流氓行為等。目前針對惡意應(yīng)用程序的檢測方法主要有兩種動態(tài)檢測方法與靜態(tài)檢測方法。動態(tài)檢測方法主要通過修改Android模擬器內(nèi)核對安裝的應(yīng)用程序進(jìn)行實(shí)時檢測或者使用符號執(zhí)行的方法使應(yīng)用程序按照指定的路徑運(yùn)行,從而得到應(yīng)用程序的惡意行為。靜態(tài)分析方法主要是通過分析安卓安裝包(AndroidPackage, APK)中的有關(guān)文件,比如AndroidManifest. xml、Dalvik字節(jié)碼文件等,從中抽取部分信息作為關(guān)鍵特征,采用特征匹配的方式完成檢測。動態(tài)檢測方法依賴于特定的觸發(fā)條件,無法在短時間內(nèi)檢測完成所有的執(zhí)行路徑;基于特征匹配的方式依賴于特征碼數(shù)據(jù)庫,而特征碼的獲取基本上是靠人工分析的方式,工作量巨大。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種Android惡意應(yīng)用程序檢測方法、系統(tǒng)及設(shè)備,可在不依賴人工分析特征碼的前提下實(shí)現(xiàn)Android惡意應(yīng)用程序的檢測,大大減少了技術(shù)人員的工作量。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的本發(fā)明提供了一種Android惡意應(yīng)用程序檢測方法,該方法包括服務(wù)器模擬執(zhí)行Android應(yīng)用程序,將應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中存儲的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù);將含有敏感數(shù)據(jù)的函數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為特征信息進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為。上述方案中,該方法還包括待服務(wù)器模擬Android應(yīng)用程序的執(zhí)行結(jié)束后,根據(jù)與惡意行為檢測規(guī)則庫匹配的結(jié)果生成危險行為的詳細(xì)說明,輸出檢測報告,并向客戶端報告檢測結(jié)果。上述方案中,所述服務(wù)器模擬Android應(yīng)用程序的執(zhí)行之前,該方法還包括客戶端將待測的Android應(yīng)用程序的APK文件發(fā)送給服務(wù)器,服務(wù)器解壓APK文件,提取出Dalvik字節(jié)碼文件和AndroidManifest. xml配置文件。上述方案中,該方法還包括服務(wù)器反匯編Dalvik字節(jié)碼文件,并根據(jù)Dalvik字節(jié)碼文件信息構(gòu)建程序結(jié)構(gòu),包括指令結(jié)構(gòu)、基本結(jié)構(gòu)、函數(shù)結(jié)構(gòu)、類結(jié)構(gòu)、函數(shù)調(diào)用圖、控制流圖;服務(wù)器解析AndroidManifest. xml配置文件獲取入口函數(shù)名,并從構(gòu)建的程序結(jié)構(gòu)中找出對應(yīng)的函數(shù)結(jié)構(gòu),作為模擬執(zhí)行的入口函數(shù)。上述方案中,所述服務(wù)器模擬執(zhí)行Android應(yīng)用程序的包括服務(wù)器從入口函數(shù)開始,根據(jù)構(gòu)建出的程序結(jié)構(gòu),模擬函數(shù)的調(diào)用序列和函數(shù)內(nèi)指令的執(zhí)行順序,并按指令的執(zhí)行順序,按順序模擬每條指令的執(zhí)行。上述方案中,該方法還包括在模擬指令的執(zhí)行過程中,服務(wù)器收集函數(shù)變量的程序狀態(tài)信息,并利用收集到的變量的程序狀態(tài)信息,判斷動態(tài)機(jī)制函數(shù)實(shí)際的調(diào)用對象,根據(jù)當(dāng)前對象查找相關(guān)響應(yīng)函數(shù)。本發(fā)明還提供了一種Android惡意應(yīng)用程序檢測系統(tǒng),該系統(tǒng)包括客戶端和服務(wù)器;其中所述客戶端,用于將待測的Android應(yīng)用程序的APK文件發(fā)送給服務(wù)器;所述服務(wù)器,用于根據(jù)客戶端發(fā)來的APK文件模擬Android應(yīng)用程序的執(zhí)行,將Android應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中存儲的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù);同時將含有敏感數(shù)據(jù)的函數(shù)參數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為特征信息進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為。上述方案中,所述客戶端包括第一通訊模塊,用于將待測的Android應(yīng)用程序的APK文件發(fā)送給服務(wù)器。上述方案中,所述服務(wù)器包括第二通訊模塊、流敏感分析引擎、敏感數(shù)據(jù)引入規(guī)則庫和惡意行為檢測規(guī)則庫;其中所述第二通訊模塊,用于接收客戶端發(fā)來的APK文件,并將APK文件發(fā)送給流敏感分析引擎;所述流敏感分析引擎,用于根據(jù)收到的APK文件模擬Android應(yīng)用程序的執(zhí)行,將Android應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中存儲的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù);還用于將含有敏感數(shù)據(jù)的函數(shù)參數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為的檢測規(guī)則進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為;所述敏感數(shù)據(jù)引入規(guī)則庫,用于存儲敏感特征信息;所述惡意行為檢測規(guī)則庫,用于存儲惡意行為特征信息。上述方案中,所述流敏感分析引擎包括匹配模塊和惡意行為檢測器;其中所述匹配模塊,用于將Android應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù),將匹配后的數(shù)據(jù)送入惡意行為檢測器進(jìn)行惡意行為檢測;所述惡意行為檢測器,用于將含有敏感數(shù)據(jù)的函數(shù)參數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為特征信息進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為。上述方案中,所述服務(wù)器還包括危險行為報告器,用于模擬Android應(yīng)用程序的執(zhí)行結(jié)束后,根據(jù)與惡意行為檢測規(guī)則庫匹配的結(jié)果生成危險行為的詳細(xì)說明,輸出檢測報告,同時將檢測報告經(jīng)第二通訊模塊發(fā)送給客戶端。上述方案中,所述服務(wù)器還包括程序結(jié)構(gòu)構(gòu)建器和入口函數(shù)解析器;其中所述程序結(jié)構(gòu)構(gòu)建器,用于反匯編Dalvik字節(jié)碼文件,并根據(jù)Dalvik字節(jié)碼文件信息構(gòu)建程序結(jié)構(gòu),并將構(gòu)建好的程序結(jié)構(gòu)發(fā)送給流敏感分析引擎;所述入口函數(shù)解析器,用于解析AndroidManifest. xml配置文件獲取入口函數(shù)名,并從構(gòu)建的程序結(jié)構(gòu)中找出對應(yīng)的函數(shù)結(jié)構(gòu)作為開始分析的入口函數(shù),并將獲得的入口函數(shù)發(fā)送給流敏感分析引擎。上述方案中,所述流敏感分析引擎還包括指令模擬器,用于根據(jù)程序結(jié)構(gòu)構(gòu)建器構(gòu)建出的程序結(jié)構(gòu),模擬函數(shù)的調(diào)用序列和函數(shù)內(nèi)指令的執(zhí)行順序,從入口函數(shù)解析器獲得的入口函數(shù)開始,按順序模擬每條指令的執(zhí)行。上述方案中,所述流敏感分析引擎還包括程序狀態(tài)收集器和動態(tài)機(jī)制連接器;其中所述程序狀態(tài)收集器,用于在指令的模擬執(zhí)行過程中,收集函數(shù)變量的程序狀態(tài)信息,并將收集到的函數(shù)變量的程序狀態(tài)信息發(fā)送給動態(tài)機(jī)制連接器;所述動態(tài)機(jī)制連接器,用于根據(jù)程序狀態(tài)收集器收集到的函數(shù)變量的程序狀態(tài)信息,判斷動態(tài)機(jī)制函數(shù)實(shí)際的調(diào)用對象,根據(jù)當(dāng)前對象查找相關(guān)響應(yīng)函數(shù)。本發(fā)明還提供了一種服務(wù)器,該服務(wù)器包括通訊模塊、流敏感分析引擎、敏感數(shù)據(jù)引入規(guī)則庫和惡意行為檢測規(guī)則庫;其中所述通訊模塊,用于接收客戶端發(fā)來的APK文件,并將APK文件發(fā)送給流敏感分析引擎;所述流敏感分析引擎,用于根據(jù)收到的APK文件模擬Android應(yīng)用程序的執(zhí)行,將Android應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中存儲的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù);還用于將含有敏感數(shù)據(jù)的函數(shù)參數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為的檢測規(guī)則進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為;所述敏感數(shù)據(jù)引入規(guī)則庫,用于存儲敏感特征信息;所述惡意行為檢測規(guī)則庫,用于存儲惡意行為特征信息。上述方案中,所述流敏感分析引擎包括匹配模塊和惡意行為檢測器;其中所述匹配模塊,用于將Android應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù),將匹配后的數(shù)據(jù)送入惡意行為檢測器進(jìn)行惡意行為檢測;所述惡意行為檢測器,用于將含有敏感數(shù)據(jù)的函數(shù)參數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為特征信息進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為。
上述方案中,該服務(wù)器還包括危險行為報告器,用于模擬Android應(yīng)用程序的執(zhí)行結(jié)束后,根據(jù)與惡意行為檢測規(guī)則庫匹配的結(jié)果生成危險行為的詳細(xì)說明,輸出檢測報告,同時將檢測報告經(jīng)通訊模塊發(fā)送給客戶端。上述方案中,該服務(wù)器還包括程序結(jié)構(gòu)構(gòu)建器和入口函數(shù)解析器;其中所述程序結(jié)構(gòu)構(gòu)建器,用于反匯編Dalvik字節(jié)碼文件,并根據(jù)Dalvik字節(jié)碼文件信息構(gòu)建程序結(jié)構(gòu),并將構(gòu)建好的程序結(jié)構(gòu)發(fā)送給流敏感分析引擎;所述入口函數(shù)解析器,用于解析AndroidManifest. xml配置文件獲取入口函數(shù)名,并從構(gòu)建的程序結(jié)構(gòu)中找出對應(yīng)的函數(shù)結(jié)構(gòu)作為開始分析的入口函數(shù),并將獲得的入口函數(shù)發(fā)送給流敏感分析引擎。上述方案中,所述流敏感分析引擎還包括指令模擬器,用于根據(jù)程序結(jié)構(gòu)構(gòu)建器構(gòu)建出的程序結(jié)構(gòu),模擬函數(shù)的調(diào)用序列和函數(shù)內(nèi)指令的執(zhí)行順序,從入口函數(shù)解析器獲得的入口函數(shù)開始,按順序模擬每條指令的執(zhí)行。上述方案中,所述流敏感分析引擎還包括程序狀態(tài)收集器和動態(tài)機(jī)制連接器;其中所述程序狀態(tài)收集器,用于在指令的模擬執(zhí)行過程中,收集函數(shù)變量的程序狀態(tài)信息,并將收集到的函數(shù)變量的程序狀態(tài)信息發(fā)送給動態(tài)機(jī)制連接器;所述動態(tài)機(jī)制連接器,用于根據(jù)程序狀態(tài)收集器收集到的函數(shù)變量的程序狀態(tài)信息,判斷動態(tài)機(jī)制函數(shù)實(shí)際的調(diào)用對象,根據(jù)當(dāng)前對象查找相關(guān)響應(yīng)函數(shù)。本發(fā)明提供的技術(shù)方案,通過模擬執(zhí)行應(yīng)用程序,將應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中存儲的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù);將含有敏感數(shù)據(jù)的函數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為特征信息進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為。本發(fā)明的技術(shù)方案不依賴于人工分析獲得的特征碼數(shù)據(jù)庫,大大減少了技術(shù)人員的工作量;不依賴于特定的觸發(fā)條件,在短時間內(nèi)便可檢測完成所有的執(zhí)行路徑,可準(zhǔn)確及時的對應(yīng)用程序進(jìn)行惡意行為檢測。


圖I為本發(fā)明Android惡意應(yīng)用程序檢測方法流程示意圖;圖2為本發(fā)明Android惡意應(yīng)用程序檢測系統(tǒng)組成示意圖;圖3為本發(fā)明實(shí)施例提供的Android惡意應(yīng)用程序檢測方法流程示意圖;圖4為本發(fā)明實(shí)施例提供的與敏感數(shù)據(jù)引入規(guī)則庫信息匹配的部分代碼段示意圖;圖5為本發(fā)明實(shí)施例提供的敏感數(shù)據(jù)引入規(guī)則庫中的getDeviceld規(guī)則示意圖;圖6為本發(fā)明實(shí)施例提供的與惡意行為檢測規(guī)則庫匹配的發(fā)送用戶隱私數(shù)據(jù)部分代碼段示意圖;圖7為本發(fā)明實(shí)施例提供的惡意行為檢測規(guī)則庫中的openConnection規(guī)則示意圖。
具體實(shí)施例方式
8
本發(fā)明的基本思想是服務(wù)器模擬執(zhí)行Android應(yīng)用程序,將應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中存儲的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù);將含有敏感數(shù)據(jù)的函數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為特征信息進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為。下面結(jié)合附圖及具體實(shí)施例對本發(fā)明再作進(jìn)一步的詳細(xì)說明。圖I為本發(fā)明Android惡意應(yīng)用程序檢測方法流程示意圖,如圖I所示,包括以下步驟步驟11 :服務(wù)器根據(jù)客戶端發(fā)來的Android應(yīng)用程序的APK文件模擬Android應(yīng)用程序的執(zhí)行;這里,客戶端將待測的Android應(yīng)用程序的APK文件發(fā)送給服務(wù)器,服務(wù)器收到APK文件后,可以通過如WinRAR、APKT00L. jar等軟件解壓APK文件,提取出文件內(nèi)部的Dalvik字節(jié)碼文件和AndroidManifest. xml配置文件;這里,所述服務(wù)器根據(jù)客戶端發(fā)來的Android應(yīng)用程序的APK文件模擬Android應(yīng)用程序的執(zhí)行包括服務(wù)器反匯編Dalvik字節(jié)碼文件,并根據(jù)Dalvik字節(jié)碼文件信息構(gòu)建程序結(jié)構(gòu),包括指令結(jié)構(gòu)、基本結(jié)構(gòu)、函數(shù)結(jié)構(gòu)、類結(jié)構(gòu)、函數(shù)調(diào)用圖、控制流圖等等;服務(wù)器解析AndroidManifest. xml配置文件獲取入口函數(shù)名,如提取activity、service、receiver、provider等標(biāo)簽中的“android:name”字段的值作為入口函數(shù)名,并從構(gòu)建的程序結(jié)構(gòu)中找出對應(yīng)的函數(shù)結(jié)構(gòu),作為模擬執(zhí)行的入口函數(shù);服務(wù)器從入口函數(shù)開始,根據(jù)構(gòu)建出的程序結(jié)構(gòu),模擬函數(shù)的調(diào)用序列和函數(shù)內(nèi)指令的執(zhí)行順序,并按指令的執(zhí)行順序,依次模擬每條指令的執(zhí)行;其中,對于過程內(nèi)分析階段,所述函數(shù)內(nèi)指令的執(zhí)行順序根據(jù)控制流圖生成,采用圖的遍歷算法,保證每個基本塊至少被執(zhí)行一次;對于分支,保證每個分支都會執(zhí)行;對于循環(huán),保證循環(huán)體部分的指令至少執(zhí)行一次;對于過程間分析階段,所述函數(shù)的調(diào)用序列根據(jù)函數(shù)調(diào)用圖生成,并根據(jù)函數(shù)調(diào)用點(diǎn)的參數(shù)類型,計(jì)算實(shí)際應(yīng)該被調(diào)用的函數(shù);其中,所述函數(shù)的調(diào)用序列可利用函數(shù)參數(shù)的語義信息進(jìn)行具體分析,如根據(jù)函數(shù)調(diào)用指令,依據(jù)函數(shù)的使用頻率從高到低排列,首先判斷函數(shù)是否為虛函數(shù)或接口調(diào)用函數(shù),如果判斷的結(jié)果為是,則根據(jù)this參數(shù)的類型查找實(shí)際調(diào)用的函數(shù);若判斷的結(jié)果為否,則繼續(xù)判斷是否為用戶實(shí)現(xiàn)的函數(shù),如果是則進(jìn)入被調(diào)函數(shù)內(nèi)部執(zhí)行,使用指令模擬器計(jì)算出被調(diào)函數(shù)的指令執(zhí)行序列;若判斷的結(jié)果為否,則繼續(xù)判斷是否為動態(tài)機(jī)制函數(shù),如果是則進(jìn)入動態(tài)機(jī)制連接器查找對應(yīng)的函數(shù),并依次進(jìn)入執(zhí)行,否則分析結(jié)束。在模擬指令的執(zhí)行過程中,服務(wù)器收集函數(shù)變量的程序狀態(tài)信息,并利用收集到的變量的程序狀態(tài)信息,判斷動態(tài)機(jī)制函數(shù)實(shí)際的調(diào)用對象,根據(jù)當(dāng)前對象查找相關(guān)響應(yīng)函數(shù);這里,所述收集函數(shù)變量的程序狀態(tài)信息包括收集每個變量的類型信息和值信息;對于一些動態(tài)機(jī)制有關(guān)的函數(shù),如接口調(diào)用函數(shù)、虛函數(shù)等等,利用收集到的變量的程序狀態(tài)信息,判斷實(shí)際的調(diào)用對象,根據(jù)實(shí)際調(diào)用對象查找相關(guān)響應(yīng)函數(shù)。步驟12 :在應(yīng)用程序模擬執(zhí)行的過程中,服務(wù)器將Android應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中存儲的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù);這里,所述敏感數(shù)據(jù)引入規(guī)則庫主要記錄了敏感數(shù)據(jù)的匹配規(guī)則,所述敏感數(shù)據(jù)是指涉及用戶隱私或系統(tǒng)安全的一些數(shù)據(jù),例如用戶的通訊錄、地理位置、移動設(shè)備號等信息;敏感數(shù)據(jù)引入規(guī)則庫中記錄著將敏感數(shù)據(jù)引入到程序的庫函數(shù)信息,包括函數(shù)名、函數(shù)所在類名、函數(shù)的參數(shù)個數(shù)、敏感數(shù)據(jù)引入類型、該函數(shù)是否為靜態(tài)函數(shù)、形參列表中的各個參數(shù)的污染狀態(tài)等信息。發(fā)明人發(fā)現(xiàn),待檢測應(yīng)用程序中的惡意行為,包括發(fā)送固定內(nèi)容的短信給固定號碼,在用戶不知情的情況下訂購SP(SerVice Provider,服務(wù)器提供商)服務(wù),以消耗用戶資費(fèi);打開固定的URL(Universal Resource Locator,統(tǒng)一資源定位符),以消耗用戶資費(fèi);執(zhí)行固定的系統(tǒng)命令,以修改或刪除用戶文件。其中,所述固定內(nèi)容的短信、固定號碼、固定URL和固定系統(tǒng)命令在待檢測應(yīng)用程序代碼中以固定字符串或立即數(shù)的敏感數(shù)據(jù)形式引入危險函數(shù)的參數(shù)。如此,在模擬執(zhí)行待檢測應(yīng)用程序時,若待檢測應(yīng)用程序調(diào)用函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中存儲的某個危險函數(shù)的敏感特征信息匹配,則標(biāo)識該函數(shù)調(diào)用為敏感數(shù)據(jù),以進(jìn)行進(jìn)一步檢測,確定該函數(shù)調(diào)用是否為惡意行為。步驟13 :服務(wù)器將含有敏感數(shù)據(jù)的函數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為特征信息進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為;這里,所述惡意行為檢測規(guī)則庫主要記錄了對惡意行為的檢測規(guī)則。惡意行為的觸發(fā)一般是由一些和程序外部通信的系統(tǒng)函數(shù)引起的,比如連接網(wǎng)絡(luò)、發(fā)送短信等。如果在這些函數(shù)的調(diào)用點(diǎn)發(fā)現(xiàn)其參數(shù)中含有敏感數(shù)據(jù)時,則意味著發(fā)現(xiàn)了惡意行為;惡意行為檢測規(guī)則庫中主要包括惡意行為名稱、惡意行為類型、敏感數(shù)據(jù)類型列表、危險函數(shù)類型列表
等信息;步驟12中,若待檢測應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中存儲的敏感特征信息匹配,則確定所述系統(tǒng)函數(shù)調(diào)用符合惡意行為的初步特征,即發(fā)送固定內(nèi)容的短信給固定號碼、打開固定的URL或執(zhí)行固定的系統(tǒng)命令,且所述固定內(nèi)容的短信、固定號碼、固定URL和固定系統(tǒng)命令以敏感數(shù)據(jù)的形式引入危險函數(shù)參數(shù),來實(shí)施敏感行為。本步驟中,服務(wù)器將待檢測應(yīng)用程序所述敏感行為中被調(diào)用系統(tǒng)函數(shù)的惡意特征信息與惡意行為檢測規(guī)則庫中存儲的惡意行為特征信息進(jìn)行匹配,以進(jìn)一步確定所述敏感行為是否為惡意行為,即發(fā)送固定內(nèi)容的短信給固定號碼,是否為向SP訂購服務(wù),以消耗用戶資費(fèi);打開固定的URL,是否為打開網(wǎng)絡(luò)IP(Internet Protocol,網(wǎng)際互連協(xié)議)地址,以造成用戶資費(fèi)的消耗;執(zhí)行固定的系統(tǒng)命令,是否對用戶的文件造成損失。若是,則標(biāo)識該函數(shù)調(diào)用為惡意行為,確定待檢測應(yīng)用程序?yàn)閻阂鈶?yīng)用程序。這里,服務(wù)器模擬Android應(yīng)用程序的執(zhí)行結(jié)束后,生成惡意行為檢測報告,詳細(xì)描述當(dāng)前惡意行為的觸發(fā)流程、操作的敏感數(shù)據(jù)和帶來的危害,根據(jù)檢測到的危險行為按照危險行為類別進(jìn)行分類,并計(jì)算出危險程度及其可能帶來的危害,輸出該危險行為的調(diào)用路徑等程序信息,并向客戶端發(fā)送該檢測報告;其中,所述報告可以圖形化、可擴(kuò)展標(biāo)記語言(Extensible Markup Language, XML)等多種形式表不?;谏鲜龇椒?,本發(fā)明Android惡意應(yīng)用程序檢測系統(tǒng)如圖2所示,系統(tǒng)包括客戶端11和服務(wù)器12;其中
10
所述客戶端11,用于將待測的Android應(yīng)用程序的APK文件發(fā)送給服務(wù)器12 ;所述服務(wù)器12,用于根據(jù)客戶端11發(fā)來的APK文件模擬Android應(yīng)用程序的執(zhí)行,將Android應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中存儲的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù);同時將含有敏感數(shù)據(jù)的函數(shù)參數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為特征信息進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為。所述服務(wù)器12,還用于模擬執(zhí)行結(jié)束后,將檢測報告發(fā)送給客戶端11 ;所述客戶端11,還用于接收服務(wù)器12發(fā)來的檢測報告,向用戶報告檢測結(jié)果。進(jìn)一步的,所述客戶端11包括第一通訊模塊111,用于將待測的Android應(yīng)用程序的APK文件發(fā)送給服務(wù)器12 ;進(jìn)一步用于接收服務(wù)器12發(fā)來的檢測報告,向用戶報告檢測結(jié)果。進(jìn)一步的,所述服務(wù)器12包括第二通訊模塊121、流敏感分析引擎123、敏感數(shù)據(jù)引入規(guī)則庫124和惡意行為檢測規(guī)則庫125 ;其中所述第二通訊模塊121,用于接收第一通訊模塊111發(fā)來的APK文件,并將APK文件發(fā)送給流敏感分析引擎123 ;所述流敏感分析引擎123,用于根據(jù)收到的APK文件模擬Android應(yīng)用程序的執(zhí)行,將Android應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫124中存儲的敏感特征信息進(jìn)行匹配;還用于將含有敏感數(shù)據(jù)的函數(shù)參數(shù)與惡意行為檢測規(guī)則庫125中存儲的惡意行為的檢測規(guī)則進(jìn)行匹配,將匹配結(jié)果發(fā)送給危險行為報告器122 ;所述敏感數(shù)據(jù)引入規(guī)則庫124,用于存儲敏感特征信息;所述惡意行為檢測規(guī)則庫125,用于存儲惡意行為特征信息。所述第二通訊模塊121,進(jìn)一步用于在模擬執(zhí)行結(jié)束后,將檢測報告發(fā)送給客戶端11。進(jìn)一步的,所述流敏感分析引擎123包括匹配模塊1231和惡意行為檢測器1232 ;其中所述匹配模塊1231,用于將Android應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫124中的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù),將匹配后的數(shù)據(jù)送入惡意行為檢測器1232進(jìn)行惡意行為檢測;所述惡意行為檢測器1232,用于將含有敏感數(shù)據(jù)的函數(shù)參數(shù)與惡意行為檢測規(guī)則庫125中存儲的惡意行為特征信息進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為,將匹配結(jié)果發(fā)送給危險行為報告器122。進(jìn)一步的,所述服務(wù)器12還包括危險行為報告器122,用于待流敏感分析引擎123模擬Android應(yīng)用程序的執(zhí)行結(jié)束后,根據(jù)與惡意行為檢測規(guī)則庫125匹配的結(jié)果生成危險行為的詳細(xì)說明,輸出檢測報告,同時將檢測報告經(jīng)第二通訊模塊121發(fā)送給客戶端11 ;進(jìn)一步的,所述服務(wù)器12還包括程序結(jié)構(gòu)構(gòu)建器126和入口函數(shù)解析器127 ;其中所述程序結(jié)構(gòu)構(gòu)建器126,用于反匯編Dalvik字節(jié)碼文件,并根據(jù)Dalvik字節(jié)碼文件信息構(gòu)建程序結(jié)構(gòu),并將構(gòu)建好的程序結(jié)構(gòu)發(fā)送給流敏感分析引擎123 ;所述入口函數(shù)解析器127,用于解析AndroidManifest. xml配置文件獲取入口函數(shù)名,并從構(gòu)建的程序結(jié)構(gòu)中找出對應(yīng)的函數(shù)結(jié)構(gòu)作為開始分析的入口函數(shù),并將獲得的入口函數(shù)發(fā)送給流敏感分析引擎123。進(jìn)一步的,所述流敏感分析引擎123還包括指令模擬器1235,用于根據(jù)程序結(jié)構(gòu)構(gòu)建器126構(gòu)建出的程序結(jié)構(gòu),模擬函數(shù)的調(diào)用序列和函數(shù)內(nèi)指令的執(zhí)行順序,從入口函數(shù)解析器127獲得的入口函數(shù)開始,按順序模擬每條指令的執(zhí)行。進(jìn)一步的,所述流敏感分析引擎123還包括程序狀態(tài)收集器1234和動態(tài)機(jī)制連接器1233 ;其中所述程序狀態(tài)收集器1234,用于在指令的模擬執(zhí)行過程中,收集函數(shù)變量的程序狀態(tài)信息,并將收集到的函數(shù)變量的程序狀態(tài)信息發(fā)送給動態(tài)機(jī)制連接器1233 ;所述動態(tài)機(jī)制連接器1233,用于根據(jù)程序狀態(tài)收集器1234收集到的變量的程序狀態(tài)信息,判斷動態(tài)機(jī)制函數(shù)實(shí)際的調(diào)用對象,根據(jù)當(dāng)前對象查找相關(guān)相應(yīng)函數(shù)。下面以com. aijiaoyou. android, sipphone應(yīng)用程序?yàn)槔龑Ρ景l(fā)明進(jìn)行詳細(xì)的說明。圖3為本發(fā)明實(shí)施例提供的Android惡意應(yīng)用程序檢測方法流程不意圖,如圖3所示,包括以下步驟步驟301 :客戶端將待測的Android應(yīng)用程序的APK文件發(fā)送給服務(wù)器,服務(wù)器解壓APK文件,提取出Dalvik字節(jié)碼文件和AndroidManifest. xml配置文件;這里,所述服務(wù)器解壓APK文件可采用如WinRAR等解壓縮軟件、APKT00L. jar工具;所述AndroidManifest. xml配置文件為加密文件,可以采用AXMLPrinter2. jar、APKT00L. jar等工具進(jìn)行解密。步驟302 :服務(wù)器反匯編Dalvik字節(jié)碼文件,并根據(jù)反匯編后的Dalvik字節(jié)碼文件信息構(gòu)建程序結(jié)構(gòu);這里,對提取出的Dalvik字節(jié)碼文件可以采用smali、IDApro等反匯編工具進(jìn)行反匯編;所述根據(jù)反匯編后的Dalvik字節(jié)碼文件信息構(gòu)建程序結(jié)構(gòu)包括指令結(jié)構(gòu)、基本結(jié)構(gòu)、函數(shù)結(jié)構(gòu)、類結(jié)構(gòu)、函數(shù)調(diào)用圖、控制流圖等等。步驟303 :服務(wù)器解析AndroidManifest. xml配置文件獲取入口函數(shù)名,并從構(gòu)建的程序結(jié)構(gòu)中找出對應(yīng)的函數(shù)結(jié)構(gòu),作為模擬執(zhí)行的入口函數(shù);這里,所述AndroidManifest. xml配置文件記錄著和應(yīng)用程序運(yùn)行有關(guān)的詳細(xì)信息,通過解析 AndroidManifest. xml 配置文件,提取 activity、service、receiver>provider等標(biāo)簽中的“android:name”字段的值作為入口函數(shù)名,從構(gòu)建的程序結(jié)構(gòu)中找出對應(yīng)的函數(shù)結(jié)構(gòu),作為模擬執(zhí)行的入口函數(shù),以InitOnlineActivity為例,相應(yīng)的入口函數(shù)為InitOnlineActivity. onCreateiVL ;InitOnlineActivity. onStartiV ;InitOnlineActivity. onKeyDowniZIL 等。步驟304 :服務(wù)器從入口函數(shù)開始,根據(jù)構(gòu)建出的程序結(jié)構(gòu),模擬函數(shù)的調(diào)用序列和函數(shù)內(nèi)指令的執(zhí)行順序,并按指令的執(zhí)行順序,按順序模擬每條指令的執(zhí)行;這里,對于過程內(nèi)分析階段,所述函數(shù)內(nèi)指令的執(zhí)行順序根據(jù)控制流圖生成,采用圖的遍歷算法,保證每個基本塊至少被執(zhí)行一次;對于分支,保證每個分支都會執(zhí)行;對于循環(huán),保證循環(huán)體部分的指令至少執(zhí)行一次;對于過程間分析階段,所述函數(shù)的調(diào)用序列根據(jù)函數(shù)調(diào)用圖生成,并根據(jù)函數(shù)調(diào)用點(diǎn)的參數(shù)類型,計(jì)算實(shí)際應(yīng)該被調(diào)用的函數(shù);其中,所述函數(shù)的調(diào)用序列可利用函數(shù)參數(shù)的語義信息進(jìn)行具體分析,如根據(jù)函數(shù)調(diào)用指令,首先判斷函數(shù)是否為虛函數(shù)或接口調(diào)用函數(shù),如果判斷的結(jié)果為是,則根據(jù)this參數(shù)的類型查找實(shí)際調(diào)用的函數(shù);若判斷的結(jié)果為否,則繼續(xù)判斷是否為用戶實(shí)現(xiàn)的函數(shù),如果是則進(jìn)入被調(diào)函數(shù)內(nèi)部執(zhí)行,使用指令模擬器計(jì)算出被調(diào)函數(shù)的指令執(zhí)行序列;若判斷的結(jié)果為否,則繼續(xù)判斷是否是動態(tài)機(jī)制函數(shù),如果是則進(jìn)入動態(tài)機(jī)制連接器查找對應(yīng)的函數(shù),并依次進(jìn)入執(zhí)行,否則分析結(jié)束。步驟305 :在模擬指令的執(zhí)行過程中,服務(wù)器收集函數(shù)變量的程序狀態(tài)信息,并利用收集到的變量的程序狀態(tài)信息,判斷動態(tài)機(jī)制函數(shù)實(shí)際的調(diào)用對象,根據(jù)實(shí)際調(diào)用對象查找相關(guān)響應(yīng)函數(shù);這里,所述在模擬指令的執(zhí)行過程中,服務(wù)器收集函數(shù)變量的程序狀態(tài)信息包括收集每個變量的類型信息和值信息;對于一些動態(tài)機(jī)制有關(guān)的函數(shù),如接口調(diào)用函數(shù)、虛函數(shù)等等,利用收集到的變量的程序狀態(tài)信息,判斷實(shí)際的調(diào)用對象,根據(jù)實(shí)際調(diào)用對象查找相關(guān)響應(yīng)函數(shù)。步驟306 :服務(wù)器在模擬Android應(yīng)用程序執(zhí)行過程中,將Android應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中存儲的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù);圖4為與敏感數(shù)據(jù)引入規(guī)則庫信息匹配的部分代碼段示意圖。這里,在模擬執(zhí)行過程中,當(dāng)執(zhí)行到圖4代碼段時,其中執(zhí)行完I 3行代碼得到一個TelephonyManager的系統(tǒng)對象,將得到的TelephonyManager的系統(tǒng)對象保存在vO變量中;當(dāng)執(zhí)行到第4行代碼時,TelephonyManager. getDeviceld O函數(shù)讀取用戶設(shè)備的設(shè)備號信息,在敏感數(shù)據(jù)引入規(guī)則庫當(dāng)中記錄著與讀取用戶隱私相關(guān)的所有庫函數(shù)信息,圖5為敏感數(shù)據(jù)引入規(guī)則庫中的getDeviceld規(guī)則示意圖,如圖5所示,其中定義了函數(shù)名為getDeviceld,函數(shù)類名為Tel印honyManager,因此當(dāng)執(zhí)行到第4行代碼時,發(fā)現(xiàn)當(dāng)前函數(shù)滿足敏感數(shù)據(jù)引入規(guī)則庫當(dāng)中的某條規(guī)則,根據(jù)該規(guī)則的描述,需將當(dāng)前函數(shù)的返回值標(biāo)記為敏感數(shù)據(jù),因此在執(zhí)行到第5行時,變量vl中包含有敏感數(shù)據(jù),將其標(biāo)記為敏感數(shù)據(jù)。步驟307 :服務(wù)器將含有敏感數(shù)據(jù)的函數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為特征信息進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為;這里,所述惡意行為檢測規(guī)則庫中存儲著惡意行為的檢測規(guī)則,若滿足其中某條規(guī)則,則將檢測的函數(shù)參數(shù)標(biāo)記為惡意行為。圖6為與惡意行為檢測規(guī)則庫匹配的發(fā)送用戶隱私數(shù)據(jù)的部分代碼段示意圖,在模擬執(zhí)行應(yīng)用程序過程中,執(zhí)行到如圖6代碼段時,執(zhí)行完第I行后生成URL系統(tǒng)對象,將其存入v9變量中,該對象可以和網(wǎng)絡(luò)服務(wù)器進(jìn)行網(wǎng)絡(luò)通信;執(zhí)行到第2行時,發(fā)現(xiàn)vl5變量中包含敏感數(shù)據(jù)的信息,然后將vl5變量中包含的信息存入v9中,該信息是上面示例中的設(shè)備號信息;執(zhí)行到第3行時檢測到當(dāng)前函數(shù)滿足惡意行為檢測規(guī)則庫中的一條規(guī)則,圖7為惡意行為檢測規(guī)則庫中的openConnection規(guī)則示意圖,如圖7所示,其中定義了函數(shù)名為openConnection,函數(shù)類名為URL,根據(jù)該規(guī)則的描述,如果當(dāng)前函數(shù)的第一個參數(shù)中含有敏感數(shù)據(jù)則是一條竊取用戶隱私的惡意行為,由于v9中含有敏感數(shù)據(jù),故觸發(fā)了惡意行為,該惡意行為是將設(shè)備號信息通過網(wǎng)絡(luò)發(fā)送到遠(yuǎn)程服務(wù)器,需要將當(dāng)前函數(shù)的返回值標(biāo)記為惡意行為,因此在執(zhí)行到第4行時,變量v6中包含有惡意行為,將其標(biāo)記為惡意行為。步驟309 :服務(wù)器模擬Android應(yīng)用程序的執(zhí)行結(jié)束后,根據(jù)匹配結(jié)果輸出檢測報告,并向客戶端發(fā)送該檢測報告;這里,對檢測到的惡意行為,生成惡意行為檢測報告,詳細(xì)描述當(dāng)前惡意行為的觸發(fā)流程、操作的敏感數(shù)據(jù)和帶來的危害,根據(jù)檢測到的危險行為按照危險行為類別進(jìn)行分類,并計(jì)算出危險程度及其可能帶來的危害,輸出該危險行為的調(diào)用路徑等程序信息;檢測完成后,還將輸出檢測花費(fèi)的時間、檢測的指令條數(shù)、檢測的函數(shù)個數(shù)、指令覆蓋率、函數(shù)覆蓋率等統(tǒng)計(jì)信息。以上信息最終以圖形化、XML等多種形式表示,最后生成的檢測報告由服務(wù)器發(fā)送給客戶端。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和范圍之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種安卓(Android)惡意應(yīng)用程序檢測方法,其特征在于,該方法包括服務(wù)器模擬執(zhí)行Android應(yīng)用程序,將應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中存儲的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù);將含有敏感數(shù)據(jù)的函數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為特征信息進(jìn)行匹配, 將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,該方法還包括待服務(wù)器模擬Android應(yīng)用程序的執(zhí)行結(jié)束后,根據(jù)與惡意行為檢測規(guī)則庫匹配的結(jié)果生成危險行為的詳細(xì)說明,輸出檢測報告,并向客戶端報告檢測結(jié)果。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述服務(wù)器模擬Android應(yīng)用程序的執(zhí)行之前,該方法還包括客戶端將待測的Android應(yīng)用程序的APK文件發(fā)送給服務(wù)器,服務(wù)器解壓APK文件,提取出Dalvik字節(jié)碼文件和AndroidManifest. xml配置文件。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,該方法還包括服務(wù)器反匯編Dalvik字節(jié)碼文件,并根據(jù)Dalvik字節(jié)碼文件信息構(gòu)建程序結(jié)構(gòu),包括指令結(jié)構(gòu)、基本結(jié)構(gòu)、函數(shù)結(jié)構(gòu)、類結(jié)構(gòu)、函數(shù)調(diào)用圖、控制流圖;服務(wù)器解析AndroidManifest. xml配置文件獲取入口函數(shù)名,并從構(gòu)建的程序結(jié)構(gòu)中找出對應(yīng)的函數(shù)結(jié)構(gòu),作為模擬執(zhí)行的入口函數(shù)。
5.根據(jù)權(quán)利要求I或4所述的方法,其特征在于,所述服務(wù)器模擬執(zhí)行Android應(yīng)用程序的包括服務(wù)器從入口函數(shù)開始,根據(jù)構(gòu)建出的程序結(jié)構(gòu),模擬函數(shù)的調(diào)用序列和函數(shù)內(nèi)指令的執(zhí)行順序,并按指令的執(zhí)行順序,按順序模擬每條指令的執(zhí)行。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,該方法還包括在模擬指令的執(zhí)行過程中,服務(wù)器收集函數(shù)變量的程序狀態(tài)信息,并利用收集到的變量的程序狀態(tài)信息,判斷動態(tài)機(jī)制函數(shù)實(shí)際的調(diào)用對象,根據(jù)當(dāng)前對象查找相關(guān)響應(yīng)函數(shù)。
7.—種Android惡意應(yīng)用程序檢測系統(tǒng),其特征在于,該系統(tǒng)包括客戶端和服務(wù)器;其中所述客戶端,用于將待測的Android應(yīng)用程序的APK文件發(fā)送給服務(wù)器;所述服務(wù)器,用于根據(jù)客戶端發(fā)來的APK文件模擬Android應(yīng)用程序的執(zhí)行,將 Android應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中存儲的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù);同時將含有敏感數(shù)據(jù)的函數(shù)參數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為特征信息進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述客戶端包括第一通訊模塊,用于將待測的Android應(yīng)用程序的APK文件發(fā)送給服務(wù)器。
9.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述服務(wù)器包括第二通訊模塊、流敏感分析引擎、敏感數(shù)據(jù)引入規(guī)則庫和惡意行為檢測規(guī)則庫;其中所述第二通訊模塊,用于接收客戶端發(fā)來的APK文件,并將APK文件發(fā)送給流敏感分析引擎;所述流敏感分析引擎,用于根據(jù)收到的APK文件模擬Android應(yīng)用程序的執(zhí)行,將Android應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中存儲的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù);還用于將含有敏感數(shù)據(jù)的函數(shù)參數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為的檢測規(guī)則進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為;所述敏感數(shù)據(jù)引入規(guī)則庫,用于存儲敏感特征信息;所述惡意行為檢測規(guī)則庫,用于存儲惡意行為特征信息。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述流敏感分析引擎包括匹配模塊和惡意行為檢測器;其中所述匹配模塊,用于將Android應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù),將匹配后的數(shù)據(jù)送入惡意行為檢測器進(jìn)行惡意行為檢測;所述惡意行為檢測器,用于將含有敏感數(shù)據(jù)的函數(shù)參數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為特征信息進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為。
11.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述服務(wù)器還包括危險行為報告器,用于模擬Android應(yīng)用程序的執(zhí)行結(jié)束后,根據(jù)與惡意行為檢測規(guī)則庫匹配的結(jié)果生成危險行為的詳細(xì)說明,輸出檢測報告,同時將檢測報告經(jīng)第二通訊模塊發(fā)送給客戶端。
12.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述服務(wù)器還包括程序結(jié)構(gòu)構(gòu)建器和入口函數(shù)解析器;其中所述程序結(jié)構(gòu)構(gòu)建器,用于反匯編Dalvik字節(jié)碼文件,并根據(jù)Dalvik字節(jié)碼文件信息構(gòu)建程序結(jié)構(gòu),并將構(gòu)建好的程序結(jié)構(gòu)發(fā)送給流敏感分析引擎;所述入口函數(shù)解析器,用于解析AndroidManifest. xml配置文件獲取入口函數(shù)名,并從構(gòu)建的程序結(jié)構(gòu)中找出對應(yīng)的函數(shù)結(jié)構(gòu)作為開始分析的入口函數(shù),并將獲得的入口函數(shù)發(fā)送給流敏感分析引擎。
13.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述流敏感分析引擎還包括指令模擬器,用于根據(jù)程序結(jié)構(gòu)構(gòu)建器構(gòu)建出的程序結(jié)構(gòu),模擬函數(shù)的調(diào)用序列和函數(shù)內(nèi)指令的執(zhí)行順序,從入口函數(shù)解析器獲得的入口函數(shù)開始,按順序模擬每條指令的執(zhí)行。
14.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述流敏感分析引擎還包括程序狀態(tài)收集器和動態(tài)機(jī)制連接器;其中所述程序狀態(tài)收集器,用于在指令的模擬執(zhí)行過程中,收集函數(shù)變量的程序狀態(tài)信息,并將收集到的函數(shù)變量的程序狀態(tài)信息發(fā)送給動態(tài)機(jī)制連接器;所述動態(tài)機(jī)制連接器,用于根據(jù)程序狀態(tài)收集器收集到的函數(shù)變量的程序狀態(tài)信息,判斷動態(tài)機(jī)制函數(shù)實(shí)際的調(diào)用對象,根據(jù)當(dāng)前對象查找相關(guān)響應(yīng)函數(shù)。
15.一種服務(wù)器,其特征在于,該服務(wù)器包括通訊模塊、流敏感分析引擎、敏感數(shù)據(jù)引入規(guī)則庫和惡意行為檢測規(guī)則庫;其中所述通訊模塊,用于接收客戶端發(fā)來的APK文件,并將APK文件發(fā)送給流敏感分析引所述流敏感分析引擎,用于根據(jù)收到的APK文件模擬Android應(yīng)用程序的執(zhí)行,將Android應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中存儲的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù);還用于將含有敏感數(shù)據(jù)的函數(shù)參數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為的檢測規(guī)則進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為;所述敏感數(shù)據(jù)引入規(guī)則庫,用于存儲敏感特征信息;所述惡意行為檢測規(guī)則庫,用于存儲惡意行為特征信息。
16.根據(jù)權(quán)利要求15所述的服務(wù)器,其特征在于,所述流敏感分析引擎包括匹配模塊和惡意行為檢測器;其中所述匹配模塊,用于將Android應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù),將匹配后的數(shù)據(jù)送入惡意行為檢測器進(jìn)行惡意行為檢測;所述惡意行為檢測器,用于將含有敏感數(shù)據(jù)的函數(shù)參數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為特征信息進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為。
17.根據(jù)權(quán)利要求15所述的服務(wù)器,其特征在于,該服務(wù)器還包括危險行為報告器,用于模擬Android應(yīng)用程序的執(zhí)行結(jié)束后,根據(jù)與惡意行為檢測規(guī)則庫匹配的結(jié)果生成危險行為的詳細(xì)說明,輸出檢測報告,同時將檢測報告經(jīng)通訊模塊發(fā)送給客戶端。
18.根據(jù)權(quán)利要求15所述的服務(wù)器,其特征在于,該服務(wù)器還包括程序結(jié)構(gòu)構(gòu)建器和入口函數(shù)解析器;其中所述程序結(jié)構(gòu)構(gòu)建器,用于反匯編Dalvik字節(jié)碼文件,并根據(jù)Dalvik字節(jié)碼文件信息構(gòu)建程序結(jié)構(gòu),并將構(gòu)建好的程序結(jié)構(gòu)發(fā)送給流敏感分析引擎;所述入口函數(shù)解析器,用于解析AndroidManifest. xml配置文件獲取入口函數(shù)名,并從構(gòu)建的程序結(jié)構(gòu)中找出對應(yīng)的函數(shù)結(jié)構(gòu)作為開始分析的入口函數(shù),并將獲得的入口函數(shù)發(fā)送給流敏感分析引擎。
19.根據(jù)權(quán)利要求15所述的服務(wù)器,其特征在于,所述流敏感分析引擎還包括指令模擬器,用于根據(jù)程序結(jié)構(gòu)構(gòu)建器構(gòu)建出的程序結(jié)構(gòu),模擬函數(shù)的調(diào)用序列和函數(shù)內(nèi)指令的執(zhí)行順序,從入口函數(shù)解析器獲得的入口函數(shù)開始,按順序模擬每條指令的執(zhí)行。
20.根據(jù)權(quán)利要求15所述的服務(wù)器,其特征在于,所述流敏感分析引擎還包括程序狀態(tài)收集器和動態(tài)機(jī)制連接器;其中所述程序狀態(tài)收集器,用于在指令的模擬執(zhí)行過程中,收集函數(shù)變量的程序狀態(tài)信息,并將收集到的函數(shù)變量的程序狀態(tài)信息發(fā)送給動態(tài)機(jī)制連接器;所述動態(tài)機(jī)制連接器,用于根據(jù)程序狀態(tài)收集器收集到的函數(shù)變量的程序狀態(tài)信息,判斷動態(tài)機(jī)制函數(shù)實(shí)際的調(diào)用對象,根據(jù)當(dāng)前對象查找相關(guān)響應(yīng)函數(shù)。
全文摘要
本發(fā)明公開了一種Android惡意應(yīng)用程序檢測方法、系統(tǒng)及設(shè)備,其中檢測方法包括服務(wù)器模擬執(zhí)行Android應(yīng)用程序,將Android應(yīng)用程序調(diào)用的系統(tǒng)函數(shù)的敏感特征信息與敏感數(shù)據(jù)引入規(guī)則庫中存儲的敏感特征信息進(jìn)行匹配,將匹配成功的系統(tǒng)函數(shù)的變量標(biāo)記為敏感數(shù)據(jù);將含有敏感數(shù)據(jù)的函數(shù)與惡意行為檢測規(guī)則庫中存儲的惡意行為特征信息進(jìn)行匹配,將匹配成功的函數(shù)參數(shù)標(biāo)記為惡意行為。采用本發(fā)明的技術(shù)方案,在不依賴人工分析特征碼的前提下實(shí)現(xiàn)Android惡意應(yīng)用程序的檢測,減少了技術(shù)人員的工作量。
文檔編號G06F11/36GK102938040SQ20121037600
公開日2013年2月20日 申請日期2012年9月29日 優(yōu)先權(quán)日2012年9月29日
發(fā)明者程紹銀, 巫妍, 吳俊昌, 蔣凡 申請人:中興通訊股份有限公司, 中國科學(xué)技術(shù)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1