Android平臺惡意軟體自動檢測方法
2023-05-20 12:21:06 4
Android平臺惡意軟體自動檢測方法
【專利摘要】本發明提供一種Android平臺惡意軟體自動檢測方法,該Android平臺惡意軟體自動檢測方法包括:S1.設定Android平臺的敏感API數據集;S2.對待檢測的應用程式進行逆向代碼還原,得到該應用程式的逆向代碼;S3.根據該敏感API數據集提取該逆向代碼中的敏感API和包含網絡地址信息的字符串;S4.根據該逆向代碼繪製函數調用關係有向圖,並根據該函數調用關係圖、該提取的敏感API和字符串判斷該應用程式是否為惡意軟體。本發明能夠自動的判斷應用程式是否為惡意軟體,並提高了Android平臺下惡意軟體的檢測效率。
【專利說明】Android平臺惡思軟體自動檢測方法
【技術領域】
[0001]本發明涉及計算機安全領域,尤其涉及一種Android平臺惡意軟體自動檢測方法。
【背景技術】
[0002]隨著中國移動網際網路爆發式的增長,行動網路開始從3G向4G升級,行動裝置用戶數超越桌上型電腦數,移動應用數量成倍增長,整個移動網際網路行業呈現蓬勃發展態勢。
[0003]移動智能終端指的是具有獨立作業系統,可以由用戶自行安裝軟體、遊戲等第三方應用程式,能夠使用移動網際網路訪問網絡的手機及平板電腦。目前,基於Android作業系統的移動智能終端呈現出蓬勃發展的狀態,已經佔領超過一半的用戶市場。
[0004]相比於早期的非智慧型手機,移動智能終端最大的特點是可以由用戶自行安裝APP以便擴展其功能和業務。其中,APP (Application),即網際網路應用與服務,就是可以在手機或平板電腦終端運行的軟體。類似與普通PC電腦上的軟體,安裝在移動智能終端桌面後,點擊一下桌面的軟體圖標即可進入查看內容,不需要登陸瀏覽器訪問網址這些複雜的步驟。
[0005]高速網絡技術的飛速發展使得網際網路已經成為全球信息發布、傳播和交流的主要平臺之一,而移動智慧型手機的普及則進一步極大的改善了人們信息獲取的方式,但是同時也給惡意軟體的傳播提供了土壤。目前,移動智能終端下的惡意軟體主要以用戶隱私竊取為核心目標,竊取內容包括用戶的通訊錄、簡訊、電話記錄、照片、日曆等用戶私人信息,竊取方式主要採用後臺隱秘上傳方法,在不驚動手機用戶的同時將用戶的個人隱私信息進行竊取,嚴重危害了用戶的個人信息安全。
[0006]但是,不同於普通PC終端上的惡意軟體分析方法,由於作業系統、編譯環境、硬體設備以及系統指令等方面的巨大差異,對移動智能終端下的惡意軟體的檢測還屬於難題,不能簡單的直接使用PC端下的惡意軟體分析和檢測技術以及思路。
[0007]目前,對Android下惡意軟體的分析主要依靠人工的方式進行,通過對惡意軟體進行逆向代碼還原後,採用人工的方式查找惡意代碼,分析惡意行為,提取檢測特徵。這種方法人工參與程度較大,並且所消耗時間較多,而且通常會嚴重依賴於分析人員的個人能力,無法做到快速、高效、全面的分析。因此,自動化的對Android平臺下的惡意軟體進行分析,儘可能的提取其中的惡意行為,並對軟體的惡意程度進行初步判斷迫在眉睫。
【發明內容】
[0008](一)要解決的技術問題
[0009]本發明要解決的技術問題是:提供一種Android平臺惡意軟體自動檢測方法,能夠自動檢測應用程式是否為惡意軟體。
[0010](二)技術方案
[0011]為解決上述技術問題,本發明提供了一種Android平臺惡意軟體自動檢測方法,包括:
[0012]S1.設定Android平臺的敏感API數據集;
[0013]S2.對待檢測的應用程式進行逆向代碼還原,得到所述應用程式的逆向代碼;
[0014]S3.根據所述敏感API數據集提取所述逆向代碼中的敏感API和包含網絡地址信息的字符串;
[0015]S4.根據所述逆向代碼繪製函數調用關係有向圖,並根據所述函數調用關係圖、所述提取的敏感API和字符串判斷所述應用程式是否為惡意軟體。
[0016]進一步地,步驟SI包括:
[0017]Sll.根據Android開發工具包查找與惡意軟體相關的敏感API ;
[0018]S12.將Sll獲取的敏感API按照其功能類別進行整理和分類,得到敏感API數據集。
[0019]進一步地,步驟Sll中與惡意軟體相關的敏感API包括Android開發工具包中跟電話、簡訊、照片、攝像頭、GPRS、通訊錄相關的API函數及所屬類。
[0020]進一步地,所述敏感API數據集包括敏感API函數名、敏感API參數、敏感API類名。
[0021]進一步地,步驟S2包括:
[0022]S21.利用解壓縮工具將待檢測應用程式安裝包進行解壓縮,獲得dex文件;
[0023]S22.將S21步驟解壓縮獲得的dex文件轉換為Java語言的字節碼格式,並生成jar文件;
[0024]S23.利用解壓縮工具將S22步驟所獲得的jar文件進行解壓縮,然後將解壓縮獲得每個class文件反編譯成java格式文件。
[0025]進一步地,步驟S3包括:
[0026]S31.根據步驟SI所設定的敏感API數據集,採用字符串匹配算法對在步驟S2中所獲得的java格式文件進行逐行匹配,判斷是否調用了敏感API函數,如果調用,則進一步記錄調用的敏感API函數的所屬自建函數名和所屬文件名;匹配結束後,如果存在敏感API函數調用情況,則執行步驟S32,否則結束;
[0027]S32.利用正則匹配算法,對在步驟S2中所獲得的java格式文件進行逐行匹配,判斷所述java格式文件中是否包含網絡地址信息的字符串,如果包含,則進一步記錄包含所述字符串的所屬自建函數名和所屬文件名;匹配結束後,如果存在內置網絡地址信息情況,則執行步驟S4,否則結束。
[0028]進一步地,步驟S4包括:
[0029]S41.分析S2步驟中所得到的java格式的逆向代碼,並繪製函數調用關係有向圖;
[0030]S42.在所述函數調用關係有向圖中標註步驟S3中記錄的敏感API函數的所屬自建函數以及包含所述字符串的所屬自建函數;
[0031]S43.在所述標註後的函數調用關係有向圖中,以任意一個包含敏感API函數的所屬自建函數為起點,以任意一個包含所述字符串的所屬自建函數為終點,以函數調用關係有向圖中的方向為路徑,追蹤並判斷起點與終點之間是否存在調用關係,若是,則判斷所述應用程式為惡意軟體,否則,則判定所述應用程式為正常軟體。[0032](三)有益效果
[0033]本發明首先從Android開發工具包中找尋所有涉及隱私竊取行為的敏感API,並整理成數據集;之後,對待檢測的惡意軟體進行逆向代碼還原,反編譯出java代碼;然後,利用敏感API數據集在代碼中搜索使用了敏感API的函數名,同時,搜索內置URL/IP字符串的自建函數名;將待檢測軟體的函數調用關係繪製成調用關係有向圖,並在其中標註出全部使用敏感API的自建函數以及包含內置URL/IP的自建函數,最後,判斷兩類自建函數之間是否存在路徑,即是否存在調用關係,如果存在任意一條路徑,則判定該應用程式為惡意軟體,從而實現了自動的判斷應用程式是否為惡意軟體,並提高了 Android平臺下惡意軟體的檢測效率。
【專利附圖】
【附圖說明】
[0034]圖1是本發明實施方式提供的一種Android平臺惡意軟體自動檢測方法的流程圖;
[0035]圖2是本發明實施方式提供的Android平臺惡意軟體自動檢測方法的示意圖。【具體實施方式】
[0036]下面結合附圖和實施例,對本發明的【具體實施方式】作進一步詳細描述。以下實施例用於說明本發明,但不用來限制本發明的範圍。
[0037]圖1是本發明實施方式提供的一種Android平臺惡意軟體自動檢測方法的流程圖,包括:
[0038]步驟S1.設定 Android 平臺的敏感 API (Application Programming Interface,應用程式編程接口)數據集;
[0039]其中,該敏感API數據集可以包括敏感API函數名、敏感API參數、敏感API類名。
[0040]步驟S2.對待檢測的應用程式進行逆向代碼還原,得到所述應用程式的逆向代碼;
[0041]步驟S3.根據所述敏感API數據集提取所述逆向代碼中的敏感API和包含網絡地址信息的字符串,該包括網絡地址信息的字符串可以為URL (UniformResourceLocator,統一資源定位符)字符串,也可以為IP (Internet Protocol,網絡之間互連的協議)字符串;
[0042]步驟S4.根據所述逆向代碼繪製函數調用關係有向圖,並根據所述函數調用關係圖、所述提取的敏感API和字符串判斷所述應用程式是否為惡意軟體。
[0043]其中,步驟SI進一步包括:
[0044]Sll.根據Android開發工具包查找與惡意軟體相關的敏感API ;
[0045]具體地,與惡意軟體相關的敏感API可以包括Android開發工具包中跟電話、簡訊、照片、攝像頭、GPRS (General Packet Radio Service,通用分組無線服務技術)、通訊錄相關的API函數及所屬類。例如,通訊錄類別的敏感API可以包括:android, costent.ContentResolver、android, database.Cursor、android, provider.ContactsContract、getContentResolver、coursor.getCoIumnIndexOrThrowΛ insert、ContentValue、updata 和 delete 等,簡訊類的敏感 API 可以包括:An droid, telephony.SmsManageλ SmsManagerΛSmsManager.getDefault、sendTextMessage、sendDataMessage 和sendMultipartTextMessage 等。
[0046]S12.將Sll獲取的敏感API按照其功能類別進行整理和分類,得到敏感API數據集。具體地,敏感API涉及隱私的信息內容主要有:網絡信息、設備信息、簡訊、通訊錄、GPRS信息、來電記錄、照片、瀏覽器歷史信息和筆記本信息,函數內容主要包括HTTP通信、數據加解密和線程。
[0047]其中,步驟S2進一步包括:
[0048]S21.利用解壓縮工具將待檢測應用程式安裝包進行解壓縮,獲得dex文件,具體地,利用解壓縮工具將待檢測的Android平臺的應用程式APK安裝包進行解壓縮,獲得classes, dex 文件;
[0049]S22.將S21步驟解壓縮獲得的dex文件轉換為Java語言的字節碼格式,並生成jar文件,具體地,將S21步驟解壓縮獲得的classes, dex文件從Dalvik虛擬機的字節碼格式轉換成Java語言的字節碼格式,並生成classes_dex2jar.jar文件;
[0050]S23.利用解壓縮工具將S22步驟所獲得的jar文件進行解壓縮,然後將解壓縮獲得每個class文件反編譯成java格式文件,具體地,利用解壓縮工具將S22步驟所獲得的classes_dex2jar.jar文件進行解壓縮,然後將解壓縮獲得每個class文件反編譯成java格式文件。
[0051]其中,步驟S3進一步包括:
[0052]S31.根據步驟SI所設定的敏感API數據集,採用字符串匹配算法對在步驟S2中所獲得的java格式文件進行逐行匹配,判斷是否調用了敏感API函數,如果調用,則進一步記錄調用的敏感API函數的所屬自建函數名和所屬文件名;匹配結束後,如果存在敏感API函數調用情況,則執行步驟S32,否則結束。例如,提取的電話類的敏感API為TelephonyManager_>getSystemService ("phone"),簡訊類的敏感 API 為 1calSmsManager.sendTextMessage,通訊錄類的敏感 API 具體包括有 getColumnlndex (〃display_name〃)以及 getColumnlndex(〃has_phone_number〃)。
[0053]S32.利用正則匹配算法,對在步驟S2中所獲得的java格式文件進行逐行匹配,判斷所述java格式文件中是否包含網絡地址信息的字符串,如果包含,則進一步記錄包含所述字符串的所屬自建函數名和所屬文件名;匹配結束後,如果存在內置網絡地址信息情況,則執行步驟S4,否則結束;
[0054]具體地,利用正則匹配算法對在步驟S2中所獲得的所有java文件進行逐行匹配,判斷文件中是否包含URL/IP字符串,如果包含,則進一步記錄包含URL/IP字符串的所屬自建函數名和所屬文件名,之後執行步驟S4,例如,提取的URL為:http://androids-market.ru/unregister/。
[0055]其中,步驟S4進一步包括:
[0056]S41.分析S2步驟中所得到的java格式的逆向代碼,並繪製函數調用關係有向圖;
[0057]S42.在所述函數調用關係有向圖中標註步驟S3中記錄的敏感API函數的所屬自建函數以及包含所述字符串的所屬自建函數;具體地,可以將函數按照其不同功能標註為不同的顏色,系統函數標註為綠色,包含敏感API的自建函數標註為藍色,不包含敏感API的自建函數標註為黃色,包含URL/IP的自建函數標註為紅色。[0058]S43.在所述標註後的函數調用關係有向圖中,以任意一個包含敏感API函數的所屬自建函數為起點,以任意一個包含所述字符串的所屬自建函數為終點,以函數調用關係有向圖中的方向為路徑,追蹤並判斷起點與終點之間是否存在調用關係,若是,則判斷所述應用程式為惡意軟體,否則,則判定所述應用程式為正常軟體。
[0059]具體地,以任意一個包含敏感API的自建函數為起點,以任意一個包含URL/IP的自建函數為終點,以函數調用關係有向圖中的方向為路徑,追蹤並判斷起點與終點之間是否存在調用關係,若存在一條從某一調用敏感API的自建函數到包含URL/IP的自建函數的路徑,則判斷該應用程式為惡意軟體。
[0060]參見圖2,本發明提供的Android平臺惡意軟體自動檢測方法,首先根據Android平臺下的惡意軟體的常見隱私竊取行為,分析其竊取的信息內容,並從Android開發工具包中找尋所有涉及隱私竊取行為的敏感API,並整理成數據集;之後,通過反編譯引擎對待檢測的惡意軟體進行逆向代碼還原,反編譯出java代碼;然後,通過敏感API分析引擎利用敏感API數據集在代碼中搜索使用了敏感API的自建函數名,同時,通過控制&命令伺服器分析引擎搜索內置URL/IP字符串的自建函數名;並通過圖分析引擎將待檢測軟體的函數調用關係繪製成調用關係有向圖,並在其中標註出全部使用敏感API的自建函數以及包含內置URL/IP的自建函數,最後,判斷兩類自建函數之間是否存在路徑,即是否存在調用關係,如果存在任意一條路徑,則證明此應用程式為惡意軟體,從而能夠自動的判斷應用程式是否為惡意軟體,進而提高了 Android平臺下惡意軟體的分析效率。
[0061]本發明實施方式提供的Android平臺惡意軟體自動檢測方法採用圖論理論自動的判斷Android平臺下的惡意軟體,改進了 Android惡意軟體檢測的方法,降低了人工參與程度,從而提高了 Android平臺下惡意軟體的檢測效率,能夠為普通用戶檢測其使用的Android平臺下的應用程式是否為惡意軟體,還可以提供豐富的運行信息給惡意軟體分析人員,方便其進行更深層次的分析。
[0062]以上實施方式僅用於說明本發明,而並非對本發明的限制,有關【技術領域】的普通技術人員,在不脫離本發明的精神和範圍的情況下,還可以做出各種變化和變型,因此所有等同的技術方案也屬於本發明的範疇,本發明的專利保護範圍應由權利要求限定。
【權利要求】
1.一種Android平臺惡意軟體自動檢測方法,其特徵在於,包括: S1.設定Android平臺的敏感API數據集; S2.對待檢測的應用程式進行逆向代碼還原,得到所述應用程式的逆向代碼; S3.根據所述敏感API數據集提取所述逆向代碼中的敏感API和包含網絡地址信息的字符串; S4.根據所述逆向代碼繪製函數調用關係有向圖,並根據所述函數調用關係圖、所述提取的敏感API和字符串判斷所述應用程式是否為惡意軟體。
2.根據權利要求1所述的Android平臺惡意軟體自動檢測方法,其特徵在於,步驟SI包括: S11.根據Android開發工具包查找與惡意軟體相關的敏感API; S12.將Sll獲取的敏感API按照其功能類別進行整理和分類,得到敏感API數據集。
3.根據權利要求2所述的Android平臺惡意軟體自動檢測方法,其特徵在於,步驟Sll中與惡意軟體相關的敏感API包括Android開發工具包中跟電話、簡訊、照片、攝像頭、GPRS、通訊錄相關的API函數及所屬類。
4.根據權利要求1所述的Android平臺惡意軟體自動檢測方法,其特徵在於,所述敏感API數據集包括敏感API函數名、敏感API參數、敏感API類名。
5.根據權利要求4所述的Android平臺惡意軟體自動檢測方法,其特徵在於,步驟S2包括: S21.利用解壓縮工具將待檢測應用程式安裝包進行解壓縮,獲得dex文件; S22.將S21步驟解壓縮獲得的dex文件轉換為Java語言的字節碼格式,並生成jar文件; S23.利用解壓縮工具將S22步驟所獲得的jar文件進行解壓縮,然後將解壓縮獲得每個class文件反編譯成java格式文件。
6.根據權利要求5所述的Android平臺惡意軟體自動檢測方法,其特徵在於,步驟S3包括: S31.根據步驟SI所設定的敏感API數據集,採用字符串匹配算法對在步驟S2中所獲得的java格式文件進行逐行匹配,判斷是否調用了敏感API函數,如果調用,則進一步記錄調用的敏感API函數的所屬自建函數名和所屬文件名;匹配結束後,如果存在敏感API函數調用情況,則執行步驟S32,否則結束; S32.利用正則匹配算法,對在步驟S2中所獲得的java格式文件進行逐行匹配,判斷所述java格式文件中是否包含網絡地址信息的字符串,如果包含,則進一步記錄包含所述字符串的所屬自建函數名和所屬文件名;匹配結束後,如果存在內置網絡地址信息情況,則執行步驟S4,否則結束。
7. 根據權利要求6所述的Android平臺惡意軟體自動檢測方法,其特徵在於,步驟S4包括: S41.分析S2步驟中所得到的java格式的逆向代碼,並繪製函數調用關係有向圖; S42.在所述函數調用關係有向圖中標註步驟S3中記錄的敏感API函數的所屬自建函數以及包含所述字符串的所屬自建函數; S43.在所述標註後的函數調用關係有向圖中,以任意一個包含敏感API函數的所屬自建函數為起點,以任意一個包含所述字符串的所屬自建函數為終點,以函數調用關係有向圖中的方向為路徑,追蹤並判斷起點與終點之間是否存在調用關係,若是,則判斷所述應用程式為惡意軟體,否則,則.判定所述應用程式為正常軟體。
【文檔編號】G06F21/56GK103473509SQ201310462544
【公開日】2013年12月25日 申請日期:2013年9月30日 優先權日:2013年9月30日
【發明者】薛一波, 李城龍, 張洛什, 於賀威, 張慧, 王秀文, 李靜, 曹首峰, 王大偉, 賀龍濤, 賀欣 申請人:清華大學, 國家計算機網絡與信息安全管理中心