鄢 明,陸幼驪,解海濤
(海軍指軍學(xué)院浦口分院,江蘇 南京210000)
隨著網(wǎng)絡(luò)防護(hù)手段日趨嚴(yán)密,一般情況下防火墻都會(huì)對(duì)數(shù)據(jù)包進(jìn)行分析、選擇和過(guò)濾[1]。因此,如果要實(shí)現(xiàn)隱蔽通信,就必須首先穿透防火墻[2]。傳統(tǒng)計(jì)算機(jī)隱蔽通信方式大多數(shù)是基于HOOK的,不能從根本上解決通信數(shù)據(jù)包被防火墻截獲丟棄的問(wèn)題。NDIS中間層驅(qū)動(dòng)技術(shù)常用于防火墻和抓包軟件[3],數(shù)據(jù)包的發(fā)送和接收都需要經(jīng)過(guò)中間層驅(qū)動(dòng),因此將NDIS中間層驅(qū)動(dòng)技術(shù)應(yīng)用于隱蔽通信,對(duì)于穿透防火墻比較理想。
為從根本上解決了防火墻穿透問(wèn)題,最終實(shí)現(xiàn)隱蔽通信,文中提出了一種基于NDIS中間層驅(qū)動(dòng)技術(shù)的隱蔽通信方法,并實(shí)現(xiàn)了一個(gè)通信例程。
NDIS中間層驅(qū)動(dòng)位于協(xié)議驅(qū)動(dòng)和NDIS小端口驅(qū)動(dòng)之間,在NDIS中起著轉(zhuǎn)發(fā)上層驅(qū)動(dòng)程序送來(lái)的數(shù)據(jù)包,并將其向下層驅(qū)動(dòng)程序發(fā)送的接口功能[4]。NDIS中間層驅(qū)動(dòng)層次關(guān)系如圖1所示。
當(dāng)前多數(shù)WINDOWS防火墻采用TDI層截取、分析數(shù)據(jù)包的技術(shù)[5]。而NDIS中間層驅(qū)動(dòng)可以直接截獲來(lái)自網(wǎng)絡(luò)適配器來(lái)的數(shù)據(jù)包,比常見(jiàn)的WINDOWS防火墻更加底層[6],因此,采用NDIS中間層驅(qū)動(dòng)技術(shù)實(shí)現(xiàn)通信,可以達(dá)到穿透防火墻通信的目的。
圖1 NDIS框架Fig.1 NDIS framework
基于NDIS中間層驅(qū)動(dòng)的隱蔽通信由3部分組成,服務(wù)端、NDIS中間層驅(qū)動(dòng)和客戶端。數(shù)據(jù)流如圖2所示。
圖2 基于NDIS中間層驅(qū)動(dòng)的隱蔽通信數(shù)據(jù)流程Fig.2 Convert communication data flow diagram based on NDIS intermediate driver
NDIS中間層驅(qū)動(dòng)主要完成網(wǎng)絡(luò)適配器的綁定,截獲所有數(shù)據(jù)包,并且對(duì)所截獲的數(shù)據(jù)包進(jìn)行解析,如果是客戶端發(fā)送過(guò)來(lái)的自定義協(xié)議通信數(shù)據(jù)包,則將它保存,并且激活服務(wù)端的數(shù)據(jù)等待事件,通知服務(wù)端程序來(lái)取數(shù)據(jù)。
服務(wù)端程序工作在應(yīng)用層,程序初始化后,等待中間層驅(qū)動(dòng)激活等待數(shù)據(jù)事件,如果事件被激活,則通過(guò)讀取共享內(nèi)存數(shù)據(jù)的方式,獲出驅(qū)動(dòng)中的通信數(shù)據(jù)包,然后進(jìn)行解密、分析,再執(zhí)行相應(yīng)的指令,最后將執(zhí)行結(jié)果加密后通過(guò)隱蔽通信通道發(fā)送給遠(yuǎn)程的客戶端。
客戶端程序工作在應(yīng)用層,程序初始化后,等待應(yīng)用層的發(fā)送給服務(wù)端的數(shù)據(jù),當(dāng)接收到發(fā)送數(shù)據(jù)后,用自定義協(xié)議對(duì)數(shù)據(jù)進(jìn)行封裝,并且對(duì)通信數(shù)據(jù)進(jìn)行加密,最后發(fā)送給服務(wù)端,由服務(wù)端進(jìn)行數(shù)據(jù)包的解析處理。
NDIS中間層驅(qū)動(dòng)常被用于Windows防火墻設(shè)計(jì),文中通過(guò)分析NDIS中間層驅(qū)動(dòng)的原理,提出一種基于NDIS中間層驅(qū)動(dòng)的隱蔽通信方式,并詳細(xì)論述了實(shí)現(xiàn)過(guò)程。
2.2.1 NDIS中間層驅(qū)動(dòng)的收發(fā)數(shù)據(jù)包原理
NDIS中間層驅(qū)動(dòng)主要利用PtReceive和PtReceivePacket完成數(shù)據(jù)包的接收。數(shù)據(jù)包接收原理如圖3所示。
圖3 NDIS中間層驅(qū)動(dòng)接收數(shù)據(jù)包原理Fig.3 Principle diagram of NDIS receives packets
當(dāng)?shù)讓域?qū)動(dòng)通知接收數(shù)據(jù)包時(shí),NDIS中間層驅(qū)動(dòng)就用PtReceive或PtReceivePacket來(lái)獲取完整的數(shù)據(jù)包。
NDIS中間層驅(qū)動(dòng)主要利用MPSend和MPSend-Packet完成數(shù)據(jù)包的發(fā)送[7]。數(shù)據(jù)包發(fā)送原理如圖4所示。
圖4 NDIS中間層驅(qū)動(dòng)發(fā)送數(shù)據(jù)包原理Fig.4 Principle diagram of NDIS Sending Packets
當(dāng)協(xié)議驅(qū)動(dòng)收到數(shù)據(jù)包后,調(diào)用NdisSend向下層發(fā)送數(shù)據(jù)報(bào)文,中間層驅(qū)動(dòng)調(diào)用 MPSend或MPSendPacket函數(shù)將數(shù)據(jù)包繼續(xù)向下發(fā)送。
2.2.2 隱蔽通信的實(shí)現(xiàn)原理
常見(jiàn)隱蔽通信技術(shù)有進(jìn)程隱藏、端口利用、DLL注入和NDIS HOOK技術(shù),基于NDIS中間層驅(qū)動(dòng)的隱蔽通信主要通過(guò)中間層驅(qū)動(dòng)的數(shù)據(jù)包接收和發(fā)送原理實(shí)現(xiàn)。驅(qū)動(dòng)首先綁定網(wǎng)卡,截獲網(wǎng)絡(luò)數(shù)據(jù)包,再對(duì)數(shù)據(jù)包進(jìn)行分析,如果是自定義協(xié)議數(shù)據(jù)包,則將其保存下來(lái),不往上層協(xié)議傳送;如果是普通數(shù)據(jù)包,則正常傳遞。具體做法是:修改PtReceive和Pt-ReceivePacket函數(shù),添加數(shù)據(jù)包分析功能。NDIS中間層驅(qū)動(dòng)首先通過(guò)PtReceive或PtReceivePacket接收數(shù)據(jù)包,在收到數(shù)據(jù)包后,進(jìn)行解析,如果是自己定義的數(shù)據(jù)包,則直接截獲,并申請(qǐng)一段內(nèi)存,進(jìn)行保存,將原來(lái)的數(shù)據(jù)包丟棄,再通過(guò)消息機(jī)制和共享內(nèi)存的方法,將數(shù)據(jù)包傳遞給應(yīng)用層的服務(wù)端,等待服務(wù)端的響應(yīng)數(shù)據(jù)包,當(dāng)收到服務(wù)端的響應(yīng)數(shù)據(jù)包后,直接調(diào)用NDIS的發(fā)包函數(shù)NdisSend向下層的小端口程序發(fā)送數(shù)據(jù)包,這樣利用我們自己設(shè)計(jì)的一套發(fā)送和接收數(shù)據(jù)包機(jī)制完成隱蔽通信。
2.2.3 自定義可靠報(bào)文傳輸協(xié)議
(1)報(bào)文格式
基于NDIS中間層驅(qū)動(dòng)的隱蔽通信使用自定義的可靠傳輸協(xié)議。報(bào)文格式如圖5所示。
圖5 隱蔽通信可靠傳輸協(xié)議報(bào)文格式Fig.5 Reliable transport protocol message format of convert communication
報(bào)文頭部大小為10個(gè)字節(jié),各字段作用如下:
協(xié)議標(biāo)志用于區(qū)分協(xié)議的類(lèi)型,定義“HD”的ASCⅡ碼來(lái)表示NDIS隱蔽通信協(xié)議,NDIS中間層驅(qū)動(dòng)截獲數(shù)據(jù)包后,通過(guò)分析數(shù)據(jù)包協(xié)議標(biāo)志位來(lái)判斷數(shù)據(jù)包的類(lèi)型,并根據(jù)判斷結(jié)果進(jìn)行后面的處理。
命令類(lèi)型用于區(qū)分發(fā)送給服務(wù)端的命令類(lèi)型,“-c”表示cmd命令,“-f”表示文件傳輸命令,此標(biāo)志位可以進(jìn)行擴(kuò)展。服務(wù)端根據(jù)命令類(lèi)型,調(diào)用相應(yīng)的模塊,執(zhí)行相應(yīng)的命令。
數(shù)據(jù)包類(lèi)型用于區(qū)分?jǐn)?shù)據(jù)包類(lèi)型,其中“1”表示命令數(shù)據(jù)包,“0”表示普通通信數(shù)據(jù)包。如果是命令數(shù)據(jù)包,NDIS中間層驅(qū)動(dòng)將其轉(zhuǎn)發(fā)給服務(wù)端執(zhí)行命令,如果是通信數(shù)據(jù)包則將數(shù)據(jù)包進(jìn)行正常的傳輸。
傳輸結(jié)束標(biāo)志用于表示數(shù)據(jù)傳輸結(jié)束,為“1”時(shí)表示數(shù)據(jù)傳輸結(jié)束。
數(shù)據(jù)傳輸總長(zhǎng)度用于記錄傳輸?shù)臄?shù)據(jù)總長(zhǎng)度,當(dāng)接收方實(shí)際接收數(shù)據(jù)的總長(zhǎng)度與數(shù)據(jù)傳輸總長(zhǎng)度標(biāo)志位的數(shù)值一樣時(shí),則表示傳輸完成,此時(shí)要將傳輸結(jié)束標(biāo)志設(shè)置為“1”。
數(shù)據(jù)包序列用于記錄數(shù)據(jù)包的傳輸序列,建立數(shù)據(jù)包確認(rèn)重傳機(jī)制。
數(shù)據(jù)包大小用于記錄當(dāng)前數(shù)據(jù)包的數(shù)據(jù)字段長(zhǎng)度。
數(shù)據(jù)段存儲(chǔ)用于傳輸數(shù)據(jù)。
(2)數(shù)據(jù)包封裝流程
文中采用基于UDP協(xié)議擴(kuò)展的自定義協(xié)議進(jìn)行通信,數(shù)據(jù)包的封裝逐層進(jìn)行封裝。流程如圖6所示。
圖6 數(shù)據(jù)包封裝流程Fig.6 Flow chart of packet encapsulation
通信數(shù)據(jù)產(chǎn)生后,首先加上NDIS中間層傳輸協(xié)議的首部,然后向下層傳輸,在UDP層加上UDP協(xié)議首部,再往下傳輸,在IP層加上IP協(xié)議首部,最后加上以太網(wǎng)首部,封裝成以太網(wǎng)幀。
(3)確認(rèn)重傳機(jī)制
由于網(wǎng)絡(luò)的不穩(wěn)定性,為了保證通信的穩(wěn)定性,必須要建立數(shù)據(jù)傳輸?shù)拇_認(rèn)重傳機(jī)制。由于是隱蔽通信,通信數(shù)據(jù)量不大,所以文中采用在串行傳輸?shù)幕A(chǔ)上實(shí)現(xiàn)序列確認(rèn)重傳的機(jī)制,具體設(shè)計(jì)為:在每次通信中,數(shù)據(jù)包發(fā)送方在發(fā)包后,等待確認(rèn)報(bào)文,接收方接收到數(shù)據(jù)包后發(fā)一個(gè)數(shù)據(jù)包接收確認(rèn)包,發(fā)送方收到數(shù)據(jù)包接收確認(rèn)包后,再進(jìn)行下一個(gè)數(shù)據(jù)包的發(fā)送,如果沒(méi)有收到確認(rèn)包則重發(fā)。
假設(shè)A向B發(fā)包,A發(fā)送數(shù)據(jù)包后等待B的確認(rèn)報(bào)文,如果A收到確認(rèn)報(bào)文,檢測(cè)確認(rèn)報(bào)文的包序列是否比A發(fā)送包序列大1,如果是,則繼續(xù)發(fā)送數(shù)據(jù)包,直到A收到結(jié)束報(bào)文,否則重發(fā)。具體流程如圖7所示。
圖7 數(shù)據(jù)包確認(rèn)重傳機(jī)制流程Fig.7 Flow chat of packets confirmation and retransmission mechanism
(4)超時(shí)重傳及流量控制
為保證傳輸?shù)姆€(wěn)定性,文中設(shè)計(jì)了超時(shí)重傳及流量控制機(jī)制,具體做法是:維護(hù)一個(gè)重傳定時(shí)器,以進(jìn)行超時(shí)重傳,考慮到本系統(tǒng)的通信數(shù)據(jù)量較小,且對(duì)數(shù)據(jù)處理的實(shí)時(shí)性要求高,設(shè)計(jì)一個(gè)動(dòng)態(tài)計(jì)算超時(shí)時(shí)間間隔的算法代價(jià)高,對(duì)本系統(tǒng)的意義不大,因此文中將重傳定時(shí)器設(shè)定為固定值10 s,當(dāng)超過(guò)這個(gè)時(shí)間,接收方仍沒(méi)有收到確認(rèn)報(bào)文,則認(rèn)為上一個(gè)數(shù)據(jù)包沒(méi)有收到,需要進(jìn)行重傳。同時(shí)考慮到通信時(shí)的網(wǎng)絡(luò)鏈路狀態(tài),當(dāng)超時(shí)重傳的次數(shù)過(guò)多時(shí),需要暫停通信,間隔一段時(shí)間后再重新傳送數(shù)據(jù),文中通過(guò)維護(hù)一個(gè)重傳計(jì)數(shù)器,當(dāng)通信數(shù)據(jù)包發(fā)生重傳則加1,重傳的次數(shù)大于5次時(shí),進(jìn)行流量控制,暫停通信,間隔60 s后重新發(fā)送當(dāng)前數(shù)據(jù)包。
2.2.4 客戶端設(shè)計(jì)
客戶端采用B/S架構(gòu),需要解決通信數(shù)據(jù)的傳輸和接收問(wèn)題。
客戶端采用Windows Socket機(jī)制實(shí)現(xiàn)數(shù)據(jù)包的接收和發(fā)送,通信協(xié)議使用UDP。客戶端數(shù)據(jù)包發(fā)送和接收流程如圖8所示。
圖8 客戶端數(shù)據(jù)包發(fā)送和接收流程Fig.8 Flow chart of client data packets sending and receiving
當(dāng)客戶端需要發(fā)送數(shù)據(jù)時(shí),首先建立Socket,需要設(shè)定的主要參數(shù)有通信IP地址和通信端口號(hào),然后對(duì)通信數(shù)據(jù)進(jìn)行封裝,加上NDIS通信協(xié)議的首部,生成最終的發(fā)送數(shù)據(jù)包,最后直接調(diào)用Windows Socket的發(fā)送API進(jìn)行發(fā)送??蛻舳税l(fā)送完數(shù)據(jù)后,等待遠(yuǎn)程的服務(wù)端響應(yīng)數(shù)據(jù)包,當(dāng)接收到服務(wù)端的數(shù)據(jù)包后,對(duì)數(shù)據(jù)包進(jìn)行解析,在客戶端顯示解析的結(jié)果,完成整個(gè)通信數(shù)據(jù)的發(fā)送和接收。
2.2.5 服務(wù)端設(shè)計(jì)
服務(wù)端主要是與和中間層驅(qū)動(dòng)進(jìn)行通信,需要解決和中間層驅(qū)動(dòng)的交互問(wèn)題,指令的獲取和執(zhí)行問(wèn)題。
(1)驅(qū)動(dòng)交互
服務(wù)端主要采用消息機(jī)制實(shí)現(xiàn)與NDIS中間層驅(qū)動(dòng)的交互。主要消息有:取數(shù)據(jù)消息、客戶端數(shù)據(jù)到來(lái)消息。具體的消息處理流程如圖9所示。
圖9 消息處理流程Fig.9 Message processing flow chart
NDIS中間層驅(qū)動(dòng)初始化消息后,循環(huán)等待客戶端的數(shù)據(jù)包,當(dāng)接收到客戶端數(shù)據(jù)包后,激活客戶端數(shù)據(jù)到來(lái)消息,通知服務(wù)端來(lái)取數(shù)據(jù),并且等待服務(wù)端的取數(shù)據(jù)消息。
服務(wù)端初始化消息后,循環(huán)等待NDIS中間層驅(qū)動(dòng)激活客戶端的數(shù)據(jù)到來(lái)消息,當(dāng)消息被激活后,向驅(qū)動(dòng)取來(lái)自客戶端的指令數(shù)據(jù),并且激活取數(shù)據(jù)消息。
(2)指令的獲取與執(zhí)行
服務(wù)端與NDIS中間層驅(qū)動(dòng)的通信采用共享內(nèi)存的方式,當(dāng)NDIS中間層驅(qū)動(dòng)收到客戶端數(shù)據(jù)包后,將其拷貝至共享內(nèi)存中,服務(wù)端通過(guò)訪問(wèn)共享內(nèi)存獲得客戶端的指令數(shù)據(jù)。取指令流程如圖10所示。
圖10 服務(wù)端取指令流程Fig.10 Flow chart of server instruction fetching
服務(wù)端的指令執(zhí)行采用CMDShell和管道技術(shù)實(shí)現(xiàn)。具體流程如圖11所示。
圖11 命令執(zhí)行流程Fig.11 Flow chart of command execution
文中采用Windows提供的CMDShell執(zhí)行命令。CMDShell是用戶與操作系統(tǒng)對(duì)話的一個(gè)接口,客戶端發(fā)送來(lái)的命令通過(guò) CMDShell告訴操作系統(tǒng)執(zhí)行。
管道技術(shù)是操作系統(tǒng)常用的進(jìn)程間通信機(jī)制[8],它是一塊內(nèi)存緩沖區(qū),進(jìn)程間可通過(guò)管道進(jìn)行通信。文中采用匿名管道實(shí)現(xiàn)命令執(zhí)行結(jié)果的傳輸。
服務(wù)端獲取客戶端的命令數(shù)據(jù)包后,首先對(duì)數(shù)據(jù)包進(jìn)行解析,獲取命令,然后調(diào)用Windows CMDShell執(zhí)行命令,再創(chuàng)建管道,將命令寫(xiě)入管道,獲取最終的命令執(zhí)行結(jié)果。
(3)數(shù)據(jù)包發(fā)送
服務(wù)端的數(shù)據(jù)包封裝和數(shù)據(jù)包的發(fā)送,采用驅(qū)動(dòng)通信和數(shù)據(jù)包封裝技術(shù)實(shí)現(xiàn)。發(fā)送流程如圖12所示。
文中采用的驅(qū)動(dòng)通信技術(shù)主要是利用共享內(nèi)存機(jī)制和IRP機(jī)制完成。服務(wù)端采用的數(shù)據(jù)包封裝技術(shù)與客戶端的數(shù)據(jù)包封裝原理一樣,采用逐層封裝的方法。
圖12 服務(wù)端數(shù)據(jù)包發(fā)送流程Fig.12 Flow chart of server sending packets
2.2.6 NDIS 中間層驅(qū)動(dòng)設(shè)計(jì)
NDIS中間層驅(qū)動(dòng)設(shè)計(jì)是文中的核心內(nèi)容,主要完成數(shù)據(jù)包的截獲、數(shù)據(jù)包的分析處理和數(shù)據(jù)包的接收發(fā)送,使用NDIS5.0進(jìn)行開(kāi)發(fā)。
(1)數(shù)據(jù)包分析處理
數(shù)據(jù)包的分析處理包括數(shù)據(jù)的截獲、分析、處理。數(shù)據(jù)包的截獲功能,采用數(shù)據(jù)包的拷貝和丟棄技術(shù)實(shí)現(xiàn)。流程如圖13所示。
圖13 數(shù)據(jù)包截獲流程Fig.13 Flow chart of data packets interception
NDIS驅(qū)動(dòng)綁定網(wǎng)卡后,可獲得綁定網(wǎng)卡的所有通信數(shù)據(jù)包,通過(guò)分析數(shù)據(jù)包中的協(xié)議標(biāo)志位,來(lái)判斷是否是隱蔽通信數(shù)據(jù)包,如果是隱蔽通信數(shù)據(jù)包,則將數(shù)據(jù)包拷貝至驅(qū)動(dòng)的數(shù)據(jù)鏈表,通知服務(wù)端程序取數(shù)據(jù),并將包標(biāo)志設(shè)為丟棄。如果不是,則不做處理,正常向上傳遞。
數(shù)據(jù)包的分析和處理主要采用協(xié)議解析技術(shù)和消息機(jī)制實(shí)現(xiàn)。流程如圖14所示。
圖14 數(shù)據(jù)包分析處理流程Fig.14 Flow chart of packet analysis
中間層驅(qū)動(dòng)獲得客戶端的通信數(shù)據(jù)包后,首先根據(jù)NDIS通信協(xié)議進(jìn)行解析,獲得包類(lèi)型大小,再將數(shù)據(jù)包存入共享內(nèi)存,激活客戶端的數(shù)據(jù)到來(lái)消息,通知服務(wù)端取數(shù)據(jù),并且等待取數(shù)據(jù)消息的激活。
(2)數(shù)據(jù)包接收發(fā)送
NDIS中間層驅(qū)動(dòng)的數(shù)據(jù)包接收發(fā)送采用共享內(nèi)存、IRP請(qǐng)求實(shí)現(xiàn)。流程如圖15所示。
圖15 NDIS中間層驅(qū)動(dòng)接收發(fā)送數(shù)據(jù)包流程Fig.15 Flow chart of NDIS receiving and sending packet
當(dāng)服務(wù)端有數(shù)據(jù)向客戶端發(fā)送時(shí),首先服務(wù)端將數(shù)據(jù)包寫(xiě)入共享內(nèi)存,并且向NDIS中間層驅(qū)動(dòng)發(fā)IRP請(qǐng)求,NDIS中間層驅(qū)動(dòng)響應(yīng)IRP請(qǐng)求,從共享內(nèi)存中取出發(fā)送數(shù)據(jù)包,最后通過(guò)調(diào)用NDIS的發(fā)包函數(shù)NdisSend向下層的小端口程序發(fā)送數(shù)據(jù)包。
文中測(cè)試環(huán)境需要主機(jī)6臺(tái),其中:服務(wù)端主機(jī)5臺(tái),客戶端主機(jī)一臺(tái),具體配置如表1所示。
表1 測(cè)試環(huán)境配置Table 1 Test environment configuration table
客戶端主機(jī)分別安裝ZonAlarm、金山衛(wèi)士、Comodo防火墻、Mcafee個(gè)人防火墻和Mcafee專(zhuān)業(yè)版防火墻。服務(wù)端與客戶端主機(jī)處于同一網(wǎng)段。
測(cè)試采用對(duì)比測(cè)試法,即通過(guò)將基于NDIS中間層驅(qū)動(dòng)的隱蔽通信程序與一個(gè)基于SOCKET通信的例程進(jìn)行對(duì)比測(cè)試。
首先采用驅(qū)動(dòng)安裝工具或手動(dòng)安裝的方法,先將驅(qū)動(dòng)安裝在服務(wù)端主機(jī)上,再將服務(wù)端程序拷貝到服務(wù)端主機(jī)上,并在服務(wù)端主機(jī)安裝測(cè)試用的防火墻,將防火墻設(shè)置為禁止服務(wù)端程序連接網(wǎng)絡(luò),然后在另一臺(tái)客戶端主機(jī)安裝客戶端程序,最后在客戶端發(fā)送命令給服務(wù)端,檢測(cè)通信情況并記錄結(jié)果。
在服務(wù)端和客戶端主機(jī)分別安裝基于SOCKET通信的服務(wù)端程序和客戶端程序,防火墻禁止服務(wù)端程序訪問(wèn)網(wǎng)絡(luò),相互發(fā)送通信數(shù)據(jù),檢測(cè)通信情況并記錄結(jié)果。
通過(guò)對(duì)比記錄的通信情況,分析得到測(cè)試結(jié)果如表2所示。
表2 測(cè)試結(jié)果Table 2 Test results table
測(cè)試表明,在安裝有金山衛(wèi)士的計(jì)算機(jī),采用傳統(tǒng)SOCKET通信和文中介紹的基于NIDS中間層驅(qū)動(dòng)的通信方式,服務(wù)端和客戶端都能夠進(jìn)行正常通信。而對(duì)于其它工作在TDI層的防火墻,采用文中所述的隱蔽通信方式,可以穿透防火墻進(jìn)行通信,如果采用傳統(tǒng)SOCKET的通信方式,則通信完全被防火墻阻斷。
文中采用基于NDIS中間層驅(qū)動(dòng)技術(shù)實(shí)現(xiàn)的隱蔽通信方式,相對(duì)于常見(jiàn)Windows防火墻在Windows網(wǎng)絡(luò)體系中的所處的工作層次要低,因此,隱蔽性較高、穿透能力也較好。此外,NDIS中間層驅(qū)動(dòng)技術(shù)不但可應(yīng)用于隱蔽通信,而且可應(yīng)用于木馬通信、防火墻技術(shù),對(duì)于信息安全和防火墻技術(shù)的研究有一定的啟示作用。
[1]王正.網(wǎng)絡(luò)安全中的防火墻技術(shù)探討[J].通信技術(shù),2008,41(08):218-220.WANG Zheng.Firewall Technology in Computer Network Security[J].Communications Technology,2008,41(08):218-220.
[2]宋志剛,郭林.基于NdisHook的木馬隱蔽信道模型[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28(15):3573 -3576.SONG Zhi- gang,GUO Lin.The Hidden Communication Model of NDIS Hook Based on Trojan[J].Computer Engineering and Design,2007,28(15):3573 -3576.
[3]范莉萍.基于NDIS技術(shù)的個(gè)人防火墻設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2008(08):259 -260.FAN Li- ping.The Design and Implementation of NDIS Based on Personnel Firewall[J].Computer Applications and Software,2008(08):259-260.
[4]譚文,楊瀟,邵堅(jiān)磊.Windows內(nèi)核安全編程[M].北京:電子工業(yè)出版社,2009:436-442.TAN Weng,YANG Xiao,SHAO Jian - lei.The Secure Programing of Windows Kernel[M].Bei Jing,Publishing House Of Electronics Industry,2009:436 -442.
[5]劉福超,倪佑生,付素明.個(gè)人防火墻穿透技術(shù)研究[J].信息安全與信息保密,2009(09):94-95.LIU Fu-chao,NI You-sheng,F(xiàn)U Su-ming.A Aersonal Firewall Penetration Technology Research[J].Information Security and Communications Privacy,2009(09):94 -95.
[6]劉文濤.基于NDIS驅(qū)動(dòng)的網(wǎng)絡(luò)數(shù)據(jù)捕獲研究[J].電腦知識(shí)與技術(shù),2010,6(03):571 -572.LIU Wen-tao.Network Data Capture Research based on NDIS Driver[J].Computer Knowledge and Technology,2010,6(03):571 -572.
[7]石磊,常桂然,曹斌.NDIS技術(shù)在個(gè)人信息安全方面的應(yīng)用[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2002(05):21-24.SHI Lei,CHANG Gui- ran,CAO Bing.Application of NDIS on Personal Information Security[J].Network Security Technology and Application,2002(05):21-24.
[8]周超,虞慧群.Windows命名管道技術(shù)的分析與實(shí)現(xiàn)[J].電腦與信息技術(shù),2007,15(06):18 -20.ZHOUChao,YU Hu - qun.Analysis and Implementation of Windows Named Pipe Technology[J].Computer and Information Technology,2007,15(06):18 -20.