DKOM隱藏驅動

2021-12-30 05:47:07 字數 2288 閱讀 2361

dkom(direct kernel object manipulation)就是直接核心物件操作技術。所有的作業系統都在記憶體中儲存記賬資訊,他們通常採用結構或物件的形式,由物件管理器管理。當使用者空間程序請求作業系統資訊例如程序、執行緒或裝置驅動程式列表時,這些物件被報告給使用者。這些物件或結構位於記憶體中,因此可以直接對其進行修改。隱藏程序主要關注的windows關鍵資料結構是:程序的eprocess結構與執行緒的ethread結構、鍊錶(如程序、執行緒鍊錶與cpu的排程鍊錶)等等。dkom通過操作這些資料結構來達到它們的目的。直接操作核心物件在隱藏程序這方面的應用很多。

當服務控制管理器(scm)載入乙個驅動的時候,就會生成乙個driver_object結構的物件.

nt!_driver_object

+0x000type:int2b

+0x002size:int2b

+0x004deviceobject:ptr32_device_object

+0x008flags:uint4b

+0x00cdriverstart:ptr32void

+0x010driversize:uint4b

+0x014driversection:ptr32void

+0x018driverextension:ptr32_driver_extension

+0x01cdrivername:_unicode_string

+0x024hardwaredatabase:ptr32_unicode_string

+0x028fastiodispatch:ptr32_fast_io_dispatch

+0x02cdriverinit:ptr32long

+0x030driverstartio:ptr32void

+0x034driverunload:ptr32void

+0x038majorfunction:[28]ptr32long

其中的driversection中儲存著乙個指向kldr_data_table_entry結構體的指標.

這個結構體被用來儲存驅動模組的一些資訊.

在wrk中的定義如下:

typedefstruct_kldr_data_table_entrykldr_data_table_entry,*pkldr_data_table_entry;

這個結構體中的第乙個成員inloadorderlinks是乙個list_entry的結構.這使得每個驅動模組被串在了乙個雙向鍊錶中.我們只要遍歷這條雙向鏈就能列舉出所有的驅動模組.

其中域dllbase是驅動模組的載入基位址.

fulldllname是驅動模組的完整路徑

basedllname是驅動模組的名稱.

遍歷結果如下:

因此,如果我們要隱藏某個驅動,只需將我們要隱藏的驅動名跟鍊錶中的每個節點的驅動名比較.一旦找到我們要隱藏的驅動,則修改它的inloadorderlinks域的flink和blink的指標即可.

圖一:修改前flink和blink指標的指向情況

圖二:修改後flink和blink指標的指向情況

/**【作者:莫灰灰(lsg)】

*【空間:

*/#include

typedefunsignedlongdword;

typedefstruct_kldr_data_table_entrykldr_data_table_entry,*pkldr_data_table_entry;

pdriver_objectpdriverobject=null;

void

hidedriver()

}//鍊錶往前走

entry=(pkldr_data_table_entry)entry->inloadorderlinks.flink;}}

ntstatus

unloaddriver(

inpdriver_objectdriverobject

)ntstatus

driverentry(

inpdriver_objectdriverobject,

inpunicode_stringregistrypath

)摘了xuetr的驅動之後,我們用ark工具來看一下(xuetr和pt都是最新版).

隱藏驅動的方法

以下內容來自www.rootkit.com driver hidding based on the following methods 1.removing module form psloadedmodulelist that passed some old rkdectors 2.removin...

Linux 隱藏驅動模組

作為惡意驅動,肯定是希望自己模組載入之後不會被發現,那麼就需要對安裝的驅動模組進行隱藏,在驅動初始化入口進行摘鏈,kobject del 函式刪除當前模組的kobject就可以起到在 lsmod 和 sys module中隱藏。list del init this module.list test....

隱藏驅動模組 原始碼

xp親測有效,使用我們自己編寫的列舉驅動模組會看不到。列舉驅動模組請看文章 但是使用ark工具依然能看到我們隱藏的驅動某塊,比如kernel detective 和pchunter 但是隱藏的驅動模組為紅色,意為ark工具檢測到了該模組進行了隱藏 include typedef unsigned l...