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