陳遠(yuǎn)鵬,李永忠
(江蘇科技大學(xué) 江蘇 鎮(zhèn)江212003)
Linux平臺(tái)下Rootkit木馬分析與檢測(cè)
陳遠(yuǎn)鵬,李永忠
(江蘇科技大學(xué) 江蘇 鎮(zhèn)江212003)
Rootkit作為當(dāng)前危害最大的木馬程序,它能夠運(yùn)行在內(nèi)核層,從中破壞系統(tǒng)的內(nèi)核結(jié)構(gòu),比傳統(tǒng)木馬程序的隱蔽性更強(qiáng)。針對(duì)Rootkit隱藏技術(shù)和檢測(cè)技術(shù)面臨的問題,采用了一種新的檢測(cè)方法,它能夠檢測(cè)隱藏在虛擬機(jī)中的內(nèi)核級(jí)Rootkit。通過實(shí)驗(yàn)驗(yàn)證,結(jié)果表明該技術(shù)能夠有效監(jiān)測(cè)內(nèi)核級(jí)Rootkit木馬。
Linux;Rootkit;木馬分析;內(nèi)核模塊
隨著計(jì)算機(jī)應(yīng)用技術(shù)的不斷發(fā)展,信息網(wǎng)絡(luò)安全正逐漸引起人們的重視?,F(xiàn)今,各種不同的后臺(tái)程序被黑客開發(fā)出來,它們正嚴(yán)重威脅著網(wǎng)絡(luò)安全[1]。2013年,紐約時(shí)代報(bào)刊稱世界近一半的互聯(lián)網(wǎng)用戶都遭受過網(wǎng)絡(luò)入侵,據(jù)統(tǒng)計(jì),中國因網(wǎng)絡(luò)入侵造成370億美元的損失[2]。另據(jù)IBM-X-Force安全研究小組針對(duì)2013年典型攻擊情況的分析調(diào)查顯示,近三分之二的網(wǎng)絡(luò)攻擊為未知原因的攻擊[3]。Rootkit木馬作為最著名的后門程序,使得黑客能夠通過不同的方式獲得root權(quán)限,最終實(shí)現(xiàn)對(duì)目標(biāo)主機(jī)的長(zhǎng)期控制。
目前,對(duì)于Rootkit檢測(cè)方面已經(jīng)有一些在虛擬機(jī)中開發(fā)惡意木馬檢測(cè)與監(jiān)控技術(shù)的研究工作。這些工作主要是檢測(cè)虛擬機(jī)的隱藏進(jìn)程和一些重要的文件,卻未對(duì)Rootkit本身進(jìn)行檢測(cè)[4]。針對(duì)目前存在的這一類問題,文中提出了一種內(nèi)核級(jí)Rootkit檢測(cè)技術(shù),并在虛擬化平臺(tái)中實(shí)現(xiàn)了一個(gè)原型系統(tǒng),經(jīng)過實(shí)驗(yàn)驗(yàn)證,該方法能夠有效檢測(cè)內(nèi)核級(jí)的Rootkit木馬。
Linux操作系統(tǒng)由4個(gè)重要部分組成:內(nèi)核、shell、文件系統(tǒng)和應(yīng)用程序,它們一起形成了基本的操作系統(tǒng)結(jié)構(gòu)[5]。
內(nèi)核層屬于Linux系統(tǒng)的核心部分,它負(fù)責(zé)管理系統(tǒng)的進(jìn)程、內(nèi)存、設(shè)備驅(qū)動(dòng)程序、文件和網(wǎng)絡(luò)系統(tǒng),決定著系統(tǒng)的性能和穩(wěn)定性[6]。Shell層是系統(tǒng)的用戶界面,提供了用戶與內(nèi)核進(jìn)行交互操作的一種接口[7]。文件系統(tǒng)是文件存放在磁盤等存儲(chǔ)設(shè)備上的組織方法[8]。應(yīng)用層主要是一些重要的應(yīng)用程序包,其中包括文本編輯器VIM(Vi IMproved)、編程語言、辦公軟件、網(wǎng)絡(luò)工具等[9]。
目前Rootkit的檢測(cè)方法主要分為文件完整性檢測(cè)與隱藏性檢測(cè),但這兩種方法都有一定的缺陷。文件檢測(cè)方法只能檢測(cè)到應(yīng)用程序中的Rootkit,卻無法檢測(cè)內(nèi)核級(jí)Rootkit;隱藏性檢測(cè)只注重于系統(tǒng)內(nèi)核Rootkit檢測(cè),對(duì)上層應(yīng)用程序Rootkit不采取任何措施。結(jié)合這兩種檢測(cè)技術(shù)的優(yōu)點(diǎn),文中提出一種在內(nèi)核級(jí)與用戶級(jí)上保護(hù)系統(tǒng)和用戶數(shù)據(jù)的安全檢測(cè)技術(shù),并在內(nèi)核虛擬機(jī)KVM (Kernel Virtual Machine)平臺(tái)中實(shí)現(xiàn)了原型系統(tǒng)。
2.1 設(shè)計(jì)原理
根據(jù)Linux系統(tǒng)的類型,Rootkit木馬有不同的方法來對(duì)內(nèi)核進(jìn)行修改,最簡(jiǎn)易的方法就是利用可加載內(nèi)核模塊LKM[10](Linux Kernel Module)的功能。因此大多數(shù)的內(nèi)核Rootkit通過利用LKM動(dòng)態(tài)地更新內(nèi)核來提供新功能,加入新的模塊擴(kuò)展內(nèi)核,同時(shí)對(duì)內(nèi)核和其他使用內(nèi)核的所有程序擁有了完全訪問權(quán)限[11]。例如,sys_read()系統(tǒng)調(diào)用函數(shù)劫持前與劫持后的函數(shù)執(zhí)行鏈如圖1所示。
從圖1可以看出,在LKM模塊開始初始化函數(shù)時(shí),新的自定義函數(shù)指針hacked_read()將會(huì)存入原有系統(tǒng)調(diào)用所對(duì)應(yīng)的表項(xiàng),進(jìn)行系統(tǒng)調(diào)用劫持,此時(shí),hacked_read()將會(huì)代替sys_read(),并將新的結(jié)果返回給用戶態(tài)[12]。
2.2 系統(tǒng)設(shè)計(jì)
為了實(shí)現(xiàn)對(duì)虛擬機(jī)中的內(nèi)核級(jí)Rootkit檢測(cè),Rootkit檢測(cè)器需要從不同層面獲取虛擬機(jī)用戶態(tài)視圖、內(nèi)核態(tài)視圖和VMM[13]層視圖進(jìn)行交叉對(duì)比。視圖的獲取依賴于不同的安全模塊,檢測(cè)系統(tǒng)總體結(jié)構(gòu)圖如圖2所示[14]。
圖1 系統(tǒng)調(diào)用表劫持前與劫持后的函數(shù)執(zhí)行鏈
圖2 Rootkit木馬檢測(cè)系統(tǒng)總體結(jié)構(gòu)圖
圖2中,模塊檢測(cè)器的作用是監(jiān)控虛擬機(jī)內(nèi)核模塊加載與卸載的動(dòng)作;內(nèi)核視圖重構(gòu)器負(fù)責(zé)建立與維護(hù)真實(shí)模塊鏈表;內(nèi)核視圖重構(gòu)器根據(jù)虛擬機(jī)語義信息重構(gòu)虛擬機(jī)內(nèi)核視圖;調(diào)用器在KVM層發(fā)起自下而上的功能調(diào)用,與用戶態(tài)視圖獲取器相互協(xié)作;用戶態(tài)視圖獲取器根據(jù)lsmod產(chǎn)生用戶態(tài)視圖[15]。Rootkit檢測(cè)器通過獲取用戶態(tài)視圖和內(nèi)核態(tài)視圖信息后,進(jìn)行文件檢測(cè)和LKM模塊檢測(cè),其結(jié)構(gòu)圖如圖3所示。
圖3 Rootkit檢測(cè)器結(jié)構(gòu)圖
文件檢測(cè)模塊通過監(jiān)視文件MD5值、常被攻擊的文件、文件權(quán)限、隱藏文件等來判斷Linux系統(tǒng)是否被入侵。LKM模塊檢測(cè)模塊通過將系統(tǒng)LKM模塊與Rootkit木馬特征庫進(jìn)行對(duì)比,進(jìn)行判斷是否存在可疑內(nèi)核模塊。
3.1 文件檢測(cè)
文件檢測(cè)首先對(duì)Binary文件進(jìn)行MD5校驗(yàn)測(cè)試,檢測(cè)任何文件是否改動(dòng);檢測(cè)Rootkit經(jīng)常攻擊的二進(jìn)制和系統(tǒng)工具文件;檢測(cè)大多常用程序的文件權(quán)限屬性;檢測(cè)Rootkit隱藏性文件。文件檢測(cè)模塊通過執(zhí)行do_system_check()函數(shù),來檢測(cè)系統(tǒng)的入口函數(shù),部分核心代碼如下:
do_system_check () 函 數(shù) 依 次 調(diào) 用do_system_commands_checks (),do_Rootkit_checks(),do_local_host_checks()這些子函數(shù)來檢查系統(tǒng),流程圖如圖4所示。
圖4 文件檢測(cè)流程圖
3.2LKM模塊檢測(cè)
LKM模塊檢測(cè)主要對(duì)指定的模塊進(jìn)行測(cè)試,do_system_check_initialisation()函數(shù)將獲取的當(dāng)前系統(tǒng)LKM模塊與Rootkit特征庫中可疑LKM模塊比較,若發(fā)現(xiàn)可疑內(nèi)核模塊,最后在結(jié)果輸出顯示,并在日志中進(jìn)行記錄,部分代碼如下:
Rootkit木馬檢測(cè)系統(tǒng)實(shí)現(xiàn)如圖5所示。
圖5 Rootkit木馬檢測(cè)系統(tǒng)
功能測(cè)試項(xiàng):1)文件檢測(cè):md5校驗(yàn)檢測(cè);檢測(cè)易被攻擊文件;文件權(quán)限檢測(cè);隱藏性文件檢測(cè)。2)LKM模塊檢測(cè)。
為了測(cè)試系統(tǒng)的功能,選取了當(dāng)前幾個(gè)流行的內(nèi)核級(jí) Rootkit作為測(cè)試對(duì)象:SHV5,DDRK,SUTERUSU。這里以SHV5為例說明檢測(cè)結(jié)果,執(zhí)行過程如圖6和圖7所示。
圖6 文件檢測(cè)
圖7 LKM檢測(cè)
程序執(zhí)行到最后,可以發(fā)現(xiàn)測(cè)試用例SHV5,如圖8所示。
圖8 Rootkit檢測(cè)結(jié)果
針對(duì)當(dāng)前基于虛擬機(jī)監(jiān)視器的內(nèi)核級(jí)Rootkit檢測(cè)技術(shù)存在的不足,文中提出了一種檢測(cè)技術(shù),檢測(cè)隱藏在虛擬機(jī)中的內(nèi)核級(jí)Rootkit。實(shí)驗(yàn)結(jié)果表明,系統(tǒng)的檢測(cè)效果良好,解決了以往檢測(cè)方式中檢測(cè)結(jié)果信息不足等問題,為后續(xù)研究中對(duì)Rootkit的處理提供了支持。但是,這種檢測(cè)技術(shù)太過依賴宿主機(jī)操作系統(tǒng)和虛擬機(jī)監(jiān)視器,如何在虛擬化環(huán)境中提高宿主機(jī)和虛擬機(jī)監(jiān)視器的安全,還需要在以后的工作中進(jìn)一步研究。
[1]陳華亭,吳邦欲.基于LKM的Rootkit技術(shù)[J].計(jì)算機(jī)工程與科學(xué),2004(2):88-90,96.
[2]Symantec Corporation.2013 Nortonreport[EB/OL]. [2014-12-10].http://www.yle.fi/tvuutiset/uutiset/ upics/liitetiedostot/norton_raportti.pdf.
[3]IBM Corporation.IBM X-Force 2013 annual trends and riskreport[EB/OL].[2014-12-10].http://www-03.ibm.com/security/xforce/.
[4]符蓉.Linux內(nèi)核級(jí)Rootkit檢測(cè)方法的研究與應(yīng)用[D].長(zhǎng)沙:湖南大學(xué),2009.
[5]唐偉杰.微內(nèi)核進(jìn)程間通信的優(yōu)化與實(shí)現(xiàn)[D].杭州:浙江工業(yè)大學(xué),2009.
[6]陳寶君.基于ARM9的嵌入式系統(tǒng)設(shè)計(jì)及EPA設(shè)備實(shí)現(xiàn)[D].大連:大連理工大學(xué),2006.
[7]許力.基于ARM9家庭心電監(jiān)護(hù)系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[D].武漢:武漢理工大學(xué),2008.
[8]李潔瓊,馮丹.一種基于網(wǎng)絡(luò)磁盤陣列的高性能海量存儲(chǔ)系統(tǒng) [J].小型微型計(jì)算機(jī)系統(tǒng),2006(12):2326-2330.
[9]陳斌.Linux應(yīng)用程序調(diào)試技術(shù)的研究[J].開封教育學(xué)院學(xué)報(bào),2014(2):289,292.
[10]梁升榮.Windows Rootkit檢測(cè)機(jī)制的研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2009.
[11]羅糧,周熙.Rootkit在Linux下的工作原理及其檢測(cè)[J].計(jì)算機(jī)安全,2007(3):19-21.
[12]李善平,陳文智.邊干邊學(xué):Linux內(nèi)核指導(dǎo)[M].杭州:浙江大學(xué)出版社,2002:133-16.
[13]施江勇,王會(huì)梅,鮮明,等.硬件虛擬化rootkit檢測(cè)方法研究綜述[J].計(jì)算機(jī)應(yīng)用研究,2014(1):1-5,12.
[14]Tomlinson A.Introduction to the TPM[M]//Smart Cards, Tokens,Security and Applications.New York:Spring US,2008:155-172.
[15]張磊,陳興蜀,任益,等.一種基于VMM的內(nèi)核級(jí)Rootkit檢測(cè)技術(shù)[J].信息網(wǎng)絡(luò)安全,2015(4):56-61.
Analysis and detect of Kernel-level Rootkit in Linux platform
CHEN Yuan-peng,LI Yong-zhong
(Jiangsu University of Science and Technology,Zhenjiang 212003,China)
Rootkit,as the current most dangerous Trojans,it can run at the kernel level,interference system kernel,allowing attackers to achieve the goal,it is more powerful than the traditional hidden Trojan.As for its imperceptibility,a new detecting method is proposed in this article,can find kenellevel Rootkit in a virtual machine.And the method has been test that can detect kernel-level Rootkit efficiently.
Linux;Rootkit;trojan analysis;kernel module
TN301
:A
:1674-6236(2017)01-0039-04
2015-12-23稿件編號(hào):201512230
陳遠(yuǎn)鵬(1989—),男,江蘇南京人,碩士。研究方向:通信技術(shù)及應(yīng)用工程。