張 瑜,劉慶中,李 濤,羅自強,吳麗華
(1. 海南師范大學計算機系 海口 571158; 2. 美國山姆休斯敦州立大學計算機系 德克薩斯州 亨茨維爾 美國 77341; 3. 四川大學計算機學院 成都 610065)
·計算機工程與應用·
Rootkit研究綜述
張 瑜1,劉慶中2,李 濤3,羅自強1,吳麗華1
(1. 海南師范大學計算機系 海口 571158; 2. 美國山姆休斯敦州立大學計算機系 德克薩斯州 亨茨維爾 美國 77341; 3. 四川大學計算機學院 成都 610065)
Rootkit是一種持久且難以察覺地存在于網絡系統中的惡意代碼,通過修改操作系統內核或更改指令執行路徑,為攻擊者提供隱匿自身、維持訪問和軟件竊聽功能,已造成了嚴重的網絡安全威脅。該文首先介紹了Rootkit的基本定義與演化過程,其次剖析了Windows系統中與Rootkit密切相關的內核組件和Rootkit的工作機制;然后討論了Rootkit防御機制與檢測方法;最后探討了Rootkit的發展趨勢和Rootkit防御的進一步研究方向。
隱遁攻擊; 取證分析; 惡意代碼; 網絡安全; rootkit
近年來,網絡攻擊者(黑客)利用日益增強的網絡依賴性和不斷涌現的軟件漏洞,通過隱遁技術遠程滲透、潛伏并控制目標網絡系統,悄無聲息地竊取敏感信息、實施網絡犯罪并伺機發起網絡攻擊,獲取政治、經濟、軍事利益,已造成了嚴重的網絡安全威脅[1]。據《2013 Norton Report》報道:全球50%的互聯網用戶遭受過網絡攻擊,中國有77%網民遭受過網絡攻擊,為全球第二大網絡攻擊受害國;全球因網絡攻擊造成了1 130億美元的經濟損失,中國因網絡攻擊造成370億美元的損失[2]。另據IBM X-Force安全研究小組針對2013年典型攻擊情況的分析調查顯示,近70%的網絡攻擊為未知原因的攻擊[3]。因此,有理由相信,隱遁攻擊技術已被黑客廣泛采用。
Rootkit就是在此背景下出現并迅速發展起來的一種隱遁網絡攻擊新技術[4]。Rootkit是一種通過修改操作系統內核或更改指令執行路徑,來隱藏系統對象(包括文件、進程、驅動、注冊表項、開放端口、網絡連接等)以逃避或者規避標準系統機制的程序[5-6]。攻擊者借助Rootkit隱遁技術對已被滲透的目標網絡系統發動網絡攻擊,安全威脅極大[7]。據《McAfee Labs 2014 Threats Predictions》報告預測:網絡攻擊者將會使用更多的Rootkit隱遁攻擊技術,以逃避檢測與取證,獲取更大利益[8]。
鑒于Windows系統的普及性,Windows Rootkit已成為網絡攻防雙方的重點研究對象,本文將主要討論Windows系統里的Rootkit技術。
Windows系統的Rootkit技術研究始于1999年在著名黑客雜志《Phrack》上發布的《A Real NT Rootkit》[9]。該文創造性地提出了多項Windows系統內核隱遁技術,獲得了信息安全社區的極大關注。之后,幾乎每期《Phrack》都有與Rootkit相關的技術論文。此外,著名的黑客大會(Black Hat、Def Con等)從2005年也開始了針對Rootkit技術的討論議題。
工業界和政府部門同樣關注Rootkit技術研究與應用。日本索尼公司在2005年使用Rootkit技術保護其BMG CD版權,以防止光碟被非法復制[10]。美國和以色列聯合研制的采用了Rootkit隱遁技術的“震網病毒Stuxnet”[11],于2010年重創伊朗核電設施,嚴重滯后其核計劃。2013年震驚世界的美國“棱鏡計劃”[12],隱秘滲透目標系統并植入采用Rootkit隱遁技術的惡意軟件,實施暗中監控、竊取政情軍情,并發起定向隱遁網絡攻擊。與此同時,Rootkit檢測防御工具也相繼出現,如Russinovich編寫的Rootkit Revealer,EP_X0FF編寫的Rootkit Unhooker,Rutkowska編寫的System Virginity Verifier,Linxer開發的PCHunter,Dmitry開發的Tuluka Kernel Inspector,GMER團隊開發的GMER,F-Secure公司的Blacklight,McAfee公司的Rootkit Remover,Kaspersky公司的TDSSKiller及Sophos公司的Anti-Rootkit等。
國內對Rootkit及其防御技術的關注和研究相對較早。中國科技大學、上海交通大學、電子科技大學、解放軍信息工程大學、北京大學等高校已相繼開展Rootkit及其防御技術分析研究。相關Rootkit檢測工具主要有:IceSword、DarkSpy及Linxer開發的PCHunter等[13-20]。
作為一種隱遁網絡攻防的有力武器,Rootkit及其防御技術已成為信息安全領域研究者所共同關注的熱點。關于Rootkit研究綜述已取得部分研究成果。如文獻[21]從Rootkit產生機制的角度綜述了當前的Rootkit技術發展、分類及防御,主要側重于Linux系統;文獻[22]從Rootkit防御機制方面綜述了現今Rootkit檢測技術的研究進展;文獻[23]從取證的視角綜述了目前Rootkit技術研究進展;文獻[24]綜述了Android系統Rootkit的實現原理及檢測方法。
但目前國內尚未有詳細而全面介紹Windows系統Rootkit機理與研究成果的綜述論文。為深入理解Windows Rootkit機理和發展趨勢,總體把握Windows Rootkit及其防御研究進展,并促進國內在該方向上的研究,綜述Windows系統Rootkit研究進展工作非常必要。
1.1 Windows Rootkit定義
Rootkit一詞源于Unix系統。在Unix系統中,Root是指擁有所有特權的管理員,而Kit是管理工具,因此,Rootkit是指惡意獲取管理員特權的工具。利用這些工具,可在管理員毫無察覺的情況下獲取Unix系統訪問權限。
對于Windows Rootkit,盡管在名稱上沿用了Unix系統的Rootkit,但在技術上則繼承了DOS系統相關隱形病毒技術:攔截系統調用以隱匿惡意代碼。最早出現的Windows Rootkit——NT Rootkit,由文獻[9]提出并編碼實現,且對后來的Rookit研究產生了極大的影響。
文獻[6]給出的定義為,Windows Rootkit是能夠持久或可靠地、無法檢測地存在于計算機上的一組程序和代碼。俄羅斯著名的Kaspersky實驗室反病毒專家將Windows Rootkit的定義為一種通過使用隱形技術來隱藏系統對象(包括文件、進程、驅動、服務、注冊表項、開放端口、網絡連接等)以逃避或者規避標準系統機制的程序[25]。盡管上述定義不盡相同,但都刻畫出了Windows Rootkit的本質特征[21-22]:隱匿性、持久性、越權性。因此,從本質上分析,Rootkit是破壞Windows系統內核數據結構及更改指令執行流程[26-27]的代碼。鑒于此,本文給出如下定義:Windows Rootkit是一種越權執行的程序或代碼,常以驅動模塊加載至系統內核層或硬件層,擁有與系統內核相同或優先的權限,進而修改系統內核數據結構或改變指令執行流程,以隱匿相關對象、規避系統檢測取證,并維持對被入侵系統的超級用戶訪問權限。
1.2 Windows Rootkit演化
本質上,Rootkit通過修改代碼、數據、程序邏輯,破壞Windows系統內核數據結構及更改指令執行流程,從而達到隱匿自身及相關行為痕跡的目的。由于IA-32硬件體系結構缺陷(無法區分數據與代碼)和軟件程序邏輯錯誤的存在,導致Rootkit將持續存在并繼續發展。回顧Windows Rootkit技術演化歷程,其遵循從簡單到復雜、由高層向低層的演化趨勢。從Rootkit技術復雜度的視角,可將其大致劃分為5代[23,28-29]:1) 更改指令執行流程的Rootkit,2) 直接修改內核對象的Rootkit,3) 內存視圖偽裝Rootkit,4) 虛擬Rootkit,5) 硬件Rootkit。Rootkit的演化發展時間軸(Rootkit技術典型實例)如圖1所示。

圖1 Windows Rootkit起源與發展時間軸
對于更改指令執行流程Rootkit,主要采用Hooking技術。Windows系統為正常運行,需跟蹤、維護諸如對象、指針、句柄等多個數據結構。這些數據結構通常類似于具有行和列的表格,是Windows程序運行所不可或缺的。通過鉤掛此類內核數據表格,能改變程序指令執行流程:首先執行Rootkit,然后執行系統原來的服務例程,從而達到隱遁目的。此類Rootkit鉤掛的內核數據表格主要有:Windows系統的系統服務調度表(system service dispatch table,SSDT)、中斷調度表(interrupt dispatch table,IDT)、全局描述符表(global descriptor table,GDT)、局部描述符表(local descriptor table,LDT)、特別模塊寄存器(model-specific registers,MSR)、I/O請求包(I/O request packets,IRP)。由于Hooking技術的普及,使此類Rootkit(如NT Rootkit、He4hook、Hacker Defender等)較易被檢測與取證分析。攻防博弈的持續,促使Rootkit技術不斷向前演化,進入了直接修改內核對象技術發展階段。
對于直接修改內核對象的Rootkit,與傳統Hooking技術更改指令執行流程不同,它直接修改內存中本次執行流內核和執行體所使用的內核對象,從而達到進程隱藏、驅動程序隱藏及進程特權提升等目的。2004年,文獻[30]首次展示了該項新技術直接進行內核對象操縱(direct kernel object manipulation,DKOM),并編寫了FU Rootkit。該Rootkit通過修改內核EPROCESS結構中的ActiveProcessLinks雙鏈表來隱藏進程。之后,在FU Rootki基礎上的FUTo Rootkit[31],不是修改進程列表結構,而是修改PspCidTable結構來隱藏進程。2011年出現的TDSS Rootkit[32-33]則直接修改驅動程序(包括防御殺毒軟件)來隱匿自身。然而,自Rutkowska編寫的SVV (system virginity verifier)[34-35]檢測工具后,此類Rootkit也易被檢測出來。所以,Rootkit與Rootkit防御技術的魔道之爭還將持續,從直接修改內核對象進入內存視圖偽裝技術階段。
對于內存視圖偽裝的Rootkit,主要通過創建系統內存的偽造視圖以隱匿自身。此類Rootkit主要利用底層CPU的結構特性,即CPU將最近使用的數據和指令分別存儲在兩個并行的緩沖器:數據快速重編址緩沖器(data translation lookaside buffers,DTLB)和指令快速重編址緩沖器(instruction translation lookaside buffers,ITLB)。通過強制刷新ITLB但不刷新DTLB引發TLB不同步錯誤,使讀寫請求和執行請求得到不同的數據,從而達到隱匿目的[26]。2005年,文獻[36]首次演示了該項隱匿技術,即內存偽裝技術(memory cloaking),并編寫了ShadowWalker Rootkit。然而,在Microsoft公司為其64位Windows系統引入Patchguard[37]技術后,基本宣告了內核層Rootkit技術的終結。從此,Rootkit技術開始進入虛擬領域以期占據攻擊優勢。
對于虛擬Rootkit,與直接修改操作系統的Rootkit不同,它專門為虛擬環境而設計,通過在虛擬環境之下加載惡意系統管理程序,完全劫持原生操作系統,并可有選擇地駐留或離開虛擬環境,從而達到自如隱匿目的。就其類型而言,可分為3種[26,38]:1) 虛擬感知惡意軟件(virtualization-aware malware,VAM),2) 基于虛擬機的Rootkit(virtual machine based Rootkit,VMBR),3) 系統管理虛擬Rootkit (hypervisor virtual machine Rootkit,HVMR)。對于虛擬感知惡意軟件,它只是增加了檢測虛擬環境功能。對于基于虛擬機的Rootkit,能在虛擬機內部封裝原生操作系統,如文獻[39]于2006年發布了通過修改啟動順序將原生操作系統加載到虛擬環境中的SubVirt。對于系統管理虛擬Rootkit,主要利用CPU硬件虛擬技術支持,通過定制的系統管理程序替代底層原來系統管理程序,進而在運行中封裝當前運行的操作系統。如文獻[40]利用AMD Pacifica技術在AMD Athon 64上實現的Blue Pill;文獻[41]利用Intel VT-X技術在Intel Core Duo上實現的Vitriol。然而,在防御者利用邏輯差異、資源差異、時間差異等方法[42-44]檢測到虛擬Rootkit后,攻防博弈開始向底層硬件方向發展。
對于硬件Rootkit,又稱為Bootkit,源于2005年由文獻[45]提出的eEye BootRootKit。它通過感染主引導記錄(master boot record,MBR)的方式,實現繞過內核檢查和啟動隱身。從本質上分析,只要早于Windows內核加載,并實現內核劫持技術的Rootkit,都屬硬件Rootkit技術范疇。如文獻[46-48]發布的SMM Rootkit,它能將自身隱藏在系統管理模式(system management mode,SMM)空間中。由于SMM權限高于虛擬機監控(virtual machine monitor,VMM),設計上不受任何操作系統控制、關閉或禁用;此外,由于SMM優先于任何系統調用,任何操作系統都無法控制或讀取SMM,使得SMM Rootkit有超強的隱匿性。之后,陸續出現的BIOS Rootkit[49-50]、VBootkit[51-53]等都屬于硬件Rootkit范疇。
從上述發展軌跡中可以看出,Windows系統Rootkit及其防御技術在網絡安全攻防博弈中幾乎同步發展、相互促進。因此,隨著應用軟件技術、操作系統技術和硬件技術的發展,Rootkit技術的攻防博弈還將持續下去。
2.1 Windows系統內核結構及關鍵組件
Rootkit本質上是破壞Windows系統內核。為理解Rootkit的工作機制,首先需了解Windows系統內核結構和關鍵組件及其功能。
Windows系統采用層次化設計[54],自底向上可分為3層:1) 硬件抽象層(hardware abstraction layer);2) 內核層(OS kernel layer);3) 應用層(application layer)。硬件抽象層的設計目的是將硬件差異封裝起來,從而為操作系統上層提供一個抽象一致的硬件資源模型。內核層實現操作系統的基本機制和核心功能,并向上層提供一組系統服務調用API (application programming interface)函數。應用層通過調用系統內核層提供的API函數實現自身功能。Windows系統層次結構如圖2所示。
Windows系統的層次化設計,使其容易擴展、升級相關功能,同時,也給攻擊者以可乘之機。Rootkit正是利用Windows系統層次模型中的上下層接口設計,通過修改下層模塊返回值或修改下層模塊數據結構來欺騙上層模塊,從而達到隱匿自身及其相關行為蹤跡目的。在Windows系統中,常被Rootkit利用的內核組件主要包括:進程(線程)管理器、內存管理器、I/O管理器、文件管理器、網絡管理器、安全監視器和配置管理器[55]。

針對Windows系統內核的不同組件,Rootkit將采取不同技術加以利用。具體而言,進程(線程)管理器負責進程和線程的創建和終止,并使用相關數據結構EPROCESS和ETHREAD記錄所有運行的進程與線程。Rootkit通過修改這些數據結構就可隱匿相關進程。
內存管理器實現虛擬內存管理:既負責系統地址空間管理,也負責每個進程地址空間管理,并支持進程間內存共享。Rootkit通過修改全局描述符表(global descriptor table,GDT)和局部描述符表(local descriptor table,LDT)中的相關值,就能獲取特權去修改相關內存頁面的讀寫信息。
I/O及文件系統管理器,負責將IRP分發給底層處理文件系統的設備驅動程序。Rootkit通過在高層鉤掛I/O及文件系統管理器所提供的API函數或在低層攔截IRP請求的方式,實現文件和目錄隱藏。
網絡管理器負責系統的網絡協議實現、網絡連接管理功能,自底向上主要包括2個接口:1) 網絡驅動程序接口規范(network drivers interface specification,NDIS);2) 傳輸驅動程序接口(transfer drivers interface,TDI)。NDIS對低級協議進行抽象,TDI在NDIS基礎上進一步抽象其細節,并向上提供相關網絡API函數。Rootkit可對上述任意一個接口API函數進行代碼修改或鉤掛,以實現相關網絡流量隱藏。
安全監視器負責實施安全策略確保系統安全有序運行。Rootkit通過對內核這部分代碼的修改,就可刪除所有安全機制,使其暢行無阻。配置管理器負責系統注冊表的實現與管理。Rootkit通過修改或鉤掛相關API函數即可隱藏相關進程的注冊表鍵值。
2.2 Rootkit技術分類
Rootkit設計目的是成為無法檢測與取證的軟件,而這主要通過修改Windows系統內核數據結構或更改指令執行流程,從而掩蓋其存在的隱身功能來實現,因此,Rootkit的工作機制主要圍繞隱身功能而展開。以應用程序調用Windows API函數FindNextFile為例,其調用執行路徑上可被Rootkit利用之處如圖3所示。
盡管Rootkit數量繁多,但從其所采用技術的視角,可將其劃分為5類[56-58]:1) Hooking技術,2) 過濾驅動程序(filter drivers)技術,3) 直接內核對象操縱(direct kernel object manipulation,DKOM)技術,4) 虛擬(virtualization)技術,5) 硬件修改(hardware manipulation)技術。
2.2.1 Hooking技術
Windows系統采用事件驅動機制,通過消息傳遞來實現其功能。Hooking是Windows系統中非常重要的系統接口,可監控系統或進程中的各種事件消息,截獲并處理發送給其他應用程序的消息。Rootkit為實現其隱身功能,需更改指令執行路徑,而Windows系統的分層模型和Hooking機制給Rootkit提供了絕佳機會。
只要Rootkit能訪問目標進程地址空間,它就可鉤掛并修改其中的任何函數,以完成隱藏進程、隱藏文件、隱藏網絡端口、防止其他程序訪問特定進程句柄等功能。Windows系統中能被鉤掛的地方很多,本文將從用戶模式到內核模式的順序介紹Rootkit所使用的Hooking技術。Hooking技術主要包括:IAT Hooking、Inline Hooking、IDT Hooking、SSDT Hooking、GDT/LDT Hooking、IRP Hooking等。
1) IAT Hooking
在Windows系統中,當可執行文件運行時,會將該文件的可移植執行體(portable executable,PE)結構加載入內存;同時,Windows裝入程序會將該可執行文件映像的IMAGE_IMPORT_DESCRIPTOR結構中所包含的來自DLL的函數,制作成一個函數指針的表格,稱為輸入地址表(import address table,IAT)。當Rootkit進入應用程序的地址空間,通過分析內存中目標應用程序的PE格式,可將IAT表中的目標函數地址替換為Rootkit函數地址;之后,當目標函數被調用時,就會執行Rootkit函數而非原始函數。圖4描述了IAT Hooking執行后流程的變化。
IAT Hooking技術盡管簡單而強大,但存在2個缺點:① 此類Hooking技術易被檢測發現,② 如應用程序通過LoadLibrary和GetProcAddress尋找函數地址,則IAT Hooking將失效。
2) Inline Hooking
如果說IAT Hooking是通過在IAT表中更改函數地址實現的話,那么,Inline Hooking則是通過硬編碼來改變目標函數頭部代碼的方式,使其跳轉到Rootkit設定好的函數執行。為使Rootkit順利執行,Inline Hooking通常需完成3個任務:① 重新調整當前堆棧;② 執行被覆蓋的指令;③ 過濾信息實現隱身。具體而言,Rootkit一般會向目標函數寫入跳轉指令JMP,在程序進行跳轉時,相關API函數還沒執行完;為確保相關API函數在順利執行后返回至Rootkit函數中,需重新調整當前堆棧;在Rootkit執行之后務必使原來被覆蓋的指令順利執行,并根據需要進行信息過濾以實現隱身功能。Inline Hooking工作機制如圖5所示。
根據Inline Hooking所在目標函數位置的不同,可將其分為3類:① 函數頭部Hooking;② 函數中間Hooking;③ 函數尾部Hooking。一般而言,在目標函數中Inline Hooking的位置越深,代碼重返時所需考慮的問題就越多,如稍有不慎,就會造成藍屏死機(blue screen of death,BSoD)。因此,從實現與檢測的角度,第1、第3類Inline Hooking較為簡單,而第2類Inline Hooking技術則較為復雜。

圖3 Rootkit藏身之處

圖4 IAT Hooking工作機制

圖5 Inline Hooking工作機制
3) IDT Hooking
中斷描述符表(interrupt descriptor table,IDT)是一個有256個入口地址的線性表,每個IDT的入口地址為8字節的描述符,每個中斷向量關聯了一個中斷處理例程。操作系統使用IDTR寄存器記錄IDT位置和大小,可用SIDT指令讀出IDTR寄存器中的信息,LIDT指令將新信息重寫入IDTR寄存器。
IDT Hooking通常替換IDT表中的0x2E索引項,即KiSystemService系統服務處理函數。但Windows系統目前多使用快速調用方法:NTDLL將請求系統服務調用號載入EAX寄存器,將當前堆棧指針ESP載入EDX寄存器,再發出SYSENTER指令。SYSENTER指令將控制權傳遞給MSR(Model-Specific Register,特別模塊寄存器)中的IA32_SYSENTER_EIP寄存器。Rootkit通過覆蓋這個寄存器,就可改變每個系統服務調用的執行流程,并根據需要攔截和修改信息,從而達到隱身目的。
4) SSDT Hooking
系統服務描述符表(system service descriptor table,SSDT)是Windows系統用于用戶模式請求系統服務調用的查找表格。當發出INT 0x2E或SYSENTER指令時,就會激活系統服務調用程序,然后通過查找SSDT表獲取相關函數地址并執行。Windows系統內核中的系統服務描述符表有2個:① KeServiceDescriptorTable,由NTOSKRNL.EXE導出;② KeServieDescriptorTableShadow。兩者區別是:KeServiceDescriptorTable僅有NTOSKRNL一項,KeServieDescriptorTableShadow包含了NTOSKRNL和WIN32K。一般的Native API服務地址由KeServiceDescriptorTable負責分派,而GDI.DLL/USER.DLL內核API服務地址則由KeServieDescriptorTableShadow負責分派。
SSDT Hooking通過修改KeServiceDescriptorTable地址,使控制權重定向到Rootkit代碼,再將被修改后的假消息傳回至應用程序,從而有效隱匿自身及相關行為痕跡。SSDT Hooking一般通過2個步驟完成:①定位KeServiceDescriptorTable;②替換SSDT表中需修改的索引項,使其指向Rootkit代碼。然而,防御者會采用持續監控數據結構修改或完全限制訪問該結構的方式去對抗此類Rootkit。如Windows在X64系統上已使用Patchguard技術,在系統啟動和運行時都要檢查NTOSKRNL.EXE內的系統表格,以避免相關表格被Rootkit修改。
5) GDT/LDT Hooking
全局描述符表(global descriptor table,GDT)用于存放描述內存區域的地址和訪問特權的段描述符,如數據和代碼段描述符、任務狀態段TSS描述符等。在保護模式的段式內存管理機制中,段邏輯地址到線性地址的映射是通過GDT表來完成。GDT表中存放著大量段描述符表結構,其結構體中包含一個過程調用函數基地址,該地址加上段偏移地址即可得出線性物理地址,如圖6所示。GDT表在每次訪問內存時由CPU使用,以確保執行代碼有權訪問在段寄存器中指出的內存段。寄存器GDTR存放著GDT的入口地址,通過指令LGDT可將GDT的入口地址裝入此寄存器,通過指令SGDT可獲取該寄存器內容。局部描述符表(local descriptor table,LDT)本質上也一樣,只是它是按進程而GDT是按處理器來劃分的。寄存器LDTR保存有LDT的入口地址,通過指令LLDT可將LDT的入口地址裝入此寄存器,通過指令SLDT可獲取該寄存器內容。

圖6 GDT/LGT地址轉譯
GDT/LDT Hooking通過在GDT/LDT表的保留字段中插入一個調用門描述符來更改內存段的執行特權,再借助諸如DKOM技術來實施進程隱藏。因此,GDT/LDT Hooking的實現步驟是:① 創建一個包含Rootkit代碼的調用門,② 讀取GDTR寄存器以定位GDT基地址,③ 將創建的調用門插入GDT中的空描述符子項。
6) IRP Hooking
IRP(I/O request packets)是Windows系統內核的一個數據結構[55]。上層應用程序與底層驅動程序通信時,應用程序會發出I/O請求;操作系統將I/O請求轉換成相應的IRP,再根據IRP數據結構中的MajorFunction數組,通過IofCallDriver函數將IRP分派給設備堆棧中的不同派遣例程進行處理。
IRP Hooking是在IRP傳遞過程中進行攔截并處理有關IRP以隱藏相關信息的一種Rootkit技術。既然IRP在分派過程中先后經過IofCallDriver和設備堆棧中的不同派遣例程,因此,可通過3種方式予以攔截:① 攔截IofCallDriver函數;② 在設備堆棧中,將一個過濾驅動程序放置在處理欲攔截IRP的那個驅動程序之上;③直接修改處理IRP派遣例程的MajorFunction數組。當IRP被Rootkit函數攔截并處理后,再將其傳遞給原調度例程完成相關操作。IRP傳遞及IRP Hooking處理流程如圖7所示。

圖7 IRP Hooking工作機制
2.2.2 Filter Drivers技術
Windows系統的層次模型也體現在驅動程序設計中,多數Windows驅動程序采用層次結構來傳遞信息。當I/O管理器接到一個IRP時,會將其傳遞給一個驅動程序/設備棧。棧頂的驅動程序首先處理該IRP,然后依次將其向下傳遞,直至該IRP被完成。棧底的驅動程序通常是與硬件關聯的,負責直接驅動硬件設備完成IRP任務。
Filter Drivers技術是利用Windows分層驅動程序模型,將Rootkit驅動程序插至驅動程序/設備棧中,攔截、修改并過濾掉合法驅動程序需處理的信息,從而達到隱藏文件、嗅探擊鍵、隱匿網絡連接等目的。Filter Drivers工作機制如圖8所示。
2.2.3 DKOM技術
前面討論的Hooking技術和Filter Drivers技術,都涉及利用相關機制去更改或重定向指令執行流程。與此不同,DKOM(direct kernel object manipulation)技術通過直接修改Windows系統中代表進程、驅動程序和特權的內核對象,以實現進程隱藏、驅動程序隱藏和進程特權提升。譬如,對于Windows系統中的每個進程,都有一個對應的內核EPROCESS對象,該對象中的ActiveProcessLinks為一個雙鏈表節點,所有活動進程都連接在一起構成一個雙鏈表,Rootkit只須將需要隱藏的進程節點從該雙鏈表中斷開,就可達到隱藏進程目的,如圖9所示。代表驅動程序的DRIVER_OBJECT對象,也有指向其他驅動程序的指針DriverObject,Rootkit只要遍歷該列表,刪除要隱藏的驅動程序項即可將其隱藏。此外,通過修改進程令牌數據結構,可向進程令牌中添加相關權限值以提升該進程的權限。2.2.4 Virtualization技術
由于傳統的Rootkit與檢測工具同處操作系統內核層,因而容易被檢測出來。與此不同,虛擬Rootkit借助于軟件和硬件的虛擬化支持將自身插入至操作系統之下,使傳統的位于操作系統這一級別的檢測工具失效,從而達到隱身目的[59]。從虛擬Rootkit所處計算機系統層次,可將其劃分為2種:① VMM Rootkit;② SMM Rootkit。
1) VMM Rootkit
虛擬機管理器(virtual machine manager,VMM),是一種運行在物理硬件和操作系統之間的中間軟件層,管理從操作系統到共享資源間的映射,可允許多個操作系統和應用程序共享硬件。VMM Rootkit一般在硬件虛擬化技術支持下(如AMD-V或Intel VT-x),通過在客戶操作系統中安裝內核驅動程序,創建新的系統管理程序和新的虛擬機來放置原生操作系統,使Rootkit運行于原生操作系統之下并控制整個系統以進行隱身,如圖10所示。一旦VMM Rootkit成功加載,它就能透明地截獲和修改被放置在虛擬機中的原生操作系統的狀態和事件,如截獲擊鍵、網絡數據包、內存數據、磁盤讀寫等。此類虛擬Rootkit可細分為2類:① 創建新的系統管理程序并將其自身插至原生操作系統之下的虛擬Rootkit,如SubVirt;② 修改系統管理程序并將原生操作系統封裝在虛擬機中的虛擬Rootkit,如BluePill和Vitriol。

圖9 DKOM工作機制

圖10 VMM Rootkit所處系統層次
2) SMM Rootkit
Intel系列CPU支持4種運行模式:① 實模式(real mode);② 保護模式(protection mode);③ 虛擬8086模式(virtual 8086 mode);④ 系統管理模式(system management mode,SMM)。其中,實模式是16位地址模式,保持處理器向前兼容,僅在啟動時才會用到;保護模式是32位地址,提供了現代操作系統使用的保護模式;虛擬8086模式用于運行為8086等體系結構編寫的程序;系統管理模式是專門用于電源管理和溫度調節。Intel構架下的系統管理模式和其他運行模式的轉換規則為:任何運行模式在發出SMI(system management interrupt)中斷時都可切換至系統管理模式,系統管理模式可通過發出RSM指令返回到前一個運行模式。
重要的是,SMM是一種隔離的、特權的運行環境,其最大特點是:有專用的內存區域和執行環境,外部程序不可見,且SMM不受優先級和內存保護等限制。因此,由于任何操作系統都無法控制或讀取SMM,使得SMM RootKit有超強的隱匿性。SMM Rootkit可控制外圍硬件設備,與諸如網卡、鍵盤、鼠標、硬盤、顯卡等外圍設備交互,從而避免被原生操作系統察覺。文獻[47]首先進行了SMM Rootkit研究;文獻[48]實現了與鍵盤和網卡透明交互的概念驗證型的SMM Rootkit;文獻[46]實現了一個通過劫持SMI的鍵盤記錄型SMM Rootkit。
2.2.5 Hardware Manipulation技術
由計算機系統啟動順序可知,加電后最先啟動的是BIOS芯片代碼,在其完成對芯片組、內存條及外圍設備自檢后,才將控制權交給操作系統以完成后續系統啟動。因此,Rootkit如能寄存于BIOS芯片中,則將先于操作系統控制整個系統,且能在系統重啟、操作系統重裝、磁盤格式化等情況下繼續運行,更重要的是其他取證和檢測工具對其無能為力。
其實,遵循此思路的硬件利用技術由來已久,早在1998年CIH病毒曾成功感染BIOS芯片,使用垃圾數據刷新BIOS,致使機器無法啟動。真正意義上的硬件Rootkit是NGS Consulting公司所編寫[50]:利用ACPI(advanced configuration and power interface,高級配置和電源接口)功能,禁止傳統操作系統進程進入該內存空間,從而達到隱身目的。此外,還可使用PCI擴展ROM作為裝入機制來編寫相關硬件Rootkit,如eEye BootRoot[45]是一種修改系統啟動扇區的Rootkit。
從宏觀的方法論角度,可將惡意代碼檢測方法分為3類[34]:誤用檢測、異常檢測和完整性監測。誤用檢測,是按照已分析并提取的代碼模式,在內存或文件中去搜尋比對可疑數據,以此判定是否為惡意代碼。該檢測法的優點是能高效檢測已知惡意代碼;其不足是不能識別未知或變種惡意代碼。異常檢測,是通過定義一組系統處于正常情況時的數據(如CPU利用率、內存利用率、文件校驗和等);然后分析是否偏離正常行為以判定是否出現異常。該檢測法能有效檢測未知惡意代碼,但其不足在于不能精確定義正常數據。完整性監測是通過監測可信系統中系統文件和內核內存的變化,來判定系統是否受到惡意代碼攻擊。該檢測法能有效識別未知和變種惡意代碼,但實現困難。
對于Rootkit檢測,可將這些宏觀檢測理論具體化為軟件檢測法和硬件檢測法2大類檢測方法。
3.1 軟件檢測法
Rootkit的軟件檢測法較常見,主要包括:特征碼檢測法、完整性校驗法、Hooking檢測法、視圖差異檢測法等。
1) 特征碼檢測法
特征碼分析與檢測法通過查尋文件或內存中的Rootkit特征碼來加以判斷。該方法首先分析已知Rootkit樣本并提取其特征碼以建立特征碼庫;然后掃描文件或內存中的二進制指令代碼并判斷是否匹配特征碼庫。該方法盡管能精準檢測部分已知Rootkit,但由于Rootkit通常會采取新的Hook技術或DKOM技術,在文件系統或內存中隱匿其靜態文件或動態進程,導致特征碼檢測法根本掃描不到該類Rootkit,很容易被繞過。因此,對于已知Rootkit變種和未知Rootkit,因尚未理解其運行機制提取不到特征碼而使該方法無從檢測。
特征碼檢測法是一種通用的檢測技術,目前的商業化Rootkit安全產品多采用特征碼方法進行檢測。但隨著變形、加密、加殼等相關技術的出現,需結合其他方法,才能有效檢測。
2) 完整性檢驗法
完整性分析與檢測法通過檢查系統文件或內存中的系統內核組件的完整性來加以判斷。該方法首先建立未感染系統的重要系統文件的Hash 值基準庫;然后通過計算運行中系統文件或內存中系統內核組件的Hash值;最后比對兩者來判斷系統是否受Rootkit感染。應用此方法的檢測工具有:Windows系統下的文件完整性檢查工具Sentinel,Rutkowska所編寫的SVV[33]、PatchFinder[60-61]等。該方法檢測算法簡單,能檢測部分未知Rootkit,但因其Hash 值基準庫易被Rootkit偽造或繞過,且必須考慮所有可能被滲透攻擊的代碼區域,致使該方法執行困難。
3) Hooking檢測法
Hooking檢測法通過監測系統地址空間中的內核表格是否被鉤掛來加以判斷。該方法監測邏輯如下:首先,遍歷系統中易被鉤掛的重要內核表格(諸如SSDT、IAT、IDT、驅動程序IRP表等),確保函數指針指向可信的系統模塊的地址范圍內;其次,對于每個表格項目,反匯編對應的系統服務函數的頭幾條指令,確保執行轉移落在內核模塊范圍內。使用此方法的檢測工具較多,如VICE[62]、RAID[63]、iDefense公司的Hook Explorer、Volatile Systems公司開發的Volatility、Mandiant公司的Intellignet Response及HBGary公司的Responder,均采用此類方法檢測Rootkit。但該類方法易受深度Hooking技術和DKOM技術繞過和欺騙。
4) 視圖差異檢測法
差異檢測法又稱為交叉視圖檢測法,是通過比較不同途徑(低層視圖與高層視圖)所枚舉到的系統信息,如進程列表、文件目錄列表、網絡連接列表、SSDT、IDT等,根據所獲結果的差異來檢測Rootkit。文獻[64]首先提出該檢測方法并開發了相關工具Patchfinder。之后,利用該檢測原理,功能更強的工具相繼出現,應用范圍逐漸擴大。如微軟Russinovich編寫的Rootkit Revealer、IceSword,Linxer 編寫的PCHunter及F-Secure公司研發的Blacklight等。文獻[65]提出了檢測虛擬Rootkit的視圖差異法,該方法的前提是假設,系統信息在一個列表中出現,而在另一個列表中隱藏。因此,在可靠的枚舉系統信息情形下,可檢測已知或未知的Rootkit。但如果Rootkit修改了第二個列表,使兩個列表看起來完全相同,則這種檢測假設就不成立,導致不能成功檢測。
3.2 硬件檢測法
隨著更低層的虛擬Rootkit和硬件Rootkit出現,它們先于Rootkit檢測軟件甚至操作系統啟動,導致基于軟件的Rootkit檢測方法無能為力。這樣,基于硬件的Rootkit檢測法或許是一種頗有前景的防御方法。
目前,基于硬件的Rootkit檢測工具相對較少。美國國防高級研究計劃局和國家安全部聯合研制了一個基于硬件的Rootkit解決方案CoPilot[66],能在硬件級別上監控主機的內存和文件系統,通過實時掃描系統尋找異常行為。Tribble[67]及FRED[68]利用直接內存訪問(direct memory access,DMA)指令去獲取物理內存拷貝,并搜尋異常行為。在拷貝物理內存時,目標系統的CPU將暫停,以避免攻擊者執行Rootkit從而非法篡改內存數據。
盡管基于硬件的Rootkit檢測法是目前最好的防御方案,但仍沒有相關商業產品,且特別編制的Rootkit仍可避開其檢測取證。此外,對于硬件卡的更新升級也相對復雜。從這個意義上看,Rootkti檢測防御研究依舊任重道遠。
3.3 Rootkit檢測工具評估
自從Rootkit及內含Rootkit技術的惡意軟件不斷涌現,研究人員及安全廠商也隨之提出了很多檢測方法及工具應對。為檢驗、評價相關檢測方法與工具的有效性,開展Rootkit檢測工具的評估研究具有重要的理論價值與實踐意義[69]。目前,對于Rootkit檢測工具的評估研究處于起步階段,研究者開始對此展開相關研究。如文獻[70-71]對部分免費的和商用的Rootkit檢測工具進行了評估研究;文獻[72]對部分開源Rootkit檢測工具進行了評估研究。
根據Rootkit與操作系統交互所采用的相關技術,本文選擇了10個有代表性的Rootkit樣本,即AFX Rootkit2005、Hacker Defender、NTIllusion、Vanquish、Gromozon、FuTo、Ghost、Shadow Walker、Unreal及Phide_ex;選擇了10個有代表性的Rootkit檢測工具進行相關檢測性能評估。通過以下14個參數[72]評估Rootkit檢測工具的性能:進程/線程、加載模塊、動態鏈接庫、服務、文件、主引導記錄MBR、交換數據流、注冊表、SSDT鉤子、IDT鉤子、IRP鉤子、IAT鉤子、GDT/LDT鉤子及SYSENTER鉤子。測評結果如表1所示。

表1 Rootkit檢測工具評估

(續表)
從測評結果可知,商業Rootkit檢測工具(如GMER、McAfee Rootkit Detective、Helios等)表現普遍較好,部分免費或共享工具(如IceSword、XueTr等)也非常不錯,個別免費工具檢測結果有待進一步提高。
Rootkit技術自誕生起,一直遵循著與應用軟件技術、操作系統技術和底層硬件技術同步發展的模式。應用軟件技術、操作系統技術和底層硬件技術的升級與更新,都將促使Rootkit技術的演化與發展。同樣地,從攻防博弈的角度,隨著Rootkit技術日趨復雜和更臻完美,Rootkit防御技術也呈現“魔高一尺,道高一丈”的發展態勢。依據上述分析和掌握的最新資料,將展望Rootkit技術未來發展趨勢、探討Rootkit防御技術進一步研究方向。
4.1 Rootkit發展趨勢
Rootkit技術基本遵循與應用軟件技術、操作系統技術和底層硬件技術同步發展與演化模式,已呈現日趨復雜、相互融合,并積極擴展至其他新平臺、新領域的發展趨勢[27]。
1) 從計算機系統縱向層次的角度,Rootkit技術正向縱深方向發展:由高層向低層,由用戶層向內核層,由軟件向硬件,由磁盤空間向內存空間。從這個意義來說,Rootkit正在充分利用計算機系統的層次模型,竭盡所能地發展新的隱遁技術[73]。
2) 從與其他惡意軟件交互的橫向視角,Rootkit技術已向相互滲透、相互融合方向發展,導致其日趨復雜和更臻完美。如2012年波及全球的Flame攻擊便是一個典型實例:既有病毒的自我復制,又具蠕蟲的漏洞利用,還有Rootkit的隱遁潛行功能。此類發展趨勢,將會給Rootkit防御帶來異常嚴峻的挑戰[27]。
3) 從系統平臺的角度,Rootkit已由Windows平臺向智能終端系統平臺發展。隨著Android、iOS等智能終端操作系統的快速發展與普及,Rootkit正向該領域快速擴散與演化發展,開始影響移動互聯網安全[74]。如Android平臺上的FakeDebuggerd Rootkit,能隱蔽地竊取用戶手機號、硬件編號、地理位置等信息;iOS平臺上的Carrier IQ Rootkit,能將用戶的一切動作(鍵盤輸入、短信,甚至通話)隱蔽地傳送至Carrier IQ公司。
4) 從應用領域的角度,Rootkit已開始由信息系統領域轉移至與信息技術相關的新領域,且破壞威力驚人。譬如,在工業領域,伊朗核電站所遭受的Stuxnet攻擊,就是Rootkit技術的新型應用;在金融領域,2010年著名黑客大會(Black Hat)上,文獻[75]利用Rootkit技術攻擊ATM機。近年來盛行的隱遁定向APT攻擊[76],就是Rootkit隱遁技術的典型應用。
5) 從反取證的角度,Rootkit已初步具備在諸如數據銷毀、數據隱藏、數據轉換、數據偽造和數據源擦除等[27]方面的反取證能力,這將給實時取證帶來極大挑戰。
4.2 Rootkit防御方向
從攻防博弈的視角,Rootkit技術與Rootkit防御技術的魔道之爭將會相互促進并一直持續下去。綜合上述討論與分析,本文認為Rootkit防御技術領域的進一步研究方向包括:
1) 硬件級防御技術[65,77]。以系統啟動順序和與操作系統交互的視角,Rootkit會竭盡所能做到最先啟動以獲取系統控制權限。因此,從防御的角度,硬件級Rootkit檢測防御方案通過先于操作系統加載,先期獲取控制權限,占據先發制人的技術優勢,無疑最具發展應用前景。
2) 操作系統級防御技術[78-79]。從操作系統內核的視角,造成目前Rootkit泛濫的主要原因在于,當前操作系統缺乏有效區分與隔離自身模塊和外來驅動程序的相關機制。一旦Rootkit加載入系統內核,就擁有與系統內核相同的特權,勢必造成檢測與清除困境。因此,操作系統如能有效區分與隔離自身模塊與外來驅動程序,無疑能有效攔截Rootkit。如Microsoft公司的64位Windows系統引入的PatchGuard技術已具備相關攔截功能。
3) 內存檢測取證技術[80]。從Rootkit進程運行的視角,每個Rootkit進程都需加載至內存中運行,因此,內存無疑是檢測防御Rootkit最佳位置。如何有效獲取內存數據、分析內存數據、并檢測內存中運行的Rootkit,將是未來Rootkit防御技術的進一步研究方向。
4) 免疫云智能防御技術[81-82]。從系統和全局的視角,將計算機系統視為人體系統,Rootkit防御系統等同于人體免疫系統。借鑒人體免疫系統機理和利用云計算的高效性,研究Rootkit免疫云智能防御系統的體系結構及互動機制,能有效防御Rootkit攻擊,將是未來Rootkit智能防御技術進一步的研究方向。
Rootkit技術的隱遁潛行功能以及與其他惡意軟件相互滲透、相互融合的演化發展趨勢,已對網絡信息系統造成了極大安全威脅。Rootkit技術及其防御技術,已是信息安全社區討論與關注的熱點研究領域。本文從技術的角度探討了Windows系統的Rootkit技術原理、技術演化過程、Rootkit檢測防御方法,并在此基礎上展望了Rootkit未來發展趨勢和Rootkit防御技術進一步研究方向。從本質上分析,Rootkit技術沿用的是攻防博弈的對抗性思維,充分利用Windows系統的層次模型,通過修改系統內核結構或更改指令執行流程,從而實現其隱遁功能。因此,Rootkit及其防御技術將隨著應用軟件技術、操作系統技術和底層硬件技術的演化而不斷發展與更新。
[1] STONE R. A call to cyber arms[J]. Science, 2013, 339(6123): 1026-1027.
[2] Symantec Corporation. 2013 Norton report[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 risk report[EB/OL]. [2014-12-10]. http://www-03.ibm.com/ security/ xforce/.
[4] RIES C. Inside Windows Rootkits[EB/OL]. [2014-12-10]. http://read.pudn.com/downloads64/sourcecode/windows/fre edic/226557/Inside%20Windows%20Rootkits.pdf.
[5] Symantec Corporation. Windows rootkit overview[EB/OL]. [2014-12-10]. http://www.symantec.com/avcenter/reference/ windows.rootkit.overview.pdf.
[6] HOGLUND G, BUTLER J. Rootkits: Subverting the Windows kernel[M]. USA: Addison-Wesley Professional, 2007.
[7] Mandiant Corporation. APT1: Exposing one of China’s cyber espionage units[EB/OL]. [2014-12-10]. http:// intelreport. mandiant.com/Mandiant_APT1_Report.pdf.
[8] McAfee Labs. 2014 threats predictions[EB/OL]. [2014-12-10]. http://www.mcafee.com/uk/resources/reports/rpthreats-predictions-2014.pdf, 2014.
[9] HOGLUND G. A real NT rootkit. PHRACK[EB/OL]. [2014-12-10]. http://phrack.org/issues.html?issue=55&id= 5#article.
[10] RUSSINOVICH M. Sony, Rootkits and digital rights management gone too far[EB/OL]. [2014-12-10]. http:// blogs.technet.com/b/markrussinovich/archive/2005/10/31/s ony-rootkits-and-digital-rights-management-gone-too-far. aspx.
[11] KUSHNER D. The real story of stuxnet[EB/OL]. [2014-12-10]. http://spectrum.ieee.org/telecom/security/ the-real-story-of-stu xnet.
[12] BRAUN S, FLAHERTY A, GILLUM J, et al. Secret to PRISM program: Even bigger data seizures[EB/OL]. [2013-06-15]. http://bigstory.ap.org/article/secret-prismsuccess-even-bigger-data-seizure.
[13] 潘劍鋒, 奚宏生, 譚小彬. 一種利用程序行為分析的Rootkit 異常檢測方法[J].中國科學技術大學學報, 2010, 40(8): 863-869. PAN Jian-feng, XI Hong-sheng, TAN Xiao-bin. A method for rootkit anomaly detection using behaviors analysis[J]. Journal of Univeristy of Science and Technology of China, 2010, 40(8): 863-869.
[14] 薛英飛. 基于Windows(2000/2003)內核對象的Rootkit檢測[D]. 上海: 上海交通大學, 2008. XUE Ying-fei. Rootkit detection based on Windows(2000/ 2003) kernel object[D]. Shanghai: Shanghai Jiao Tong University, 2008.
[15] 徐昊. Win32平臺下內核Rootkit技術的研究與應用[D].上海: 上海交通大學, 2007. XU Hao. Research and application of kernel Rootkit technology under Win32 environment[D]. Shanghai: Shanghai Jiao Tong University, 2007.
[16] 賴云一. Windows Rootkit分析與檢測[D]. 成都: 電子科技大學, 2009. LAI Yun-yi. Windows rootkit analysis and detection[D]. Chengdu: Univeristy of Electronic Science and Technology of China, 2009.
[17] 何志. 針對Windows RootKit的安全監測系統的研究與實現[D]. 成都: 電子科技大學, 2008. HE Zhi. Research and implementation of Windows Rootkit secure detection system[D]. Chengdu: Univeristy of Electronic Science and Technology of China, 2008.
[18] 雙世勇. Windows Rootkit檢測方法研究[D]. 鄭州: 中國人民解放軍信息工程大學, 2005. SHUANG Shi-yong. Research on Windows Rootkit detection methods[D]. Zhengzhou: The PLA Information Engineering University, 2005.
[19] 薛寒. 網絡主動防御系統中的rootkit檢測與個人防火墻[D]. 鄭州: 中國人民解放軍信息工程大學, 2007. XUE Han. Rootkit detection and personal firewall in the network active defense system[D]. Zhengzhou: The PLA Information Engineering University, 2007.
[20] 白光冬, 郭耀, 陳向群. 一種基于交叉視圖的Windows Rootkit檢測方法[J]. 計算機科學, 2009, 36(8): 133-137. BAI Guang-dong, GUO Yao, CHEN Xiang-qun. Windows rootkit detection method based on cross-view[J]. Computer Science, 2009, 36(8): 133-137.
[21] BRAVO P. GARCIA D F. Rootkits survey: a concealment story[EB/OL]. [2014-12-10]. http://www.pablobravo. com/files/survey.pdf.
[22] JOY J, JOHN A, JOY J. Rootkit detection mechanism: a survey[J]. Communications in Computer and Information Science, 2011, 203: 366-374.
[23] SHIELDS T. Survey of Rootkit technologies and their impact on digital forensics[EB/OL]. [2014-12-10]. http://www.donkeyonawaffle.org/misc/txs-rootkits_and_di gital_forensics.pdf.
[24] 李文新, 王姜博, 慕德俊, 等. Android 系統Rootkit 技術綜述[J]. 微處理機, 2011, 32( 2): 68-72. LI Wen-xin, WANG Jiang-bo, MU De-jun, et al. Survey on Android Rootkit[J]. Microprocessors, 2011, 32( 2): 68-72. [25] SHEVCHENKO A. Rootkit evolution[EB/OL]. [2014-12-10]. http://www.securelist.com/en/analysis?pubid= 204792016.
[26] DAVIS M A, BODMER S M, LEMASTER A. Hacking explosed: Malware & Rootkits secrets & solutions[M]. USA: The McGraw-Hill Companies, 2010.
[27] BLUNDEN B. The Rootkit arsenal: Evasion in the dark corners of the system[M]. Massachusetts: Jones & Bartlett Publishers, 2013.
[28] BRAVO P, GARCIA D F. Proactive detection of kernelmode Rootkits[C]//2011 Sixth International Conference on Availability, Reliability and Security. Vienna: IEEE Computer Society, 2011: 515-520.
[29] SPARKS S, EMBLETON S, ZOU C. Windows Rootkits a game of “hide and seek”[EB/OL]. [2014-12-10]. http:// www.cs.ucf.edu/~czou/research/Rootkit-BookChapter.pdf.
[30] BUTLER J, HOGLUND G. VICE: Catch the hookers[EB/ OL]. [2014-12-10]. http://www.blackhat.com/ presentations/bh-usa-04/bh-us-04-butler/bh-us-04-butler. pdf.
[31] SILBERMAN P, CHAOS. FUTo Rootkit[EB/OL]. [2014-12-10]. http://uninformed.org/?v=3&a=7&t=sumry.
[32] KAPOOR A, MATHUR R. Predicting the future of stealth attacks[EB/OL]. [2014-12-10]. http://www.mcafee.com/ us/resources/reports/rp-predicting-stealth-attacks.pdf.
[33] MATROSOV A, RODIONOV E. TDL3: the Rootkit of all evil?[EB/OL]. [2014-12-10]. http://www.eset.com/us/ resources/ white-papers/TDL3-Analysis.pdf.
[34] RUTKOWSKA J. System virginity verifier: Defining the roadmap for malware detection on windows systems [EB/OL]. [2014-12-10]. http://www.invisiblethings.org/ papers/ hitb05_virginity_verifier.ppt.
[35] RUTKOWSKA J. Rootkit hunting vs compromise detection[EB/OL]. [2014-12-10]. http://www. blackhat. com/presentations/bh-federal-06/BH-Fed-06-Rutkowska/B H-Fed-06-Rutkowska-up.pdf.
[36] SPARKS S, BUTLER J. Shadow walker: Raising the bar for windows rootkit detection [J]. Phrack Magazine, 2005, 11(63): 10-26.
[37] FIELD S. An introduction to kernel patch protection [EB/OL]. [2014-12-10]. http://blogs.msdn.com/b/ windowsvistasecurity/archive/2006/08/11/695993.aspx.
[38] RUTKOWSKAJ. Introducing stealth malware taxonomy [EB/OL]. [2014-12-10]. www.net-security.org/dl/articles/ malware-taxonomy.pdf.
[39] KING S T, CHEN P M, WANG Y M. SubVirt: Implementing malware with virtual machines[C]//2006 IEEE Symposium on Security and Privacy. Berkeley: IEEE Computer Society, 2006: 314-327.
[40] RUTKOWSKA J. Subverting vista kernel for fun and profit[EB/OL]. [2014-12-10]. http://www.blackhat.com/ presentations/bh-usa-06/BH-US-06-Rutkowska.pdf.
[41] DAIZOVI D A. Hardware virtualization rootkits[EB/OL]. [2014-12-10]. http://www.blackhat.com/presentations/bhusa-06/BH-US-06-Zovi.pdf.
[42] PTACEK T, LAWSON N. Don’t tell Joanna, the virtualized rootkit is dead[EB/OL]. [2014-12-10]. http:// matasano. com/research/bh-usa-07-ptacek_goldsmith_and_lawson.pdf.
[43] BULYGIN Y. Insane detection of insane rootkits: Chipset based approach to detect virtualization malware[EB/OL]. [2014-12-10]. http://me.bios.io/images/2/23/DeepWatch.pdf.
[44] RUTKOWSKA J, TERESHKIN A. IsGameOver() anyone? [EB/OL]. [2014-12-10]. http://invisiblethingslab.com/ resources/bh07/IsGameOver.pdf.
[45] SOEDER D, PERMEH R. eEye BootRoot[EB/OL]. [2014-12-10]. http://www.blackhat.com/presentations/bhusa-05/bh-us-05-soeder.pdf.
[46] COLLAPSE C. A real SMM rootkit[J]. Phrack Magazine, 2009, 13(42): 56-68.
[47] BSDAEMON, COIDELOKO, DONANDON. System management mode hacks[J]. Phrack Magazine, 2008, 12(41):12-25.
[48] EMBLETON S, SPARKS S, ZOU C. SMM Rootkits: a new breed of OS independent malware[J]. Security & Communication Networks, 2013, 6(12): 1590-1605.
[49] ICELORD. BIOS Rootkit: Welcome home, my lord [EB/OL]. [2014-12-10]. http://blog.csdn.net/icelord/article/ details/1604884.
[50] HEASMAN J. Implementing and detecting an ACPI BIOS rootkit[EB/OL]. [2014-12-10]. http://www.blackhat. com/presentations/bh-europe-06/bh-eu-06-Heasman.pdf.
[51] KUMAR N, KUMAR V. VbootKit: Compromising Windows vista security[EB/OL]. [2014-12-10]. http://www. blackhat.com/presentations/bh-europe-07/Kumar/Whitepap er/bh-eu-07-Kumar-WP-apr19.pdf.
[52] KUMAR N, KUMAR V. VBootKit 2.0-attacking Windows 7 via boot sectors[EB/OL]. [2014-12-10]. http://www. securitybyte.org/2009/schedule/Day1_Orchid/Vbootkit2.0a -AttackingWindows7viaBootSectors.pdf.
[53] METULA E. Managed code Rootkits[M]. Burlington: Syngress press, 2011.
[54] RUSSINOVICH M, SOLOMON D, IONESCU A. Windows internals[M]. USA: Microsoft Press, 2012.
[55] 潘愛民. Windows內核原理與實現[M]. 北京: 電子工業出版社, 2010. PAN Ai-min. Understanding the Windows kernel[M]. Beijing: Publishing House of Electronics Industry, 2010.
[56] BILBY D. Low down and dirty: Anti-forensic rootkits[EB/ OL]. [2014-12-10]. http://www.blackhat.com/ presentations/bh-jp-06/BH-JP-06-Bilby-up.pdf.
[57] BUTLER J, ARBAUGH B, PETRONI N. R^2: the exponential growth of Rootkit techniques[EB/OL]. [2014-12-10]. http://www.blackhat.com/presentations/bh-usa-06/ BH-US-06-Butler.pdf.
[58] BLUNDEN B. Anti-forensics: the Rootkit connection[EB/ OL]. [2014-12-10]. http://www.blackhat.com/ presentations/bh-usa-09/BLUNDEN/BHUSA09-Blunden-AntiForensics-PAPER.pdf.
[59] SUN Bing. Software virtualization based Rootkits[EB/OL]. [2014-12-10]. http://www.blackhat.com/presentations/bheurope-07/Bing/Whitepaper/bh-eu-07-bing-WP.pdf.
[60] RUTKOWSKA J. Detecting Windows server compromises with patchfinder 2[EB/OL]. [2014-12-10]. http:// jaumingtw.sg1005.myweb.hinet.net/av/anti-rootkits/patch_ finder/rootkits_detection_with_patchfinder2.pdf.
[61] RUTKOWSKA J. Execution path analysis: Finding kernel based Rootkits[J]. Phrack Magazine, 2003, 11(59): 65-79.
[62] BUTLER J, HOGLUND G. VICE: Catch the hookers: Plus new Rootkit techniques[EB/OL]. [2014-12-10]. http://www. cs.dartmouth.edu/~sergey/cs258/rootkits/bh-us-04-butler.p df.
[63] BUTLER J, SIBERMAN P. RAIDE: Rootkit analysis identification elimination v1.0[EB/OL]. [2014-12-10]. http://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Silberman.pdf.
[64] RUTKOWSKA J. Thoughts about crossview based rootkit detection[EB/OL]. [2014-12-10]. http://invisiblethings. org.
[65] XIE Xiong-wei, WANG Wei-chao. Rootkit detection on virtual machines through deep information extraction at hypervisor-level[C]//IEEE Conference on Communications and Network Security. National Harbor, USA: IEEE, 2013, 498- 503.
[66] PETRONI N L, FRASER T, MOLINA J, et al. Copilot - a coprocessor-based kernel runtime integrity monitor[EB/ OL]. [2014-12-10]. http://www.umiacs.umd.edu/ partnerships/ltsdocs2004/Active_Systems(Arbaugh).pdf.
[67] CARRIER B D, GRAND J. A hardware-based memory acquisition procedure for digital investigations[J]. Journal of Digital Investigation, 2004, 1(1):50-60.
[68] BBN Technologies. Fred: Forensic ram extraction device [EB/OL]. [2012-12-10]. http://www.ir.bbn.com/vkawadia/, 2014.
[69] RILEY R. A framework for prototyping and testing data-only rootkit attacks[J]. Computers & Security, 2013, 37: 62-71.
[70] ASHRAF. 13 top best free Rootkit removal(anti-rootkit) programs[EB/OL]. [2014-12-10]. http://dottech.org/129897/ 13-top-best-freerootkit-removal-anti-rootkit-programs-windows-xp-vista-7-8/.
[71] CARVEY H. Windows forensic analysis[M]. New York : Syngress Publisher, 2009.
[72] ROMANA S, JHA A K, PAREEK H, ESWARI P R. Evaluation of open source anti-rootkit tools[C]//Workshop on Anti-malware Testing Research. Montreal: IEEE, 2013: 1-6.
[73] HILI G, MAYES K, MARKANTONAKIS K. The BIOS and Rootkits, secure smart embedded devices[J]. Platforms and Applications, 2014, 369-381.
[74] PU Shi, CHEN Zhou-guo, HUANG Chen, et al. Threat Analysis of smart mobile device[C]//2014 General Assembly and Scientific Symposium. Beijing: IEEE, 2014: 1-3.
[75] JACK B. Jackpotting automated teller machines redux [EB/OL]. [2014-12-10]. http://www.blackhat.com/html/bhus-10/bh-us-10-briefings.html.
[76] McAfee Corporation. Combating advanced persistent threats [EB/OL]. [2014-12-10]. http://www.mcafee.com/us/ resources/white-papers/wp-combat-advanced-persist-threat s.pdf.
[77] 施江勇, 王會梅, 鮮明, 等. 硬件虛擬化Rootkit檢測方法研究綜述[J]. 計算機應用研究, 2014, 31(1):1-5. SHI Jiang-yong, WANG Hui-mei, XIAN Ming, et al. Summarize of detection methods on hardware-based virtualization machine Rootkit[J]. Application Research of Computers, 2014, 31(1): 1-5.
[78] 辛知, 陳惠宇, 韓浩, 等. 基于結構體隨機化的內核Rootkit防御技術[J]. 計算機學報, 2014, 37(5): 1100-1110. XIN Zhi, CHEN Hui-yu, HAN Hao, et al. Kernel Rootkit defense based on automatic data structure randomization [J]. Chinese Journal of Computers, 2014, 37(5): 1100-1110.
[79] WANG Xue-yang, KARRI R. Detecting kernel control-flow modifying Rootkits[J]. Advances in Information Security, 2014, 55: 177-187.
[80] KORKIN I, NESTEROV I. Applying memory forensics to rootkit detection[C]//Proceedings of the Conference on Digital Forensics, Security and Law. Virginia, USA: ADFSL, 2014: 115-143.
[81] LIANG Jun-jie. Key security technologies of cloud computing platforms[J]. Advances in Intelligent Systems and Computing, 2014, 250: 411-417.
[82] CARRETERO J, BLAS J G. Introduction to cloud computing: Platforms and solutions[J]. Cluster Computing, 2014, 17(4): 1225-1229.
編輯蔣 曉
Research and Development of Rootkit
ZHANG Yu1, LIU Qing-zhong2, LI Tao3, LUO Zi-qiang1, and WU Li-hua1
(1. Department of Computer Science, Hainan Normal University Haikou 571158; 2. Department of Computer Science, Sam Houston State University Huntsville, Texas USA 77341; 3. College of Computer Science, Sichuan University Chengdu 610065)
Rootkit is a set of programs that allows a permanent or consistent, undetectable presence on network systems. Rootkit can cause serious network security threat since it provides stealth access and software eavesdropping for attackers by modifying the operating system kernel data or changing instruction execution path. Firstly, the basic definition and evolution of Windows Rootkit are introduced, and the Rootkit mechanism and the Windows system kernel components are then analyzed. Thereafter, we discuss Rootkit defense mechanism and detection methods. We conclude with prediction of the trends and further research directions of Rootkit and its defense.
evasion attack; forensic analysis; malware; network security; rootkit
TP309
A doi:10.3969/j.issn.1001-0548.2015.04.016
2014 ? 12 ? 12;
2015 ? 03 ? 26.
國家自然科學基金(61462025, 61262077, 61173159, 61463012);海南省自然科學基金(613161, 614233);國家級大學生創新創業訓練計劃資助項目(201211658036).
張瑜(1975 ? ),男,副教授,博士,主要從事網絡安全、惡意代碼分析與取證及智能計算等方面的研究.