顯示具有 rootkit 標籤的文章。 顯示所有文章
顯示具有 rootkit 標籤的文章。 顯示所有文章

2010年4月25日 星期日

[病毒]Anti-rootkit工具介紹

0 意見

Anti-rootkit工具介紹
文/圖吳俊達.責任編輯/陳啟川

本篇為Rootkit文章的最後一篇,在探討過user mode與kernel mode的rootkit技術後,本次將介紹一些Anti-rootkit的工具,最後再以實例說明的方式,讓讀者在了解rootkit的技術原理後,更能進而加以防範。


在說明了這麼多rootkit技巧之後,您是否也心驚膽跳,懷疑自己的電腦上是否已被人神不知鬼不覺的種入rootkit了?沒關係,現下就為讀者們介紹各個Anti-rootkit的工具。
RootkitBuster
http://www.trendmicro.com/download/rbuster.asp
Trend Micro於2006年底便在官方網站上免費提供給廣大的電腦用戶使用,它具有偵測隱藏檔案、登錄檔、執行程式及驅動程式的能力,並在2.2版中新增偵測隱藏開機磁區的功能。因為在2008年年初,開機磁區 (MBR) rootkit大為肆虐,Trend Micro發現到此一現象,隨即開發新版RookitBuster以解決電腦用戶的困擾。它可偵測到user mode及kernel mode的rootkit,並用Cross-View比較的模式明白告訴使用者,那些資料是隱藏,方便使用者清除的動作。


RookitBuster的使用者介面。


RootkitBuster也提供清除能力。當它掃描到隱藏元件時,將顯示在Scan Results中,使用者從中選擇隱藏的檔案或是登入檔,並按下「Delete Selected Items」的按鍵時,它將自動刪除所選的元件。


將Scan Results中的項目反白選取再按下Delete Selected Items即可刪除。



IceSword
http://pjf.blogcn.com/index.shtml
IceSword是一套來自中國,功能相當齊全的系統監測工具,目前已經最新的版本是1.22版,我們將著重其Anti-rookit的功能來做介紹。在functions中可檢視到隱藏的資料,例如Process、Port及Service,它將以紅色標示做為隱藏資料的標記。


IceSword的UI,紅色代表為隱藏的Process。


從中可看到此執行程式的檔案位址,首先先選到此程式,並按右鍵,便可看到可對此程式做的操作,選擇終止此程式的執行。


選取後按右鍵即可中止該隱藏Process。



Gmer
http://www.gmer.net/index.php
GMER也是一套系統監測工具,除了rootkit偵測功能外,它還有顯示自動啟動的程式、內建CMD及登入檔編輯器。剛啟動GMER時它會先快速掃描系統上是否有隱藏資料,如果有任何可疑程式,它會要求完整掃描。


GMER的UI和IceSword很像,但更為簡潔。


然後在掃描結果上選取process或file即做清除的動作。


一樣按隱藏項目上按右鍵即可刪除或中止。


但是否使用以上rootkit偵測刪除軟體就可免除其威脅呢?其實不盡然,因為rootkit所隱藏的資料不一定是它的本體,只清除那些資料,並不能保證已經除去源頭,所以必須搭配上其他防毒技術,找出真正元凶加以清除,以防其又捲土重來。

由前文可知rootkit的目的在於隱藏資料,避免使用者的發現,更避開防毒軟體的偵測,當使用者或是防毒軟體想要去操作這些資料時,rootkit便回報此資料不存在或是操作失敗;一般沒有Anti-rootkit技術的防毒軟體就會被欺騙,導致找不到已存在的病毒檔。所以目前大多數防毒軟體都具備Anti-rootkit的技術,以突破rootkit的保護層不受其欺騙,直接對被rootkit保護的程式、檔案及登入檔進行操作,清除有害程式對系統造成的傷害,達到全面性的防護。


真實世界的案例Ⅰ-FuTo
看完了上述所介紹rootkit在kernel、user mode用到的各種技巧,接下來讓我們看一個實際的例子─FuTo。許多rootkit因為執行在系統核心,所以常被惡意軟體用來隱藏自己不被防毒軟體偵測到。FuTo是個相當有名的rootkit,它使用了出色的技術來達到隱藏Process、Driver以及修改Process的執行權限。下圖是FuTo執行的功能選項。可以注意到其中的msdirectx.sys即是FuTo的Driver,許多rootkit會將Driver檔案名稱取成類似正常的Driver名稱。


FuTo的Driver名稱容易讓人誤會為正常的Driver。



FuTo的行為分析

FuTo以DKOM技術來隱藏Process以及Driver,也就是說藉由修改Windows核心的資料架構隱藏資料。在隱藏Process這部分,FuTo主要修改了三個地方:Active Process List、Csrss.exe以及PspCidTable。

Windows核心使用Active Process List(可將其想像成一個將系統上所有Process串起來的linked-list)來儲存系統中的Process資訊(少數系統Process不在其中)。FuTo依序追蹤此List,如果找到要隱藏的Process,便將前後兩個鄰近的Entry修改略過要隱藏的Process。Win32 API提供的Process列舉便是追蹤此List,所以修改Active Process List即可讓Win32 API列舉不到被隱藏的Process。

Csrss.exe(Windows上一個極為重要的Process,在此不多行描述,有興趣的讀者請自行參閱MSDN)內含一個表格,儲存幾乎所有系統內的Process資訊,FuTo會試著找到此表格並且將要隱藏的Process從此表格移除,以達到隱藏的目的。

PspCidTable是Windows核心裡的一個表格,它儲存著幾乎所有Process和Thread的指標。FuTo會移除掉在此表格裡面跟要隱藏的Process資料。

FuTo在隱藏Driver的方法是修改Windows核心中的Module Loaded List,這個List跟Active Process List是同一種類的List。FuTo利用修改Active Process List的方法修改此List,以達到隱藏Driver的目的。


FuTo的行為分析

現下我們利用FuTo試著來隱藏指定的Process,看看是否真能讓該Process消失在工作管理員的Process清單


被FuTo隱藏起來的Notepad.exe,PID為1964。


一般Malware不會有GUI,但為了方便展示,我們使用Notepad.exe來展示FuTo隱藏Process的功能。上圖是利用FuTo隱藏Notepad.exe之後的結果,可發現下工作管理員已經看不到PID為1964的Notepad.exe。


RootkitBuster掃描到有隱藏Porcess,注意PID被FuTo改為0。


接下來使用TrendMicro的Antirootkit工具RootkitBuster來偵測,如圖9,可得知該Process已被RootkitBuster偵測到,這裡可以注意到該Process的PID已經被FuTo改成0了。


利用FuTo隱藏它自己的driver。


接下來利用FuTo將msdirectx.sys隱藏,如圖10。接著再使用RootkitBuster偵測隱藏的Driver,在圖11中可發現被隱藏的Driver。


RootkitBuster依然能找到被隱藏的driver。



Cross-View比對偵側

RootkitBuster如何能偵測到被隱藏的Process或Driver呢,不是都被FuTo給抹掉痕跡了嗎?事實上,作業系統裡這種記載系統上所有Process、Driver的資料架構有許多個,FuTo只改掉了其中的一部份。因此,只要拿FuTo更改部份所得到的Process或Driver清單,和從其它系統核心得到的Process或Driver清單兩相比較,若有出入,必然是因為系統上有rootkit在搞鬼,而這種方法被稱之為Cross-View。


真實世界的案例Ⅱ-MBR rootkit
在2005年有兩位資安研究員Derek Soeder和Ryan Permeh發現了一個嚴重的安全漏洞-Windows並沒有保護好MBR(Master Boot Record,硬碟上第一個磁區,其內包含了電腦在開機過程中會執行到的程式碼,是一個十分重要的地方),以致惡意程式可以在user mode對MBR任意進行修改。事實上修改MBR這個技巧在早期的DOS時代就已常被利用,但這次兩位研究者的發現則是第一次正式公開證實Windows NT(包含Vista)環境下依然有此漏洞。


MBR在開機程序中的運作。

在進一步了解MBR rootkit之前,我們得先對MBR以及它在開機過程中的角色有個基礎認知。一般正常系統開機的流程如下所述︰

1. 按下電源,電腦開機,BIOS進行開機自我測試(Power-on self test)。
2. BIOS依據開機裝置順序,讀入該裝置位在MBR內的程式碼(Bootloader),將控制權交給它。
3. Bootloader將開機分割區 (例如C槽) 的第一個磁區讀入記憶體,將控制權交給它(kernel loader)。
4. Kernel loader讀入作業系統的核心(kernel),並將控制權交給它來完成開機。



正常的開機程式。


由以上?述我們可以得知,MBR是開機流程中最早被執行的(甚至比OS更早)。因此,只要惡意程式篡改了MBR中的code,便可以對系統得到最大的控制權。


MBR rootkit行為分析

接下來,我們以MBR rootkit的sample實際感染一台系統,來觀察MBR rootkit到底有些什麼侵害系統的行為。以下將MBR rootkit分幾個構成來分析:


MBR rootkit installer

當使用者在不小心執行了包含了MBR rootkit的惡意程式之後,該程式就會修改MBR的內容,讓電腦在重開機後能自動讀入MBR rootkit,由圖13可以清楚看到惡意程式正對MBR內容做篡改。


透過監視installer的行為發現到它對MBR的更動 (Offset 0)。



被修改的MBR

模式,更改BIOS中斷0x13(對於硬碟存取的相關功能)處理常式,藉此來影響Windows NT家族的kernel loader-NTLDR,控制它讀取剛剛installer預先寫在系統硬碟上的幾個磁區(裡面放的是一些惡意程式碼),並對Windows的核心做inline patching,載入負責後門程式部份的核心驅動程式。一旦成功執行後,MBR的內容就不再是原本單純bootloader。被修改的MBR會以前面所述IDT hooking


MBR rootkit的自我保護

除了更改Windows核心,IDT hooking等等,MBR rootkit更用了其它的模式來保護自己不被發現。誠如上面所述,MBR rootkit的第一步就是修改受害者電腦上的MBR,因此,勢必要想辦法隱瞞防毒軟體的偵測,就是不能讓防毒軟體知道自己修改過MBR。它所使用的方法就是dispatch routine hook。藉由將最底層的disk.sys(直接負責所有對硬碟的存取)驅動程式「讀」與「寫」的routine給替換掉,便可確保自己不會被發現。當防毒軟體試著要讀取MBR時,便傳回MBR修改前的內容(installer會事先藏在硬碟上的某幾個磁區);而掉包的「寫入」routine,則可以保護MBR不再被其他人更改。


Disk.sys的dispatch routine已被MBR rootkit更改。



MBR rootkit的偵測

經過前面的描述之後,我們可以知道MBR rootkit將它的魔手深入了Windows的核心,因此一般防毒軟體無法偵測到它,任何對MBR的存取都會經過它的修改。但這不代表MBR rootkit就可以高枕無憂。透過其它Windows核心驅動程式的能力(例如: classpnp.sys),我們便可以直接讀取MBR的內容,並將它與直接讀取時的內容做個比較;若兩者不同,便可得知其中必定是有MBR rootkit在作祟。


MBR rootkit的偵測流程



MBR rootkit小結

對於MBR rootkit的技巧手法與偵測方法,至此我們已有個大致了解。事實上IBM PC第一支被正式記載的病毒名叫Brain,亦是採用hook IDT 0x13的方法感染MBR做破壞,而MBR之所以那麼吸引病毒作者,就是因為它具備了下列優點:

1. MBR code對系統具有完全的控制,它比任何一款防毒軟體都還早被載入RAM,甚至比作業系統更早,因為它是開機流程的一部份。
2. MBR rootkit不需要檔案系統,它直接對硬碟的磁區做存取,減少被偵測到的機率。
3. MBR rootkit不需要更改系統的機碼(Registry)來達到自動重啟(Survive after reboot)的效果,因為它是直接被BIOS載入RAM。


rootkit的發展趨勢
隨著技術的發展,rootkit具有如下一些發展趨勢︰
1. 利用硬體來隱藏rootkit︰例如已有rootkit研究者提出基於CPU本身的系統管理模式(System Management Mode, SSM)實現rootkit隱藏行為、基於顯示卡和網路卡來隱藏的rootkit程式等,以進駐到作業系統更深層次的位置或者利用現有檢測技術的盲點進行隱藏。

2. 目標型隱藏︰ rootkit將針對特定的rootkit檢測程式進行特定的處理來實現隱藏的目的。這類rootkit通常將會識別特定rootkit檢測程式,並利用檢測程式實現上的漏洞來達到隱藏目的。



【原文刊載於RUN!PC雜誌:2009年2月號】

2010年3月26日 星期五

[知識]惡意程式的隱形斗蓬-rootkit

0 意見

駭客七號
惡意程式的隱形斗蓬-rootkit
文/圖 吳俊達.責任編輯/陳啟川

「山啊BOT、土地BOT,現在連海阿要BOT」,這是電影「海角七號」裡的對話,意思指地方建設什麼都BOT出去了,利益都被財團瓜分,只剩下一些檢垃圾的差事留下來給地方的一段對話。有時聯想在資安的世界裡不也到處充滿著「BOT」,個人機密資料都讓駭客偷走,而剩下一堆惡意程式在用戶端的電腦中,以下將就入侵攻擊常見的rootkit技術為讀者做一詳盡的介紹。


看不見,可是它依舊存在──這不是在形容七月半的阿飄,而是在說一項你我電腦上隨時都有可能發生的事,rootkit。
2005年包括Celine Dion (席琳狄翁)在內的19張SONY發行的CD因為含有防盜版技術,而意外地造成「買 CD 唱片,送駭客隱形斗蓬」的安全意外。這個始作俑者就是BREPLIBOT特洛伊木馬程式家族,其利用Sony唱片防拷軟體採用的Rootkit工具留下的後門來作自我隱藏,使得病毒不易被追蹤。也使得有些公司頒出禁令:上班時間不準聽CD,免得公司被駭客入侵。
廣義來說,rootkit其實是一項技術,用來隱藏其他行程、檔案或者網路使用者。至於為什麼要隱藏這些玩意,最初的原因其實相當簡單,各位可以想像,如果有天你進行檔案備份,把一些重要的系統資訊存在備份目錄裡,你勢必不想因為哪天手賤就把這些檔案一併刪除了。因此,rootkit出於善意的用途,便能適當的隱藏你要保護的檔案。
然而駭客也可以藉由使用rootkit,隱藏他們在你電腦上的一舉一動,例如隱藏他們產生的惡意行程,進而竊取你電腦的資訊而不被發現;隱藏他們產生的惡意檔案,進而避開防毒軟體掃描而不會被刪除。這種種用途,都說明了rootkit這柄雙面刃給予駭客們的便利性,讓許多Bot蠕蟲、間諜軟體都利用這套工具來打造隱形斗篷。
rootkit的歷史
早在1990年的時候,rootkit的理念就已經被提出來了,但一直到1996年,第一隻Linux rootkit才正式出現下世人面前。當時那只rootkit只是簡單的替換掉Linux上頭的ps,login,跟netstat等執行檔。這些執行檔的功能,多半是用來顯示目前系統中有哪些行程正在執行,或者哪些網路行為正在運作。而這只Linux rootkit替換這些系統執行檔後,就會將它所指定的惡意行程隱藏起來,不被使用者發現。儘管這只rootkit很快就被人們利用檔案驗証碼,檢查該執行檔是否被替換過而解決了,但在這以後,越來越多的rootkit技術以及實作迅速出現。以最為人熟知的作業系統Windows來說,從2002年第一只在Windows 上出現的rootkit「ierk8243.sys」面世以來,每年都有數以百計的rootkit出現。根據2006年微軟惡意程式移除工具提出的報告,570萬台電腦上,就有14%的電腦被安裝過rootkit。
惡名昭彰的Sony事件
當時Sony BMG在他們發行的音樂光碟裡,加入了rootkit的技術。最初的目的只是為了保護他們的音樂不被盜拷,但由於Sony BMG的工程師們小瞧了使用rootkit會帶來的影響,他們把所有名稱前行是「$sys$」的檔案,都進行了隱藏。換句話說,如果你把電腦上的notepad.exe改名為$sys$notepad.exe,那麼在這只rootkit被移除之前,你的notepad將會暫時消失。
這件事曝光之後,不但很快就被駭客們用來隱藏他們的惡意檔案,Sony BMG更因此承受了龐大的商譽損失。只不過,用「從那裡跌倒,就從那裡再跌倒」這句話來形容Sony,恐怕是在適合不過。
2007年8月,Sony在他們發行的Sony’s MicroVault USB drives裡頭,又用上了rootkit的技術。這次主要是因為Sony這款USB提供了指紋辨識能力,為了保護指紋辨識的內容資料,他們將這些資料全放在同一個目錄裡,並將這個目錄進行了隱藏,可惜,駭客們見到了這樣一個大漏洞,哪還有不鑽的道理,於是許多惡意軟體就將他們的檔案放置在這個隱藏目錄,從而躲避過了防毒軟體的掃描。
綜合上面的敘述我們可以得知,rootkit的技術跟觀念已逐漸成為下一波駭客們關注的重點。現下,就讓我們更深一層來探討rootkit的技術以及應用。
rootkit使用的技術
有念過計算機組織的讀者必定知道,CPU在執行指令時有著不同的特權等級 (privilege level)。現代的作業系統也採用了這個理念,在執行較重要的指令 (例如作業系統核心) 或是存取較隱密關鍵的資料,都必須在CPU為高特權等級 (kernel mode) 時才能通行;反之,若是一般的使用者程式及資料則沒此限制 (user mode),以下將就分別對rootkit在user mode和kernel mode使用的技巧一一介紹。
user mode rootkit
user mode rootkit在實作技術上難度不高,不具備系統核心開發理念的程式設計者都可以輕易的達成。user mode rootkit的流程,基本上都是在正常程式呼叫某函式時,先將執行權轉移到rootkit本身,rootkit再去呼叫真正的函式取得執行結果,並對其結果做更改或是取得權限,以達到其目的。
目前有兩種熱門方法能在user mode將程式呼叫時的執行權轉移,一種是IAT (Import Address Table) hook,另一種是Inline Function Patch。

Import Address Table Hooking (IAT Hooking)

當一個應用程式使用Win32 API時,會需要知道這些API的address,很多應用程式把這些address紀錄在IAT內。當這些應用程式需要使用Win32 API時就去IAT內查詢這些Win32 API的address然後再執行。

IAT Hooking流程圖。


IAT Hooking很容易實作,OS也時常使用這樣的模式,但其缺點是容易被偵測到。不過,雖然容易偵測,卻不容易判斷是否真的為惡意軟體利用rootkit進行IAT Hook。此外若應用程式內部使用Win32 API時是使用late binding的話 (使用 LoadLibrary & GetProcAddress),此時IAT Hooking也會失效。

Inline Function Patch

這個模式比IAT Hooking應用更廣泛,不會被late binding影響,因為它是直接去修改目標程式在RAM中的byte code。因此不管應用程式怎么取得Win32 API的address,Inline Function Patch的機制始終有效。下圖2為Inline Function Patch簡單的示意圖。
Inline Function Patch流程圖。


Caller function呼叫被Patch的Function (FindFirstFile)。因Function的第一個instruction被rootkit替換成jmp 0x2c3d,所以程式接著執行到0x2c3d。Address 0x2c3d就是rootkit想要使用者執行的程式碼。待rootkit執行完後再回到原先的Function繼續執行下去。最後由Function將rootkit篩選過的結果回傳給Caller Function。
DLL植入 (DLL injection)
至此,聰明的讀者一定發現到了,user mode rootkit最主要的精神便是透過修改正常Process呼叫API的順序,將自己的惡意程式碼插入到呼叫順序的中間,去影響正常Process的運作或更改API的結果;或是直接給函式打「patch」以得到類似的結果。但事實上如何對其它Process進行修改?
若你曾在Windows下開發過程式,必然知道所有的Process都有自己的memory address space。例如0x12345在Process A中可能是存放字串"Foo",但同樣的位址在Process B裡卻是字串"Bar",此乃因為Windows的虛擬記憶體 (Virtual memory) 機制,讓每個Process都認為自己是系統上唯一的一個Process。所以Process之間是兩條平行線,沒有交集 (不考慮Process溝通機制及系統核心部份)
所以若我們想系統上其他Process做修改,一定得進入它們的memory address space。一般利用的手法便是DLL injection,而幾個常用的技巧介紹如下︰

AppInit_DLLs registry

Windows作業系統使用登錄(Registry)來做記錄系統設定及組態,在登錄中有一個特別的機碼(Key)可以讓使用者輕易的達到DLL植入。這個機碼的路徑是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows,在此機碼下有一特別的值(Value)名稱叫做AppInit_DLLs,它的資料型態為一字串值(REG_SZ),系統預設值是長度為零的空字串。使用者可以指定任意DLL的路徑於此機碼的值內,舉例來說︰C:\Windows\System32\MyDll.dll。你一定會很好奇,當此機碼及值被設定之後,Windows作業系統會有什麼改變呢?
當此機碼及值被設定之後,只要有任何的Process載入User32.dll,首先User32.dll會被映射到該Process的記憶體空間裡,接著User32.dll會收到DLL_PROCESS_ATTACH的系統通知,此時User32.dll會去讀取本節前面所提到的機碼及值,並且呼叫LoadLibrary系統函式來一並載入指定的DLL,此時DLL植入的目的也就達到了。用此方法來達到DLL植入是很容易的一件事,但這種方法也有一些缺點。
1. PInit_DLLs值被設定之後,之後載入User32.dll的Process才會被DLL植入,也就是說,既有已執行的Process並不會受影響。同樣的,若已經被DLL植入的Process,就算APPInit_DLLs值被刪除,也不會受到影響。
2. 此種方法只能用來植入使用User32.dll的Process,所有的圖形化使用者介面 (GUI) 程式都會使用到User32.dll,但是console程式就不一定會使用到User32.dll。
系統中通常有多個Process存在,但用此種方法無法指定DLL植入的對象。所以用這種模式做DLL植入要很小心,因為會影響到所有的圖形化使用者介面程式。

indowsHookEx

Windows中的程式是透過資訊(message)來互相溝通的,例如鍵盤或滑鼠的事件,或是視窗間主動傳遞資訊。而Windows本身亦提供了一個正式的方法讓程式設定自己的Hook,以下程式1是SetWindowsHookEx的函式宣告︰

可以看到此函式有四個參數,第一個參數是指定Hook的類別,例如,若指定為WH_KEYBOARD,代表想監聽鍵盤的message。
當idHook所指定的事件發生時,則第二個參數lpfn所指向的函式將會被呼叫,若dwThreadId為0或是自己本身以外的Process,則lpfn必須指向一個DLL所匯出 (export) 的某個函式。
第三個參數為包含lpfn的DLL handle,若dwThreadId為自己本身Process所包含的Thread,則此參數必須為NULL。
第四個參數可指定任一Thread (Thread) 的識別(ID),則Hook只會作用在該Thread上,若其值為0,代表Hook會作用系統中所有Thread上。 
以下程式2是一段使用SetWindowsHookEx的範例程式︰

在此時DLL植入的目的也就達成了。使用SetWindowsHookEx有幾個優點︰
1. 可以指定要hook的Thread。

2. 可以呼叫系統函式UnhookWindowsHookEx將hook移除。
3. 在自訂的hook函式中(也就是範例的SysMessageProc),可以用CallNextHookEx函式將執行權交給下一個設定hook的函式。

CreateRemoteThread

Windows有一個函式可以讓某一Process在本身以外的Process中啟始一條Thread,這個函式叫做CreateRemoteThread。以下程式3是它的函式宣告︰


這個函式看起來參數很多,但只有幾個是比較重要的,若讀者有興趣,可參閱MSDN得到完整的資訊。第一個參數hProcess是由OpenProcess或是CreateProcess所得到,其可以指定要在那一個Process啟始新的Thread。第四個參數lpStartAddress指定了要被啟始Thread的起始函式位址,此函式必須存在於hProcess所指定的Process中。第五個參數則是當新Thread開始lpStartAddress函式時,會一並傳入的參數。
若A Process要用CreateRemoteThread對B執行序達成DLL植入的目的,則要利用B執行序當中Loadlibrary函式來載入指定的DLL,詳細的範例程式如下程式4︰


此時DLL植入的目的已達到。
user mode rootkit小結
介紹到這裡,讀者應已對user mode rootkit使用的技巧有初步了解 。總結一下,惡意程式先使用DLL injection技巧 (AppInit_DLL registry、SetWindowsHookEx函式,及CreateRemoteThread函式),將自己的DLL植入到別的Process,再利用IAT hooking或Inline Function Path的模式,影響正常Process執行的順序,來達到目的。要實作user mode rootkit的技術門檻不高,所需撰寫的程式碼並不會很多。雖然user mode rootkit簡單好作,但它也有先天上致命的缺陷,那就是容易被偵測出來,市面上大多數的Anti-rootkit軟體都具有核心驅動程式 (Kernel Driver),可以輕易的偵測出user mode rootkit的存在。而下期我們將就kernel mode使用的技巧繼續介紹。



【原文刊載於RUN!PC雜誌:2008年11月號】

原文網址:http://www.runpc.com.tw/content/main_content.aspx?mgo=178&fid=G03