韓妍妍 張曉菲 劉培鶴
Rootkit隱藏技術分析
韓妍妍 張曉菲 劉培鶴
北京電子科技學院,北京100070
目前網絡安全應用的技術有很多,但是能夠不被管理員發(fā)覺而悄無聲息的收集數據的只有Rootkit。隨著人們對Rootkit隱身技術的研究,它在網絡安全中發(fā)揮的影響越來越大。本文分析Rootkit進程隱藏實現思想,給出了Rootkit實現隱藏進程的具體方法,為進一步研究Rootkti相關的木馬病毒以及相應的木馬病毒檢測提供有效的幫助。
網絡安全;Rootkit;隱藏進程;木馬病毒;檢測
Rootkit是在機器上建立的一個遠程接口,該接口允許攻擊者以一種難以察覺的方式(例如隱藏)對系統(tǒng)進行操縱(例如指揮與控制)和收集數據(例如偵查)。Rootkit常見的功能有隱藏文件、隱藏進程、隱藏鏈接、隱藏模塊、作嗅探工具、記錄密碼、擦除日志、打開內核后門等,主要可以通過lkm注射[1]、模塊摘除、攔截中斷(0x80、0x01)、劫持系統(tǒng)調用[2]、運行時補丁、端口反彈等方法來實現。
從某些方面來說Rootkit就是在目標計算機中讓管理員毫無察覺地持久的駐留,并對系統(tǒng)進行操縱,且通過秘密渠道收集信息的程序??偨Y來說,Rootkit的三要素是:隱藏、操縱、收集數據。
通過對Rootkit隱藏實現的剖析,可為做好Rootkit威脅的防護打基礎。
Rootkit主要在系統(tǒng)的內核下運行,通過調用修改過的系統(tǒng)內核函數來進行一些過濾操作,從而達到隱身的目的。Rootkit技術中最典型的應用是進程隱藏。通過進程隱藏可以在保證給定的進程正常運行的前提下,使與自身相關的信息不被進程監(jiān)控軟件記錄下來。殺毒軟件、防火墻等安全軟件就會隱藏重要進程以不受惡意軟件的干擾,從而使系統(tǒng)的安全防護效果達到更好。但是進程隱藏的危險性也是不可否認的,它表明著程序代碼可以在完全不被察覺的情況下悄然運行。在進程隱藏的實現過程中,通過調用PsGetCurrentProcess()函數獲取指向與當前線程相關聯的EPROCESS對象的指針。然后,判斷對象的PID域與想要隱藏的進程的PID是否相同,相同就調整有關指針值,不同就使用ActiveProcessLinks域遍歷EPROCESS對象的雙向鏈表,直到遍歷完該鏈表或者找到目標 PID[7]為止。假如要隱藏已知的EPROCESS對象,就需要更改相關的ActiveProcessLinks域,如圖1所示。
如圖1中所示要把前一個EPROCESS塊的正向鏈接設置成引用下一個塊的正向鏈接,同時把下一個EPROCESS的反向鏈接也設置成指向前一個塊的正向鏈接。目標對象的正向和反向鏈接被設置為向內指向對象自身,這樣做的目的在于當隱藏進程被終止后,操作系統(tǒng)可以使用有效的指針。一般情況下,當進程終止時,操作系統(tǒng)會調整鄰近的EPROCESS對象以反映這種終止。一旦隱藏了進程,它的EPROCESS塊不會有任何鄰居。如果把它的鏈接設為NULL或保持原態(tài),系統(tǒng)可能會藍屏??傊?,把參數傳給無用的內核操作很容易引發(fā)全面的錯誤檢查。
那么從進程列表中被移除的EPROCESS對象又是如何被執(zhí)行呢?當它不再是正式進程列表中的一部分時,它又如何被調度以獲取CPU時間呢?這就在于Windows是在線程粒度級而非進程級搶占調度[4]代碼進行操作執(zhí)行的。從內核調度程序的角度來看,進程僅僅負責提供線程可以在其中執(zhí)行的環(huán)境。例如,如果進程X有兩個可運行線程,進程Y有四個可運行線程,內核調度程序總共可識別六個線程,而不考慮線程具體屬于哪個進程。每個線程分配一段處理器時間,且這些時間片不一定相等(調度算法是基于優(yōu)先級驅動的,因此具有較高優(yōu)先權的線程可以得到更多的處理器時間)。
操作系統(tǒng)中Task Manager和tasklist.exe之類的工具都使用了EPROCESS中的基于進程的鏈接,但是內核調度程序卻使用一種不同的簿記方案,這種方案依賴于一組與其他程序不同的數據結構(很可能是ETHREAD[5]對象中的域),它在不犧牲功能的情況下可以實現隱身。
通過IRQL[6]方法,No-FU[7]中實現隱藏任務的代碼首先鎖定對EPROCESS結構雙向鏈表的訪問。例程如下:
該程序一旦獲得獨占訪問權,就調用modifyTaskList()例程。
Void modifyTaskList(DWORD pid)
上述例程獲取當前的EPROCESS對象,并把它作為遍歷整個EPROCESS對象鏈表的起點開始遍歷操作,直至遇到帶有目標PID的結構才結束遍歷。
如果整個鏈表都已遍歷而沒發(fā)現這個PID,或者如果fuse[8]變量達到了它的閾值(指明無限循環(huán)條件),函數就什么都不做直接返回。如果發(fā)現了目標 PID,則使用modifyTaskListEntry()來調整相應對象與它相鄰 對 象 的 鏈 接。modifyTaskList()和modifyTaskListEntry()[9]這兩個函數都借鑒了一組實用程序和定制宏定義來達成目標。宏并沒有被設定成固定值,而是設置成了全局變量,以便代碼可以更容易地從一個Windows平臺移植到下一個Windows平臺。這其中運用了指針運算與重賦值的知識,然后分離重要的域,并正確計算它們的字節(jié)偏移(因為一個錯誤可能導致藍屏)。
下面用tasklist.exe展示隱藏PID為2864的命令控制臺進程的前后狀態(tài)。最初系統(tǒng)狀態(tài)是:
用Rootkit代碼隱藏進程后,再次執(zhí)行跟上述相同的命令,出現結果如下:
當Rootkit隱藏技術被利用制作成木馬后,在一般情況下,Rootkit木馬使用兩種隱藏技術:一種通過改換系統(tǒng)內部結構來達到使某對象隱身的效果,比如把進程雙向鏈表中的進程對象刪除來使進程隱藏;另一種是變換內核的執(zhí)行路徑,比如掛鉤[10]那些負責枚舉活動進程的內核函數來隱藏某對象。對于被隱藏的Rootkit木馬進程,可以通過讀取線程分派器使用的數據結構來檢測發(fā)現,也可以通過對執(zhí)行路徑進行分析和指令計數器的構造來測定系統(tǒng)內核與DLL中執(zhí)行指令的數量來檢測發(fā)現,還可以通過掛鉤檢測技術的調用來檢測發(fā)現。隱藏進程和檢測進程就像是矛與盾的較量,它們總是在不斷斗爭中發(fā)展變化。一直以來,Rootkit都在盡力毀掉進程在系統(tǒng)中留下的跡象,同時干預進程檢測函數的正常工作,從而使運行中的代碼得到隱藏。但是在系統(tǒng)中運行的進程總是和系統(tǒng)本身有著剪不斷的聯系,進程檢測技術又特別想把這些模糊不清的聯系找出來,以此來檢測出真實的進程列表。
Rootkit技術被看著是互聯網時代信息安全的威脅之一,因為其隱蔽性的特點往往使得一些企業(yè)、政府等單位無可奈何。它的隱遁潛行功能以及與其他惡意軟件相互滲透、相互融合的演化發(fā)展趨勢,已對網絡信息系統(tǒng)造成了極大安全威脅。根據最新的報告,信息泄露已經成為企業(yè)虧損的原因之一。更好地掌握Rootkit所使用的技術,可以找到相應的檢測它的手段,就能夠更好的預防相關的危害發(fā)生。由于Rootkit及其防御技術將隨著應用軟件技術、操作系統(tǒng)技術和底層硬件技術的演化而不斷發(fā)展與更新,所以在做好傳統(tǒng)型Rootkit防護檢測工作的同時,也必須緊跟Rootkit發(fā)展的趨勢,不斷地完善防護措施,才能真正抵御Rootkit技術帶來的威脅。
[1]吳坤鴻,舒輝,董衛(wèi)宇.內核脫鉤技術在檢測Rootkit木馬信息隱藏中的應用[J].計算機工程與設計,2008,29(14):3635-3637.
[2]Solomon D, Russinovich M. Windows Internals[M].4th ed.[S.l.]:Microsoft Press,2005.
[3]中國互聯網絡信息中心.第31次中國互聯網絡發(fā)展狀況統(tǒng)計報告[EB/OL].2013[2013-01],http://http://www.cnnic.cn/hlwfzyj/hlwxzbg/hlwtjbg/201301 / P020130122600399530412.pdf.
[4]潘愛民.Windows內核原理與實現[M].北京:電子工業(yè)出版社,2010.
[5]看雪論壇.http://bbs.pediy.com,2014.
[6]SalimanManap.”Rootkit:Attacker undercover tools”. http://www. niser.org.my/ resources/Rootkit.pdf.
[7]Symantec Corporation. Windows rootkit overview[EB/OL].[2014-12-10].http://www.symantec.com/avcenter/ reference/windows.rootkit.overview.pdf.
[8]Bill Blunden.Rootkit系統(tǒng)灰色地帶的潛伏者.第2版[M].北京: 機械工業(yè)出版社,2013.
[9]段鋼.加密與解密:第3版[M].北京:電子工業(yè)出版社,2008.
[10]潘劍鋒,奚宏生,譚小彬.一種利用程序行為分析的Rootkit異常檢測方法[J].中國科學技術大學學報,2010,40(8):863-869.
[11]任云韜,李毅超,曹躍.基于注冊表Hive文件的惡意程序隱藏檢測方法[J].電子科技大學學報,2007,36(3):621-624.
[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]吾愛破解論壇.http://www.52pojie.cn,2015.
[14]KUSHNER D.The real story of stuxnet[EB/ OL].[2014-12-10].http://spectrum.ieee.org/telecom/security/the-real-story-ofstuxnet.
Analysis Based on Technology of Rootkit Hidden
Han Yanyan Zhang XiaofeiLiu Peihe
Beijing Electronic Science and Technology Institute,Beijing 100070,China
The current internet security technology has many applications,but only rootkit can collects data secretively which cannot be found by administrator.With the exploring of the hidden technology of rootkit,rootkit has an important impact on the field of internet’s security.This paper analyzes the example that how to conceal rootkit’s process,which points out the specific methods to achieve rootkit hidden process,providing effective help for our study to detect Trojan about rootkit.
internet security;rootkit;hidden process;Trojan;detect
TP393.08
A
1672-464X(2016)2-07-05
(責任編輯:鞠 磊)
韓妍妍,女,助理研究員,主要研究方向為可視密碼,密碼學;張曉菲,男,碩士研究生,主要研究方向為網絡安全、逆向分析。