蘇飛,米守防
(大連民族學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院,遼寧大連 116605)
基于網(wǎng)絡(luò)驅(qū)動程序接口規(guī)范的網(wǎng)絡(luò)考試安全保障
蘇飛,米守防
(大連民族學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院,遼寧大連 116605)
網(wǎng)絡(luò)考試過程中,安全是一個不可忽視的問題。利用NDIS中間層驅(qū)動技術(shù)實(shí)現(xiàn)的過濾程序,可以控制客戶端訪問網(wǎng)絡(luò)的權(quán)限。在網(wǎng)絡(luò)考試時,用服務(wù)器控制客戶端過濾程序的運(yùn)行,有效地防止網(wǎng)絡(luò)考試中利用局域網(wǎng)傳輸數(shù)據(jù)的作弊行為。提出的方法可用于增強(qiáng)其他局域網(wǎng)內(nèi)數(shù)據(jù)傳輸?shù)陌踩浴?/p>
網(wǎng)絡(luò)考試;NDIS中間層驅(qū)動;過濾
隨著互聯(lián)網(wǎng)的普及,網(wǎng)絡(luò)考試已經(jīng)在各個領(lǐng)域得到廣泛應(yīng)用。網(wǎng)絡(luò)考試可以分為互聯(lián)網(wǎng)考試和局域網(wǎng)考試兩種[1],其中局域網(wǎng)考試的應(yīng)用更加廣泛,包括國家計(jì)算機(jī)等級考試等都采用這種方式。目前在局域網(wǎng)環(huán)境下的考試存在很大的安全隱患,考生可以利用軟件在局域網(wǎng)內(nèi)傳輸數(shù)據(jù)進(jìn)行作弊,隱蔽性很高,直接影響考試成績的公正性。如何保證局域網(wǎng)考試的安全性和公正性成為各界關(guān)注的問題。
局域網(wǎng)內(nèi)的信息傳遞采用廣播方式傳遞,LAN內(nèi)的機(jī)器地位是同等的,一臺機(jī)器控制其他機(jī)器比較困難,用考試系統(tǒng)本身的安全系統(tǒng)無法禁止這種形式的作弊[2]。另一方面由于可采用的通信方式很多,有些是未知的,全面屏蔽也不現(xiàn)實(shí)。本課題利用網(wǎng)絡(luò)驅(qū)動程序接口規(guī)范(Network Driver Interface Specification,NDIS)技術(shù),實(shí)現(xiàn)了一種核心層過濾驅(qū)動程序,安裝在客戶端后,可以有效地管理局域網(wǎng)內(nèi)各個客戶端的行為,避免考試過程中通過局域網(wǎng)互傳數(shù)據(jù)等方式作弊,保證網(wǎng)絡(luò)考試在一個安全的環(huán)境下進(jìn)行。
NDIS的結(jié)構(gòu)如圖1。橫跨傳輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層,定義了網(wǎng)卡或網(wǎng)卡驅(qū)動程序與上層協(xié)議驅(qū)動程序之間的通信接口規(guī)范,使上層的協(xié)議驅(qū)動程序和底層任何型號的網(wǎng)卡通信。NDIS支持計(jì)算機(jī)通過不同的通信協(xié)議與網(wǎng)絡(luò)相連,如: TCP/IP、IPX、NetBIOS、AppleTalk等。NDIS的中間驅(qū)動程序(Intermediate Drivers)位于微端口驅(qū)動程序和協(xié)議驅(qū)動程序之間,向上提供微端口(Miniport)函數(shù)集,向下提供協(xié)議(Protocol)函數(shù)集。對于上層驅(qū)動程序,是微端口驅(qū)動程序;對于底層驅(qū)動程序,是協(xié)議驅(qū)動程序。
圖1 NDIS結(jié)構(gòu)圖
無論是網(wǎng)卡接收并上傳的數(shù)據(jù)包,還是上層要下送至網(wǎng)卡發(fā)送的數(shù)據(jù)包,無一例外地要經(jīng)過中間層。可以在中間層加入想要過濾的數(shù)據(jù)包的特征,實(shí)現(xiàn)基于中間層驅(qū)動的內(nèi)核級包過濾。這樣做的優(yōu)勢非常明顯,首先,在驅(qū)動級別上做過濾,無須組包,速度快,效率自然就高;其次,所有的數(shù)據(jù)包無一例外,只要網(wǎng)卡上傳的數(shù)據(jù)包均可以截獲,避免了在用戶級狀態(tài)下應(yīng)用程序無法得到所有數(shù)據(jù)包的缺點(diǎn)[3]。
為了實(shí)現(xiàn)局域網(wǎng)內(nèi)的網(wǎng)絡(luò)過濾控制,在客戶端采用NDIS中間層抓包過濾的方式[4]。當(dāng)需要控制客戶端時,服務(wù)器端將發(fā)控制信息給客戶端,客戶端檢測到受控信息后,開始執(zhí)行過濾驅(qū)動,過濾所有客戶端發(fā)出的IP包。通過IP地址的過濾,僅允許考試服務(wù)器的IP包通過,此時局域網(wǎng)內(nèi)的各個客戶端將無法互相傳輸數(shù)據(jù),而考試系統(tǒng)仍然可以正常運(yùn)行,使網(wǎng)絡(luò)考試更安全。Microsoft在DDK中附帶的PassThru提供了一個中間層驅(qū)動框架,在這個框架的基礎(chǔ)上,可以實(shí)現(xiàn)一個用于網(wǎng)絡(luò)過濾控制的NDIS中間層驅(qū)動,來實(shí)現(xiàn)上述網(wǎng)絡(luò)控制功能[5]。
Passthru實(shí)現(xiàn)了一個中間層的基本功能,對下表現(xiàn)為一個協(xié)議層的驅(qū)動,對上表現(xiàn)為一個虛擬網(wǎng)卡[6]。安裝Passthru驅(qū)動之后,可以在設(shè)備管理器中看到一個虛擬網(wǎng)卡。Passthru驅(qū)動僅僅轉(zhuǎn)發(fā)所有流經(jīng)自己的數(shù)據(jù)包,并未做其他工作。要實(shí)現(xiàn)IP數(shù)據(jù)包過濾的功能,就需要對Passthru驅(qū)動進(jìn)行擴(kuò)展。
在Passthru框架中,當(dāng)上層協(xié)議驅(qū)動需要發(fā)數(shù)據(jù)時,調(diào)用NdisSend/NdisSendPackets請求NDIS發(fā)送數(shù)據(jù)包,NDIS會調(diào)用中間層驅(qū)動的MPSend/ MPSendPackets,經(jīng)過中間層后,中間層驅(qū)動再次調(diào)用NdisSend/NdisSendPackets請NDIS發(fā)送數(shù)據(jù)包。在MPSend/MPSendPackets中加入檢測函數(shù),而對于接收數(shù)據(jù)包過濾,則需要在PtReceive/Pt-ReceviePackets中加入檢測函數(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ū)動中的檢測函數(shù)FltFilrerSendPacker和過濾條件存儲在filter.c文件中。通過改變filter.c文件中的過濾條件,可以方便的實(shí)現(xiàn)各種過濾功能。
在檢測函數(shù)工作前,需要截獲數(shù)據(jù)包。根據(jù)實(shí)際需求,設(shè)置客戶端的訪問規(guī)則主要為IP地址的允許和禁止,IP地址信息位于數(shù)據(jù)包的包頭位置,所以對截獲的數(shù)據(jù)包僅處理包頭信息就可以了,這樣可以大大提高驅(qū)動的工作效率。讀包函數(shù)FltReadPacketData存儲在filter.c文件中。在protocol.c中的PtReceive函數(shù)中,參數(shù)HeadBuffer表示緩沖區(qū)中存放的以太頭信息,LookAhead-Buffer緩沖區(qū)中存放的是數(shù)據(jù)包中除以太頭以外的包頭信息,從這兩個緩沖區(qū)中即可取得包頭信息。參數(shù)HeaderBufferSize與Packet Size的和是整個數(shù)據(jù)包的大小。通常在以太網(wǎng)中,得到的數(shù)據(jù)包結(jié)構(gòu)為:以太幀頭占前14個字節(jié),1~6字節(jié)是目的Mac地址,7~12字節(jié)是源Mac地址,13~14字節(jié)是協(xié)議類型。如果是IP包,緊跟著的是IP頭,按照IP頭的格式,得到的第24字節(jié)表示傳輸層協(xié)議;針對TCP和UDP,可以繼續(xù)取得TCP頭和UDP頭的前4個字節(jié)得到源端口號和目的端口號。截獲的IP包的上述信息與過濾規(guī)則相比較,通過返回值的判斷來控制是否允許包通過,這樣就實(shí)現(xiàn)了包過濾功能。
應(yīng)用程序使用API函數(shù)CreateFile打開設(shè)備對象,利用DeviceIoControl來實(shí)現(xiàn)對設(shè)備的訪問(獲取信息、發(fā)送命令、交換數(shù)據(jù))。通過該接口函數(shù)向指定的設(shè)備驅(qū)動發(fā)送正確的控制代碼及數(shù)據(jù),然后分析它的響應(yīng)就可以實(shí)現(xiàn)后續(xù)操作。應(yīng)用程序首先通過調(diào)用CreateFile打開設(shè)備對象,獲得設(shè)備對象句柄,再調(diào)用DeviceIoControl函數(shù)傳送對驅(qū)動程序的控制代碼。這里主要是兩個方面,一是應(yīng)用程序?qū)⒃O(shè)定的IP規(guī)則傳遞給底層的驅(qū)動程序,驅(qū)動程序接收到規(guī)則之后,放到設(shè)定的一個線性規(guī)則鏈表的表頭上;二是應(yīng)用程序獲取底層數(shù)據(jù)的封包信息。為了顯示網(wǎng)絡(luò)的數(shù)據(jù)流量和數(shù)量信息,需要打開設(shè)備的句柄獲取信息。驅(qū)動程序在接收到DeviceIoControl函數(shù)中的控制代碼后,就會調(diào)用相應(yīng)的派遣例程完成操作。用CreateFile打開設(shè)備句柄之后,對設(shè)備對象進(jìn)行操作。處理完成之后,用CloseHandle關(guān)閉設(shè)備句柄。
安裝信息INF文件與Windows內(nèi)建的安裝服務(wù)引擎(API函數(shù)庫)緊密協(xié)同工作,基于其嚴(yán)格的編寫語法制作而成的INF文件在拷貝、刪除文件,增、刪注冊表鍵,更改系統(tǒng)設(shè)置等方面都有優(yōu)秀的表現(xiàn),可以用來實(shí)現(xiàn)驅(qū)動程序的安裝。由于Passthru擴(kuò)展驅(qū)動實(shí)質(zhì)上是一個中間層驅(qū)動,在驅(qū)動安裝過程中需要兩個INF文件,一個是協(xié)議驅(qū)動使用的,另一個是微端口驅(qū)動使用的,兩個INF文件要和驅(qū)動放在同一目錄下才可以正常安裝。
實(shí)驗(yàn)環(huán)境是本校綜合實(shí)驗(yàn)中心三個多媒體機(jī)房和一個服務(wù)器機(jī)房。各個機(jī)房網(wǎng)絡(luò)采用VLAN劃分,通過光纖與服務(wù)器機(jī)房相連。每個客戶機(jī)都安裝有萬欣保護(hù)卡,可以方便的進(jìn)行網(wǎng)絡(luò)同傳。機(jī)房樣機(jī)的操作系統(tǒng)中安裝NDIS中間層過濾驅(qū)動后,利用網(wǎng)絡(luò)同傳將整個機(jī)房電腦全部修改,即完成客戶端安裝。然后在服務(wù)器機(jī)房的考試服務(wù)器上安裝過濾驅(qū)動程序管理端,用于控制機(jī)房內(nèi)客戶端的過濾程序的開啟和關(guān)閉,也可以添加新的過濾規(guī)則??蛻舳蓑?qū)動和服務(wù)器端管理程序安裝完畢,客戶機(jī)在局域網(wǎng)內(nèi)通信或訪問外網(wǎng)都可以被控制了。以現(xiàn)有機(jī)房為例,機(jī)房內(nèi)學(xué)生端安裝了極域教學(xué)軟件,這個軟件使用時需要訪問內(nèi)部網(wǎng)址225.2.1.1,在安裝好客戶端過濾驅(qū)動后,在管理端添加一條允許此IP通過的規(guī)則,這樣在過濾開啟時,也不會影響極域軟件的使用??荚囬_始前,在服務(wù)器的管理端添加一條允許考試服務(wù)器IP地址通過的規(guī)則,然后選擇開啟學(xué)生端過濾功能,此時學(xué)生機(jī)的過濾驅(qū)動開啟過濾功能,使得學(xué)生機(jī)僅能訪問過濾規(guī)則允許的IP地址,考試可以正常進(jìn)行,但局域網(wǎng)內(nèi)各主機(jī)間無法訪問,不能互相傳送數(shù)據(jù),學(xué)生機(jī)也無法訪問互聯(lián)網(wǎng)。考試結(jié)束后,服務(wù)器端管理程序選擇關(guān)閉學(xué)生端過濾功能,機(jī)房電腦的過濾驅(qū)動即關(guān)閉過濾功能,恢復(fù)正常使用狀態(tài),既可以局域網(wǎng)內(nèi)互相訪問,也可以訪問互聯(lián)網(wǎng)。此方案能有效地杜絕局域網(wǎng)內(nèi)互傳信息作弊的行為,保證了網(wǎng)絡(luò)考試成績的公平性。而且機(jī)房機(jī)器在考試與教學(xué)之間轉(zhuǎn)換很方便、快捷,使用方法簡單易學(xué)。
本綜合實(shí)驗(yàn)中心機(jī)房每年承擔(dān)2次國家計(jì)算機(jī)等級考試,多次期中、期末考試也采取網(wǎng)絡(luò)考試方式進(jìn)行。經(jīng)過測試及使用,本課題設(shè)計(jì)實(shí)現(xiàn)的NDIS中間層過濾驅(qū)動程序應(yīng)用在考試過程中,在有效防止利用網(wǎng)絡(luò)作弊的同時還能保證考試服務(wù)器的正常數(shù)據(jù)在網(wǎng)絡(luò)中安全傳輸,系統(tǒng)運(yùn)行安全穩(wěn)定。
NDIS中間層過濾驅(qū)動應(yīng)用在局域網(wǎng)考試系統(tǒng)中,可以有效地防止通過局域網(wǎng)傳輸數(shù)據(jù)作弊的行為,為網(wǎng)絡(luò)考試創(chuàng)造了良好的環(huán)境,同時對考試系統(tǒng)本身的數(shù)據(jù)傳輸,也起到了一定的保護(hù)作用。通過上述原理可以看出,此技術(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]郭興陽,高峰,唐朝京.一種NDIS中間層數(shù)據(jù)包過濾方法[J].計(jì)算機(jī)工程,2004,30(17):102-103.
[4]蔣華,袁紅林.基于NDIS中間驅(qū)動的包過濾器的設(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]陳小愛,劉海濤.基于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-),男,錫伯族,吉林榆樹人,工程師,主要從事計(jì)算機(jī)技術(shù)應(yīng)用研究。
(責(zé)任編輯 劉敏)