国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Android系統(tǒng)中惡意代碼的動態(tài)檢測技術研究

2017-03-27 07:13:00李博亞
關鍵詞:調用應用程序代碼

李博亞, 薛 質

(上海交通大學 電子信息與電氣工程學院,上海 200240)

Android系統(tǒng)中惡意代碼的動態(tài)檢測技術研究

李博亞, 薛 質

(上海交通大學 電子信息與電氣工程學院,上海 200240)

隨著手機普及程度的日益提高,人們對智能手機的依賴性加重,手機的安全性問題變得愈加突出.根據Android安裝包(APK)文件的權限調用和Android系統(tǒng)的應用程序接口(API)函數調用情況,設計了一種基于API攔截技術的檢測惡意代碼的動態(tài)檢測方法.實驗結果表明,該方法可以有效檢測并報告Android系統(tǒng)中的惡意代碼.

Android; 應用程序編程接口; 惡意代碼; 動態(tài)檢測

0 引 言

隨著科學技術的進步與發(fā)展,智能手機已成為人們身邊不可或缺的設備,在功能不斷完善發(fā)展的同時,其性能也日新月異.現在,手機不僅用于通訊,而且可以存儲照片、文件、視頻等隱私敏感信息.由于移動支付技術的不斷發(fā)展,智能手機現在還充當著人們的“錢包”.然而,隨著智能手機應用性的增加和功能的不斷完善,有關隱私信息的安全性問題也愈加突出.根據賽門鐵克2016年度安全報告(ISTR2016)顯示:2016年,在移動平臺上利用惡意代碼進行隱私竊取的相關攻擊數目增加了200%,達到了數千萬起[1].欺詐者利用各種漏洞攻擊和改寫APP安裝文件,并向手機中植入各類惡意代碼,對用戶的手機進行攻擊并獲取各類隱私信息.而在各類平臺中,Android系統(tǒng)因為其開源的特性和開放度更大的用戶體驗獲得了最大的市場占有率.由于Android平臺高度開放,保障系統(tǒng)安全性便成為了難題,在截獲的各類惡意代碼和惡意軟件中,擁有75%市場占有率的Android平臺智能設備吸引了98.05%惡意軟件的關注[2].因此,研究解決基于Android系統(tǒng)的智能設備的信息安全問題就顯得愈加急迫,并且受到越來越多的關注.本文作者根據Android安裝包(APK)文件的權限調用和Android系統(tǒng)的應用程序接口(API)函數調用情況,設計了一種基于API攔截技術的檢測惡意代碼的動態(tài)檢測方法,實驗發(fā)現該方法具有一定可行性.

1 惡意代碼的檢測分析技術

惡意代碼是指那些對程序運行沒有幫助,卻對系統(tǒng)安全產生危害的代碼,包括病毒攻擊、隱私竊取、遠程控制、流氓行為等類型.惡意代碼的分析和檢測是為最終清除惡意代碼進行準備和提供依據.根據分析方法不同,目前惡意代碼的檢測方式大致可以分為兩種,靜態(tài)檢測和動態(tài)檢測[3].

1.1 靜態(tài)檢測方法

靜態(tài)檢測方法,即特征碼匹配檢測方法,是目前最主流,也是各大殺毒軟件普遍采用的惡意代碼檢測分析技術.這種方法并不在手機上實際運行惡意代碼或者安裝惡意軟件,而是通過反編譯技術,在安全環(huán)境中對包含可疑代碼的文件進行代碼分析,并將特征碼寫入經過分類的特征數據庫中.在通過查殺測試之后,把數據庫上傳到服務器中,供裝有手機安全軟件的用戶進行下載更新,用戶在使用該安全軟件對手機進行掃描時,軟件會以手機中的文件和程序作為目標,將在本地設備上獲得的應用程序的特征碼與特征碼庫進行匹配掃描,從而達到檢測惡意軟件和代碼的目的.

靜態(tài)檢測方法具有較高的識別率和較快的掃描速度,但是也有很多缺點,例如,惡意代碼特征碼的提取需要人工識別,反編譯工程量很大,特征碼匹配檢測可能存在對某些軟件代碼誤報的情況,對于采用混淆代碼、加殼并且變型等手段進行掩飾的惡意代碼很難精準識別等.隨著技術的發(fā)展,惡意代碼的變換型式會不斷增多,這樣的匹配檢測方式會消耗更多的軟、硬件資源.

1.2 動態(tài)檢測技術

動態(tài)檢測技術,即基于被檢測軟件的行為進行檢測的技術,該技術是把目標軟件置于特定的封閉安全的環(huán)境下運行,并且模擬隨機邊界條件,對軟件運行行為進行監(jiān)控,同時對于其運行特征和權限調用進行評估,以達到對于目標軟件性質做出判斷的目的.

動態(tài)檢測方法沒有靜態(tài)方法掃描的準確率高,檢測結果只是一種可能性,對于某些在特定環(huán)境下(例如特定日期、用戶行為)才會執(zhí)行的惡意代碼并不能完美地進行檢測.但是由于動態(tài)檢測分析的是惡意代碼運行的特征、行為,所以相對于靜態(tài)方法,擁有直觀、快速的優(yōu)點.另外,當檢測到用戶設定的某些特定指標被觸發(fā),例如調用某些特定應用程序編程接口(API)函數時,動態(tài)檢測軟件會通過某些算法對這些行為進行加權記錄、評估,當目標軟件的行為特征超過設定好的閾值時,將該目標軟件判定為惡意軟件[4].因此,動態(tài)檢測方法可以不受到各種類別的掩飾手段的干擾,對軟件的惡意行為進行準確的識別.本文作者所設計的方法屬于動態(tài)檢測技術.

2 Android安裝包(APK)文件權限與API函數調用權限的獲得

目前Android系統(tǒng)采用了一種特殊的安全機制,這種特殊的權限獲得方法,可以被稱為默認拒絕法,它采用了強制性的訪問控制,每個應用程序在系統(tǒng)中都有自己獨立的用戶id和組id,當應用程序在安裝時,必須對自己本體在運行時可能會使用的敏感權限進行聲明,并且需要得到用戶的明文允許,否則它的所有操作,甚至于安裝操作都將被拒絕.因此,應用程序必須在開發(fā)時于APK內的manifest.xml文件中聲明其在運行過程中所可能調用到的權限并在安裝時對用戶進行展示[5].一旦在安裝過程中,用戶允許了應用程序使用相關權限,那么在此后的運行過程中,該程序將默認永久獲得該權限,而權限的確認和解析調用在應用程序的啟動過程中就將被完成,所以在設備的使用過程中直接動態(tài)監(jiān)控應用程序的權限調用情況是不可行的.本文作者通過分析Android特色的權限——API系統(tǒng),設計一種在軟件的運行過程中,可以對相關調用函數的情況進行監(jiān)視的方法,進而統(tǒng)計出軟件的行為特征,通過加權累計和閾值判定來檢測一個目標應用程序是否為惡意程序.

2.1 Android的應用程序中權限信息部分代碼的提取

APK是Android應用程序經過編譯器打包而成的安裝程序,實質上是一個壓縮包文件.一個最基本的可被運行的APK文件中,至少包含4個子目錄名和3個子文件名,其中,AndroidManifest.xml文件用于描述該Android應用程序的全局數據、版本號、運行時所需要獲得的權限等內容.根據開發(fā)公司google的官方說明,一個在Android平臺上運行的程序最多可以獲得包括電話、短信、互聯(lián)網在內的145項權限.想要獲得對于訪問各種系統(tǒng)數據的權限,應用程序必須在自身安裝包中的Manifest.xml文件里事先進行權限聲明,由此,想要知曉目標程序究竟要獲得哪些權限,分析APK中的Manifest.xml文件就顯得必不可少[6].

采用APKtool等工具對APK文件進行反編譯后找到相關文件,使用記事本打開,可以獲得以下代碼如圖1所示.

圖1 部分涉及權限的代碼以及注解說明

由上述分析可以得知,想要提取并獲得應用程序的權限申請信息,可以采用反編譯的方法,對相關的文件進行分析,并且提取use-permission字段中有關android.permission的屬性值,即可得到目標應用程序所申請調用的權限信息.

2.2 Android中應用程序調取API信息的獲得方法

任何應用程序想要執(zhí)行操作,都要通過對系統(tǒng)發(fā)送對API函數進行調用的請求來實現.通過APKtool等反編譯工具,對于APK文件中的classex.dex文件進行反編譯就可以得到能在虛擬機環(huán)境中執(zhí)行的代碼,通過對于這部分代碼的分析,可以得到應用程序在運行過程中可能會調用的API函數[7].

通過對于應用程序權限獲得和API函數調用情況的分析,可以獲取應用程序的文件特征,可以對之后總體風險的評估起到補充和輔助的作用.

3 應用程序測試中實際調用API函數的監(jiān)控

上節(jié)提到,在應用程序的運行過程中,所有操作都要通過調用系統(tǒng)API函數進行,使得監(jiān)控軟件行為成為可能.

3.1 API攔截技術

具體設計中,采用HookAPI的方式進行對調用行為的日志信息進行攔截.Hook意為鉤子,實質上是一段獲得并處理信息的程序,通過進行系統(tǒng)調用的方式加載進系統(tǒng),可以使API調用的相關信息在沒有執(zhí)行之前就被監(jiān)控獲取并記錄.這種技術可以在不改變應用程序運行方式的同時,對于應用程序調用API的行為進行監(jiān)控并記錄.

應用程序正常調用流程為:1)API調用;2)API執(zhí)行;3)調用情況返回.

使用了HookAPI的方法進行處理后,調用流程為:1)API調用;2) Hook API;3)API執(zhí)行;4)Hook API數據標記反饋;5)調用情況返回.

在操作系統(tǒng)的啟動過程中,所有可執(zhí)行程序包含的進程都是由一個名為Zygote的原初進程生成的,在設備啟動過程中,該進程被創(chuàng)建并且同時生成一個Dalvik虛擬機的母本,之后,每當有進程被啟動時,Zygote進程會對虛擬機母本進行復制并且分發(fā)給應用軟件,這樣,每一個應用程序都將獨享一個Dalvik虛擬機的拷貝[8].

通過對于Zygote進程的解析,可以得到如下腳本命令:service zygote /system/bin/app_process-Xzygote /system/bin--zygote-start-system-server

由這段代碼可以得知,Zygote進程在Android系統(tǒng)中對應的可執(zhí)行程序是/system/bin/app_process,由此可以得出一個結論,如果將系統(tǒng)中的這個程序進行修改替換,增加輸出端口,就可以控制Zygote進程,進而達到對其所創(chuàng)建的Dalvik虛擬機母本進行控制的目的.同時,由于所有應用程序使用的都是該Dalvik虛擬機的拷貝副本,所以就可以達到對系統(tǒng)中所運行的API進行Hook API的操作[9].

3.2 Android系統(tǒng)中軟件調用API行為的標記和記錄

相較于靜態(tài)分析方法,動態(tài)檢測方法的最大優(yōu)勢就是可以及時地發(fā)現檢測未被記錄的新型、變型的惡意代碼.為了達到這個目的,設計了一種數據標記的方法來進行軟件惡意行為的檢測和記錄.

該方法是在進行Hook API的同時,對于部分敏感API端口返回的數據插入數據代碼進行標記.該段代碼應該具有如下特點:

1)獨立性,即插入API返回數據同時不影響該操作行為的判斷和執(zhí)行.

2)隱蔽性,即該段數據標簽不應該被惡意軟件發(fā)覺從而影響檢測和記錄.

3)易檢出性,即該標簽應有獨特的形式,不會在記錄時被漏過從而導致漏檢.

進行數據標記的過程如下:

1)定義某些類型的API函數為敏感函數,在敏感的API函數被調用時,通過替換和可操作的Dalvik虛擬機對數據進行標記.

相關的API類型舉例如表1所示.

表1 數據讀取相關敏感API類型

在這些敏感類型的API函數被進行調用時,進行數據標記.

2)該標記跟隨數據和變量進行傳播和存儲.由于對Zygote進程指向的app_process進行了替換操作,所有應用程序使用的Dalvik虛擬機全部是替換過且可操作的,不論該段敏感數據如何轉移,該數據標簽總能通過相應的Android跨進程通信(Binder)庫進行同步的傳播和跟蹤[10].

3)在特定的敏感位置檢測到該數據標簽時,進行記錄.

相關的敏感位置舉例如表2所示.

表2 數據發(fā)送存儲相關敏感API類型

該過程構成元素如圖2所示.

圖2 動態(tài)檢測的構成元素

3.3 關于惡意行為的檢測算法

上文中提到,Android平臺開放給應用程序的API函數共有145種,如果用唯一編號1到145號對其進行編號,那么,針對Android平臺的惡意行為所能調用的API函數數量是有限且可標定的.

可定義正整數集合N,N={N1,N2,…,N145},其中Ni項表示第i個API函數的唯一編號.那么,在Android平臺上運行的應用程序的操作行為調用的API函數編號必有集合M={M1,M2,…,Mk},1≤k≤145,其中Mi為應用程序操作行為調用API函數的唯一編號,且必有一組二進制變量a1,a2,…a145,滿足M={a1N1,a2N2,…,a145N145},那么,記錄該組變量中賦值為1的變量數量并且進行累加,則可以得到應用軟件的調用API數量的特征數值K,1≤K≤145.

本文作者提出的惡意行為測試算法是由相互影響的兩個部分構成:對于程序算法的訓練階段和對于目標軟件代碼的檢測階段.訓練階段的目的是確定一個合適的閾值,定義為T,而檢測階段就會提取被檢測軟件的特征數值K和閾值T進行比較,來判斷目標軟件是否為惡意軟件或是在正常的軟件中存在惡意代碼的嵌入.

在訓練階段中,選擇一個惡意軟件的樣本集合,提取其中一個惡意軟件的特征數值K1作為初始值并賦值給閾值變量T1,循環(huán)提取不同的惡意軟件的特征數值Kn,并與T1進行比較,如Kn>T1,則保留變量T1數值不變,如Kn

再選擇一個正常可信軟件測試集,提取特征數值并賦值給閾值變量T2,進行同樣的循環(huán)賦值,并得到最終的可信閾值變量T2.取T1,T2的均值作為閾值T,在盡可能降低漏報率的同時,可有效避免誤報的發(fā)生.

在檢測分類階段中,將待檢測的應用程序的特征數值提取并與閾值T進行比較,大于T,則被測軟件為惡意軟件,進行警報;小于T,則被測軟件為正常軟件.用戶可以根據自己的需求手動調節(jié)T的值以達到減小誤報率或者減小漏報率的目的.

3.4 檢測結果的顯示和表達

被測軟件在經過算法部分的測試過后,檢測程序會對數據進行處理并生成一個報告.為了直觀考慮,數據收集內容主要只表達惡意行為的事件.報告格式為XML格式,代碼如圖3所示.

圖3 檢測報告代碼圖

代碼中,“{}”內的部分為檢測報告生成過程中輸出的惡意行為的具體內容.behavior/item表示在檢測過程中被檢軟件所進行的一個行為;behavior/item/action表示這條行為的具體動作.檢測結果報告給出了敏感數據的流向,并且直觀地展示了惡意軟件的指向性.

4 實驗結果記錄和分析

實驗目標選自Android惡意代碼工具包.

惡意樣本的分析測試輸出結果示例,如圖4所示.

圖4 惡意軟件測試軟件結果

結果表明,該惡意軟件會收集設備敏感信息,并將結果發(fā)送到一個150開頭的手機號碼.

測試結果表明,應用該方法的檢測軟件可以有效的識別和分辨被檢軟件在運行過程中產生的惡意行為,并對用戶發(fā)出警報.

測試結果統(tǒng)計如表3所示.

表3 對惡意代碼樣本和可信軟件集樣本的測試結果統(tǒng)計

檢測結果統(tǒng)計顯示,對于惡意軟件樣本的測試是比較成功的.對于漏報的部分樣本,經過手動逆向解析,發(fā)現主要原因是因為:在測試沙盒中,對于模擬環(huán)境的設置存在一定限制,部分惡意代碼需要連接特定服務器獲取特定指令方能激活,但是在模擬環(huán)境中,由于服務器被隔絕,無法獲取指令,導致惡意代碼無法激活,因此測試軟件搜集不到惡意行為的數據,導致了相關漏報的發(fā)生.但是在實際使用中,這類代碼的檢測不會受到影響.

對于可信軟件樣本的檢測中,發(fā)生了誤報率超過15%的情況,經過對于相關軟件的權限聲明的分析可知報警的原因是相關軟件的確存在相應的惡意行為,這里牽涉到Android程序權限濫用的問題,不再多加討論.

5 總 結

本文作者探討了一種Android平臺上惡意代碼的動態(tài)檢測方法,并用原型工具初步對這種方法進行了驗證,取得了一定的成果.但是在測試過程中發(fā)現,仍然有很多類型的惡意代碼無法檢測,而且由于只有一個模擬環(huán)境,每次只能檢測一個目標軟件,工作效率還有待提升.因此,提高檢測成功率和提升檢測效率將是未來又一個重要研究課題.

[1] Symantec Corporation.2016 Internet Security Threat Report [R/OL].(2016-04-13)[2016-10-19].https://www.symantec.com/security-center/threat-report.

[2] 騰訊移動安全實驗室.潛伏在身邊的危機:智能設備安全 [R/OL].(2015-09-16)[2016-10-21].https://security.tencent.com/index.php/blog/msg/94.

[3] 刑文利.惡意代碼動態(tài)分析系統(tǒng)的設計與實現 [D].北京:清華大學計算機科學與技術系,2005.

Xing W L.Design and implementation of a malicious code dynamic analyzing [D].Beijing:Department of computer science and technology,Tsinghua University.

[4] 劉偉,孫其博.Android平臺惡意軟件行為模式研究 [J].軟件,2012,33(11):150-151.

Liu W,Sun Q B.Android platform malware behavior model research [J].Computer Engineering and Software,2012,33(11):150-151.

[5] 鄭煥鑫,葉小平.基于API攔截的主動防御系統(tǒng) [J].技術研究,2012,07:29-31.

Zheng H X,Ye X P.The defense system basing on API interception network [J].Netinfo Security,2012,07:29-31.

[6] Google.Android API Differences Report[R/OL][2016-10-29].https://developer.android.google.cn/sdk/api_diff/23/changes.html.

[7] 馮博,戴航,慕德俊.Android惡意軟件檢測方法研究 [J].計算機技術與發(fā)展,2014,02(2):150-153.

Feng B,Dai H,Mu D J.Research of malware detection approach for Android [J].Computer Technology and Development,2014,02(2):150-153.

[8] 羅升陽.Android系統(tǒng)源代碼情景分析 [M].北京:電子工業(yè)出版社,2012.

[9] Zeng H,Ren Y,Wang Q X.Detecting malware and evaluating risk of app using Android permission-API system [C]//IEEE.2014 11th International Computer Conference on Wavelet Actiev Media Technology and Information Processing(ICCWAMTIP).Chengdu:IEEE,2014.

[10] 謝鑫.基于程序屬性的Java靜態(tài)軟件胎記技術研究 [D].鄭州:解放軍信息工程大學,2011.

Xie X.Research on program properties based java static software birthmarking [D].Zhengzhou:PLA information Engineering University,2011.

(責任編輯:包震宇)

Dynamic detection technology of malicious code for Android system

Li Boya, Xue Zhi

(School of Electronic Information and Electrical Engineering,Shanghai Jiao Tong University,Shanghai 200240,China)

With the increasing popularization of mobile phones,people′s dependence on them is rising,the security problems become more and more prominent.According to the calling of the APK file permission and the API function in Android system,this paper proposes a dynamic detecting method based on API interception technology to detect the malicious code.The experimental results show that this method can effectively detect the malicious code in Android system.

Android; API; malicious code; dynamic detection

10.3969/J.ISSN.1000-5137.2017.01.003

2017-01-20

李博亞(1987-),男,碩士研究生,主要從事Android系統(tǒng)惡意代碼等方面的研究.E-mail:lby3333@163.com

導師簡介: 薛 質(1971-),男,教授,博士生導師,主要從事信息安全,網絡攻防與測評等方面的研究.E-mail:zxue@sjtu.edu.cn(通信聯(lián)系人)

TP 309; TP 316

A

1000-5137(2017)01-0016-07

猜你喜歡
調用應用程序代碼
核電項目物項調用管理的應用研究
刪除Win10中自帶的應用程序
電腦報(2019年12期)2019-09-10 05:08:20
LabWindows/CVI下基于ActiveX技術的Excel調用
測控技術(2018年5期)2018-12-09 09:04:46
創(chuàng)世代碼
動漫星空(2018年11期)2018-10-26 02:24:02
創(chuàng)世代碼
動漫星空(2018年2期)2018-10-26 02:11:00
創(chuàng)世代碼
動漫星空(2018年9期)2018-10-26 01:16:48
創(chuàng)世代碼
動漫星空(2018年5期)2018-10-26 01:15:02
基于系統(tǒng)調用的惡意軟件檢測技術研究
利用RFC技術實現SAP系統(tǒng)接口通信
關閉應用程序更新提醒
電腦迷(2012年15期)2012-04-29 17:09:47
凭祥市| 镇巴县| 焉耆| 安图县| 虹口区| 大石桥市| 靖边县| 金堂县| 万载县| 桓仁| 渑池县| 巴青县| 清河县| 扎赉特旗| 安福县| 田林县| 莱芜市| 湖南省| 科尔| 宣威市| 红原县| 紫阳县| 社旗县| 双城市| 嘉义县| 泸水县| 永川市| 会同县| 石景山区| 仁化县| 高雄市| 朔州市| 项城市| 峨边| 中山市| 甘泉县| 松原市| 株洲县| 武平县| 遵化市| 色达县|