蘇飛,米守防
(大連民族學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院,遼寧大連 116605)
基于網(wǎng)絡(luò)驅(qū)動(dòng)程序接口規(guī)范的網(wǎng)絡(luò)考試安全保障
蘇飛,米守防
(大連民族學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院,遼寧大連 116605)
網(wǎng)絡(luò)考試過(guò)程中,安全是一個(gè)不可忽視的問(wèn)題。利用NDIS中間層驅(qū)動(dòng)技術(shù)實(shí)現(xiàn)的過(guò)濾程序,可以控制客戶端訪問(wèn)網(wǎng)絡(luò)的權(quán)限。在網(wǎng)絡(luò)考試時(shí),用服務(wù)器控制客戶端過(guò)濾程序的運(yùn)行,有效地防止網(wǎng)絡(luò)考試中利用局域網(wǎng)傳輸數(shù)據(jù)的作弊行為。提出的方法可用于增強(qiáng)其他局域網(wǎng)內(nèi)數(shù)據(jù)傳輸?shù)陌踩浴?/p>
網(wǎng)絡(luò)考試;NDIS中間層驅(qū)動(dòng);過(guò)濾
隨著互聯(lián)網(wǎng)的普及,網(wǎng)絡(luò)考試已經(jīng)在各個(gè)領(lǐng)域得到廣泛應(yīng)用。網(wǎng)絡(luò)考試可以分為互聯(lián)網(wǎng)考試和局域網(wǎng)考試兩種[1],其中局域網(wǎng)考試的應(yīng)用更加廣泛,包括國(guó)家計(jì)算機(jī)等級(jí)考試等都采用這種方式。目前在局域網(wǎng)環(huán)境下的考試存在很大的安全隱患,考生可以利用軟件在局域網(wǎng)內(nèi)傳輸數(shù)據(jù)進(jìn)行作弊,隱蔽性很高,直接影響考試成績(jī)的公正性。如何保證局域網(wǎng)考試的安全性和公正性成為各界關(guān)注的問(wèn)題。
局域網(wǎng)內(nèi)的信息傳遞采用廣播方式傳遞,LAN內(nèi)的機(jī)器地位是同等的,一臺(tái)機(jī)器控制其他機(jī)器比較困難,用考試系統(tǒng)本身的安全系統(tǒng)無(wú)法禁止這種形式的作弊[2]。另一方面由于可采用的通信方式很多,有些是未知的,全面屏蔽也不現(xiàn)實(shí)。本課題利用網(wǎng)絡(luò)驅(qū)動(dòng)程序接口規(guī)范(Network Driver Interface Specification,NDIS)技術(shù),實(shí)現(xiàn)了一種核心層過(guò)濾驅(qū)動(dòng)程序,安裝在客戶端后,可以有效地管理局域網(wǎng)內(nèi)各個(gè)客戶端的行為,避免考試過(guò)程中通過(guò)局域網(wǎng)互傳數(shù)據(jù)等方式作弊,保證網(wǎng)絡(luò)考試在一個(gè)安全的環(huán)境下進(jìn)行。
NDIS的結(jié)構(gòu)如圖1。橫跨傳輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層,定義了網(wǎng)卡或網(wǎng)卡驅(qū)動(dòng)程序與上層協(xié)議驅(qū)動(dòng)程序之間的通信接口規(guī)范,使上層的協(xié)議驅(qū)動(dòng)程序和底層任何型號(hào)的網(wǎng)卡通信。NDIS支持計(jì)算機(jī)通過(guò)不同的通信協(xié)議與網(wǎng)絡(luò)相連,如: TCP/IP、IPX、NetBIOS、AppleTalk等。NDIS的中間驅(qū)動(dòng)程序(Intermediate Drivers)位于微端口驅(qū)動(dòng)程序和協(xié)議驅(qū)動(dòng)程序之間,向上提供微端口(Miniport)函數(shù)集,向下提供協(xié)議(Protocol)函數(shù)集。對(duì)于上層驅(qū)動(dòng)程序,是微端口驅(qū)動(dòng)程序;對(duì)于底層驅(qū)動(dòng)程序,是協(xié)議驅(qū)動(dòng)程序。

圖1 NDIS結(jié)構(gòu)圖
無(wú)論是網(wǎng)卡接收并上傳的數(shù)據(jù)包,還是上層要下送至網(wǎng)卡發(fā)送的數(shù)據(jù)包,無(wú)一例外地要經(jīng)過(guò)中間層。可以在中間層加入想要過(guò)濾的數(shù)據(jù)包的特征,實(shí)現(xiàn)基于中間層驅(qū)動(dòng)的內(nèi)核級(jí)包過(guò)濾。這樣做的優(yōu)勢(shì)非常明顯,首先,在驅(qū)動(dòng)級(jí)別上做過(guò)濾,無(wú)須組包,速度快,效率自然就高;其次,所有的數(shù)據(jù)包無(wú)一例外,只要網(wǎng)卡上傳的數(shù)據(jù)包均可以截獲,避免了在用戶級(jí)狀態(tài)下應(yīng)用程序無(wú)法得到所有數(shù)據(jù)包的缺點(diǎn)[3]。
為了實(shí)現(xiàn)局域網(wǎng)內(nèi)的網(wǎng)絡(luò)過(guò)濾控制,在客戶端采用NDIS中間層抓包過(guò)濾的方式[4]。當(dāng)需要控制客戶端時(shí),服務(wù)器端將發(fā)控制信息給客戶端,客戶端檢測(cè)到受控信息后,開(kāi)始執(zhí)行過(guò)濾驅(qū)動(dòng),過(guò)濾所有客戶端發(fā)出的IP包。通過(guò)IP地址的過(guò)濾,僅允許考試服務(wù)器的IP包通過(guò),此時(shí)局域網(wǎng)內(nèi)的各個(gè)客戶端將無(wú)法互相傳輸數(shù)據(jù),而考試系統(tǒng)仍然可以正常運(yùn)行,使網(wǎng)絡(luò)考試更安全。Microsoft在DDK中附帶的PassThru提供了一個(gè)中間層驅(qū)動(dòng)框架,在這個(gè)框架的基礎(chǔ)上,可以實(shí)現(xiàn)一個(gè)用于網(wǎng)絡(luò)過(guò)濾控制的NDIS中間層驅(qū)動(dòng),來(lái)實(shí)現(xiàn)上述網(wǎng)絡(luò)控制功能[5]。
Passthru實(shí)現(xiàn)了一個(gè)中間層的基本功能,對(duì)下表現(xiàn)為一個(gè)協(xié)議層的驅(qū)動(dòng),對(duì)上表現(xiàn)為一個(gè)虛擬網(wǎng)卡[6]。安裝Passthru驅(qū)動(dòng)之后,可以在設(shè)備管理器中看到一個(gè)虛擬網(wǎng)卡。Passthru驅(qū)動(dòng)僅僅轉(zhuǎn)發(fā)所有流經(jīng)自己的數(shù)據(jù)包,并未做其他工作。要實(shí)現(xiàn)IP數(shù)據(jù)包過(guò)濾的功能,就需要對(duì)Passthru驅(qū)動(dòng)進(jìn)行擴(kuò)展。
在Passthru框架中,當(dāng)上層協(xié)議驅(qū)動(dòng)需要發(fā)數(shù)據(jù)時(shí),調(diào)用NdisSend/NdisSendPackets請(qǐng)求NDIS發(fā)送數(shù)據(jù)包,NDIS會(huì)調(diào)用中間層驅(qū)動(dòng)的MPSend/ MPSendPackets,經(jīng)過(guò)中間層后,中間層驅(qū)動(dòng)再次調(diào)用NdisSend/NdisSendPackets請(qǐng)NDIS發(fā)送數(shù)據(jù)包。在MPSend/MPSendPackets中加入檢測(cè)函數(shù),而對(duì)于接收數(shù)據(jù)包過(guò)濾,則需要在PtReceive/Pt-ReceviePackets中加入檢測(cè)函數(shù)FltFilrerSendPacker。Passthru發(fā)送相關(guān)的MPSend和MPSendPackets函數(shù)在mimiport.c中實(shí)現(xiàn),與接收相關(guān)的Pt-Receive和PtReceivePacket函數(shù)在protocol.c中實(shí)現(xiàn)。擴(kuò)展后的中間層驅(qū)動(dòng)中的檢測(cè)函數(shù)FltFilrerSendPacker和過(guò)濾條件存儲(chǔ)在filter.c文件中。通過(guò)改變filter.c文件中的過(guò)濾條件,可以方便的實(shí)現(xiàn)各種過(guò)濾功能。
在檢測(cè)函數(shù)工作前,需要截獲數(shù)據(jù)包。根據(jù)實(shí)際需求,設(shè)置客戶端的訪問(wèn)規(guī)則主要為IP地址的允許和禁止,IP地址信息位于數(shù)據(jù)包的包頭位置,所以對(duì)截獲的數(shù)據(jù)包僅處理包頭信息就可以了,這樣可以大大提高驅(qū)動(dòng)的工作效率。讀包函數(shù)FltReadPacketData存儲(chǔ)在filter.c文件中。在protocol.c中的PtReceive函數(shù)中,參數(shù)HeadBuffer表示緩沖區(qū)中存放的以太頭信息,LookAhead-Buffer緩沖區(qū)中存放的是數(shù)據(jù)包中除以太頭以外的包頭信息,從這兩個(gè)緩沖區(qū)中即可取得包頭信息。參數(shù)HeaderBufferSize與Packet Size的和是整個(gè)數(shù)據(jù)包的大小。通常在以太網(wǎng)中,得到的數(shù)據(jù)包結(jié)構(gòu)為:以太幀頭占前14個(gè)字節(jié),1~6字節(jié)是目的Mac地址,7~12字節(jié)是源Mac地址,13~14字節(jié)是協(xié)議類型。如果是IP包,緊跟著的是IP頭,按照IP頭的格式,得到的第24字節(jié)表示傳輸層協(xié)議;針對(duì)TCP和UDP,可以繼續(xù)取得TCP頭和UDP頭的前4個(gè)字節(jié)得到源端口號(hào)和目的端口號(hào)。截獲的IP包的上述信息與過(guò)濾規(guī)則相比較,通過(guò)返回值的判斷來(lái)控制是否允許包通過(guò),這樣就實(shí)現(xiàn)了包過(guò)濾功能。
應(yīng)用程序使用API函數(shù)CreateFile打開(kāi)設(shè)備對(duì)象,利用DeviceIoControl來(lái)實(shí)現(xiàn)對(duì)設(shè)備的訪問(wèn)(獲取信息、發(fā)送命令、交換數(shù)據(jù))。通過(guò)該接口函數(shù)向指定的設(shè)備驅(qū)動(dòng)發(fā)送正確的控制代碼及數(shù)據(jù),然后分析它的響應(yīng)就可以實(shí)現(xiàn)后續(xù)操作。應(yīng)用程序首先通過(guò)調(diào)用CreateFile打開(kāi)設(shè)備對(duì)象,獲得設(shè)備對(duì)象句柄,再調(diào)用DeviceIoControl函數(shù)傳送對(duì)驅(qū)動(dòng)程序的控制代碼。這里主要是兩個(gè)方面,一是應(yīng)用程序?qū)⒃O(shè)定的IP規(guī)則傳遞給底層的驅(qū)動(dòng)程序,驅(qū)動(dòng)程序接收到規(guī)則之后,放到設(shè)定的一個(gè)線性規(guī)則鏈表的表頭上;二是應(yīng)用程序獲取底層數(shù)據(jù)的封包信息。為了顯示網(wǎng)絡(luò)的數(shù)據(jù)流量和數(shù)量信息,需要打開(kāi)設(shè)備的句柄獲取信息。驅(qū)動(dòng)程序在接收到DeviceIoControl函數(shù)中的控制代碼后,就會(huì)調(diào)用相應(yīng)的派遣例程完成操作。用CreateFile打開(kāi)設(shè)備句柄之后,對(duì)設(shè)備對(duì)象進(jìn)行操作。處理完成之后,用CloseHandle關(guān)閉設(shè)備句柄。
安裝信息INF文件與Windows內(nèi)建的安裝服務(wù)引擎(API函數(shù)庫(kù))緊密協(xié)同工作,基于其嚴(yán)格的編寫語(yǔ)法制作而成的INF文件在拷貝、刪除文件,增、刪注冊(cè)表鍵,更改系統(tǒng)設(shè)置等方面都有優(yōu)秀的表現(xiàn),可以用來(lái)實(shí)現(xiàn)驅(qū)動(dòng)程序的安裝。由于Passthru擴(kuò)展驅(qū)動(dòng)實(shí)質(zhì)上是一個(gè)中間層驅(qū)動(dòng),在驅(qū)動(dòng)安裝過(guò)程中需要兩個(gè)INF文件,一個(gè)是協(xié)議驅(qū)動(dòng)使用的,另一個(gè)是微端口驅(qū)動(dòng)使用的,兩個(gè)INF文件要和驅(qū)動(dòng)放在同一目錄下才可以正常安裝。
實(shí)驗(yàn)環(huán)境是本校綜合實(shí)驗(yàn)中心三個(gè)多媒體機(jī)房和一個(gè)服務(wù)器機(jī)房。各個(gè)機(jī)房網(wǎng)絡(luò)采用VLAN劃分,通過(guò)光纖與服務(wù)器機(jī)房相連。每個(gè)客戶機(jī)都安裝有萬(wàn)欣保護(hù)卡,可以方便的進(jìn)行網(wǎng)絡(luò)同傳。機(jī)房樣機(jī)的操作系統(tǒng)中安裝NDIS中間層過(guò)濾驅(qū)動(dòng)后,利用網(wǎng)絡(luò)同傳將整個(gè)機(jī)房電腦全部修改,即完成客戶端安裝。然后在服務(wù)器機(jī)房的考試服務(wù)器上安裝過(guò)濾驅(qū)動(dòng)程序管理端,用于控制機(jī)房?jī)?nèi)客戶端的過(guò)濾程序的開(kāi)啟和關(guān)閉,也可以添加新的過(guò)濾規(guī)則。客戶端驅(qū)動(dòng)和服務(wù)器端管理程序安裝完畢,客戶機(jī)在局域網(wǎng)內(nèi)通信或訪問(wèn)外網(wǎng)都可以被控制了。以現(xiàn)有機(jī)房為例,機(jī)房?jī)?nèi)學(xué)生端安裝了極域教學(xué)軟件,這個(gè)軟件使用時(shí)需要訪問(wèn)內(nèi)部網(wǎng)址225.2.1.1,在安裝好客戶端過(guò)濾驅(qū)動(dòng)后,在管理端添加一條允許此IP通過(guò)的規(guī)則,這樣在過(guò)濾開(kāi)啟時(shí),也不會(huì)影響極域軟件的使用。考試開(kāi)始前,在服務(wù)器的管理端添加一條允許考試服務(wù)器IP地址通過(guò)的規(guī)則,然后選擇開(kāi)啟學(xué)生端過(guò)濾功能,此時(shí)學(xué)生機(jī)的過(guò)濾驅(qū)動(dòng)開(kāi)啟過(guò)濾功能,使得學(xué)生機(jī)僅能訪問(wèn)過(guò)濾規(guī)則允許的IP地址,考試可以正常進(jìn)行,但局域網(wǎng)內(nèi)各主機(jī)間無(wú)法訪問(wèn),不能互相傳送數(shù)據(jù),學(xué)生機(jī)也無(wú)法訪問(wèn)互聯(lián)網(wǎng)。考試結(jié)束后,服務(wù)器端管理程序選擇關(guān)閉學(xué)生端過(guò)濾功能,機(jī)房電腦的過(guò)濾驅(qū)動(dòng)即關(guān)閉過(guò)濾功能,恢復(fù)正常使用狀態(tài),既可以局域網(wǎng)內(nèi)互相訪問(wèn),也可以訪問(wèn)互聯(lián)網(wǎng)。此方案能有效地杜絕局域網(wǎng)內(nèi)互傳信息作弊的行為,保證了網(wǎng)絡(luò)考試成績(jī)的公平性。而且機(jī)房機(jī)器在考試與教學(xué)之間轉(zhuǎn)換很方便、快捷,使用方法簡(jiǎn)單易學(xué)。
本綜合實(shí)驗(yàn)中心機(jī)房每年承擔(dān)2次國(guó)家計(jì)算機(jī)等級(jí)考試,多次期中、期末考試也采取網(wǎng)絡(luò)考試方式進(jìn)行。經(jīng)過(guò)測(cè)試及使用,本課題設(shè)計(jì)實(shí)現(xiàn)的NDIS中間層過(guò)濾驅(qū)動(dòng)程序應(yīng)用在考試過(guò)程中,在有效防止利用網(wǎng)絡(luò)作弊的同時(shí)還能保證考試服務(wù)器的正常數(shù)據(jù)在網(wǎng)絡(luò)中安全傳輸,系統(tǒng)運(yùn)行安全穩(wěn)定。
NDIS中間層過(guò)濾驅(qū)動(dòng)應(yīng)用在局域網(wǎng)考試系統(tǒng)中,可以有效地防止通過(guò)局域網(wǎng)傳輸數(shù)據(jù)作弊的行為,為網(wǎng)絡(luò)考試創(chuàng)造了良好的環(huán)境,同時(shí)對(duì)考試系統(tǒng)本身的數(shù)據(jù)傳輸,也起到了一定的保護(hù)作用。通過(guò)上述原理可以看出,此技術(shù)不僅可以應(yīng)用在網(wǎng)絡(luò)考試中,也可用于增強(qiáng)其他局域網(wǎng)內(nèi)數(shù)據(jù)傳輸?shù)陌踩浴?/p>
[1]曾華軍,申瑞民,申麗萍,等.遠(yuǎn)程考試系統(tǒng)安全性[J].計(jì)算機(jī)工程.2001,27(3):133-135.
[2]武偉,魏曉.在線考試作弊防御方法的設(shè)計(jì)與實(shí)現(xiàn)[J].上海應(yīng)用技術(shù)學(xué)院學(xué)報(bào),2006,6(1):133-135.
[3]郭興陽(yáng),高峰,唐朝京.一種NDIS中間層數(shù)據(jù)包過(guò)濾方法[J].計(jì)算機(jī)工程,2004,30(17):102-103.
[4]蔣華,袁紅林.基于NDIS中間驅(qū)動(dòng)的包過(guò)濾器的設(shè)計(jì)實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2009,25(15):114-115.
[5]楊麗麗,李書琴,蔚繼承.NDIS技術(shù)在網(wǎng)絡(luò)管理中的應(yīng)用研究[J].微計(jì)算機(jī)信息,2007,23(36):75-77.
[6]陳小愛(ài),劉海濤.基于NDIS中間層的通信安全機(jī)制的設(shè)計(jì)與實(shí)現(xiàn)[J].微型電腦應(yīng)用,2008,24(8):6-8.
Security Assurance of Network Examination Based on NDIS
SU Fei,MI Shou-fang
(College of Computer Science&Engineering,Dalian Nationalities University,Dalian Liaoning 116605,China)
In network examination process,the security is a problem which can not be ignored.The Filters based on NDIS intermediate driver technology can control client permissions to access the network.During the network examination,the running of the client filter controlled by server can effectively prevent the cheating behavior using data transfer of local area network.The proposed method can also be used to enhance the security of data transmitted in other LAN.
network examination;NDIS intermediate driver;filter
TP393.1
A
1009-315X(2012)03-0269-03
2011-11-14;最后
2012-02-19
蘇飛(1977-),男,錫伯族,吉林榆樹(shù)人,工程師,主要從事計(jì)算機(jī)技術(shù)應(yīng)用研究。
(責(zé)任編輯 劉敏)