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

基于QEMU的安卓進程發現工具設計與實現

2015-05-04 08:08:10史國振席宗虎
計算機工程與設計 2015年4期
關鍵詞:進程檢測系統

史國振,黃 瓊,席宗虎,2,蘇 铓

(1.北京電子科技學院 信息安全系,北京100070;2.西安電子科技大學 計算機學院,陜西 西安710071;3.西安電子科技大學 綜合業務網理論及關鍵技術國家重點實驗室,陜西 西安710071)

0 引 言

針對惡意代碼種類多樣,而現有的內部檢測方法不能夠保證操作系統安全的問題。本文結合惡意代碼進程的特點并借助虛擬化技術,以QEMU虛擬機為平臺,設計實現了一種Android系統隱藏進程發現工具,從操作系統外部檢測,保證了操作系統的安全監控。通過從QEMU模擬的內存中獲取客戶機系統進程雙向鏈表入口地址,并遍歷系統所有進程來發現系統中實際運行進程的情況,并與原有的分析工具獲取的進程列表進行對比,從而分析得出惡意隱藏的進程和代碼,實現系統的外部監控,并對系統進程全面監管。該工具的設計與實現為系統安全性的提供和用戶隱私的保護奠定了基礎。

1 相關工作

1.1 研究現狀

進程是程序在操作系統中運行表現形式,為了保證運行的有序和穩定,操作系統通常具有嚴密的進程管理和調度機制,一般惡意代碼等為了隱藏其運行蹤跡,通常對其進程進行偽裝,文獻 [1]針對 Windows系統提出了一種基于直接內核對象操作 (DKOM)的進程偽裝保護方法.從內核級入手,直接修改操作系統內核空間中存儲進程相關信息的數據結構,以此實現進程隱藏的目的。文獻 [2]針對Android惡意軟件泛濫的問題,綜合靜態和動態分析技術,設計實現了Android惡意軟件檢測系統。但這種惡意軟件檢測系統對新的病毒檢測成功率低、誤報的機率較高。針對Android的隱藏進程發現方法鮮有研究,現有的安全軟件在惡意軟件檢測方面也存在一定的局限性。一方面,受操作系統本身安全的影響,運行于操作系統內的安全工具容易受到攻擊;另一方面,安全軟件的權限僅限于系統內核級,存在被系統內核級惡意軟件攻擊的危險。針對上述問題,研究并設計一種能夠在操作系統外部運行的安全檢測工具至關重要,通過為其設置更高的權限,可以順利完成檢測工作,同時解決了工具自身受到攻擊的問題。虛擬化技術的迅速發展為上述構想的實現提供了很好的契機,文獻 [3]指出虛擬機管理器具有更高的權限和更小的可信計算機,利用虛擬機管理器在單獨的虛擬機中部署監控工具能夠對目標虛擬機進行檢測,同時保證監控工具的有效性和防攻擊性。

目前,Android系統中的惡意程序[4]大都是通過APK的形式安裝到手機中,通過應用級或者系統級的漏洞獲取更高的權限,達到破壞系統安全、竊取用戶隱私的目的。現有的靜態分析方法[5,6]通過提取APK文件內容構建特征向量,與已知惡意代碼家族中代碼樣本進行比較一定程度上解決了惡意程序的識別問題。但是,該方法只能檢測出特征庫中已有的惡意軟件樣本,無法檢測未知的惡意軟件,同時靜態分析很難應對代碼混淆、反射、加密等情況。針對靜態分析的缺點,出現了動態分析方法,能夠監控APK文件運行時的行為,并通過行為對其是否為惡意軟件進行判定。但是,動態分析中惡意行為難以界定,而且對使用了進程隱藏技術的惡意代碼難以檢測。甚至在被惡意軟件的破壞或者繞過后,上述安全工具則毫無記錄可以分析。

1.2 Android進程介紹

Android系統[7]中,Dalvik虛擬機作為Runtime中的核心部分,專門負責應用程序的運行。每個運行的應用程序都與一個Dalvik虛擬機實例對應,當某個應用出現異常時,只有對應的Dalvik虛擬機出現異常,系統不會受到其影響,這樣就保證了系統的穩定。如表1所示,Dalvik虛擬機[8]中的進程和線程的概念,同Linux系統中的進程和線程概念是一致的。

表1 Dalvik虛擬機進程和線程同Linux進程的關系

Android系統的內核是基于Linux內核的,其繼承并沿用了Linux操作系統的進程管理機制。通常在操作系統中,每個進程都有一個且只有一個進程控制塊PCB(process control block)來記錄和刻畫進程狀態等其它相關信息,并將信息按照struct task_struct{}結構體定義的形式來保存,供操作系統調度和管理。每個task_struct()中記錄著其所對應進程的所有信息,其結構部分成員如下:

通過該成員可以從當前進程描述符所在鏈表找到其前后的進程描述符,進而找到所有進程描述符,實現遍歷操作系統進程的目的。

1.3 QEMU介紹

QEMU[10]是一個由Fabrice Bellard編寫的開源模擬器軟件。具體來說,它是一個使用了可移植的動態二進制翻譯器的模擬器軟件。通過分析主流CPU的體系架構特點并為其定義對應的結構體,使用動態二進制翻譯技術將上層需要執行的指令翻譯成可在宿主機上直接執行的指令,然后將其交給宿主機的CPU去執行。由于QEMU對各種硬件的模擬也是使用純軟件化的方法實現,這使得QEMU可以模擬的硬件平臺與真實硬件無必然對應關系。

QEMU的操作模式分為兩種[11]:全系統模擬 (full system emulation) 和 用 戶 模 式 模 擬 (user mode emulation),如圖1所示。

(1)全系統模式仿真:在這種模式下,QEMU模擬的硬件平臺可以模擬出客戶機系統運行起來需要的所有硬件資源,例如ARM平臺上的ARM處理器,BIOS,內存等常用的硬件設備。客戶機中的應用依靠客戶機上運行的操作系統的進程任務調度,作業管理來實現,最終將數據發送給QEMU模擬的CPU進行處理,等待結果的返回;QEMU則是將上層發送來的指令翻譯成宿主機系統所能識別的指令,并交由宿主機的CPU來執行。在宿主機看來,就是應用程序QEMU發送了一段讓宿主機處理的數據,然后等待數據返回。其中QEMU在其中充當的是一個動態的翻譯官。

圖1 QEMU的操作模式

(2)用戶模式仿真:在這種模式下,QEMU模擬的是客戶機系統需要運行的CPU,接收客戶機應用發來的各種請求,然后指令翻譯送往宿主機,等待返回的結果。而不管客戶機中的進程任務調度及作業管理等,僅充當CPU的功能。

通過分析發現全系統模式仿真使用的范圍更加的廣泛,并且對客戶機系統的監控也更加的全面,適用于分析操作系統隱藏的進程。

2 基于QEMU的Android隱藏進程發現工具

2.1 基本設計思想

(1)先分析Android源碼[12]找到與內核相關的代碼,其次,按照sched.h文件里TASK_STRUCT的聲明,一個成員一個成員的算偏移,從而找到成員list_head這個雙向鏈表的地址,按圖索驥找到所有進程。但由于TASK_STRUCT是一個很大的結構體 (擁有幾十或者上百個成員),并且成員長度各不相同,比如一個char占一個字節,一個int占4個字節等;此外考慮到編譯時的對齊問題,手工計算既費力又容易錯算,這種發現進程鏈表的方式不適合本工具。

(2)進程鏈表存在于內核區,用戶區的應用不能直接的調用。考慮到驅動工作于內核區,所以可以嘗試設計一個特定的驅動,實現在內存中開辟獨立的空間用來存放獲取到的進程鏈表入口地址,并將數據返回給用戶層。但驅動程序對系統權限的要求很高,并且其最高權限就是內核權限,而惡意軟件同樣可以獲取到內核權限,若惡意軟件在發動攻擊之前破壞系統的安全檢測工具,則操作系統完全暴露在惡意軟件之下,安全問題甚是嚴重。為此,從系統內監控的方案同樣存在缺點。

針對以上兩種方法各自存在的缺點,本文依托QEMU虛擬機,設計并實現了一種從系統外部監控并發現Android平臺下隱藏進程的工具。

假設前提:通過進程隱藏技術[13,14]對應用A進行了進程隱藏處理,Android系統自身的進程管理工具或者是adb工具不能夠發現應用A的進程,通過本文設計的工具來對Android系統進行全面監控,并獲取Android系統中運行的所有進程,最后,使用 “基于交叉視圖的檢測技術[15]”同原有分析工具獲取的進程列表進行對比來發現隱藏進程。

本文設計的Android系統隱藏進程發現工具,其關鍵技術在于尋找系統中運行的進程的入口地址,以方便獲取到鏈表的地址。具體對于是獲取到哪個進程的入口地址沒有要求。為此,Android系統隱藏進程發現工具的設計如圖2所示。

圖2 Android系統隱藏進程發現工具設計思想

(1)于Android系統中選擇系統初始化時進程swpper。

(2)將這個進程控制表的入口地址,寫入到QEMU模擬的CPU的一個寄存器Ri中。

(3)通過QEMU上的VMM從Ri中讀取進程地址內容,以獲得swpper的進程控制表的入口地址。

(4)根據sched.h文件里結構體task_stract{}的聲明并結合特定的偏移算法,計算出各成員的偏移,找到循環雙向鏈表list_head{}結構體,并獲取下一個進程的鏈表入口地址*next。

(5)通過*next內容尋到下一個進程的*next地址,同時獲取當前進程task_stract{}結構體中的信息。

(6)重復步驟 (5)直到遍歷完所有進程。

2.2 進程發現工具實現

針對上節提出的進程發現模型,具體的實現步驟如下:

步驟1 修改Android系統代碼

(1)定位進程描述結構體

在Android 4.0的內核源碼中,在內核根目錄下include/linux/sched.h的1114行定位進程描述符struct task_struct,其重要成員變量如下:

tasks是連接進程描述符之間的雙向鏈表結構,通過該成員就可以從當前進程描述符所在鏈表找到它前后的進程描述符,進而找到所有進程描述符。

(2)初始化進程描述符:init_task

初始化進程 “swpper”的進程描述符在內核根目錄arch/arm/kernel/Init_task.c中,init_task定義如下:

struct task_struct init_task = INIT_TASK (init_task);

在INIT_TASK ()中,對init_task結構進行了初始化:

步驟2 將進程描述法寫入寄存器

(1)在Android中找寄存器

在Android的GoldFish虛擬處理器的電池驅動程序,相關 文 件 在 根 目 錄 下 drivers/power/goldfish_battery.c,這是一個power_supply的驅動程序,實現了讀取屬性等幾個操作,通過讀取虛擬機的寄存器得到當前 “電池”的信息。而這個信息在goldfish_battery.c是一個固定值,不會被內核修改,所以選擇這種數值不會被修改的寄存器來存儲上一步初始化的特定進程描述符的地址。

(2)將init_task地址寫入寄存器

在goldfish_battery.c的goldfish_battery_probe ()中寫入:GOLDFISH_BATTERY_WRITE (data,SYSTEM_TASK_STRUCT,&init_task);

步驟3 修改QEMU源代碼

(1)在QEMU找寄存器

在 QEMU源代碼的根目錄下external/qemu/hw/goldfish_battery.c

(2)獲取寄存器中內容

goldfish_battery_write (val);

(3)讀取Android操作系統的進程描述符到qemu

Android操作系統的內存是QEMU中的虛擬內存,故獲取的進程描述符地址是操作系統內存里的地址,需要使用QEMU的cpu_memory_rw_debug()函數將操作系統內存內容讀取到QEMU控制臺可見的地方。

(4)尋找進程名

進程名即成員comm,在以進程描述符結構體起始地址為基準偏移0x2d4處,使用:

(5)尋找下一進程

進程的雙向鏈表即成員tasks,在以進程描述符結構體起始地址為基準偏移0x1c0處,使用:

即可得到下一進程的雙向鏈表結構地址,如果想使用下一進程的進程描述符,需要減去雙向鏈表結構的地址,使用:

即可得到下一進程的進程描述符。

(6)讀取所有進程

通過上面的步驟,借助QEMU成功的發現了Android系統的所有進程。

3 實 驗

本文設計的Android系統隱藏進程發現工具是基于QEMU模擬器的1.2.0版本實現的,在對本工具進行測試時,QEMU模擬Android 4.0版本的系統平臺。

在部署完測試環境之后,首先在Android虛擬機運行Gallery應用,使用進程隱藏技術將Gallery應用的進程隱藏,通過Android系統上的模擬終端列出所有的運行進程。如圖3所示,發現所列舉的進程中沒有Gallery應用對應的進程。在上述情況下,使用本文設計的Android系統隱藏進程發現工具來檢測隱藏進程,本工具從系統之外列舉出Android系統中運行的所有進程。通過兩次獲取的進程列表對比,本工具成功的發現了Gallery應用的隱藏進程 (圖3黃線框中的android.gallery3d),驗證了本文隱藏進程發現工具設計的正確性。

圖3 進程發現測試實驗結果

4 結束語

近年來,隨著Android系統版本的不斷更新,Android系統的惡意軟件數量呈快速增長態勢,用戶的隱私、財產安全面臨著嚴峻的考驗和前所未有的挑戰。本文針對現有的內部檢測方法不能夠保證操作系統安全的問題,設計并實現了一種基于QEMU的Android隱藏進程發現工具。該工具從系統外部監控整個系統,遍歷系統所有進程來發現系統中實際運行進程的情況,并與原有的分析工具獲取的進程列表進行對比,從而分析得出惡意隱藏的進程和代碼,實現系統的外部監控,并對系統進程全面監管。并通過實驗驗證了隱藏進程發現工具設計的可行性和正確性。然而,本工具有些地方還有待改進,還需要進一步的研究。針對Android系統下的進程發現問題,本工具暫時不能發現游離于進程鏈路表之外的隱藏進程,這將是接下來需要研究的內容。

[1]LAN Zhiling,SONG Yubo,TANG Lei.Novel process-protecting method using camouflage techniques based on direct ker-nel object manipulation [J].Journal of Southeast University(Natural Science Edition),2013,43 (1):24-29 (in Chinese).[藍智靈,宋宇波,唐磊.基于直接內核對象操作的進程偽裝保護方法 [J].東南大學學報:自然科學版,2013,43(1):24-29.]

[2]HU Wenjun,ZHAO Shuang,TAO Jing,et al.A detection method and system implementation for Android malware [J].Journal of Xi’an Jiaotong University,2013,47 (10):37-43(in Chinese).[胡文君,趙雙,陶敬,等.一種針對Android平臺惡意軟件的檢測方法及系統實現 [J].西安交通大學學報,2013,47 (10):37-43.]

[3]XIANG Guofu,JIN Hai,ZOU Deqing,et al.Virtualizationbased security monitoring [J].Journal of Software,2012,23(8):2173-2187 (in Chinese).[項國富,金海,鄒德清,等.基于虛擬化的安全監控 [J].軟件學報,2012,23 (8):2173-2187.]

[4]FANG Xinxin.Malware implementation and detected on Android [D].Nanjing:Nanjing Post and Communications University,2013 (in Chinese).[房鑫鑫.Android惡意軟件實現及檢測研究 [D].南京:南京郵電大學,2013.]

[5]QIN Zhongyuan,XU Yuqing,LIANG Biao,et al.An Android malware static detection method [J].Journal of Southeast University (Natural Science Edition),2013,43 (6):1162-1167 (in Chinese). [秦中元,徐毓青,梁彪,等.一種Android平臺惡意軟件靜態檢測方法 [J].東南大學學報 (自然科學版),2013,43 (6):1162-1167.]

[6]MEI Hong,WANG Qianxiang,ZHANG Lu,et al.Software analysis:A road map [J].Chinese Journal of Computers,2009,32 (9):1697-1710 (in Chinese). [梅宏,王千祥,張路,等.軟件分析技術進展 [J].計算機學報,2009,32(9):1697-1710.]

[7]SONG Jie,DANG Licheng,GUO Zhenchao,et al.The security mechanism analysis and applied research of Android OS mobile platform [J].Computer Technology and Development,2010,20 (6):152-155 (in Chinese). [宋杰,黨李成,郭振朝,等.Android OS手機平臺的安全機制分析和應用研究[J].計算機技術與發展,2010,20 (6):152-155.]

[8]ZHOU Yimin,CHEN Rong.Analysis about process in Dalvik virtual machine [J].Computer Technology and Development,2010,20 (2):83-86 (in Chinese). [周毅敏,陳榕.Dalvik虛擬機進程模型分析 [J].計算機技術與發展,2010,20(2):83-86.]

[9]Linux kernel[EB/OL].[2013-11-28].http://www.kernel.org.

[10]QEMU[EB/OL].[2009-02-01].http://www.oschina.net/p/qemu.

[11]LUO Yan.Research on dynamic binary translation and optimization based on OEMU [D].Hangzhou:Zhejiang University,2013(in Chinese).[羅艷.基于QEMU的動態二進制翻譯優化研究 [D].杭州:浙江大學,2013.]

[12]Android[EB/OL].[2013-09-04].http://source.android.com/source/downloading.html.

[13]WO Tianyu,HU Chunming,LI Jianxin,et al.Hidden OS objects correlated detection technology based on VMM [J].Journal of Software,2013,24 (2):405-420 (in Chinese).[沃天宇,胡春明,李建欣,等.基于VMM的操作系統隱藏對象 關 聯 檢 測 技 術 [J]. 軟 件 學 報,2013,24 (2):405-420.]

[14]LIU Haochen,LUO Senlin.Trojan horse’s hiding and detecting technique of Android OS [J].Netinfo Security,2013,13 (1):33-37 (in Chinese).[劉昊辰,羅森林.Android系統木馬隱藏及檢測技術 [J].信息網絡安全,2013,13(1):33-37.]

[15]LI Peng,WANG Ruchuan,GAO Dehua.Research on Rootkit dynamic detection based on fuzzy pattern recognition and support virtual machine technology [J].Acta Electronica Sinica,2012,40 (1):115-120 (in Chinese). [李鵬,王汝傳,高德華.基于模糊識別和支持向量機的聯合Rootkit動態檢測技術研究 [J].電子學報,2012,40 (1):115-120.]

猜你喜歡
進程檢測系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
小波變換在PCB缺陷檢測中的應用
社會進程中的新聞學探尋
民主與科學(2014年3期)2014-02-28 11:23:03
主站蜘蛛池模板: 一级片免费网站| 国产精品偷伦在线观看| 9cao视频精品| 国产又大又粗又猛又爽的视频| 国产精品自拍合集| 亚洲第一视频网| 成人午夜久久| 另类重口100页在线播放| 在线观看无码av五月花| 亚亚洲乱码一二三四区| 亚洲无码电影| 91久久青青草原精品国产| 麻豆精品视频在线原创| 亚洲视频欧美不卡| 久久中文电影| 无码AV日韩一二三区| 亚洲男人的天堂久久香蕉网| 欧美综合区自拍亚洲综合天堂| 国产成人无码综合亚洲日韩不卡| 特级aaaaaaaaa毛片免费视频 | 亚洲美女视频一区| 久青草网站| 国产男女免费视频| 久久夜色撩人精品国产| 中文字幕无线码一区| 午夜精品久久久久久久2023| 99在线观看国产| 日本高清免费一本在线观看| 亚洲Va中文字幕久久一区 | 国产一级无码不卡视频| 91在线国内在线播放老师| 久久精品中文字幕少妇| 五月丁香伊人啪啪手机免费观看| 成人免费黄色小视频| 不卡无码网| 免费aa毛片| 日韩午夜福利在线观看| 日韩无码视频专区| 日韩无码真实干出血视频| 国产三级视频网站| 一级看片免费视频| 精品人妻无码中字系列| 日本伊人色综合网| 国产精品亚洲综合久久小说| 久久人搡人人玩人妻精品一| 欧美a√在线| 国产精品白浆在线播放| 国产原创第一页在线观看| 日本久久久久久免费网络| 国产精品网址你懂的| 欧美在线免费| 亚洲成A人V欧美综合天堂| 国产尤物视频在线| 欧美a级完整在线观看| 亚洲国产日韩视频观看| 国产精品第一区在线观看| 国产成人91精品免费网址在线| 人妻21p大胆| 露脸国产精品自产在线播| 亚洲天堂成人在线观看| 啊嗯不日本网站| 97人人做人人爽香蕉精品| 亚洲一区精品视频在线| 日韩在线网址| 亚洲精品国产精品乱码不卞| 国产传媒一区二区三区四区五区| www.国产福利| 欧美日韩一区二区三区四区在线观看| 欧美精品啪啪一区二区三区| 国产一级在线观看www色| 国产丝袜91| 国产呦视频免费视频在线观看| 日韩福利视频导航| 狠狠色噜噜狠狠狠狠奇米777| 伊人久久综在合线亚洲2019| 久久激情影院| 亚洲性影院| 伊人激情综合网| 2020极品精品国产| jizz亚洲高清在线观看| 亚洲区欧美区| 国产网站免费|