何曉霞
(唐山幼兒師范高等專科學(xué)校,河北 唐山 063700)
在智能手機領(lǐng)域,Android 系統(tǒng)占比高達86.1%。但是Android 平臺在運行期間,也容易受到惡意軟件的影響,使得用戶隱私數(shù)據(jù)面臨泄露風(fēng)險?,F(xiàn)階段關(guān)于Android 平臺惡意軟件的檢測技術(shù),主要有靜態(tài)、動態(tài)兩種,前者又分為語義分析、特征分析等類型,后者則包含了污點跟蹤技術(shù)、API 調(diào)用攔截技術(shù)等。從檢測速率和識別精度上來看,動態(tài)檢測技術(shù)的優(yōu)勢更加明顯。因此,探究動態(tài)檢測技術(shù)在Android 平臺惡意軟件檢測識別上的應(yīng)用成為當(dāng)下的熱門研究課題。
現(xiàn)階段Android 系統(tǒng)運行中較為常見的惡意軟件主要分為以下五種:(1)惡意扣費。根據(jù)扣費形式的不同,又分為兩類,其一是利用用戶的手機號碼,訂購某些服務(wù)商提供的收費增值業(yè)務(wù);其二是盜用手機支付。兩種形式的惡意扣費都會給用戶帶來經(jīng)濟損失,并且扣費行為較為隱蔽,不會生成電子賬單,用戶通常難以及時發(fā)現(xiàn)。(2)隱私泄露。在用戶未授權(quán)的情況下,竊取用戶的個人隱私,如通訊錄、地理位置等。(3)惡意傳播。當(dāng)Android 用戶打開某些網(wǎng)站、APP 時,在后臺自動下載垃圾軟件,或者通過植入廣告代碼等方式自動播放廣告。(4)系統(tǒng)破壞。惡意軟件對Android 系統(tǒng)的功能造成破壞,導(dǎo)致系統(tǒng)出現(xiàn)運行卡滯,或無法連接互聯(lián)網(wǎng)等問題。(5)誘騙欺詐。利用偽基站發(fā)送偽造短信,誘導(dǎo)用戶點擊鏈接達到牟利目的。
該檢測方法的優(yōu)勢在于自動對Android 系統(tǒng)進行掃描、檢測,即便是軟件沒有啟動,也能夠納入檢測范圍,從而有效識別隱藏在正常文件中惡意代碼。根據(jù)檢測原理的不同,又分為語義分析、特征分析兩種核心技術(shù)。前者是在掌握代碼執(zhí)行邏輯的基礎(chǔ)上,通過分析代碼數(shù)據(jù)流,實時檢測代碼中是否存在惡意行為。后者則是基于代碼的特征關(guān)系,如API 調(diào)用序列等,來識別惡意行為。雖然靜態(tài)檢測在識別惡意軟件上也表現(xiàn)出較為理想的效果,但是也有一定局限性,例如在代碼加密情況下,會導(dǎo)致無法讀取代碼特征,進而無法準確、全面識別惡意軟件。
將待測軟件在特定環(huán)境下啟動、運行,在整個運行期間內(nèi)實現(xiàn)行為監(jiān)控。若存在惡意行為,會立即捕捉并強制中斷行為進程,并針對該惡意行為進行分析、判斷,達到保護系統(tǒng)的效果。同樣的,動態(tài)檢測技術(shù)中也有兩種核心技術(shù),即系統(tǒng)狀態(tài)對比技術(shù)、軟件行為監(jiān)控技術(shù)。前者是以初始化的Android 系統(tǒng)狀態(tài)作為參照,將運行后的狀態(tài)與參照物進行對比,若兩者狀態(tài)不一致,說明存在異常行為,針對異常行為做進一步分析,可發(fā)現(xiàn)惡意軟件。后者則是讀取軟件行為信息,若某軟件運行期間未經(jīng)授權(quán)讀取通訊錄等隱私信息,則及時攔截訪問、中斷進程,達到監(jiān)控、保護的目的。
3.1.1 API 調(diào)用攔截技術(shù)
該檢測方法的原理是基于API 調(diào)用攔截技術(shù),從代碼中提取出軟件胎記,以此為參照。然后從數(shù)據(jù)庫中調(diào)用已知惡意軟件的特征信息,將特征信息與軟件胎記進行對比,若兩者匹配,則成功檢測出惡意軟件。API 調(diào)用攔截流程如圖1 所示。
圖1 API 調(diào)用攔截流程圖
3.1.2 軟件胎記提取技術(shù)
軟件胎記是某一款軟件獨有的特征,由于該特征具有不可復(fù)制、不可更改的特性,因此可以將其作為軟件識別的標準。但是軟件胎記隱藏在計算機程序中,提取難度較大。目前常用的提取技術(shù)是選擇源代碼、匯編指令等作為提取源,利用程序拷貝的方式,選取2 個存在拷貝關(guān)系的程序,輸入相同的提取源,執(zhí)行提取操作后,會分別得到兩個特征集合。然后再尋找兩個特征集合中的相同特征,即為軟件胎記。
3.1.3 相似性判定方法
在獲取軟件胎記后,還要與數(shù)據(jù)庫中已經(jīng)存儲的,已知的惡意軟件的軟件胎記進行匹配。根據(jù)匹配度的高低,可以判斷該軟件是否包含惡意行為、病毒片段。相似性判定共分為五步:(1)分別讀取待檢測軟件和數(shù)據(jù)庫已知惡意軟件的軟件胎記。(2)完成加載后,執(zhí)行匹配程序,尋找兩者之間是否存在匹配度較高的相似片段。(3)若無相似片段,在完成遍歷后結(jié)束檢測。若有相似片段,則統(tǒng)計數(shù)量,并按照相似度的高低依次排序。(4)重復(fù)上述步驟,直到所有片段遍歷完成。(5)最后統(tǒng)計結(jié)果,結(jié)束檢測。整個流程如圖2 所示。
圖2 軟件胎記相似性判定流程
3.2.1 動態(tài)污點分析
前文所述的動態(tài)軟件胎記相似性檢測方法,需要在樣本庫中存儲足夠多的惡意軟件樣本,才能準確判斷出被檢測軟件中的惡意行為。但事實上,惡意軟件的更新迭代速度極快,樣本庫不可能盡數(shù)收集這些樣本,因此存在一定的局限性?;诖?,提出了一種污點跟蹤技術(shù)?!拔埸c”是在數(shù)據(jù)或變量的內(nèi)存空間中,額外添加的標簽,將其作為特定識別符號,在檢測時只要識別標簽就能夠完成對特定數(shù)據(jù)的動態(tài)追蹤。其操作方法如下:(1)選擇需要跟蹤的敏感數(shù)據(jù),植入污點,完成標記;(2)利用Dalvik虛擬機,將經(jīng)過標記的污點,生成專門的污點標簽;(3)在Dalvik虛擬機內(nèi),將污點標簽隨數(shù)據(jù)同步傳播;(4)選擇進程間通信的方式完成嵌入污點數(shù)據(jù)的傳播,數(shù)據(jù)進入到Binder 庫;(5)調(diào)用Binder 庫內(nèi)數(shù)據(jù),經(jīng)過Binder 內(nèi)核模塊處理后,完成對樣本的檢測、分析;(6)根據(jù)動態(tài)污點分析結(jié)果,將待檢測樣本軟件分類后重新存儲到Bindser 庫內(nèi),并在此處完成數(shù)據(jù)備份;(7)將原數(shù)據(jù)繼續(xù)上傳至Dalvik 虛擬機處理;(8)從被檢測軟件中,檢測API 敏感數(shù)據(jù)是否含有污點;(9)若檢測到含有污點,則取出污點,完成檢測。整個流程如圖3 所示。
圖3 污點跟蹤流程圖
3.2.2 行為檢測方法
在Android 系統(tǒng)中,部分API 提供的敏感數(shù)據(jù),需要被重點標記。特別是設(shè)備信息、地理位置等,包含的涉密信息較多,在數(shù)據(jù)操作時要予以特別關(guān)注。含有敏感數(shù)據(jù)的API 如表1 所示。
表1 敏感數(shù)據(jù)讀取API
對于敏感數(shù)據(jù),常用的方法是進行數(shù)據(jù)加密處理。若檢測出該數(shù)據(jù)帶有污點標簽,則使用密鑰、算法,對其做加密處理。后續(xù)要想重新使用該數(shù)據(jù),則需要先執(zhí)行解密操作,從而達到保障數(shù)據(jù)隱私與安全的效果。
結(jié)束語
Android 系統(tǒng)使用期間避免惡意軟件訪問,是系統(tǒng)開發(fā)者和使用者的共同訴求。目前靜態(tài)檢測和動態(tài)檢測技術(shù),對于識別惡意軟件均起到了積極效果,但是綜合對比來看,動態(tài)檢測技術(shù)優(yōu)勢更為明顯。熟練應(yīng)用基于動態(tài)軟件胎記相似性的檢測方法、基于污點跟蹤技術(shù)的檢測方法,將有助于惡意軟件的及時、準確識別,對采取限制措施和保障系統(tǒng)安全有積極幫助。