Rootkit基于軟件的檢測方法有:
行為檢測法:行為檢測法是通過對比分析已有Rootkit行為特征與當前提取到的特征信息,來決斷是否發生了Rootkit攻擊行為。該方法是基于對已有Rootkit攻擊行為特征庫的建立,檢測過程首先對目標對象(內存、內核文件等)進行掃描;然后在庫中進行比對,看是否存在相吻合的項。行為檢測法的特點是對已有Rootkit攻擊行為的檢測精確度高,但其前提是需要完善的特征庫的支撐,所以一些新型或未知的Rootkit攻擊很容易被繞過。
完整性檢測法:完整性檢測法是通過檢測系統文件或內核文件的完整性來判斷是否存在Rootkit攻擊。該方法需要建立齊全的針對系統不同版本在可信狀態下的重要文件特征庫(Hash值),在檢測時可提取當前狀態下系統對應文件的特征值,并與庫中對應的特征值進行比對,進而確定是否發生了Rootkit攻擊。該方法幾乎可以檢測出任何一種Rootkit攻擊行為,而且簡單易行,但由于需要事先計算所有可能遭受Rootkit攻擊對象的特征值,實現起來相對比較困難。
執行時間檢測法:執行時間檢測法是對系統運行時所啟用的服務指令的執行時間進行計數,以判斷是否有其他的代碼執行。該方法需要在系統創建時備份原始系統調用函數,并統計其正常狀態下的執行時間。如果發生了針對內核的Rootkit攻擊,那么不管該攻擊采用Hooking或DKOM方式,原始服務指令的執行時間都會增長,而且代碼的執行路徑也會發生變化。該方法可以檢測出已知和未知的Rootkit攻擊,但會因計時器(如本地時鐘、外部計時器等)的誤差產生誤報和漏報。
執行路徑檢測法:執行路徑檢測法是通過比較分析某個系統服務在可信系統(未被Rootkit攻擊的系統)和待檢測系統上運行指令數的差異來判斷是否存在Rootkit攻擊。該方法的實現原理是:當某一系統服務隱藏了Rootkit攻擊對象時,系統在調用該被攻擊服務時將會執行一些額外的指令,總的指令數必然會增加。該方法從理論上講是可行的,但在指令執行時CPU需要處于單步模式,頻繁的中斷操作會嚴重影響系統的性能。
差異檢測法:差異檢測法是通過分析比較從系統不同層次獲得的進程、網絡連接、文件目錄等列表信息,再根據存在的差異來檢測出是否存在Rootkit攻擊。如果一條信息(如進程)在底層列表中出現,但是卻沒有在高層列表中出現,就說明該信息已經被Rootkit隱藏。檢測對象的確定和列表信息的獲取是差異檢測法的關鍵。由于攻擊代碼在運行時一般都需要創建對應的進程,而絕大多數Rootkit攻擊行為都將隱藏進程作為必備的手段,所以隱藏進程必然是差異檢測的主要對象;列表信息的獲取需要在確保對象可信的前提下,盡可能獲取到最底層的信息。例如,基于交叉視圖的差異檢測法理論上可以檢測出已知和未知的Rootkit攻擊,但前提是系統信息的獲得必須是全面和可信的。