智能主動防御系統(08-100)
6. 將配置信息傳遞給NDIS中間層驅動
本文引用地址:http://www.j9360.com/article/91772.htm智能防火墻的數據包過濾功能的實現放在系統核心層(NDIS中間層驅動),由于在驅動層中對硬盤上的數據操作不方便,因此程序在啟動時,用戶態程序需要將配置參數,入侵特征碼,本機/網關IP,本機/網關MAC等信息發送給驅動程序。并且當程序的設置參數發生改變以及用戶態程序捕獲到新的入侵特征碼時,也要將相應的數據送給驅動程序。
7. 將NDIS中間層驅動反饋的信息提示給用戶
當驅動程序攔截到攻擊時會給用戶態層程序發出通知,用戶態程序讀取驅動發送的攻擊信息后,以友好的托盤彈出式窗口提示用戶。
8. NDIS驅動的實現
在學習和比較了當前的網絡數據包攔截技術后,我們的智能防火墻采用了安全系統比較高的NDIS中間層驅動程序技術。由于基于NDIS中間層驅動模式的個人防火墻可截獲較為底層的封包,從而可以完成更為低級的操作,例如實現攔截ARP欺騙,阻止ICMP木馬通信。
智能防火墻NDIS中間層驅動程序的編寫是通過擴展Windows 2003 DDK中的Passthru完成的。Passthru是微軟提供的一個用NDIS中間層驅動程序實現對網絡封包的截獲的程序,不過它直接將過往的數據包不做任何處理的轉發,要實現我們的數據包過濾功能,需要對其進行進一步的擴展。
9. 根據特征庫,過濾到發給本機的數據
由于在驅動程序中不便于直接對硬盤上的數據進行操作,因此智能防火墻沒有采取直接讀取入侵特征庫的方式獲取入侵特征碼,而是在用戶態程序啟動時,通過用戶態程序將入侵特征碼傳遞進來的,并將特征碼保存在一個便于進行查找操作的“哈希表”中。
NDIS中間層驅動程序捕獲發給本機的所有數據包。并計算每一個數據包的特征碼,并在“哈希表”中查找該特征碼,如果查找到,則說明該數據包是一個入侵數據包,直接將其丟棄。如果沒有找到,則對該包進行放行。
10. 傳遞攻擊信息給用戶態程序
當NDIS中間層驅動攔截到入侵數據包時,會通知用戶態程序,并將入侵數據包的相關信息(源IP,數據包類型,入侵時間)傳遞給用戶態程序。用戶態程序接收到通知后給用戶以友好的提示并將該次入侵信息寫入日志。
2.2 病毒主動防御的原理與實現
為了達到主動防御的目的,我們采取了攔截系統調用的方法,主要鉤掛了SSDT表和Shadow SSDT表中的函數,把對這些函數的調用替換為調用我們自己定義的函數。
以下是SSDT表中鉤掛的函數:
NtCreateSection,NtOpenProcess,NtTerminateProcess,NtCreateKey,NtDeleteKey,NtSetValueKey,NtDeleteValueKey,NtLoadDriver。
評論