999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于NDIS中間層驅動的隱蔽通信研究與實現*

2014-05-22 02:25:56陸幼驪解海濤
通信技術 2014年6期

鄢 明,陸幼驪,解海濤

(海軍指軍學院浦口分院,江蘇 南京210000)

0 引言

隨著網絡防護手段日趨嚴密,一般情況下防火墻都會對數據包進行分析、選擇和過濾[1]。因此,如果要實現隱蔽通信,就必須首先穿透防火墻[2]。傳統計算機隱蔽通信方式大多數是基于HOOK的,不能從根本上解決通信數據包被防火墻截獲丟棄的問題。NDIS中間層驅動技術常用于防火墻和抓包軟件[3],數據包的發送和接收都需要經過中間層驅動,因此將NDIS中間層驅動技術應用于隱蔽通信,對于穿透防火墻比較理想。

為從根本上解決了防火墻穿透問題,最終實現隱蔽通信,文中提出了一種基于NDIS中間層驅動技術的隱蔽通信方法,并實現了一個通信例程。

1 NDIS中間層驅動

NDIS中間層驅動位于協議驅動和NDIS小端口驅動之間,在NDIS中起著轉發上層驅動程序送來的數據包,并將其向下層驅動程序發送的接口功能[4]。NDIS中間層驅動層次關系如圖1所示。

當前多數WINDOWS防火墻采用TDI層截取、分析數據包的技術[5]。而NDIS中間層驅動可以直接截獲來自網絡適配器來的數據包,比常見的WINDOWS防火墻更加底層[6],因此,采用NDIS中間層驅動技術實現通信,可以達到穿透防火墻通信的目的。

圖1 NDIS框架Fig.1 NDIS framework

2 隱蔽通信實現方式

2.1 隱蔽通信數據流

基于NDIS中間層驅動的隱蔽通信由3部分組成,服務端、NDIS中間層驅動和客戶端。數據流如圖2所示。

圖2 基于NDIS中間層驅動的隱蔽通信數據流程Fig.2 Convert communication data flow diagram based on NDIS intermediate driver

NDIS中間層驅動主要完成網絡適配器的綁定,截獲所有數據包,并且對所截獲的數據包進行解析,如果是客戶端發送過來的自定義協議通信數據包,則將它保存,并且激活服務端的數據等待事件,通知服務端程序來取數據。

服務端程序工作在應用層,程序初始化后,等待中間層驅動激活等待數據事件,如果事件被激活,則通過讀取共享內存數據的方式,獲出驅動中的通信數據包,然后進行解密、分析,再執行相應的指令,最后將執行結果加密后通過隱蔽通信通道發送給遠程的客戶端。

客戶端程序工作在應用層,程序初始化后,等待應用層的發送給服務端的數據,當接收到發送數據后,用自定義協議對數據進行封裝,并且對通信數據進行加密,最后發送給服務端,由服務端進行數據包的解析處理。

2.2 隱蔽通信設計

NDIS中間層驅動常被用于Windows防火墻設計,文中通過分析NDIS中間層驅動的原理,提出一種基于NDIS中間層驅動的隱蔽通信方式,并詳細論述了實現過程。

2.2.1 NDIS中間層驅動的收發數據包原理

NDIS中間層驅動主要利用PtReceive和PtReceivePacket完成數據包的接收。數據包接收原理如圖3所示。

圖3 NDIS中間層驅動接收數據包原理Fig.3 Principle diagram of NDIS receives packets

當底層驅動通知接收數據包時,NDIS中間層驅動就用PtReceive或PtReceivePacket來獲取完整的數據包。

NDIS中間層驅動主要利用MPSend和MPSend-Packet完成數據包的發送[7]。數據包發送原理如圖4所示。

圖4 NDIS中間層驅動發送數據包原理Fig.4 Principle diagram of NDIS Sending Packets

當協議驅動收到數據包后,調用NdisSend向下層發送數據報文,中間層驅動調用 MPSend或MPSendPacket函數將數據包繼續向下發送。

2.2.2 隱蔽通信的實現原理

常見隱蔽通信技術有進程隱藏、端口利用、DLL注入和NDIS HOOK技術,基于NDIS中間層驅動的隱蔽通信主要通過中間層驅動的數據包接收和發送原理實現。驅動首先綁定網卡,截獲網絡數據包,再對數據包進行分析,如果是自定義協議數據包,則將其保存下來,不往上層協議傳送;如果是普通數據包,則正常傳遞。具體做法是:修改PtReceive和Pt-ReceivePacket函數,添加數據包分析功能。NDIS中間層驅動首先通過PtReceive或PtReceivePacket接收數據包,在收到數據包后,進行解析,如果是自己定義的數據包,則直接截獲,并申請一段內存,進行保存,將原來的數據包丟棄,再通過消息機制和共享內存的方法,將數據包傳遞給應用層的服務端,等待服務端的響應數據包,當收到服務端的響應數據包后,直接調用NDIS的發包函數NdisSend向下層的小端口程序發送數據包,這樣利用我們自己設計的一套發送和接收數據包機制完成隱蔽通信。

2.2.3 自定義可靠報文傳輸協議

(1)報文格式

基于NDIS中間層驅動的隱蔽通信使用自定義的可靠傳輸協議。報文格式如圖5所示。

圖5 隱蔽通信可靠傳輸協議報文格式Fig.5 Reliable transport protocol message format of convert communication

報文頭部大小為10個字節,各字段作用如下:

協議標志用于區分協議的類型,定義“HD”的ASCⅡ碼來表示NDIS隱蔽通信協議,NDIS中間層驅動截獲數據包后,通過分析數據包協議標志位來判斷數據包的類型,并根據判斷結果進行后面的處理。

命令類型用于區分發送給服務端的命令類型,“-c”表示cmd命令,“-f”表示文件傳輸命令,此標志位可以進行擴展。服務端根據命令類型,調用相應的模塊,執行相應的命令。

數據包類型用于區分數據包類型,其中“1”表示命令數據包,“0”表示普通通信數據包。如果是命令數據包,NDIS中間層驅動將其轉發給服務端執行命令,如果是通信數據包則將數據包進行正常的傳輸。

傳輸結束標志用于表示數據傳輸結束,為“1”時表示數據傳輸結束。

數據傳輸總長度用于記錄傳輸的數據總長度,當接收方實際接收數據的總長度與數據傳輸總長度標志位的數值一樣時,則表示傳輸完成,此時要將傳輸結束標志設置為“1”。

數據包序列用于記錄數據包的傳輸序列,建立數據包確認重傳機制。

數據包大小用于記錄當前數據包的數據字段長度。

數據段存儲用于傳輸數據。

(2)數據包封裝流程

文中采用基于UDP協議擴展的自定義協議進行通信,數據包的封裝逐層進行封裝。流程如圖6所示。

圖6 數據包封裝流程Fig.6 Flow chart of packet encapsulation

通信數據產生后,首先加上NDIS中間層傳輸協議的首部,然后向下層傳輸,在UDP層加上UDP協議首部,再往下傳輸,在IP層加上IP協議首部,最后加上以太網首部,封裝成以太網幀。

(3)確認重傳機制

由于網絡的不穩定性,為了保證通信的穩定性,必須要建立數據傳輸的確認重傳機制。由于是隱蔽通信,通信數據量不大,所以文中采用在串行傳輸的基礎上實現序列確認重傳的機制,具體設計為:在每次通信中,數據包發送方在發包后,等待確認報文,接收方接收到數據包后發一個數據包接收確認包,發送方收到數據包接收確認包后,再進行下一個數據包的發送,如果沒有收到確認包則重發。

假設A向B發包,A發送數據包后等待B的確認報文,如果A收到確認報文,檢測確認報文的包序列是否比A發送包序列大1,如果是,則繼續發送數據包,直到A收到結束報文,否則重發。具體流程如圖7所示。

圖7 數據包確認重傳機制流程Fig.7 Flow chat of packets confirmation and retransmission mechanism

(4)超時重傳及流量控制

為保證傳輸的穩定性,文中設計了超時重傳及流量控制機制,具體做法是:維護一個重傳定時器,以進行超時重傳,考慮到本系統的通信數據量較小,且對數據處理的實時性要求高,設計一個動態計算超時時間間隔的算法代價高,對本系統的意義不大,因此文中將重傳定時器設定為固定值10 s,當超過這個時間,接收方仍沒有收到確認報文,則認為上一個數據包沒有收到,需要進行重傳。同時考慮到通信時的網絡鏈路狀態,當超時重傳的次數過多時,需要暫停通信,間隔一段時間后再重新傳送數據,文中通過維護一個重傳計數器,當通信數據包發生重傳則加1,重傳的次數大于5次時,進行流量控制,暫停通信,間隔60 s后重新發送當前數據包。

2.2.4 客戶端設計

客戶端采用B/S架構,需要解決通信數據的傳輸和接收問題。

客戶端采用Windows Socket機制實現數據包的接收和發送,通信協議使用UDP。客戶端數據包發送和接收流程如圖8所示。

圖8 客戶端數據包發送和接收流程Fig.8 Flow chart of client data packets sending and receiving

當客戶端需要發送數據時,首先建立Socket,需要設定的主要參數有通信IP地址和通信端口號,然后對通信數據進行封裝,加上NDIS通信協議的首部,生成最終的發送數據包,最后直接調用Windows Socket的發送API進行發送。客戶端發送完數據后,等待遠程的服務端響應數據包,當接收到服務端的數據包后,對數據包進行解析,在客戶端顯示解析的結果,完成整個通信數據的發送和接收。

2.2.5 服務端設計

服務端主要是與和中間層驅動進行通信,需要解決和中間層驅動的交互問題,指令的獲取和執行問題。

(1)驅動交互

服務端主要采用消息機制實現與NDIS中間層驅動的交互。主要消息有:取數據消息、客戶端數據到來消息。具體的消息處理流程如圖9所示。

圖9 消息處理流程Fig.9 Message processing flow chart

NDIS中間層驅動初始化消息后,循環等待客戶端的數據包,當接收到客戶端數據包后,激活客戶端數據到來消息,通知服務端來取數據,并且等待服務端的取數據消息。

服務端初始化消息后,循環等待NDIS中間層驅動激活客戶端的數據到來消息,當消息被激活后,向驅動取來自客戶端的指令數據,并且激活取數據消息。

(2)指令的獲取與執行

服務端與NDIS中間層驅動的通信采用共享內存的方式,當NDIS中間層驅動收到客戶端數據包后,將其拷貝至共享內存中,服務端通過訪問共享內存獲得客戶端的指令數據。取指令流程如圖10所示。

圖10 服務端取指令流程Fig.10 Flow chart of server instruction fetching

服務端的指令執行采用CMDShell和管道技術實現。具體流程如圖11所示。

圖11 命令執行流程Fig.11 Flow chart of command execution

文中采用Windows提供的CMDShell執行命令。CMDShell是用戶與操作系統對話的一個接口,客戶端發送來的命令通過 CMDShell告訴操作系統執行。

管道技術是操作系統常用的進程間通信機制[8],它是一塊內存緩沖區,進程間可通過管道進行通信。文中采用匿名管道實現命令執行結果的傳輸。

服務端獲取客戶端的命令數據包后,首先對數據包進行解析,獲取命令,然后調用Windows CMDShell執行命令,再創建管道,將命令寫入管道,獲取最終的命令執行結果。

(3)數據包發送

服務端的數據包封裝和數據包的發送,采用驅動通信和數據包封裝技術實現。發送流程如圖12所示。

文中采用的驅動通信技術主要是利用共享內存機制和IRP機制完成。服務端采用的數據包封裝技術與客戶端的數據包封裝原理一樣,采用逐層封裝的方法。

圖12 服務端數據包發送流程Fig.12 Flow chart of server sending packets

2.2.6 NDIS 中間層驅動設計

NDIS中間層驅動設計是文中的核心內容,主要完成數據包的截獲、數據包的分析處理和數據包的接收發送,使用NDIS5.0進行開發。

(1)數據包分析處理

數據包的分析處理包括數據的截獲、分析、處理。數據包的截獲功能,采用數據包的拷貝和丟棄技術實現。流程如圖13所示。

圖13 數據包截獲流程Fig.13 Flow chart of data packets interception

NDIS驅動綁定網卡后,可獲得綁定網卡的所有通信數據包,通過分析數據包中的協議標志位,來判斷是否是隱蔽通信數據包,如果是隱蔽通信數據包,則將數據包拷貝至驅動的數據鏈表,通知服務端程序取數據,并將包標志設為丟棄。如果不是,則不做處理,正常向上傳遞。

數據包的分析和處理主要采用協議解析技術和消息機制實現。流程如圖14所示。

圖14 數據包分析處理流程Fig.14 Flow chart of packet analysis

中間層驅動獲得客戶端的通信數據包后,首先根據NDIS通信協議進行解析,獲得包類型大小,再將數據包存入共享內存,激活客戶端的數據到來消息,通知服務端取數據,并且等待取數據消息的激活。

(2)數據包接收發送

NDIS中間層驅動的數據包接收發送采用共享內存、IRP請求實現。流程如圖15所示。

圖15 NDIS中間層驅動接收發送數據包流程Fig.15 Flow chart of NDIS receiving and sending packet

當服務端有數據向客戶端發送時,首先服務端將數據包寫入共享內存,并且向NDIS中間層驅動發IRP請求,NDIS中間層驅動響應IRP請求,從共享內存中取出發送數據包,最后通過調用NDIS的發包函數NdisSend向下層的小端口程序發送數據包。

3 測試與結果

3.1 測試環境

文中測試環境需要主機6臺,其中:服務端主機5臺,客戶端主機一臺,具體配置如表1所示。

表1 測試環境配置Table 1 Test environment configuration table

客戶端主機分別安裝ZonAlarm、金山衛士、Comodo防火墻、Mcafee個人防火墻和Mcafee專業版防火墻。服務端與客戶端主機處于同一網段。

3.2 測試方法

測試采用對比測試法,即通過將基于NDIS中間層驅動的隱蔽通信程序與一個基于SOCKET通信的例程進行對比測試。

首先采用驅動安裝工具或手動安裝的方法,先將驅動安裝在服務端主機上,再將服務端程序拷貝到服務端主機上,并在服務端主機安裝測試用的防火墻,將防火墻設置為禁止服務端程序連接網絡,然后在另一臺客戶端主機安裝客戶端程序,最后在客戶端發送命令給服務端,檢測通信情況并記錄結果。

在服務端和客戶端主機分別安裝基于SOCKET通信的服務端程序和客戶端程序,防火墻禁止服務端程序訪問網絡,相互發送通信數據,檢測通信情況并記錄結果。

3.3 測試結果

通過對比記錄的通信情況,分析得到測試結果如表2所示。

表2 測試結果Table 2 Test results table

測試表明,在安裝有金山衛士的計算機,采用傳統SOCKET通信和文中介紹的基于NIDS中間層驅動的通信方式,服務端和客戶端都能夠進行正常通信。而對于其它工作在TDI層的防火墻,采用文中所述的隱蔽通信方式,可以穿透防火墻進行通信,如果采用傳統SOCKET的通信方式,則通信完全被防火墻阻斷。

4 結語

文中采用基于NDIS中間層驅動技術實現的隱蔽通信方式,相對于常見Windows防火墻在Windows網絡體系中的所處的工作層次要低,因此,隱蔽性較高、穿透能力也較好。此外,NDIS中間層驅動技術不但可應用于隱蔽通信,而且可應用于木馬通信、防火墻技術,對于信息安全和防火墻技術的研究有一定的啟示作用。

[1]王正.網絡安全中的防火墻技術探討[J].通信技術,2008,41(08):218-220.WANG Zheng.Firewall Technology in Computer Network Security[J].Communications Technology,2008,41(08):218-220.

[2]宋志剛,郭林.基于NdisHook的木馬隱蔽信道模型[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技術的個人防火墻設計與實現[J].計算機應用與軟件,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]譚文,楊瀟,邵堅磊.Windows內核安全編程[M].北京:電子工業出版社,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]劉福超,倪佑生,付素明.個人防火墻穿透技術研究[J].信息安全與信息保密,2009(09):94-95.LIU Fu-chao,NI You-sheng,FU Su-ming.A Aersonal Firewall Penetration Technology Research[J].Information Security and Communications Privacy,2009(09):94 -95.

[6]劉文濤.基于NDIS驅動的網絡數據捕獲研究[J].電腦知識與技術,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技術在個人信息安全方面的應用[J].網絡安全技術與應用,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命名管道技術的分析與實現[J].電腦與信息技術,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.

主站蜘蛛池模板: 日韩视频精品在线| 亚洲人成网站在线播放2019| 手机精品视频在线观看免费| 日韩少妇激情一区二区| 欧美国产精品不卡在线观看| 亚洲精品麻豆| 九九热视频精品在线| 日本高清在线看免费观看| 呦视频在线一区二区三区| 国产91全国探花系列在线播放| 91网站国产| 天天色天天操综合网| 亚洲色图综合在线| 国产日韩精品欧美一区灰| 青青草91视频| 国产9191精品免费观看| 日本成人不卡视频| 欧美成人精品一区二区| 成人久久精品一区二区三区| 久热精品免费| 国产欧美视频在线观看| 婷婷丁香在线观看| 国产成人免费高清AⅤ| 黄色网页在线观看| 日韩在线永久免费播放| aaa国产一级毛片| 久久精品视频亚洲| 日本午夜视频在线观看| 乱系列中文字幕在线视频| 亚洲一级无毛片无码在线免费视频| 国产91精选在线观看| 草草线在成年免费视频2| 999精品在线视频| 国产精品露脸视频| 免费观看无遮挡www的小视频| 91视频区| 国产H片无码不卡在线视频| 国产精品xxx| 专干老肥熟女视频网站| 国产精品主播| 漂亮人妻被中出中文字幕久久| 伊大人香蕉久久网欧美| 亚洲福利一区二区三区| AV在线天堂进入| 日韩亚洲综合在线| www.亚洲一区| 中文字幕在线看| 中文字幕在线播放不卡| 中文字幕在线日韩91| 国产女人18毛片水真多1| 久久久久久久久亚洲精品| 在线毛片网站| 国产欧美日韩视频一区二区三区| 国产午夜一级毛片| 91亚洲免费| 久久毛片网| 91久久夜色精品国产网站| 五月天在线网站| 小说区 亚洲 自拍 另类| 成人韩免费网站| 成人国产免费| 国产日韩欧美一区二区三区在线| 免费国产高清视频| 美女毛片在线| 超碰91免费人妻| 都市激情亚洲综合久久| 亚洲中文字幕无码mv| 97久久免费视频| 亚洲综合18p| 青青操国产| 国产在线精品香蕉麻豆| 国产又黄又硬又粗| 99久久国产综合精品女同| а∨天堂一区中文字幕| 午夜国产理论| 伊人久久大香线蕉影院| 91色老久久精品偷偷蜜臀| 国产91麻豆视频| 日韩天堂视频| 婷婷激情五月网| 日韩在线欧美在线| 日韩福利在线观看|