Bootkit硬碟取證 第三講

2021-12-30 02:26:32 字數 1729 閱讀 1576

得到原始指標

xp系統比起新的windows系統來說要更複雜一些,因為它只使用乙個單一的驅動來應對埠和微埠。然而,獲得原始指標是相當直接取決於你如何做。

irp_mj_scsi 和 driverstartio – 方法 1 (windows xp系統)

乙個常用的方法是以程式設計方式反彙編微型埠的驅動入口,尋找的**用於初始化驅動程式的物件。然後,你就可以從「mov [esi+30h], offset」和"mov [esi+74h], offset"中檢視和計算一些driverstartio和irp_mj_scsi respectively的位址。

這是乙個例子**,關於初始化驅動物件的。這些位址是從atapi.sys驅動中提取的。

這種方法的明顯問題是初始化**可能不在驅動入口,但是乙個子功能隨時呼叫它。它也不能保證指令將使用esi作為驅動物件或直接的函式位址指標。所以,你可能要考慮相當多的不同的指令。

irp_mj_scsi和driverstartio – 方法 2  (windows xp)

在我的測試中,它很有可能只是從你的驅動入口處簡單的呼叫了微埠驅動中的驅動入口和一些引數。因此便有微型埠設定你的驅動程式的物件。唯一的問題是此方法如果驅動使用gsdriverentry,那麼入口就會將失效後的驅動程式初始化,所以你不能呼叫它。處理gsdriverentry你首先需要從磁碟載入原始影象,然後搜尋,直到你找到乙個無條件的相對轉移(這是偏移量真正的切入點,你可以用它在同一位址來計算載入中的驅動程式)。 

irp_mj_scsi 例程 (windows vista及以上的系統)

在新的系統裡,有些東西是非常容易辦到的:在你的驅動物件裡和ataportinitialize, scsiportinitialize,storportinitialize或者一些相應的埠驅動程式中,沒有任何driverstartio例程可以初始化所有的主要功能

繞過內聯式的bootkit

值得注意的一點,不是很多bootkit都對微埠進行內聯式掛鉤子。你需要檢視一下在記憶體值中埠和微埠的驅動檔案。然後對驅動irp_mj_scsi位址做一位元的指標的更改。我也不太確定呼叫清潔功能是否是最好的辦法,但這裡有2種可行的選擇。

蹦蹦床通常乙個bootkit被放置在乙個函式的前幾個位元組,所以你可以閱讀和重新開始的幾個位元組自清潔功能到緩衝區中,然後把它與真正的驅動程式在相同的偏移的一跳。

手動對映

這個是乙個非常難,但是又特別有效的方法,就是手動清理驅動中的bootkit。你可以對照網上驅動列表裡面的所有指令,然後一一檢查你的驅動是否存在異常。我知道這個非常麻煩,但是這個是最有效的方法了。

建立乙個清潔路徑

由於大量的執行緒執行持續bootkits用來更換任何驅動物件的鉤子事實,你不想脫鉤真正的驅動程式而創造乙個一模一樣的,那麼你可以保持你自己的無掛鉤的呼叫路徑。

步驟 (xp & vista)

1.得到啟動磁碟埠的裝置物件,這通常是\device\ harddisk0 \ dr0

2.使用裝置物件的字段大小分配一些非分頁記憶體,然後複製整個物件(這是你乾淨微型埠)。

3.設定driverobject欄位指向你自己的驅動程式的物件,確定你已經設定過了irp_mj_scsi 和 driverstartio例程

使用乙個安全的路徑

你需要建立乙個原始scsi請求,這個設定十分複雜。萬幸的是中國在這一方面已經有過研究。我們可以看看他們怎麼做的,相信這是乙個非常好的例子。

第三講 前置知識

啥是前置的知識?應該是一種粗略的大概的,對其進行解。就像平時玩戲,要知道這個遊戲有啥子背景,講的是啥事兒,如何去玩它。包括遊戲中各類的圖示代表什麼個意思,初期對其進行初步的了解。說的好像你很屌的樣子,再屌又咋滴,還不是屌絲乙個,光棍一條,哈哈!你說我,老大咱都要各自照照鏡先吧。我已經夠青出於蘭了,你...

Java基礎第三講

一.運算子 1.邏輯運算子 一般用於連線boolean型別的表示式或值 並且 有false則false 或者 有true則true 非 非false則true,非true則false 偶數個不會改變本身 異或 結果相同為false,結果不同則為true 短路與 與 的區別 結果一樣,具有短路效果,如...

第三講 Docker 安裝

我們將在centos linux上安裝docker。如果沒有centos系統,你可以使用虛擬機器virtual box來安裝centos,可參考下面的文章 docker的版本 通常安裝社群版本。系統要求 要安裝docker ce,需要使用centos 7的穩定版本 核心版本必須3.8或之後 注意 必...