何遠德,周序林
(1.西南民族大學外國語學院,四川 成都 610041;2.西南民族大學文學與新聞傳播學院,四川 成都 610041)
隨著我國幾大運營商的不斷投入和持續(xù)建設,移動互聯(lián)網(wǎng)取得了長足發(fā)展,國內(nèi)移動設備制造商的持續(xù)發(fā)力和國民生活水平持續(xù)增長.移動設備基本上實現(xiàn)了全面普及,根據(jù)中國互聯(lián)網(wǎng)絡信息中今年發(fā)布的《第40次|中國互聯(lián)網(wǎng)絡發(fā)展狀況統(tǒng)計報告》[1]的數(shù)據(jù),截止2017年6月,中國手機網(wǎng)民規(guī)模已經(jīng)達到7.24億,手機上網(wǎng)使用率為96.3%.
在智能移動終端如火如荼發(fā)展的同時,其安全態(tài)勢也日益嚴峻.根據(jù)360互聯(lián)網(wǎng)中心發(fā)布的《2017年中國手機安全生態(tài)報告》[2],報告主要從安卓移動終端入手,從系統(tǒng)漏洞、預裝軟件、手機隱私權獲取、惡意程序、釣魚網(wǎng)站、騷擾電話、垃圾短信、網(wǎng)絡詐騙等8個部分就行了統(tǒng)計,其中的幾個數(shù)據(jù)很值得我們注意,各種級別的漏洞存在均在90%以上,嚴重漏洞的存在率高達90.6%以上[2].從2017年1-7月,統(tǒng)計到的惡意程序感染數(shù)高達1.3億人次[2],每天感染量高達61.5萬人次,手機應用程序獲取用戶的隱私權限高達30.2%[2].
上述的數(shù)據(jù)令人觸目驚心,目前安卓移動終端已經(jīng)深入到各個領域,涉及到生活、生產(chǎn)、國家安全領域等,與人們的生活息息相關.在這種情況下,關于Android系統(tǒng)安全的研究大幅度增加,來自會議、期刊和網(wǎng)絡的論文覆蓋面非常廣泛.文獻[3-6]從安卓系統(tǒng)的發(fā)展歷史和市場占有、安全狀況做了調(diào)查、分析和展望,并從安卓的體系結構、安全機制、惡意軟件分類和檢測、機器學習等方面做了全面的分析和闡釋.文獻[7]從系統(tǒng)安全和應用安全的角度進行了研究.文獻[8]中主要從生物識別、生物認證方面進行了研究,主要從身份認證的角度進行研究.文獻[9-13]從惡意代碼檢測出發(fā)提出了多種解決方案,由終端和服務器協(xié)作完成,客戶端完成輕量級檢查,負責檢查交由服務器完成;通過簽名的方式對惡意代碼進行識別等方法,或從app應用權限著手進行分層治理.文獻[10]從Dalvik指令出發(fā)進行Android惡意代碼特征形式化描述和分析方法的研究和應用,用來進行惡意代碼的識別.
文獻[14-15]基于svm對進行建模進行惡意代碼識別研究.在參考文獻[16-17]中提出基于機器學習和行為識別的方法并進行了測試實驗.
綜上所述,當前Android安全研究主要還是傾向于被動防御,對包進行解析、敏感api調(diào)用、應用特征碼識別、已知漏洞對抗分析等.鑒于用戶在Wifi環(huán)境下、不使用運營商網(wǎng)接入、固定終端組網(wǎng)、使用固定的應用程的使用場景研究相對較少;本文將基于主動防御的模式下對安卓的安全進行研究,提出應用白名單與主動防御混搭的安全框架,用于解決面向安卓集群工作環(huán)境下Android的終端安全以及集群安全.
主動防御體系從底至上依次分為三個層次:安卓傳感及防護層 、數(shù)據(jù)處理中心GMC、管理臺.
其中核心部分為安卓傳感及防護層,主要包括底層傳感器、組件傳感器、應用傳感器等為主動防御引擎提供支撐;主動防御引擎提供防護模式、誘捕模式、情報模式等三種使用模式;實現(xiàn)對各種攻擊行為的感知和查殺,兼?zhèn)浞烙?、情報收集、攻擊行為收集功能,主動防御主要依賴攻擊行為的識別.數(shù)據(jù)處理中心GMC負責處理由安卓防護層上傳的數(shù)據(jù);管理臺為用戶展示整個網(wǎng)絡空間的態(tài)勢狀態(tài).Android主動防御體系的總體架構如圖1所示:
圖1 Android主動防御體系Fig.1 Active defense architecture
鑒于本研究中安卓終端使用場景主要限于終端無線組網(wǎng),后面不再討論Sim卡方面的問題.主動防
御系統(tǒng)總體結構如下圖2所示:
圖2 Android主動防御系統(tǒng)Fig.2 Android active defense system
應用場景Android系統(tǒng)使用對象:個體手持移動終端、車載設備、固定終端;
以獨立客戶端為單位組件的Android終端通信網(wǎng)絡場景如下圖3所示:
圖3 Android終端應用場景Fig.3 Android terminal application scene
Android主動防御系統(tǒng)從技術上分為為兩級架構,客戶端和后端管理中心.防御客戶端運行在個體手持移動終端、車載設備、固定終端等;管理中心運行在后端管理集群.
防御客戶端系統(tǒng)基于三層結構進行設計分為展示層、功能層、引擎層三層,以簡潔的方式進行人機交互,讓用戶掌握終端的安全狀況.功能層處理應用防御、組件防御、安全策略管理、日志管理、賬號權限管理、外設管理等.引擎層從Linux內(nèi)核、虛擬機安全、硬件訪問等層面進行監(jiān)控和主動防御.
防御系統(tǒng)管理中心基于用戶專用網(wǎng)絡鏈接,采用加密鏈路與各客戶端進行信息流和控制流的傳輸.防御系統(tǒng)管理中心對通信內(nèi)容進行加密,支持對客戶端的認證、鑒權功能.完成和客戶端的數(shù)據(jù)安全交互,實時掌控客戶端位置、活動情況;并形成終端的安全態(tài)勢圖,并根據(jù)終端的態(tài)勢進行適當?shù)母深A,緊急情況可以發(fā)出指令讓終端下線、甚至自毀.
Android主動防御客戶端防御能力分兩層防護:
白名單防護、基于主動防御的防護.Android管理臺主要用于對組網(wǎng)中的Android終端之間的通訊鏈路進行安全加密,主動防御安全策略下發(fā),終端安全狀態(tài)呈現(xiàn),對Android終端進行有效管控(遠程數(shù)據(jù)銷毀、系統(tǒng)自毀等).
3.1.1 白名單防護功能
根據(jù)Android系統(tǒng)的特點及用戶使用的場景,用戶只會固定使用指定的應用程序,采用白名單機制更適合;凡是出現(xiàn)在白名單的應用,終端無條件的對應用的各種行為放行.Android主動防御白名單通過如下四個方面進行處理:
1)白名單中應用進程監(jiān)控,確保其應用進程不被非法改變篡改,根據(jù)應用md5指紋進行校驗;
2)防御客戶端?;?,確保主動防御程序不被非法強制結束,也是主動防御程序的關鍵之一,也是目前業(yè)界主要研究的內(nèi)容之一;
3)應用白名單更新,Android終端應收到下發(fā)的白名單之后,能正常進行本地白名單更新和當前活動應用的處理.
4)硬件白名單機制,藍牙、紅外、WIFI、Nfc等硬件的白名單管控.
3.1.2 基于主動防御的防護體
基于主動防御的防護功能主要確保Android終端上進程、數(shù)據(jù)及文件受到實時防護,不被篡改、修改、劫持,由如下幾部分構成防護體系.
1)對應用程序的權限清單入庫建立權限匹配庫,對應用權限進行安全等級劃分;
2)列出安卓系統(tǒng)的實時活躍應用進程,自動終止非白名單應用;
3)終端現(xiàn)階段對藍牙、紅外、NFC等近場通訊設備進行連接探測和檢查,自動終止異常連接;
4)對物理文件和內(nèi)存文件進行自我保護,防止被非法拷貝和復制;
5)基于logcat記錄終端運行日志,通過安全鏈路提交到管理平臺進行入庫,進行完整分析和安全評估;同時解讀敏感日志進行終端預警;
6)網(wǎng)絡訪問行為沉淀生成網(wǎng)絡行為數(shù)據(jù)庫,基于此數(shù)據(jù)生成網(wǎng)絡行為鏈,如果發(fā)現(xiàn)陌生網(wǎng)絡行為,即時預警和處理;
7)安全評測:基于上述1)-6),進行安全評判,對安全級別進行數(shù)字化展示,讓終端用戶對當前的安全態(tài)勢進行直觀評判.
3.1.3 異常處理機制
Android主動防御客戶端以保護重要文檔數(shù)據(jù)及關鍵進程的正常運行為核心,當主動防御系統(tǒng)的異常閥值被觸發(fā)時,啟動主動防御文件防護進程,使得所有閱讀文檔的應有無法打開,也無法在此Android終端上安裝具有文檔閱讀功能的應用;結束該Android終端上白名單中的重要進程,并阻止其再次啟動,使得發(fā)生異常的終端失效;
Android主動防御管理臺主要用于對組網(wǎng)中所有Android終端進行有效管控,并實時呈現(xiàn)總體安全態(tài)勢,集群中心可以進行總體管控和決策下達,由以下幾部分構成:終端聯(lián)網(wǎng)安全準入認證、離線銷毀體系建立、終端運行狀態(tài)展現(xiàn)、安全狀態(tài)指標呈現(xiàn)、終端在組網(wǎng)中的實時位置圖.
3.3.1 基于主動防御的防護機制
當攻擊方第一層白名單機制的限制,將非法進程添加入白名單或者非法入侵并控制白名單中的應用進程時,其之后所做的任何非法異常操作將被基于主動防御的防護機制識別、監(jiān)控、并阻止;安卓主動防御引擎主要解決防御鏈與殺傷鏈之間的對抗.殺傷鏈通常是指網(wǎng)絡攻擊殺傷鏈中的各個鏈式環(huán)節(jié),結構常見如下表1:
表1 殺傷鏈構成Table 1 Killing chain composition
主動防御鏈引擎構成參見下表2.
表2 防御鏈構成Table 2 Defense chain composition
3.3.2 底層Linux內(nèi)核行為感知與防護
在操作系統(tǒng)底層建立驅(qū)動級的進程、設備調(diào)度、文件系統(tǒng)管控驅(qū)動.主動防御激活之后,會啟動文件監(jiān)控、進程監(jiān)控、Prop監(jiān)控、自我防護、行為識別五個線程進行防護.
文件系統(tǒng)過濾驅(qū)動將捕獲文件創(chuàng)建、打開、刪除、重命名、讀寫、設置、查詢等動作;進程監(jiān)控實時將捕獲進程創(chuàng)建、進程終止、進程命令行及參數(shù)、本地線程創(chuàng)建、遠線程創(chuàng)建、線程終止、驅(qū)動加載等;Prop監(jiān)控將實時獲取Android系統(tǒng)配置信息表的打開、創(chuàng)建、刪除、寫入、查詢等;自我防護從內(nèi)核層和應用層進行雙重防護,如果發(fā)現(xiàn)有重要進程被終止,并立即進行二次啟動,如果多次啟動失敗將把系統(tǒng)轉(zhuǎn)入異常模式;行為識別線程基于行為庫,對當前終端的行為鏈進行判別.
3.3.3 主動防御核心算法
文獻[18]指出Android系統(tǒng)的Android Permission機制作為一種粗粒度的訪問控制機制,不能有效地阻斷應用程序?qū)ο到y(tǒng)資源的濫用,使得Android惡意代碼容易借此實施攻擊.因此在安卓權限的基礎上,在應用層采用基于行為的系統(tǒng)資源訪問控制方法,對應用程序?qū)Y源的行為進行規(guī)范,防止系統(tǒng)資源被濫用造成對系統(tǒng)安全的破壞.
主要利用TLCK時序邏輯描述語言,為與系統(tǒng)安全相關的關鍵系統(tǒng)資源訪問定義安全的行為模式,并對應用程序執(zhí)行過程中的行為進行動態(tài)監(jiān)視,通過匹配該應用的行為模型和資源訪問的行為模型,實施訪問控制,與基于惡意行為特征的惡意代碼檢測方法相比,資源訪問行為模型更容易定義,并且能夠應對未知攻擊.
主動防御算法基于行為權重和遞歸出應用所有相關線程的行為權重進行加權判斷,這樣在實際訓練過程中調(diào)整權重來實現(xiàn)權重配比的最優(yōu),具體如下:
1)算法訓練期
在針對已有的惡意代碼行為分析實驗中,基于概率論中的大數(shù)定律建立惡意行為庫,行為庫作為文件分離出來并在Android內(nèi)核層進行保護,以后只要更新行為庫就可以進行功能強化和算法升級,所采用的常用算法和主機監(jiān)控類似,但行為庫及規(guī)則不一樣
2)算法自我更新
在一個行為庫更新發(fā)布時,即可采用回溯算法得到:能夠造成泄密的所有庫中行為組合并保存.在主動防御過程中,通過判斷應用的自身進程樹上的行為鏈是否包含有該行為的組合,就可以識別這一行為鏈是否匹配惡意行為,如果滿足觸發(fā)主動防御系統(tǒng)就進行防御處理;如果在這個處理過程中出現(xiàn)誤判,可以人工干預,將此行為鏈標記為良性行為.
3)基于權重閥值的惡意行為判定
行為庫中的每種行為都是惡意程序中出現(xiàn)概率較高的,正常程序出現(xiàn)概率較低的.而且每種行為都有一個權重值,竊密性越明顯的通信行為權重值越高,權重值的設定基于我們的誘捕系統(tǒng)和自我學習行為.
步驟一:設一棵進程樹上每個行為的權重值為Wi(i=1,2,…n),則具有庫中n個行為的進程A得出的總權重值為:
步驟二:進程A的所有m個子進程(包括直接的及間接的)所產(chǎn)生的行為鏈的總權重值為:SubX=,如果進程 X 有子進程,則:WX =AX+SubX 否則 WX=AX.
步驟三:遞歸算出所有線程的權重,以不再有子進程為遞歸結束.即可計算出這一系列通信行為鏈的總權重值Wt.
步驟四:如果權重值達到了設定閥值,則說明:這一行為鏈具有明顯的惡意行為.
步驟五:例外處理.比如:向遠程傳輸文件等行為可以直接把權重值規(guī)定為閥值,立即判為異常.對一些特殊進程(配合進程名和文件內(nèi)容校驗)需要設置經(jīng)驗策略.
通過步驟一到步驟五構成主動防御的核心算法基礎.
4)行為庫建立
安卓應用大多數(shù)都通過安卓sdk開發(fā)完成,個別應用會輔助Ndk進行原生開發(fā).行為鏈的構建主要基于安卓權限、Api調(diào)用、系統(tǒng)配置修改、文件操作、硬件調(diào)用、網(wǎng)絡操縱六個部分進行建設.
主動算法行為鏈中主要對安卓權限、Api調(diào)用進行權重維護.安卓權限目前具有一百多種,例如:“android.permission.WRITE_EXTERNAL_STORAG”是允許寫外部存儲權限,屬于高權值權重;而“android.permission.READ_EXTERNAL_STORAGE”是允許讀外部存儲權限,屬于低權值權重.安卓公開了若干Api,我們對Api進行分組整理建立權值庫,如“Android.telephony.TelephonyManager.getCellLocation()”是進行位置獲取的 Api,是屬于高權值 Api;而“android.telephony.TelephonyManager.getDeviceId()”獲取設備id信息,權值相對偏低.其他部分的權重信息采集先對單純一些,不再贅述.
主動防御客戶端在安卓5.0,6.0下面開發(fā)測試通過,在程序?qū)崿F(xiàn)上主要需要解決活躍進程的讀取、有異常行為的進程的關閉、應用權限列表的獲取等.
客戶端通過調(diào)用 ActivityManager的 getRunningAppProcesses()方法獲得當前系統(tǒng)里所有正在運行的應用進程 ,此代碼在安卓5.x和安卓6.x下面調(diào)試通過.安卓版本更迭快速,關鍵位置的處理需要針對不同的版本進行不同的處理,運行效果如下圖4所示.關鍵代碼如下:
圖 4后臺進程展示Fig. 4Background process display
Android進程終止處理早期在安卓4.x以前的版本中,可以調(diào)用 ActivityManagerNative的 killBackgroundProcesses()方法.但是 5.x,6.x版本中此方法已經(jīng)失效,只能通過調(diào)用安卓的輔助服務功能進行進程的關停.
安卓系統(tǒng)中PackageManger的主要職責是對應用程序包進行管理,通過它可以獲取應用程序的相關信息,抽取權限的部分代碼如下:
白名單+主動防御的安全體系架構是針對國內(nèi)特殊行業(yè)的需求做的定制設計,目前處于測試運行中,系統(tǒng)運行穩(wěn)定,管理中心對終端集群整個運行態(tài)勢、安全態(tài)勢做到了集中可控.
但是安卓的版本不斷升級演進,整套體系架構目前大部分功能還是基于應用層來展開;現(xiàn)在存在的問題在于安卓版本一旦升級,通常都會涉及安全架構的升級,影響安全客戶端的有效工作;后續(xù)的研究需要基于安卓源代碼進行,進行安全線程的底層植入,確保更加自主可控;進行惡意行為判定算法的深入研究向智能算法升級.
[1]中國互聯(lián)網(wǎng)絡信息中心.第40次中國互聯(lián)網(wǎng)絡發(fā)展狀況統(tǒng)計報告[R/OL].(2017-08-07)[2017-12-01].http://www.cnnic.net.cn/hlwfzyj/hlwxzbg/hlwtjbg/201708/P020170807351923262153.pdf.
[2]360互聯(lián)網(wǎng)安全中心.2017中國手機安全生報[R/OL].(2017-09-13)[2017-12-01].http://zt.#/dl.php?filename=2017中國手機安全生態(tài)報告.pdf.
[3]卿斯?jié)h.Android安全研究進展[J].軟件學報,2016,27(1):45-71.
[4]LA POLLA M,MARTINELLI F,SGANDURRA D.A survey on security for mobile devices[J].IEEE Communications Surveys & Tutorials,2013,15(1):446-471.
[5]卿斯?jié)h.Android安全的研究現(xiàn)狀與展望[J].電信科學,2016,32(10):2-14.
[6]FANG Z,HAN W,LI Y.Permission-Based Android security:Issues and countermeasures[J].Computers & Security,2014,43:205-218.
[7]張玉清,王凱,楊歡,等.Android安全綜述[J].計算機研究與發(fā)展,2014,51(7):1385-1396.
[8]許艷萍,馬兆豐,王中華,等.Android智能終端安全綜述[J].通信學報,2016 ,37(6):169-184.
[9]文偉平,梅瑞,寧戈,等.Android惡意軟件檢測技術分析和應用研究[J].通信學報,2014,35(8):78-85.
[10]李挺,董航,袁春陽,等.基于Dalvik指令的Android惡意代碼特征描述及驗證[J].計算機研究與發(fā)展,2014,51(7):1458-1466.
[11]ELISH KO,SHU X,YAO D,et al.Profiling user-trigger dependence for Android malware detection[J].Computers & Security,2015,49(C):255-273.
[12]FARUKI P,LAXMI V,BHARMAL A,et al.Andro Similar:Robust signature for detecting variants of Android malware[J].Journal of Information Security and Applications,2015,22:66-80.
[13]LIU X,LIU J.A two-layered permission-based Android malware detection scheme[C].2014 2nd IEEE International Conference on Mobile Cloud Computing,Services,and Engineering,2014,142-148.
[14]龔明明,吳漢,孫知信.基于SVM的Android應用程序安全檢測綜述[J].計算機應用研究,2017,34(4):965-971.
[15]董航,李祺,董楓,等.基于HMMs-SVM的Android惡意行為動態(tài)檢測模型[J].北京郵電大學學報,2014:10-19.
[16]雷經(jīng)緯.一種基于行為的Android惡意軟件檢測系統(tǒng)的設計及實現(xiàn)[D].武漢:華中科技大學,2015.
[17]卜義云.基于機器學習的Android惡意軟件靜態(tài)檢測系統(tǒng)的設計與實現(xiàn)[D].成都:電子科技大學,2016.
[18]雷靈光,荊繼武,王躍武,等.一種基于行為的Android系統(tǒng)資源訪問控制方案[J].計算機研究與發(fā)展,2014,51(5):1028-1038.