免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
TDI和NDIS驅(qū)動(dòng)過(guò)濾之我見

流氓軟件木馬在各種防火墻和殺毒軟件的“打壓”之下已經(jīng)開始逐步向內(nèi)核“退縮”,傳統(tǒng)的依靠查看本地打開的端口與進(jìn)程的關(guān)系的方法檢查非法網(wǎng)絡(luò)訪問(wèn)已經(jīng)不再適用,個(gè)人防火墻已經(jīng)成為裝機(jī)必備的軟件。目前主流的個(gè)人防火墻軟件都是構(gòu)建在Windows內(nèi)核之上的,但是Windows的內(nèi)核驅(qū)動(dòng)是分層的,防火墻工作在哪一層實(shí)際上就決定了防火墻的性能,工作在TDI層的防火墻是無(wú)論如何也不能知道NDIS層的數(shù)據(jù)收發(fā)情況的,因?yàn)門DI驅(qū)動(dòng)層在內(nèi)核中是高于NDIS驅(qū)動(dòng)層的。過(guò)去的木馬(上個(gè)世紀(jì)九十年代以前)都是構(gòu)建在Windows應(yīng)用層上的普通程序,工作在TDI層的防火墻可以輕易地覺察并阻斷它們非法的網(wǎng)絡(luò)訪問(wèn),但是對(duì)付縮進(jìn)內(nèi)核的木馬和流氓軟件,單純的依靠TDI層攔截已經(jīng)顯得力不從心。內(nèi)核木馬的特點(diǎn)是不依賴句柄,不綁定端口(NDIS)
),可以工作在TDI層,甚至在NDIS層,所以,真正可靠的防火墻應(yīng)該在NDIS層建立防線。

雖然真正可靠的防火墻應(yīng)該工作在NDIS層,但是,個(gè)人防火墻和用于服務(wù)器的防火墻畢竟還是有一些不同之處,工作在服務(wù)器端的防火墻只需要根據(jù)協(xié)議、地址和端口判斷是轉(zhuǎn)發(fā)還是丟棄就行了,高級(jí)一點(diǎn)還可以分析包內(nèi)容,根據(jù)預(yù)設(shè)的專家系統(tǒng)判斷是正常的數(shù)據(jù)包還是非法攻擊數(shù)據(jù)包,這樣的防火墻還可以用硬件實(shí)現(xiàn)。但是個(gè)人防火墻的特別之處就是需要與用戶交互,用戶數(shù)據(jù)多是基于IP協(xié)議的,并且用戶并不關(guān)心協(xié)議的細(xì)節(jié)(掌握這些對(duì)大多數(shù)用戶來(lái)說(shuō)有點(diǎn)難度),所以個(gè)人防火墻除了通過(guò)IP層的協(xié)議進(jìn)行過(guò)濾之外,更主要的手段是根據(jù)用戶的意愿允許還是阻止某個(gè)進(jìn)程(程序)訪問(wèn)網(wǎng)絡(luò),在這個(gè)粒度上用戶比較容易理解和控制。

這一點(diǎn)上講,工作在TDI層的防火墻的優(yōu)勢(shì)就是能夠在網(wǎng)絡(luò)訪問(wèn)發(fā)生的時(shí)候追蹤到發(fā)起訪問(wèn)的進(jìn)程名稱,從而給用戶一個(gè)提示,而工作在NDIS層的防火墻則不容易做到這一點(diǎn)。因?yàn)榘l(fā)送數(shù)據(jù)時(shí)上層驅(qū)動(dòng)將數(shù)據(jù)包提交到NDIS的發(fā)送隊(duì)列中后就返回了,當(dāng)數(shù)據(jù)包被真正投遞的時(shí)候已經(jīng)無(wú)從確定是哪個(gè)程序(進(jìn)程)發(fā)送的了,對(duì)于收到的數(shù)據(jù)包需要根據(jù)端口號(hào)判斷是哪個(gè)程序的,但是在NDIS層并不知道端口號(hào)和進(jìn)程的對(duì)應(yīng)關(guān)系,所以無(wú)論數(shù)據(jù)發(fā)送還是接收都無(wú)法有效地確定是屬于哪個(gè)進(jìn)程的數(shù)據(jù)。如果不能確定哪個(gè)進(jìn)程訪問(wèn)網(wǎng)絡(luò),只是根據(jù)地址、端口和協(xié)議進(jìn)行過(guò)濾對(duì)(大多數(shù))用戶來(lái)說(shuō)是很不友好的,所以最好的個(gè)人防火墻(不一定是最安全的)應(yīng)該是TDI+NDIS雙保險(xiǎn):TDI層根據(jù)進(jìn)程級(jí)訪問(wèn)過(guò)濾,NDIS層根據(jù)地址、端口和協(xié)議過(guò)濾。

前幾天,一個(gè)朋友要我給他推薦一款比較好的防火墻軟件,說(shuō)實(shí)話,我也不知道哪個(gè)好,因?yàn)槲覜](méi)有比較過(guò)。沒(méi)有調(diào)查就沒(méi)有發(fā)言權(quán),隨便應(yīng)付也不是本人的風(fēng)格,加上本人最近正在驗(yàn)證一個(gè)在內(nèi)核構(gòu)建TCP/IP協(xié)議繞過(guò)防火墻的概念的可行性,需要對(duì)當(dāng)前主流防火墻的能力有所了解,所以就把當(dāng)前比較流行的防火墻都弄來(lái)研究了一下,沒(méi)想到真是大開眼界,不看不知道,一看嚇一跳。先上網(wǎng)搜了一下個(gè)人防火墻,沒(méi)想到有這么多種,沒(méi)時(shí)間全搞一遍,只能對(duì)用的最多的幾個(gè)下手了,它們是“天網(wǎng)防火墻個(gè)人版”,“金山網(wǎng)鏢”,“瑞星個(gè)人防火墻”,“卡巴斯基”,“冰盾”和“風(fēng)云防火墻”,有幾個(gè)防火墻軟件不僅提供網(wǎng)絡(luò)防火墻功能,還提供諸如文件訪問(wèn)控制,進(jìn)程創(chuàng)建保護(hù)等功能,不過(guò)本文只是比較它們的網(wǎng)絡(luò)防范功能。

首先是天網(wǎng)防火墻,這可是本人上學(xué)的時(shí)候最喜歡的防火墻了,簡(jiǎn)單好用。這次使用的是天網(wǎng)防火墻個(gè)人版(Trial_Release_v3.0_Build1213),結(jié)果卻令人失望,天網(wǎng)是一個(gè)單純的TDI防火墻。下圖天網(wǎng)啟動(dòng)后的設(shè)備驅(qū)動(dòng)加載情況:

圖 1 天網(wǎng)防火墻設(shè)備驅(qū)動(dòng)加載情況

工作在TDI層的防火墻有兩種方式,一種是做成過(guò)濾驅(qū)動(dòng)掛接到支持TCP/IP協(xié)議的設(shè)備上,簡(jiǎn)單地講,就是發(fā)送給TCP/IP協(xié)議驅(qū)動(dòng)的請(qǐng)求會(huì)先發(fā)送給它過(guò)濾另一種是使用Hook的方式直接HookTCP/IP協(xié)議的驅(qū)動(dòng)分派函數(shù),相比較而言,第一種比較容易bypass,驅(qū)動(dòng)層的木馬或流氓軟件通過(guò)設(shè)備直接找到TCP/IP的驅(qū)動(dòng)發(fā)送請(qǐng)求,就可以避開Attach在其上的過(guò)濾驅(qū)動(dòng),從上圖看,天網(wǎng)的驅(qū)動(dòng)是一個(gè)Filter驅(qū)動(dòng),除了直接向TCP/IP的驅(qū)動(dòng)發(fā)送請(qǐng)求可以避開天網(wǎng)之外,還有一種方法可以讓它完全失效,就是直接摘除掛接的Filter驅(qū)動(dòng),看看下面的代碼:

void ByPassAttachDevice(PDEVICE_OBJECT DeviceObject)
{
PDEVICE_OBJECT CurDevObj = DeviceObject;

while(CurDevObj != NULL )
{
       CurDevObj->AttachedDevice = NULL;
       CurDevObj = CurDevObj->NextDevice; 
}
}

運(yùn)行在驅(qū)動(dòng)層的木馬只要對(duì)設(shè)備驅(qū)動(dòng)運(yùn)行一下ByPassAttachDevice()函數(shù)就可以讓天網(wǎng)和所有使用這種技術(shù)的防火墻形同虛設(shè)??谡f(shuō)無(wú)評(píng),本人專門寫了一個(gè)驅(qū)動(dòng)來(lái)驗(yàn)證,首先在天網(wǎng)的設(shè)置中禁止IE訪問(wèn)網(wǎng)絡(luò),此時(shí)IE的網(wǎng)絡(luò)訪問(wèn)會(huì)被禁止:



圖 2 天網(wǎng)防火墻組織IE訪問(wèn)網(wǎng)絡(luò)

然后用驅(qū)動(dòng)加載測(cè)試工具加載本人編寫的驅(qū)動(dòng)程序(文后附有加載工具和驅(qū)動(dòng)程序,以及使用說(shuō)明,可以用來(lái)測(cè)試一下你用的防火墻是否安全),假設(shè)這是一個(gè)運(yùn)行在內(nèi)核的木馬或流氓軟件:


圖 3 加載Bypass驅(qū)動(dòng)程序

運(yùn)行后天網(wǎng)就失效了,看看IE可以訪問(wèn)網(wǎng)絡(luò)了,不僅IE,所有被禁止的程序都可以訪問(wèn)網(wǎng)絡(luò)了:


圖 4 天網(wǎng)防火墻失效了

結(jié)論,就不說(shuō)了,真的很失望。


下面看看金山網(wǎng)鏢,這個(gè)是我的朋友很喜歡用的,一直說(shuō)它好用,本次比較用的是金山安全套件2008中附帶的金山網(wǎng)鏢,先看看它的驅(qū)動(dòng)加載情況:


圖 5 金山網(wǎng)鏢驅(qū)動(dòng)加載情況

這也是一個(gè)TDI Filter,沒(méi)有在NDIS層做工作,使用前面的工具可以輕松bypass,不說(shuō)了,下一個(gè)。


接下來(lái)是瑞星個(gè)人防火墻,使用的版本是瑞星個(gè)人防火墻2008。瑞星的驅(qū)動(dòng)在TDI層使用了不容易bypass的TDI hook,除此之外,在NDIS層也使用了Hook,先看看TDI層的情況


圖 6 瑞星驅(qū)動(dòng)的TDI Hook情況

再看看在NDIS層的Hook情況:

圖 7 瑞星驅(qū)動(dòng)的NDIS Hook情況

從驅(qū)動(dòng)上看瑞星防火墻要比前兩個(gè)強(qiáng)很多,本人曾試著手工恢復(fù)被hook的函數(shù),雖然恢復(fù)后不再?gòu)棾?#8220;某某程序要訪問(wèn)網(wǎng)絡(luò)”的提示,但是實(shí)際上還是不能訪問(wèn)網(wǎng)絡(luò),不知為何,有興趣的朋友可以研究一下。

再來(lái)看看卡巴斯基,這次使用的是卡巴斯基的互聯(lián)網(wǎng)安全套裝6.0個(gè)人版,從驅(qū)動(dòng)上看卡巴斯基采用的是用TDI Filter驅(qū)動(dòng)+NDIS Hook


圖 8 卡達(dá)斯基的驅(qū)動(dòng)加載情況

但是可能卡巴斯基的NDIS Hook只是用來(lái)分析可以的數(shù)據(jù)才使用的,也或者是為實(shí)現(xiàn)其它功能設(shè)置的Hook,總之,使用本文的程序可以bypass卡巴斯基的防火墻功能。

再看看冰盾防火墻,冰盾是一個(gè)服務(wù)器防火墻,這次使用的是冰盾8.1 Build60214,從驅(qū)動(dòng)加載情況看,冰盾使用了一個(gè)NDIS中間層驅(qū)動(dòng),沒(méi)有Hook,也沒(méi)有處理TDI層的事務(wù),畢竟它不是個(gè)人防火墻,沒(méi)必要處理TDI層的事情(這只是本人的看法的)。

工作在NDIS層的好處是可以探測(cè)工作在TDI層的rootkit木馬,但是對(duì)于個(gè)人計(jì)算機(jī)用戶來(lái)說(shuō),冰盾的設(shè)計(jì)不太好用(或者說(shuō)比較難理解,相對(duì)于其它幾種防火墻軟件),另外,中間層驅(qū)動(dòng)還容易被Hook,rootkit木馬可以Hook它的處理函數(shù),比如指向一個(gè)空函數(shù),就可以癱瘓中間層驅(qū)動(dòng)。


最后一個(gè)是風(fēng)云防火墻,這個(gè)是從網(wǎng)上搜到的,以前沒(méi)聽說(shuō)過(guò),使用的版本是V1.26 正式版。這個(gè)軟件除了防火墻功能之外,還有很多附加功能,比如文件訪問(wèn)監(jiān)控,注冊(cè)表訪問(wèn)監(jiān)控等等,不過(guò)其網(wǎng)絡(luò)防火墻這塊使用的策略和卡巴斯基一樣,可以被本文的工具bypass

從分析的結(jié)果來(lái)看,這幾款防火墻軟件對(duì)于應(yīng)用程序的訪問(wèn)控制都是沒(méi)有問(wèn)題的,但是對(duì)于同樣工作在內(nèi)核級(jí)別上的木馬和流氓軟件則問(wèn)題很多,只有瑞星防火墻結(jié)果好一點(diǎn),其它的幾款防火墻軟件都挺令人失望,特別是天網(wǎng)防火墻。最后需要強(qiáng)調(diào)一點(diǎn)的是即使是瑞星這樣使用TDI Hook + NDISHook的方式也不一定就是安全的,因?yàn)樵趹?yīng)用程序級(jí)別上進(jìn)行網(wǎng)絡(luò)訪問(wèn)控制還是粒度太粗,如果使用rootkit工具將木馬注入到防火墻允許訪問(wèn)網(wǎng)絡(luò)的程序的進(jìn)程中,就可以在防火墻眼皮底下堂而皇之地訪問(wèn)網(wǎng)絡(luò)了,比如IE的一些BHO插件就是這么干得。


驅(qū)動(dòng)加載測(cè)試工具以及bypass驅(qū)動(dòng)下載 

附錄: 驅(qū)動(dòng)加載測(cè)試工具以及bypass驅(qū)動(dòng)的使用方法

首先將hook_test.sys復(fù)制到windows的系統(tǒng)驅(qū)動(dòng)程序目錄中(如果是windowsxp的系統(tǒng),這個(gè)目錄可能是c:\windows\system32\drivers),然后運(yùn)行drv_test.exe,在驅(qū)動(dòng)文件位置中填入驅(qū)動(dòng)文件hook_test.sys的完整路徑名,在驅(qū)動(dòng)名稱中填入驅(qū)動(dòng)名稱,這個(gè)比較重要,因?yàn)楹竺娴膯?dòng)、停止和卸載驅(qū)動(dòng)都需要這個(gè)驅(qū)動(dòng)名稱,不過(guò)不一定是“hook_test”,顯示名稱隨便填寫就行了。輸入完成后首先點(diǎn)擊“安裝驅(qū)動(dòng)”按鈕安裝驅(qū)動(dòng),如果沒(méi)有錯(cuò)誤再點(diǎn)擊“啟動(dòng)驅(qū)動(dòng)”按鈕啟動(dòng)這個(gè)驅(qū)動(dòng)程序,然后就可以測(cè)試你的防火墻軟件了。測(cè)試的方法很簡(jiǎn)單,就是運(yùn)行一個(gè)訪問(wèn)網(wǎng)絡(luò)的程序,如果防火墻有效,會(huì)提示是否阻止程序訪問(wèn)網(wǎng)絡(luò),如果防火墻失效,則沒(méi)有任何提示,卸載驅(qū)動(dòng)先點(diǎn)擊“停止驅(qū)動(dòng)”按鈕,然后點(diǎn)擊“卸載驅(qū)動(dòng)”按鈕就可以了。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
WINDOWS內(nèi)核學(xué)習(xí)清單 · EXP
返璞歸真:DOS下如何連網(wǎng)?
《Windows內(nèi)核原理與實(shí)現(xiàn)筆記》(一硬件抽象層HAL是一個(gè)獨(dú)立動(dòng)態(tài)鏈接庫(kù))Windows系統(tǒng)結(jié)構(gòu)和基本概念
計(jì)算機(jī)安裝錯(cuò)誤及分析,安裝設(shè)備驅(qū)動(dòng)時(shí)驅(qū)動(dòng)提示錯(cuò)誤“拒絕訪問(wèn)”的解決辦法...
企業(yè)如何選擇自動(dòng)加密軟件?
WIN7與XP之間共享互通的錯(cuò)誤以及解決辦法匯總
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服