999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于污點傳播動態分析的Android安全系統研究

2017-01-12 08:48:07潘志安
現代電子技術 2016年23期

潘志安

摘 要: 隨著移動互聯網的飛速發展,Android系統得到了大量用戶和開發人員的青睞。針對Android系統的惡意軟件層出不窮,由此引發的危害也越來越嚴重。目前針對Android系統應用程序的檢測多采用靜態分析技術,通過分析代碼發現其惡意行為,因此準確度并不是很高,而且對于新的惡意軟件變種的檢測存在較多問題,而動態分析技術恰好可以彌補這一不足。基于污點傳播的動態分析技術,在應用程序運行時監測其行為并記錄相關信息進行分析,確定其是否具有惡意軟件性質。不僅對系統運行負載較小,也便于系統移植進行多平臺的開發測試。

關鍵詞: Android系統; 惡意軟件; 動態分析; 污點標記

中圖分類號: TN929.5?34; TM417 文獻標識碼: A 文章編號: 1004?373X(2016)23?0039?04

針對目前Android系統惡意軟件檢測技術的研究現狀,對Android 安全監控系統進行了研究和設計,在應用程序框架層和Dalvik虛擬機層監控、記錄應用程序行為的方式,構建了新的污點傳播監控系統,跟蹤被污點標記的敏感數據在系統中的傳播過程并進行信息記錄分析,確定應用程序行為是否具有惡意軟件性質。

1 系統結構

監控系統的總體設計結構如圖1所示。本系統基于Android 4.1.1系統和Pandaboard 內核設計。通過對系統的Dalvik虛擬機和應用程序框架層的修改,實現了污點數據定義、污點數據標記、污點標記傳播、污點標記提取和應用程序行為分析等功能。

在圖1中,污點數據定義模塊的功能是定義和存儲敏感數據源類型,用于污點標記不同類型的數據;污點標記模塊在應用程序調用系統API進行數據操作時對其讀取的敏感數據類型進行污點標記;污點傳播模塊在應用程序和系統組件之間的傳遞依靠系統中的Binder IPC完成;污點標記提取模塊負責在污點數據到達目標應用程序時記錄污點傳播路徑;最后通過應用程序分析模塊篩選Android系統中logcat應用程序的相關行為信息并輸出。

2 系統詳細實現

2.1 污點數據定義模塊

針對污點數據源dalvik\vm\interp\Taint.h和dalvik\ src\main\java\dalvik\system\Taint.java,Taint.java的作用在于提供Dalvik虛擬機的污點接口,并在taint類中聲明污點數據源的定義,其代碼如下所示,其中TAINT_CLEAR表示為空值。

public static final int TAINT_CLEAR =0x00000000; //空值

public static final int TAINT_LOCATION = 0x00000001;

//位置

public static final int TAINT_CONTACTS = 0x00000002;

//聯系人

public static final int TAINT_MIC = 0x00000004; //話筒輸入

public static final int TAINT_PHONE_NUMBER= 0x00000008; //電話號碼

public static final int TAINT_LOCATION_GPS= 0x00000010; //GPS

public static final int …

將污點數據源定義為32位值的原因在于Android系統的應用程序運行在Dalvik虛擬機中。Dalvik虛擬機是Google專門為Android平臺開發的Java虛擬機,但是它不兼容java字節碼格式,而是首先將java應用程序轉換成.dex格式再執行。因此需要將污點數據源定義為.dex文件中的數據類型。

在Taint.java文件中完成污點數據源的聲明之后,需要在Taint.h文件中完成污點數據源在Dalvik解釋器中的定義。首先對污點數據類型進行了定義,其結構體為:

typedef struct Taint { u4 tag; } Taint;

在完成污點數據源的定義之后,就可以進行Dalvik虛擬機和應用程序框架層的修改,完成污點監控系統的其他功能。

2.2 污點數據標記模塊

通過分析Android系統架構發現,要實現污點數據標記功能應該在Dalvik虛擬機層完成,但是又涉及到應用程序框架層API的改動,因而需要使用JNI技術。通過JNI技術,Java程序中的函數可以調用本地語言,例如C/C++等語言編寫的函數,而本地語言中的函數方法也可以調用Java層的函數。在本監控系統中,具體的方法實現是:首先在Java類使用native關鍵字聲明本地的方法并作為類的靜態成員;之后通過編譯生成.class文件和.h頭文件,在C/C++語言中完成具體的實現方法;最后通過編譯生成動態鏈接庫lib*.so文件用于系統調用。整個流程如圖2所示。

在對數據進行污點標記之前,需要了解Dalvik虛擬機中各種對象的存儲方式。一個.dex文件通常需要由類加載器加載原生類和Java類,然后通過解釋器根據指令集對Dalvik字節碼進行解釋和執行。在加載具體的類之前,需要使用mmap函數對.dex文件進行解析,將.dex文件映射到內存中即可進行讀/寫操作。在完成文件解析之后,需要加載class,而加載的類則需要ClassObject數據結構存儲。

在完成函數聲明之后,在dalvik\vm\native中新建dalvik_system_Taint.cpp,完成上述兩個函數的定義。

在完成了Dalvik虛擬機層的修改之后,還需要對應用程序框架層中的API進行修改。首先通過惡意軟件樣本得到了惡意軟件經常調用的API,如表1所示。

表1 Android惡意軟件常用API示例

[API\&說明\&addPermisson() \&為系統增加一個權限\&getCellLocation()\&獲取當期設備位置\&getDeviceId() \&獲取惟一的設備 ID\&getSimState()\&獲取 SIM 卡狀態\&sendTextMessage()\&向單個收件人發送短信息\&sendBoradcast()\&向接收器廣播消息\&]

對應用程序框架層API的修改主要在Cursor包裝庫,短信息管理類以及獲取設備信息管理等類。其中CursorWrapper類是Cursor類的包裝類。它提供了多種對數據庫查詢結果進行訪問的接口方法,因此可以通過修改Cursor類Wrapper類,使得任何調用該類的函數對象都會被進行污點標記,其實現方法為:首先在CursorWrapper類中定義進行污點標記的功能函數;之后修改getString()等方法。

getString()方法用于接收參數,其返回值同樣也為String類型。此方法多用于從Android系統數據庫中獲取查詢結果,因此通過修改該方法,將污點標記功能嵌入其中,即可實現對數據庫查詢結果中String類型數據的污點標記,其實現代碼為:

public String getString(int columnIndex)

{

//開始污點標記

String retString = mCursor.getString(columnIndex);

if(taint_ != Taint.TAINT_CLEAR)

{

Taint.addTaintString(retString, taint_);

}

//結束污點標記

return retString;

}

由于針對Android系統原生的API的擴展,因此在完成修改之后,需要更新frameworks/base/api/下的current.txt文件,使得修改后的API生效,操作命令為在編譯Android系統之前,在終端輸入make update?api。

2.3 污點數據傳播模塊

在Android系統中,有關Binder的實現在各個層都有,主要的Binder庫由本地原生代碼實現。Java和C++層都定義有相同功能的Binder接口,供應用程序使用,他們實際都是調用原生Binder庫的實現。Binder的系統架構如圖3所示。

在源代碼中定義了Parcel類,并對當前數據位置讀取寄存器中值的方法定義進行了修改:

public final int readInt()

{

//開始污點數據追蹤

int start = dataPosition();

int val1 = nativeReadInt(mNativePtr);

int end = dataPosition();

int len = end ? start;

int tag = getTaint(start, len);

int val2 = Taint.addTaintInt(val1, tag);

return val2;

//結束污點數據追蹤

}

同時在cmds\servicemanager\binder.c下添加在數據傳輸時進行污點標記的命令函數。在完成IPC的污點設計之后,系統需要對應用程序框架層的API進行修改。以讀取視頻數據為例,在源代碼中插入了污點追蹤代碼。

2.4 污點標記提取模塊

污點標記的提取發生在污點數據到達目標應用程序時,與敏感數據離開應用程序時進行污點標記類似,可以通過擴展應用程序框架層和Dalvik虛擬機中的相關函數,完成污點標記的提取。在完成Dalvik虛擬機污點標記提取的功能之后,需要擴展應用程序框架層API功能,使其可以根據污點標記的來源判斷應用程序行為是否屬于惡意行為。

以發送短信方法SmsManager為例,由于Android系統中發送短信和數據都要使用SmsManager類的API,因此經常被惡意軟件調用,將用戶敏感信息發送給遠程主機或者直接發送短信息到高額扣費號碼。通過擴展SmsManager類中sendTextMessage方法,使其可以判斷變量類型的來源。

2.5 應用程序分析模塊

在整個監控系統完成之后,就可以將Android應用程序放入該系統中運行。在程序運行期間記錄其操作,并輸出到系統外部。因此該模塊設計分為兩部分。

2.5.1 Logcat輸出日志

Logcat是Android系統中集成的一個命令行工具,Android系統日志存儲在循環緩沖區中,通過logcat就可以記錄和查看這些系統信息,其默認命令為[adb] logcat [

每一個輸出的Android日志信息都有一個標簽和優先級,Android系統中默認的標簽其優先級由高到低分別為Verbose,Debug,Info,Warning,Error,Fatal,Silent。其中最高級的Silent一般沒有信息輸出。監控系統經過改造之后,在logcat中新增了taintlong標簽,通過adb logcat dalvikvm:W OSNetworkSystem:W*:S以及進一步操作,就可以在logcat日志中提取出污點數據傳播的相關信息。

2.5.2 自動化程序安裝測試

要運行應用程序,首先要啟動其主活動main avtivity。在Android應用程序中,AndroidManifest.xml描述了main activity等信息。因此系統首先通過Python語言中的zipfile模塊解壓apk文件,然后通過AXMLPrinter對AndroidManifest.xml進行讀取。通常定義為“android.intent.action.MAIN”標簽的活動即為其main activity。

3 系統測試及結果分析

測試環境基于Ubuntu 12.04系統,Android系統為修改后的4.1.1版本。同時為了移植到Pandaboard進行測試,需要下載適用于Pandaboard的OMAP?Panda內核。

在程序運行時,會自動完成發送SMS、網絡訪問、讀寫文件、解密以及撥打電話的功能。在程序運行時運行腳本collect.py,在Ubuntu系統終端可以獲得應用程序的全部行為信息。

通過分析測試結果可以發現,該測試應用程序在運行時立刻撥打了電話,同時在后臺啟動了讀取文件,并且未經用戶允許在后臺發送了短信。這些行為均會被惡意軟件濫用,給手機用戶帶來嚴重損失。同時該應用程序開啟了大量服務,對系統運行也會造成一定的負擔。

通過查看該測試樣本源代碼中聲明的相應功能和測試結果相對比,可以看出本系統能比較準確地反映樣本的行為特征,其中寫文件、向網絡發送數據及信息泄露是惡意軟件的常見特征。

由于本系統對Android原生系統進行了修改,運用動態分析技術監測應用程序的行為特征,因此會對系統運行性能產生一定影響。本系統的性能評測標準包括開機時間、程序啟動時間和測試樣本從運行到首次記錄到行為信息的時間。

首先針對系統進行開機時間測試。一共進行了5次測試,每次的開機時間如表2所示。

通過表2可以發現,原生系統平均開機時間為50.2 s,監控系統平均開機時間為53.4 s,性能下降6%。由于監控系統主要針對Dalvik虛擬機和應用程序框架層的修改,未對系統內核進行修改,在開機啟動方面監控系統與原生系統相差不大,同時對系統運行穩定性未造成影響。

系統運行應用程序的時間測試,包括載入APK、創建聯系人、撥出電話和拍照四個方面,測試結果如表3所示。

通過表3可以發現,監控系統在進行相關操作時所用時間均大于原生系統,這是因為在進行相應操作時還需要進行污點標記的功能,但是整體上未對系統帶來大量負載。值得注意的是,在進行拍照操作時,監控系統比原生系統多耗費了47%的時間,這主要是因為拍照操作需要進行額外的針對文件的污點標記。

通過表4可以發現,不同應用程序首次獲得行為信息的時間差距很大,這是由應用程序完成的不同功能導致的。總體而言,監控系統可以較快地響應和記錄程序運行期間的行為。

4 結 論

本文應用基于污點傳播的動態分析技術,針對目前Android系統面臨的隱私泄漏、惡意扣費等安全威脅,設計了基于行為分析的Android安全監控系統。測試結果表明,該系統可以發現并記錄絕大部分惡意軟件的行為信息,并且運行穩定能較快地響應應用程序行為進行記錄。

目前使用沙箱進行動態分析,采用的是單線程的方式,導致分析的效率還不夠理想,因此下一步還需要研究使用多線程方式一次分析多個程序的可行性。

參考文獻

[1] 劉洪濤.基于Android系統的安全防護軟件設計與實現[D].天津:南開大學,2011.

[2] YEUNG D Y, DING Y X. Host?based intrusion detection using dynamic and static behavioral models [J]. Pattern recognition, 2003, 36(1): 229?243.

[3] 豐生強.Android軟件安全與逆向分析[M].北京:人民郵電出版社,2013.

[4] PAYET E, SPOTO F. Static analysis of Android programs [J]. Information and software technology, 2012, 54(11): 1192?1201.

[5] 張宏飛,包睿,李超.工業自動化監控系統中PLC技術的應用研究[J].現代電子技術,2015,38(11):150?151.

[6] 任肖麗,陳佳喜,王驥.基于GPRS技術在線環境監測系統的研究[J].現代電子技術,2015,38(4):60?62.

主站蜘蛛池模板: 亚洲va视频| 国产高清在线精品一区二区三区| 在线播放国产99re| 成人在线天堂| 亚洲福利视频一区二区| 性喷潮久久久久久久久| 亚洲日本在线免费观看| h网址在线观看| 无码乱人伦一区二区亚洲一| 久久精品免费国产大片| 日韩无码黄色| 久久婷婷国产综合尤物精品| 欧美日韩另类在线| 日韩精品欧美国产在线| 国产成人艳妇AA视频在线| 9966国产精品视频| 亚洲无码视频一区二区三区| 欧美无专区| 毛片久久网站小视频| 欧美区一区| 一本久道久久综合多人| 亚洲av无码久久无遮挡| 国产精品制服| 亚洲精品久综合蜜| 日韩免费毛片| www.狠狠| 久久亚洲国产视频| 91精品国产91久无码网站| 97精品国产高清久久久久蜜芽| 天天躁夜夜躁狠狠躁图片| 91丝袜乱伦| 67194在线午夜亚洲 | a国产精品| 国产高清在线观看| 亚洲综合婷婷激情| 国产精欧美一区二区三区| 五月天综合网亚洲综合天堂网| 色妺妺在线视频喷水| 国产毛片基地| 日韩av手机在线| 四虎永久免费网站| 亚洲AV无码一区二区三区牲色| 国产一级二级在线观看| 午夜精品一区二区蜜桃| 天天做天天爱夜夜爽毛片毛片| 久热中文字幕在线| 福利片91| 国产免费人成视频网| 国产欧美在线观看一区| 久久精品中文字幕少妇| 毛片网站免费在线观看| 国产在线观看91精品亚瑟| 亚洲码一区二区三区| 国产精品偷伦视频免费观看国产 | 久久综合久久鬼| 国产真实乱人视频| 亚洲天堂免费| 五月综合色婷婷| 在线看AV天堂| 久久国产毛片| 亚洲中字无码AV电影在线观看| 国产精品自拍露脸视频 | 成年A级毛片| 亚洲日本韩在线观看| 99无码熟妇丰满人妻啪啪| 澳门av无码| 欧美精品一区在线看| 不卡的在线视频免费观看| 视频二区中文无码| 久久人人97超碰人人澡爱香蕉| 欧美色亚洲| 亚洲无码熟妇人妻AV在线| 精品国产一二三区| 试看120秒男女啪啪免费| 国产欧美日韩另类精彩视频| 九色综合伊人久久富二代| 国产在线高清一级毛片| 亚洲成a人在线观看| 国产成人1024精品下载| 国产95在线 | 高潮毛片免费观看| 一区二区三区成人|