王宇
摘要:Rootkit幾乎具備了所有惡意代碼的優(yōu)勢,具有靈活性更大、潛伏性更強、破壞范圍更廣等特點,能夠?qū)inux、Windows等計算機操作系統(tǒng)和Android等移動終端操作系統(tǒng)實施攻擊。隨著Rootkit的快速發(fā)展和廣泛使用,如何檢測防范Rootkit攻擊也成為了熱點研究問題。
關鍵詞:Rootkit;掛鉤;Rootkit檢測;
中圖分類號:TP393.08?? 文獻標識碼:A?? 文章編號:1672-9129(2020)16-0040-01
1 Rootkit概述
Rootkit,直譯即特權(quán)用戶工具集,從其名稱定義不難看出,Rootkit實質(zhì)是一類能夠獲取特殊控制權(quán)限,訪問敏感數(shù)據(jù)或進行風險操作的軟件集[1]。Rootkit早在1994年就已經(jīng)出現(xiàn),它本身并不是一項新型攻擊技術,但卻是發(fā)展最快、威脅最大的惡意代碼之一,這是因為Rootkit同時兼?zhèn)淞四抉R、后門、計算機病毒的特征,能通過替換、修改硬件代碼或計算機程序?qū)⒆约哼M行偽裝隱藏,繞過安全檢測機制的監(jiān)測,對系統(tǒng)實施訪問或控制。由于Rootkit的隱藏性更深、潛伏期更長,一般系統(tǒng)的檢測機制及一些檢測軟件很難對其進行有效檢測,這使Rootkit相較其他類惡意代碼,能造成更大的危害。
2 Rootkit攻擊技術
2.1攻擊模式。主流計算機操作系統(tǒng)多采用自下向上的分層模型,層間接口提供統(tǒng)一標準或協(xié)議將下層進行封裝,為上層提供服務,但分層模型在簡化層間連接的同時也存在被攻擊的風險。
用戶模式的Rootkit攻擊通過接入開發(fā)接口、關閉保護機制和使用掛鉤技術等將指定代碼加載到系統(tǒng)進程中,在未授權(quán)的情況下進行如替換系統(tǒng)庫文件、更改系統(tǒng)進程等敏感操作。內(nèi)核模式的Rootkit攻擊針對操作系統(tǒng)的內(nèi)核對象(如文件、進程等)進行攻擊,修改或替換內(nèi)核代碼,通過訪問底層信息控制系統(tǒng),再利用獲得的權(quán)限對抗安全機制,欺騙上層調(diào)用,實施深度隱藏。實現(xiàn)Rootkit內(nèi)核模式攻擊的方式有很多,例如通過修改系統(tǒng)硬件的驅(qū)動程序改變原有的服務調(diào)用。
2.2掛鉤技術。掛鉤是將攻擊者事先寫好的代碼以外掛程序的形式插入到目標程序中,當外掛程序被執(zhí)行時,進程將執(zhí)行攻擊代碼,在用戶不知情的情況下完成攻擊。較為常見的掛鉤技術有API函數(shù)掛鉤和描述符表掛鉤。API函數(shù)掛鉤主要有兩種實現(xiàn)方式,一種是修改輸入地址表(IAT),另一種是修改函數(shù)地址中的機器碼。IAT中是程序運行要調(diào)用的不同函數(shù)的地址信息,Rootkit使用掛鉤技術攻擊時,首先會分析目標程序的結(jié)構(gòu),然后根據(jù)API函數(shù)地址和IAT確定目標函數(shù)地址,再使用攻擊代碼所在地址進行替換,這樣當程序運行至目標函數(shù)時,攻擊函數(shù)就能取而代之得到運行,完成攻擊。另一種方式是直接修改函數(shù)入口的機器碼,使程序轉(zhuǎn)到攻擊函數(shù)。
描述符表掛鉤的攻擊對象是系統(tǒng)服務描述符表(SSDT)、中斷描述符表(IDT)、全局描述符表(GDT)等。SSDT掛鉤是將SSDT中某個系統(tǒng)服務對應的接口地址修改為掛鉤子函數(shù)的地址,進而改變系統(tǒng)服務的執(zhí)行路徑[2]。IDT掛鉤是用新的表項替換IDT中原有的表項,改變系統(tǒng)服務的執(zhí)行流程。GDT掛鉤是通過改變內(nèi)在段的執(zhí)行特權(quán)隱藏攻擊進程。
2.3虛擬化技術。虛擬化技術使軟件與硬件不再僅具有一對一的映射關系,同一硬件設施可以被多種軟件共享。基于虛擬化技術的Rootkit正是利用這一特點繞開系統(tǒng)的安全檢測,實現(xiàn)深度潛伏。
虛擬化技術的基本組成要素有虛擬機(VM)和虛擬機管理器(VMM),VMM使用宿主、監(jiān)控、混合三種模型對物理主機的資源進行管理。VMM Rootkit在宿主模型下構(gòu)建包含攻擊代碼的VM,再利用VMM控制宿主系統(tǒng),監(jiān)控、截獲任意信息,由于構(gòu)建的VM與宿主系統(tǒng)是隔離的,因此安全檢測無法檢測到攻擊代碼的存在[3]。在監(jiān)控模型下,VMM Rootkit 更改系統(tǒng)驅(qū)動程序,改變執(zhí)行流程、建立后門等,監(jiān)視、記錄系統(tǒng)信息,也可以更改指令實現(xiàn)自身隱藏?;旌夏P褪乔皟煞N模型的集成,因此VMM Rootkit的攻擊方法與前述相同。
3 Rootkit 檢測與防范
3.1檢測方法。根據(jù)Rootkit作用主體對象的不同將檢測方法分為硬件和軟件兩種檢測。硬件檢測目前尚處于理論研究階段,雖然取得了一些成果,如利用直接內(nèi)存訪問技術和實時掃描技術等,對硬件設備的物理內(nèi)存進行監(jiān)控、分析、判斷,及時發(fā)現(xiàn)異常情況,但具體實踐經(jīng)驗較少,有待進一步發(fā)展。
軟件檢測方法類型較多,常用的有行為檢測、完整性檢測、執(zhí)行時間/路徑檢測和差異檢測。行為檢測根據(jù)Rootkit攻擊行為特征庫的數(shù)據(jù),分析比對當前系統(tǒng)是否有符合特征的行為信息,由比對結(jié)果可知Rootkit攻擊是否發(fā)生。完整性檢測依據(jù)內(nèi)核文件特征庫,檢驗系統(tǒng)文件特征值是否發(fā)生改變,若特征值與存儲值不同,證明存在Rootkit攻擊。執(zhí)行時間/路徑檢測統(tǒng)計分析系統(tǒng)服務的執(zhí)行時間和指令數(shù)差異檢測Rootkit攻擊,但此種檢測方法可能會產(chǎn)生誤報或影響系統(tǒng)性能。差異檢測對不同層次反饋的文件、進程等信息進行全面比較,再根據(jù)檢測出的差異分析該差異是否來源于Rootkit攻擊。
3.2防范方法。對Rootkit攻擊的防御要從用戶、固件、內(nèi)核三個方向開展,由于用戶級Rootkit攻擊是針對系統(tǒng)權(quán)限較低的文件或程序,潛伏性不強,因此現(xiàn)有檢測技術就能完成有效防御。固件級Rootkit防御的核心是使防御代碼獲得優(yōu)先控制權(quán),即在系統(tǒng)啟動運行之前就完成防御代碼的部署與配置,再利用防御代碼阻止攻擊代碼加載。內(nèi)核級Rootkit攻擊危害性最高,檢測防御難度也最大,目前有效的防御方法是將操作系統(tǒng)內(nèi)核部分與外部程序進行隔離,當攻擊代碼試圖通過驅(qū)動或其他方式加載時,安全保護層可以識別這種非授權(quán)行為并進行清除。
4 結(jié)論
Rootkit攻擊是一類特殊的惡意攻擊,檢測難度高,發(fā)展速度快;隨著智能固件與硬件的應用越來越廣泛,Rootkit防御也獲得了更多關注。本文從Rootkit特點著手,對Rootkit攻擊的攻擊模式、掛鉤技術、虛擬化技術進行了詳細介紹,并從不同角度概述了現(xiàn)行的檢測、防范方法。
參考文獻:
[1]張瑜,劉慶中,李濤, 等.Rootkit研究綜述[J].電子科技大學學報,2015,(4):563-578
[2]劉邦明,鄔浙艷,孫黌杰.SSDT掛鉤:基于Windows內(nèi)核的RootKit技術樣本[J].網(wǎng)絡安全技術與應用,2009,(3):62-64.
[3]施江勇,王會梅,鮮明, 等.硬件虛擬化rootkit檢測方法研究綜述[J].計算機應用研究,2014,31(1):1-5,12.