RootkitRevealer 是什麼:如何運作、使用方法以及 Rootkit 的跡象

最後更新: 22月2025
  • RootkitRevealer 會偵測 Windows API 和原始資料之間的差異以發現隱藏的問題。
  • 解釋結果:NTFS 元資料、登錄機碼和檔案系統差異類型。
  • 使用 PsExec 的 -a -c -m -r 和遠端執行選項;當系統空閒時,它需要最少的誤報。
  • 預防和回應:安全啟動/TPM、離線掃描、反 rootkit 工具和受控恢復。

Windows 中的 Rootkit 偵測器

RootkitRevealer 是每個 Windows 專業人士都應該了解的傳奇實用程式之一;它由 Sysinternals 團隊創建,由 Mark Russinovich 領導,雖然它出現於幾年前,但它仍然是了解如何檢測系統顯示的內容與磁碟上實際內容之間由 rootkit 引起的差異的參考。

與其他掃描器不同,它不會尋找特徵碼或模式:它將 Windows API 的高級視圖與磁碟和註冊表的原始底層讀取結果進行比較。這種看似簡單的原理可以揭示惡意軟體何時試圖透過操縱系統呼叫來隱藏檔案、鍵或值。

什麼是 RootkitRevealer?它適用於哪些系統?

這是一個用於檢測使用者模式和核心模式下rootkit跡象的進階工具。它最初是為Windows XP和Windows Server 2003(32位元)開發的,通常被列為免費、英文版,大小約為231 KiB;當時許多清單也顯示它與Windows NT/2000/XP/Vista相容。

隨著時間的推移,它的純命令列版本被淘汰了,因為一些惡意軟體作者開始監視可執行檔的名稱;為了避免這種情況,該程式以服務的形式從其自身隨機命名的副本啟動,這使得透過名稱進行檢測更加困難,也使得提供100% 的控制台介面變得更加複雜。

什麼是rootkit?關鍵概念

rootkit一詞指的是惡意軟體(病毒、木馬、間諜軟體等)能夠躲避使用者和安全工具偵測的技術和機制。 rootkit可分為幾種類型:持久性(重啟後仍然存在)、記憶體駐留型(重新啟動後消失)、使用者模式型和核心模式型,以及其他一些現代變體。

使用者模式 rootkit 可以攔截 FindFirstFile/FindNextFile 等函數或系統自帶的枚舉器,從而過濾掉可能暴露其修改過的檔案、進程或註冊表項的條目。這使得資源管理器、命令提示字元或登錄編輯程式無法看到實際存在的內容。

核心模式 rootkit 的功能更進一步:除了攔截原生 API 之外,它們還可以直接操縱核心結構,例如從活動進程清單中刪除自己的進程,使其不會出現在任務管理器或進程資源管理器中,即使它正在運行。

開機載入程式有多種類型,包括混合型(部分基於用戶,部分基於核心)、韌體(BIOS/UEFI 和其他元件)、開機或開機套件(MBR/UEFI)、虛擬(將實際作業系統置於虛擬機器)以及基於記憶體的(非持久性)開機載入程式。後者尤其難以清除,而韌體和引導程式即使在全新重裝作業系統後仍然保留。

RootkitRevealer 的工作原理

RKR比較了兩種快照:Windows API的高階檢視和對磁碟區和登錄子樹檔案(登錄機碼)的原始、底層讀取。如果rootkit篡改了高階呼叫以隱藏某些內容,這種篡改就會暴露出來,因為磁碟上和註冊表中的內容與API所聲明的內容不符,從而產生可診斷的差異。

理論上,rootkit 還可以透過攔截 RootkitRevealer 的原始讀取操作並動態重寫資料來躲避其偵測。要做到這一點,它需要精通 NTFS、FAT 和註冊表格式,並且能夠在不造成數據不一致或明顯副作用的情況下修改數據結構——這是一項極其複雜的技術壯舉,鮮有實際案例。即便如此,也不存在萬無一失的「通用偵測器」:即使從外部環境啟動(例如,使用最佳的 Linux 發行版),也可能被特別複雜且持久的惡意程式所破壞。實際上,最可靠的方法是將線上分析與在可信任環境中進行的離線驗證相結合。

  Windows 10 擴充支援:ESU 指南、要求和激活

要求、良好實踐和執行

要執行此掃描,帳戶需要「備份檔案和目錄」、「載入驅動程式」和「磁碟區維護」權限(這些權限在 Windows XP 及更高版本中預設授予管理員)。為盡量減少誤報,建議在系統處於靜止狀態且未開啟任何應用程式的情況下執行掃描。

手動執行掃描時,只需按下掃描按鈕。掃描過程中,程式會提供進度更新並列出任何差異。有兩個相關選項:「隱藏 NTFS 元資料檔案」(預設為啟用,以避免顯示 NTFS 隱藏的標準元資料)和「掃描日誌」(預設為啟用;取消選取將跳過掃描Windows 註冊表)。

對於自動化,它支援允許您無需幹預即可啟動、登入和退出的參數: rootkitrevealer outputfile]。 選項 -a 自動開始和結束; -c 以 CSV 格式輸出結果; -m 顯示 NTFS 元資料;以及 -r 禁用註冊表掃描。輸出檔案必須位於 可存取的本地捲.

使用 PsExec 可以實現遠端執行。例如: psexec \\remote -c rootkitrevealer.exe -a c:\windows\system32\rootkit.log。 用 -c,不顯示進度,差異以 CSV 格式列印,從而更容易匯入 在資料庫或腳本中.

結果解釋和典型差異

「隱藏於 Windows API 之外」的錯誤是 rootkit 隱藏項目時最常見的問題。如果您尚未啟用 NTFS 元資料顯示,則會看到這些差異,因為 NTFS 會將其內部檔案(例如$MFT 或 $Secure )對 API 隱藏。某些防毒程式也會將資料儲存在其他資料流中並將其隱藏,導致類似的錯誤。

以下是 NTFS(Windows Server 2003)中定義的一些標準元資料:$AttrDef、$BadClus、$BadClus:$Bad、$BitMap、$Boot、$LogFile、$Mft、$MftMirr、$Secure、$UpCase、$Volume、 $Extend、$Extend\$Reparse、$Extend\$ObjId、$Extend\$UsnJrnl、$Extend\$UsnJrnl:$Max、$Extend\$Quota。

RKR關聯檔案系統中的三個來源:Windows API、主檔案表(MFT)和磁碟上的目錄索引。可能會出現諸如「在API中可見但在索引或MFT中不可見」、「在MFT中可見但在API中不可見」等組合,尤其是在分析過程中建立或刪除檔案時,會產生暫時的不一致視窗。

掃描過程中建立的範例: C:\newfile.txt,大小為 8 位元組,並顯示「在 API 中可見,但在索引或 MFT 中不可見」。這些情況並不一定指向 rootkit,而是指向 並發更改 在接受檢查時。

如果出現「存取被拒絕」提示,則說明出了問題:RootkitRevealer 使用機制來存取任何檔案、目錄或金鑰,因此在正常運作條件下不應該出現此訊息。

註冊表中存在一些值得關注的差異:「Windows API 長度與原始資料不一致」(可能是試圖隱藏實際內容)、「類型不匹配」(例如,聲明為 REG_SZ,但實際上應為 REG_BINARY)、「鍵名包含嵌入的 NULL 值」(一種利用以 NULL 結尾的字串和包含計數的字串之間差異的已知技術)。對於最後一種情況,Sysinternals 的 RegDelNull工具可以幫助清理包含嵌入 NULL 值的鍵。

如果掃描過程中值發生變化,則可能會發生「資料不符」的情況(例如,SQL Server 正常運行時間 HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\RECOVERYMANAGER\MSSQLServer\uptime_time_utc)。您必須驗證該值屬於 合法組件 即時更新數據。

HackerDefender rootkit 就是一個典型的例子:它的服務和驅動程式對 Windows API 來說是不可見的,但在對註冊表單元的原始讀取中卻存在;它的檔案也是如此,直接分析檔案系統確實可以在磁碟上偵測到它們。

取證環境中 rootkitrevealer.exe 的常見錯誤與問題

有些取證工具包(例如 WinTaylor)會列出與rootkitrevealer.exe相關的典型錯誤,例如:「不是有效的 Win32 應用程式」、「未找到」、「應用程式錯誤」或「啟動問題」。這些訊息通常發生在系統安裝、啟動或關閉期間,或因與其他駐留應用程式衝突而導致。

最常見的原因包括檔案損壞或遺失、登錄項目無效、惡意軟體感染、卸載不完整或與其他軟體衝突。原因可能是註冊表項損壞、被其他工具意外刪除、下載失敗或先前的感染篡改了二進位檔案。

  如何最佳化 Windows 11 系統以解決電腦運作緩慢的問題

出於庫存方面的考慮,一些清單記錄了可執行檔的大小約為 334.720 字節,並且 雜湊值,例如 SHA-1 和 MD5 (例如 SHA-1 d39e8a3fe92adc7d7fbc5293edf8a7b965484a59,MD5 ee738fe9bcdd605821002cec8c7206db) 和 CRC32 98b1af0b;他們也提到 容器應用中的 2.1 版本 和「取證工具包/作業系統」類別。

Rootkit 偵測與回應方法

檢測rootkit並非易事。除了特定的工具外,還需要結合多種技術來識別可疑模組,例如對已知威脅進行特徵分析、冷比較結構、搜尋記憶體中的鉤子和篡改,以及審查崩潰後的記憶體轉儲檔案。此外,通常也會依賴入侵防禦系統(IPS)來保護網路並減少感染途徑。

專用工具包括 GMER(用於偵測隱藏進程和核心篡改)、Kaspersky TDSSKiller(特別用於偵測引導程式和核心 rootkit)、Malwarebytes Anti-Rootkit、Microsoft Defender Offline(用於在 Windows 啟動前進行掃描)以及 RogueKiller。從可信任的啟動U 碟或在安全模式下執行這些工具可以減少攻擊面。

對於啟動或韌體威脅,建議使用救援媒體,如卡巴斯基救援磁碟,恢復 MBR bootrec /fixmbr 在適當的情況下,在嚴重的情況下,將 BIOS/UEFI 更新/刷新到製造商提供的乾淨版本,以消除 低級持久性.

使用 Sysinternals 進行監控非常寶貴:進程監視器 (ProcMon) 用於監控進程和檔案活動,Autoruns 用於檢查啟動時載入的程序,RootkitRevealer用於檢測高低階的差異。 Wazuh等 SIEM 平台以及企業環境中的遙測技術可以發現意外的網路行為或完整性變更。

如果確認感染,合理的步驟是:斷開機器與網路的連接,從外部環境進行掃描,評估啟動/韌體完整性,如果無法保證,則備份數據,徹底清除磁碟(使用 DBAN 等工具),然後從已驗證的媒體重新安裝,最後啟用安全啟動和 TPM等措施。

預防:合理防範rootkit

預防是關鍵。保持系統更新,為第三方軟體打補丁,避免使用來自可疑來源的可執行文件,不要使用破解程式或註冊機:它們是打包rootkit投放器和載入器的常用途徑。

停用 USB 自動運作功能,開啟外部磁碟機前先進行掃描;在企業環境中,根據需要限製或封鎖連接埠並啟用防火牆。使用非特權使用者帳戶,遵循最小權限原則,並對關鍵變更要求管理員憑證,從而降低靜默升級的可能性。

在相容的硬體上,從 UEFI 啟用安全啟動和 TPM,以保護啟動鍊和金鑰密封。定期進行離線或不可變更的備份,並使用快照/還原點來縮短出現問題時的復原時間。

Rootkit 的安裝方式:植入程式、載入程式和載體

攻擊者通常以組合威脅的形式傳播rootkit:一個「投放器」負責投放軟體包,一個「載入器」則利用漏洞(例如緩衝區溢位)將植入程式植入到不應植入的位置。這些攻擊通常偽裝成釣魚郵件、虛假安裝程式或詐騙更新。

經典的傳播途徑包括劫持即時通訊用戶端來傳播惡意連結、在下載入口網站上植入木馬程式、利用其他惡意軟體作為載體,以及將惡意連結嵌入富文本文件(例如某些 PDF 文件)中,當這些文件開啟時,會自動觸發投放器。

攻擊跡象和偵測線索

rootkit 的目標是不被偵測到。即便如此,您仍可能會觀察到未經使用者乾預的設定變更、由於隱藏流量而導致的異常網路中斷、未知進程、無法關閉的服務以及無故停用的安全工具。

另一個線索是,使用不同路徑(API 與原始讀取)列出檔案、進程或登錄項目的實用程式之間存在資訊衝突。 RootkitRevealer 等方法正是在此發揮作用:同一個物件在磁碟上“存在”但在 API 中“不存在”,這表明它可能已被篡改。

  如何在 Windows 和其他系統上檢查筆記型電腦的電池健康狀況

主要的rootkit類型

使用者模式:這類模式在進程和庫層級運作。它們更穩定,也相對更容易被檢測到,但它們可能會隱藏檔案、進程和金鑰。 HackerDefender 就是一個經典的例子。

內核模式:這類病毒潛伏在內核中,擁有完全控制權且極難清除;如果設計不當,它們往往會導致系統不穩定。此類病毒的例子包括:TDL/Alureon 的演變過程。

混合型:結合使用者元件和核心元件,以平衡隱蔽性和穩定性,由於其實用的多功能性而受到攻擊者的歡迎。

韌體/啟動套件:這類程式會感染 BIOS/UEFI 或開機磁區(MBR/UEFI),使其在作業系統啟動前載入。安全啟動等技術已使許多傳統的啟動套件過時,但現代的UEFI 植入程序已經出現。

虛擬的和基於記憶體的: VMBR 在作業系統下載入虛擬機器管理程式並將其虛擬化;基於記憶體的 VMBR 僅駐留在 RAM 中,並在重新啟動時消失,對於短暫的操作非常有用。

範例和突出顯示的時間順序

第一款用於 SunOS 的 rootkit 開發於 20 世紀 90 年代;1999 年,Greg Hoglund 描述了 NTRootkit(Windows,核心模式),2003 年HackerDefender(Windows 2000/XP,用戶模式)出現,這引發了與 RootkitRevealer 等工具的「拉鋸戰」。

2004 年,所謂的「希臘水門事件」利用 rootkit 入侵了 GSM 網路上的 100 多部手機;2005 年,人們發現索尼 BMG在一些 CD 中加入了反盜版 rootkit,引發了一場巨大的安全爭議。

自 2008 年以來,TDL(TDL-1 至 TDL-4)等開機工具包持續發展;2009 年,「馬基雅維利」證明 macOS(當時的 Mac OS X)也未能倖免;2010 年,Stuxnet利用 rootkit 元件破壞了伊朗的工業系統。

2012 年,出現了大型模組化惡意軟體Flame ;2018 年, LoJax成為第一個在野外偵測到的 UEFI rootkit;2019 年,Scranos透過大規模入侵瀏覽器,將憑證竊取和隱藏的收入生成與點擊農場結合。

資源和推薦閱讀

Mark Russinovich 對索尼案例的調查以及他在 Windows IT Pro 上發表的文章「揭開 Rootkit 的面紗」有助於理解 Rootkit 的現象和背後的技術;Greg Hoglund 和 Jamie Butler 合著的《Rootkit:顛覆 Windows 核心》一書是對該主題最深入的論述。

Phrack Archive、Peter Szor 的《電腦病毒研究與防禦的藝術》、Ed Skoudis 和 Lenny Zeltser 的《惡意軟體:對抗惡意程式碼》以及《Windows 核心》系列(第 4 版及以後)是任何想要深入了解架構和嚴肅的應對措施的人的必備資料。

Sysinternals 生態系中的 RootkitRevealer

RKR 與其他在研究中有用的 Sysinternals 實用程式共存:AccessChk 和 AccessEnum(有效權限)、Autoruns(所有以系統啟動的程式)、Process Explorer(誰開啟了什麼以及使用了哪個 DLL)、PsExec/PsTools(遠端執行和管理)、PsLogList 和哪個 DLL)、PsExec/PsTools(遠端執行和管理)、PsLogList 和哪個 DLL)、PsExec/PsTools(遠端執行和管理) PsLoggedOn(事件和會話)、Sigcheck(數位簽章)、SDelete(安全刪除)、ShareEnum(共享資源)和Sysmon(事件日誌中的進階遙測)。

在歷史程式碼庫中經常可以看到「下載 1.71」的提示,以及透過 Sysinternals Live 提供的「立即執行」選項。儘管該專案歷史悠久,但其理念——比較高層方法和底層方法——對於 rootkit 檢測仍然至關重要。

RootkitRevealer 首先是一堂防禦工程課:如果某些東西在操縱 API 返回的內容,你必須深入查看並將其與磁碟和註冊表中實際存在的內容進行比較;透過良好的實踐、適當的工具以及必要時的離線驗證,可以發現那些試圖隱藏在我們認為沒有人會查看的地方的東西。

安全性最佳的 Linux 發行版
相關文章:
保護您的安全和隱私的最佳 Linux 發行版