• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于JDWP的Android應(yīng)用程序惡意行為檢測(cè)研究

      2017-05-02 15:14:48王宇曉
      移動(dòng)通信 2017年7期

      王宇曉

      【摘 要】當(dāng)前Android惡意應(yīng)用程序威脅越來越多,因此首先介紹了當(dāng)前Android應(yīng)用程序動(dòng)態(tài)檢測(cè)技術(shù)背景和發(fā)展趨勢(shì),其后重點(diǎn)介紹以JDWP協(xié)議為基礎(chǔ)的惡意行為檢測(cè)方法和檢測(cè)技術(shù),最后與實(shí)際檢測(cè)經(jīng)驗(yàn)結(jié)合,介紹如何依照檢測(cè)結(jié)果對(duì)應(yīng)用程序惡意行為進(jìn)行分析和判斷。

      【關(guān)鍵詞】Android應(yīng)用程序 動(dòng)態(tài)檢測(cè) JDWP 惡意行為分析

      1 引言

      近年來,智能手機(jī)深入應(yīng)用于人們生活當(dāng)中,Android操作系統(tǒng)因其本身開源性和免費(fèi)性,受到許多手機(jī)廠商和開發(fā)者的青睞和支持。據(jù)悉,2016年度Android系統(tǒng)在全球市場(chǎng)的占有率已經(jīng)高達(dá)80%。但隨之而來的是,與Android平臺(tái)相關(guān)的惡意應(yīng)用軟件攻擊也越來越多。OWASP[1]曾對(duì)比上百萬應(yīng)用軟件,發(fā)布了十大移動(dòng)應(yīng)用惡意行為,其中涉及惡意扣費(fèi)、靜默下載、隱私竊取、資費(fèi)消耗、遠(yuǎn)程控制等多方面。2016年,360互聯(lián)網(wǎng)安全中心發(fā)布《2016年AnDroid惡意軟件專題報(bào)告》,其中提到2016年累計(jì)截獲Android平臺(tái)新增惡意程序樣本1403.3萬個(gè),平均每天新增3.8萬惡意程序樣本,而新增惡意程序主要是資費(fèi)消耗,占比高達(dá)74.2%,其次是惡意扣費(fèi)(16.5%)、隱私竊取(6.1%)[2]。

      Android應(yīng)用軟件的惡意行為給廣大用戶帶來了財(cái)產(chǎn)安全和個(gè)人新信息安全的重大威脅,對(duì)行業(yè)造成不良影響。在此種情況下,對(duì)智能手機(jī)應(yīng)用軟件進(jìn)行檢測(cè)是必要的,以求達(dá)到對(duì)風(fēng)險(xiǎn)可知、可控。當(dāng)前Android平臺(tái)上,對(duì)應(yīng)用軟件檢測(cè)主要分為靜態(tài)檢測(cè)技術(shù)和動(dòng)態(tài)檢測(cè)技術(shù)兩個(gè)方面[3]。靜態(tài)檢測(cè)技術(shù)重點(diǎn)分析使用逆向技術(shù)[4]后得到的源碼,關(guān)注業(yè)務(wù)邏輯和相關(guān)算法,以達(dá)到對(duì)應(yīng)用軟件檢測(cè)的目的。動(dòng)態(tài)檢測(cè)技術(shù)將應(yīng)用程序置于運(yùn)行環(huán)境中運(yùn)行,對(duì)其動(dòng)態(tài)行為實(shí)時(shí)監(jiān)控、分析和判斷,以判定應(yīng)用軟件是否存在出現(xiàn)惡意行為的潛在風(fēng)險(xiǎn)。

      本文基于JDWP協(xié)議監(jiān)控敏感行為API,對(duì)Android應(yīng)用程序進(jìn)行動(dòng)態(tài)檢測(cè)并分析和判斷行為事件是否具備惡意行為特征,接下來會(huì)從動(dòng)態(tài)檢測(cè)技術(shù)背景、JDWP監(jiān)控應(yīng)用程序API原理和過程、惡意行為分析和判斷這三個(gè)方面進(jìn)行介紹。

      2 動(dòng)態(tài)檢測(cè)技術(shù)背景和相關(guān)工作

      2.1 通用動(dòng)態(tài)檢測(cè)技術(shù)

      動(dòng)態(tài)檢測(cè)技術(shù)通常會(huì)把Android應(yīng)用程序置于真實(shí)或者模擬環(huán)境中,監(jiān)控應(yīng)用程序的運(yùn)行情況,對(duì)應(yīng)用程序行為進(jìn)行實(shí)時(shí)記錄分析,以判斷其正常性。目前Android應(yīng)用程序動(dòng)態(tài)監(jiān)控技術(shù)既包括內(nèi)核層監(jiān)控,也包括應(yīng)用層監(jiān)控。內(nèi)核層監(jiān)控可采用鉤子(hook)技術(shù)、掛鉤系統(tǒng)關(guān)鍵敏感API來實(shí)現(xiàn)動(dòng)態(tài)監(jiān)測(cè);而應(yīng)用層監(jiān)控采用重打包技術(shù)進(jìn)行檢測(cè)[5]。常用的動(dòng)態(tài)檢測(cè)技術(shù)包括DroidBox、APIMonitor[6]等。

      DroidBox主要用于檢測(cè)隱私泄露,通過對(duì)隱私數(shù)據(jù)進(jìn)行標(biāo)識(shí),使隱私數(shù)據(jù)成為污染源。一旦惡意程序獲取隱私數(shù)據(jù),并對(duì)其進(jìn)行操作,會(huì)使得新生成的數(shù)據(jù)被污染。如果出現(xiàn)污染數(shù)據(jù)流出或泄露的情況,證明應(yīng)用軟件出現(xiàn)隱私泄露行為[7],在其他方面比如文件讀寫操作、網(wǎng)絡(luò)傳輸數(shù)據(jù)、動(dòng)態(tài)加載、短信以及電話等操作,都能起到監(jiān)控作用,但工具較大,容易在使用過程中出現(xiàn)問題。

      APIMonitor利用Dalvik層面代碼篡改和重打包技術(shù),監(jiān)控特定敏感API以追蹤應(yīng)用軟件的惡意行為。但隨著應(yīng)用程序安全越來越受到重視,應(yīng)用程序采用加固、反編譯、抗重打包、簽名驗(yàn)證等技術(shù)增強(qiáng)安全性。這樣APIMonitor工具本身就有了很大的局限性,適用范圍受到限制。

      2.2 JDWP調(diào)試原理

      JDWP(JAVA調(diào)試協(xié)議)是JAVA平臺(tái)調(diào)試體系結(jié)構(gòu)的重要組成部分之一[8],作為調(diào)試器和目標(biāo)虛擬機(jī)交互的通信協(xié)議,在調(diào)試過程中起到重要作用。簡(jiǎn)而言之,JDWP協(xié)議的作用就是通信,調(diào)試器可使用JDWP協(xié)議獲取虛擬機(jī)中程序的信息或者控制目標(biāo)程序運(yùn)行狀態(tài)。而虛擬機(jī)可通過JDWP協(xié)議通知調(diào)試器返回信息以執(zhí)行后續(xù)操作[9],包括握手和應(yīng)答兩個(gè)階段,在建立傳輸層連接之后,調(diào)試器會(huì)發(fā)送字符串“JDWP-Handshake”到虛擬機(jī),虛擬機(jī)回復(fù)字符串“JDWP-Handshake”。兩端握手結(jié)束,調(diào)試器即可對(duì)虛擬機(jī)發(fā)送命令。

      JDWP通信內(nèi)容包括命令和回復(fù),調(diào)試器和虛擬機(jī)兩端都有可能發(fā)送命令包和回復(fù)包。調(diào)試器發(fā)送命令給虛擬機(jī),獲取當(dāng)前在虛擬機(jī)中運(yùn)行程序的信息,虛擬機(jī)回復(fù)該命令是否成功執(zhí)行。同時(shí)虛擬機(jī)也可以向調(diào)試器發(fā)送命令包以通知部分事件的發(fā)生。JDWP執(zhí)行的異步性使得請(qǐng)求和回復(fù)之間不需要考慮順序,減少等待時(shí)間,可直接發(fā)送其他命令。同時(shí)任何語言都可以實(shí)現(xiàn)JDWP,使得檢測(cè)系統(tǒng)更加容易實(shí)現(xiàn)。

      3 惡意行為監(jiān)控過程

      本文的動(dòng)態(tài)檢測(cè)技術(shù)利用JDWP協(xié)議、調(diào)試器與虛擬機(jī)通信獲得虛擬機(jī)工作狀態(tài),以達(dá)到監(jiān)控應(yīng)用程序的作用。但是JDWP協(xié)議只能獲取正在運(yùn)行的應(yīng)用程序信息,所以當(dāng)用戶開啟應(yīng)用程序時(shí),需要根據(jù)之前獲取的應(yīng)用程序基本信息進(jìn)行JDWP通信,獲取應(yīng)用程序的運(yùn)行信息。

      在Android系統(tǒng)中,每一個(gè)Android應(yīng)用都運(yùn)行在一個(gè)虛擬機(jī)實(shí)例里,每一個(gè)虛擬機(jī)實(shí)例都是一個(gè)獨(dú)立的進(jìn)程空間。每一個(gè)進(jìn)程都有一個(gè)ID,被稱為Process ID(PID)[10]。調(diào)試器根據(jù)PID追蹤應(yīng)用程序運(yùn)行狀況,aapt工具可獲取當(dāng)前移動(dòng)設(shè)備中所有應(yīng)用程序信息,比如應(yīng)用程序名稱、應(yīng)用程序包名、應(yīng)用程序權(quán)限等,使用aapt命令獲取應(yīng)用程序名稱。Android系統(tǒng)內(nèi)置ps命令,ps命令可根據(jù)具體應(yīng)用程序名稱獲取此進(jìn)程的PID。PC端使用ADB(Android Debug Bridge)調(diào)試器,根據(jù)正在運(yùn)行的應(yīng)用程序PID值向Android虛擬機(jī)發(fā)出JDWP命令,請(qǐng)求虛擬機(jī)應(yīng)用程序運(yùn)行狀態(tài),其后虛擬機(jī)返回應(yīng)用程序相關(guān)信息,PC實(shí)時(shí)輸出應(yīng)用軟件動(dòng)態(tài)行為并判斷此應(yīng)用程序是否存在惡意行為。動(dòng)態(tài)檢測(cè)過程示意圖如圖1所示:

      圖1 動(dòng)態(tài)檢測(cè)過程示意圖

      JDWP監(jiān)控處理過程如下:

      (1)ADB調(diào)試器發(fā)送JDWP請(qǐng)求與Android虛擬機(jī)握手,建立連接。

      (2)根據(jù)用戶需求,ADB調(diào)試器發(fā)送JDWP命令到Android虛擬機(jī),獲取當(dāng)前某個(gè)運(yùn)行中應(yīng)用程序所加載的所有API地址。

      (3)匹配用戶需監(jiān)控API,確定地址,發(fā)送JDWP命令到Android虛擬機(jī),對(duì)具體地址進(jìn)行監(jiān)控。

      (4)ADB調(diào)試器處理監(jiān)控返回信息,判斷連接和監(jiān)控有效。

      (5)用戶執(zhí)行應(yīng)用程序輸入操作,一旦被監(jiān)控的API被觸發(fā),Android虛擬機(jī)返回相關(guān)信息到ADB調(diào)試器。

      (6)對(duì)返回信息分析和判斷,實(shí)時(shí)通過PC端展示給用戶,達(dá)到實(shí)時(shí)監(jiān)控目的。

      JDWP監(jiān)控過程時(shí)序圖如圖2所示。

      監(jiān)控過程使用多進(jìn)程監(jiān)控思想,對(duì)于多個(gè)應(yīng)用程序開啟多個(gè)進(jìn)程處理。進(jìn)程之間相互獨(dú)立,即使在監(jiān)控過程中某個(gè)應(yīng)用程序崩潰,也不會(huì)影響對(duì)其他應(yīng)用程序的監(jiān)控。同時(shí)多進(jìn)程提高了性能,每一個(gè)進(jìn)程都具有相同的地址空間和相同的資源,這樣能夠達(dá)到的性能上限相對(duì)較大。

      4 惡意行為分析和判斷

      本部分惡意行為分析和判斷是根據(jù)大量實(shí)際檢測(cè)經(jīng)驗(yàn)分析而來,包括兩部分內(nèi)容,一是介紹如何對(duì)用戶信息泄露監(jiān)控;二是如何根據(jù)事件行為時(shí)間序列對(duì)惡意行為進(jìn)行監(jiān)控。

      在引言中提到,惡意行為中涉及惡意扣費(fèi)、靜默下載、隱私竊取、資費(fèi)消耗等占的百分比較大。惡意扣費(fèi)和資費(fèi)消耗相似,其行為都涉及后臺(tái)發(fā)送短信、撥打電話、連接網(wǎng)絡(luò)等。惡意行為分析中對(duì)短信發(fā)送相關(guān)API、撥打電話API以及連接網(wǎng)絡(luò)API監(jiān)控與分析是必不可少的部分[11]。因而本文在惡意行為分析與判斷部分,重點(diǎn)關(guān)注隱私竊取。隱私竊取行為會(huì)在用戶不知情的情況下,將手機(jī)內(nèi)涉及用戶隱私信息內(nèi)容通過互聯(lián)網(wǎng)上傳到服務(wù)器。獲取移動(dòng)設(shè)備信息比如IMEI、IMSI等需監(jiān)控函數(shù)android.telephony.telephonyManager.getDeviceId和android.telephony.telephonyManager.getSubscriberId。在分析和判斷時(shí),此類監(jiān)控API一旦出現(xiàn),可定義為相關(guān)惡意行為出現(xiàn)。除移動(dòng)設(shè)備本身信息外,用戶信息以不同存儲(chǔ)方式保存在移動(dòng)設(shè)備中。其他用戶私有數(shù)據(jù)存儲(chǔ)和共享部分借助Content Provider實(shí)現(xiàn),Content Provider為數(shù)據(jù)定義統(tǒng)一資源定位符(URI),讀取數(shù)據(jù)時(shí)只需訪問對(duì)應(yīng)URI。對(duì)于Content Provider,包括四種操作,查詢、插入、更新、刪除等行為需要監(jiān)控API如下:android.content.ContentResolver.query、android.content.ContentResolver.insert、android.content.ContentResolver.update、android.content.ContentResolver.delete。一旦出現(xiàn)此類函數(shù)監(jiān)控事件,表明應(yīng)用軟件對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。但由于Content Provider本身設(shè)計(jì)機(jī)制,會(huì)根據(jù)不同的輸入?yún)?shù)對(duì)不同的數(shù)據(jù)庫(kù)進(jìn)行操作,比如日歷、聯(lián)系人、短信、上網(wǎng)記錄、圖片、視頻、音頻等數(shù)據(jù),需要根據(jù)其對(duì)應(yīng)URI參數(shù)進(jìn)行特定監(jiān)控。

      應(yīng)用程序惡意行為分析內(nèi)容較多,部分涉及讀取的惡意行為根據(jù)監(jiān)控事件即可確認(rèn),如上文所介紹。而部分惡意行為本身只是敏感行為,需要根據(jù)敏感行為發(fā)生上下文環(huán)境和關(guān)系進(jìn)行分析判斷,來確定它是否可以被定義為惡意行為。

      本文將監(jiān)控實(shí)時(shí)事件行為與用戶輸入操作行為的時(shí)間序列進(jìn)行對(duì)比。若敏感行為發(fā)生時(shí)間未與用戶輸入操作時(shí)間對(duì)應(yīng),即可將敏感行為判定為惡意行為,這種分析方式符合可治可控原則。除此之外,惡意行為也需要借助實(shí)際運(yùn)行環(huán)境中上下文事件行為來進(jìn)行分析和判斷。

      以某一款錄音應(yīng)用程序?yàn)槔榻B。錄制音頻函數(shù)包括android.media.MediaRecorder.start和android.media.AudioRecord.startRecording。錄制音頻和錄制視頻時(shí)都會(huì)使用到android.media.MediaRecorder.start函數(shù)。因而在對(duì)此款錄音應(yīng)用程序行為監(jiān)控時(shí),android.media.MediaRecorder.start函數(shù)出現(xiàn),單純分析此事件,并不能確定此款錄音應(yīng)用程序只是在進(jìn)行其功能性錄音行為,后臺(tái)是否開啟視頻錄制無法確定。值得一提的是,在拍照和錄制視頻時(shí),Android要求必須開啟相機(jī)預(yù)覽功能,而部分后臺(tái)錄制和拍照采取開啟相機(jī)預(yù)覽而設(shè)置預(yù)覽模塊大小為零的方案。用戶無法看到相機(jī)預(yù)覽,這就達(dá)到后臺(tái)拍照錄影的目的。在錄音應(yīng)用程序開啟時(shí)間段內(nèi),android.media.MediaRecorder.start事件發(fā)生本身屬于正常行為。但如果此時(shí)間段內(nèi)出現(xiàn)開啟相機(jī)預(yù)覽(android.hardware.Camera.startPreview)事件,錄音應(yīng)用軟件則具備惡意行為嫌疑。此錄音應(yīng)用程序在錄制音頻同時(shí)也在后臺(tái)錄制視頻,因而對(duì)敏感行為上下文事件行為發(fā)生分析和判斷是很有必要的,特別是由于Android系統(tǒng)的開放性,同一功能可能由不同方法完成,在惡意行為分析和判斷過程中特殊情況值得重視。

      5 優(yōu)勢(shì)和改進(jìn)

      本文中提到的動(dòng)態(tài)檢測(cè)技術(shù)使用多進(jìn)程思想,本身性能會(huì)有較大的提高,但是如果移動(dòng)設(shè)備本身需要監(jiān)控的應(yīng)用程序過多的話,對(duì)PC端性能有較高要求。所以每次監(jiān)控應(yīng)用程序數(shù)量可以在PC端性能允許的情況下達(dá)到盡量多的數(shù)目,以求提高監(jiān)控效率。

      利用JDWP原理對(duì)應(yīng)用程序事件進(jìn)行實(shí)時(shí)監(jiān)控和檢測(cè),本身具有較高的時(shí)效性。但JDWP需要ADB調(diào)試器對(duì)Android虛擬機(jī)進(jìn)行通信,通信本身就有一定時(shí)耗。其次由于Android虛擬機(jī)的設(shè)計(jì),每個(gè)虛擬機(jī)實(shí)例都是一個(gè)獨(dú)立進(jìn)程空間。當(dāng)有新的Android應(yīng)用程序開啟,創(chuàng)建一個(gè)新的虛擬機(jī)實(shí)例并被追蹤監(jiān)控,這期間也需要一定的時(shí)間消耗,所以在用戶使用過程中,監(jiān)控新開啟的應(yīng)用程序需要一定的時(shí)間緩沖,應(yīng)用程序用戶模擬輸入或?qū)嶋H輸入需要等待連接建立監(jiān)控開啟后進(jìn)行。即便虛擬機(jī)創(chuàng)建進(jìn)程采用Linux的fork機(jī)制復(fù)制進(jìn)程,相比較創(chuàng)建進(jìn)程會(huì)有更高的效率,但短時(shí)間停頓仍然存在。在此段時(shí)間內(nèi)如果應(yīng)用程序開啟用戶輸入行為,可能會(huì)出現(xiàn)無法監(jiān)控的情況。如果考慮應(yīng)用程序行為監(jiān)控完整性,就需要用戶輸入等待一段時(shí)間,這樣可能會(huì)造成不太良好的用戶體驗(yàn)。在這一方面,期待在之后的研究和探索有一定的改進(jìn)。

      6 結(jié)束語

      本文介紹了當(dāng)前Android應(yīng)用程序動(dòng)態(tài)檢測(cè)技術(shù)和發(fā)展現(xiàn)狀,重點(diǎn)研究了以JDWP為基礎(chǔ)的動(dòng)態(tài)檢測(cè)技術(shù),并結(jié)合實(shí)際檢測(cè)經(jīng)驗(yàn)分析惡意行為的判定。目前針對(duì)Android應(yīng)用程序動(dòng)態(tài)檢測(cè)技術(shù)并不算少,但大多與實(shí)際應(yīng)用并不能很好的結(jié)合,具有一定的局限性。然而應(yīng)用程序越來越多地應(yīng)用到人們生活、學(xué)習(xí)和工作的方方面面,因而研究應(yīng)用程序的動(dòng)態(tài)監(jiān)測(cè)技術(shù)以及如何對(duì)惡意行為分析判斷定性具有一定的意義。

      參考文獻(xiàn):

      [1] OWASP. Mobile Top 10 2016-Top 10[CP/OL]. (2017-02-

      13). https://www.owasp.org/index.php/Mobile_Top_10_

      2016-Top_10.

      [2] 360互聯(lián)網(wǎng)安全中心. 2016年Android惡意軟件專題報(bào)告[EB/OL]. (2017-02-28). http://blogs.#/360mobile/2017/02/28/review_android_malware_of_2016/.

      [3] Shabtai A. Malware Detection on Mobile Devices[A]. Mobile Data Management[C]. 2010: 289-290.

      [4] 豐生強(qiáng). Android軟件安全與逆向分析[M]. 北京: 人民郵電出版社, 2013: 6-7.

      [5] 王艷紅,楊丁寧,史德年. 當(dāng)前移動(dòng)應(yīng)用軟件常用安全檢測(cè)技術(shù)[J]. 現(xiàn)代電信科技, 2012(9): 6-10.

      [6] WU D J, MAO C H, WEI T E, et al. Droidmat: Android malware detection through manifest and api calls tracing[A]. 7th Asia Joint Conference on Information Security[C]. 2012.

      [7] Sanz B, Santos I, Nieves J, et al. MADS: Malicious Android ApplicationsDetection through String Analysis[M]. Springer Berlin Heidelberg, 2013: 178-191.

      [8] IBM. 深入 Java 調(diào)試體系,第 3 部分: JDWP 協(xié)議及實(shí)現(xiàn)[EB/OL]. (2014-11-04). https://www.ibm.com/developerworks/cn/java/j-lo-jpda3/.

      [9] 史成潔. Android平臺(tái)應(yīng)用軟件保護(hù)技術(shù)的研究與實(shí)現(xiàn)[D]. 北京: 北京郵電大學(xué), 2015.

      [10] 周志明. 深入理解Java虛擬機(jī)[M]. 北京: 機(jī)械工業(yè)出版社, 2013.

      [11] 楊衛(wèi)軍,秦海權(quán),王鵬. Android移動(dòng)應(yīng)用軟件檢測(cè)平臺(tái)[J]. 信息網(wǎng)絡(luò)安全, 2012(8): 64-66.★

      高雄市| 余姚市| 昌都县| 梨树县| 南丰县| 天镇县| 宁陵县| 乐安县| 乌海市| 长寿区| 延庆县| 崇义县| 宁远县| 盐津县| 峨山| 曲沃县| 汉川市| 老河口市| 宝坻区| 康平县| 甘南县| 灌阳县| 达州市| 三亚市| 司法| 富川| 吴桥县| 满城县| 云林县| 观塘区| 阿荣旗| 武汉市| 阿拉善右旗| 卫辉市| 德惠市| 双江| 手机| 佛坪县| 滨州市| 大城县| 中江县|