韓少聰+陳玉慧+劉嘉華+康睿
摘 要: 針對企事業(yè)內(nèi)部網(wǎng)絡(luò)中存在的非法主機接入網(wǎng)絡(luò)產(chǎn)生的安全問題,設(shè)計了一種基于ARP協(xié)議的非法主機接入監(jiān)測系統(tǒng)。在該系統(tǒng)中,通過底層驅(qū)動阻斷操作系統(tǒng)ARP的收發(fā),構(gòu)造具有簽名的私有ARP實現(xiàn)主機接入的監(jiān)視及非法接入主機的識別和網(wǎng)絡(luò)通信阻斷。實驗結(jié)果表明,該系統(tǒng)可以感知并識別非法接入的設(shè)備,阻斷非法設(shè)備的通信,并可識別非法構(gòu)造的ARP主機。通過該系統(tǒng)可以快速、及時發(fā)現(xiàn)非法接入設(shè)備,降低非法設(shè)備的存活時間。
關(guān)鍵詞: ARP; 主機接入; 監(jiān)測系統(tǒng); 非法主機阻斷
中圖分類號: TN702?34 文獻標(biāo)識碼: A 文章編號: 1004?373X(2015)16?0133?05
Design of ARP?based monitoring system against illegal host connection
HAN Shaocong, CHEN Yuhui, LIU Jiahua, KANG Rui
(NARI Group Corporation/State Grid Electric Power Research Institute, Nanjing 210003, China)
Abstract: An ARP?based monitoring system against illegal hosts connection was designed to solve the security problems caused by illegal hosts access to the internal network of enterprises. In this system, by means of the communication of ARP in bottom driven interdiction operating system, the privately?owned ARP with signature was constructed to achieve the purpose of monitoring the hosts access, recognizing and interdicting the illegal access hosts. The experiment result show that the system can perceived illegal host access and block its communication. Meanwhile, the ARP hosts with illegal signature can be recognized. The illegally?accessed hosts can be perceived immediately by this system, which can reduce the survival time of illegal equipments.
Keywords: ARP; host connection; monitoring system; illegal host interdiction
0 引 言
隨著網(wǎng)絡(luò)的日益普及,各企事業(yè)單位也都建立了自己的內(nèi)部網(wǎng)絡(luò),如何及時感知接入網(wǎng)絡(luò)的設(shè)備,并阻斷非法接入設(shè)備通信,保護內(nèi)部網(wǎng)絡(luò)的信息安全成為網(wǎng)絡(luò)管理面臨的亟待解決的問題。目前在這方面已有許多較為成熟的研究[1?4]:通過IP與MAC地址對綁定,接入主機的IP及MAC地址與綁定列表中的對比判斷接入主機的合法性[1?3];通過監(jiān)視代理是否收到新接入主機的請求判斷其合法性[4]。這些方法存在以下不足:
(1) 非法主機通過修改其IP,MAC等信息冒充合法主機接入網(wǎng)絡(luò);
(2) 非法主機在合法主機上通過旁路偵聽技術(shù)獲取信息,并在非法主機上構(gòu)造信息偽裝成合法主機與監(jiān)視代理通信;
(3) 非法主機接入后會存活一段時間導(dǎo)致病毒等傳播。本文在研究ARP協(xié)議原理的基礎(chǔ)上對ARP協(xié)議進行了擴展,設(shè)計了一種基于ARP協(xié)議的非法主機接入監(jiān)測系統(tǒng),通過該系統(tǒng)可以快速、及時識別接入的設(shè)備并阻斷非法接入的設(shè)備。
1 ARP協(xié)議簡介
1.1 ARP協(xié)議工作原理
ARP(Address Resolution Protocol)全稱為地址解析協(xié)議,其基本功能就是實現(xiàn)設(shè)備IP地址和MAC地址的轉(zhuǎn)換,通過在ARP緩存列表中查找IP及MAC地址的對應(yīng)關(guān)系,確定目標(biāo)設(shè)備IP對應(yīng)的MAC地址,以便雙方可以進行通信[5]。當(dāng)主機接入網(wǎng)絡(luò)后會主動發(fā)送ARP廣播,并接收其他主機的ARP響應(yīng)。其工作原理如下:
每臺主機都會有一個ARP緩存區(qū),其中存放著表示IP及MAC地址對應(yīng)關(guān)系的ARP列表。當(dāng)兩臺主機A和B要進行通信時,主機A首先會檢查自己的ARP緩存列表中是否存在主機B的IP,MAC地址對,如果存在,則與主機B的IP對應(yīng)的MAC地址進行通信;如果不存在,那么主機A就會在本地網(wǎng)段內(nèi)發(fā)送ARP請求包,目的是查詢主機B的MAC地址,請求包中包括源主機A的IP地址和MAC地址、目的主機B的IP地址和MAC地址。本網(wǎng)段內(nèi)的其他主機收到主機A的ARP請求包后會判斷請求包中的目的IP是否與自己的IP相同,如果不同則忽略該請求包;當(dāng)主機B收到請求包后發(fā)現(xiàn)目的IP與自己的IP相同,那么主機B就會根據(jù)請求包的信息更新自己的ARP緩存列表,并向主機A發(fā)送ARP應(yīng)答包說明自己就是A要查詢的主機。主機A收到主機B的應(yīng)答包后會將得到的IP,MAC地址對添加到自己的ARP列表中,如果A一直未收到ARP應(yīng)答包,則表示ARP查詢失敗[6]。
1.2 ARP報文格式
ARP的數(shù)據(jù)包是封裝在以太網(wǎng)數(shù)據(jù)包中進行傳輸?shù)?,以太網(wǎng)幀格式如圖1所示,ARP數(shù)據(jù)報文格式如圖2所示(單位:B)。endprint
圖1 以太網(wǎng)幀格式
圖2 ARP報文格式
由圖1可以看出以太網(wǎng)幀長度最小為6+6+2+46+4=64 B,由圖2可以看出ARP報文長度固定為6+6+2+28=42 B,要發(fā)送ARP數(shù)據(jù)包還需要填充18 B才能達到以太網(wǎng)幀長度的要求。
2 NDIS協(xié)議驅(qū)動概述
監(jiān)測系統(tǒng)需要從底層驅(qū)動實現(xiàn)對操作系統(tǒng)自身ARP的阻斷,并構(gòu)造私有ARP進行信息收發(fā),需要網(wǎng)絡(luò)接口標(biāo)準(zhǔn)(Network Driver Interface Specification,NDIS)的支持。NDIS為網(wǎng)絡(luò)驅(qū)動抽象了網(wǎng)絡(luò)硬件,屏蔽了底層物理硬件的不同,制定了底層物理硬件與協(xié)議驅(qū)動層的通信接口規(guī)范,使底層任何型號的物理網(wǎng)卡都能與上層的協(xié)議驅(qū)動程序進行通信。NDIS支持微端口(Miniport)、中間層驅(qū)動(Intermediate)和協(xié)議驅(qū)動(Procotol)等3種類型的驅(qū)動,如圖3所示。其中,NDIS體系的最高層為協(xié)議驅(qū)動,它接收底層物理網(wǎng)卡或中間驅(qū)動的消息并為應(yīng)用層提供服務(wù)[7];中間層位于微端口驅(qū)動和協(xié)議驅(qū)動之間,它可以提供多種服務(wù),可以對通過鏈路層、網(wǎng)絡(luò)層的網(wǎng)絡(luò)數(shù)據(jù)包進行截獲、過濾[8]。由中間層所處NDIS體系層次位置可知,它必須與下層微端口及上層協(xié)議驅(qū)動進行通信,它是通過兩個函數(shù)集來實現(xiàn)的:微端口驅(qū)動(MiniPortXxx)入口點,用來傳送上層協(xié)議層的協(xié)議驅(qū)動請求;協(xié)議驅(qū)動(ProtocolXxx)入口點,用來傳送下層微端口的驅(qū)動請求。微端口為物理網(wǎng)卡與上層驅(qū)動程序提供通信接口,負責(zé)上次數(shù)據(jù)包的收發(fā)。
圖3 NDIS的3種類型驅(qū)動
3 系統(tǒng)總體結(jié)構(gòu)和框架
監(jiān)測系統(tǒng)采用C/S+B/S架構(gòu),在局域網(wǎng)內(nèi)的每臺主機上安裝監(jiān)視代理程序,該代理程序?qū)崿F(xiàn)阻斷操作系統(tǒng)自身ARP、構(gòu)造私有ARP、監(jiān)視主機接入功能,當(dāng)有非法主機接入時上報給服務(wù)端,管理員通過Web瀏覽器可以查看主機接入、離線狀態(tài),非法主機接入告警等信息。系統(tǒng)總體結(jié)構(gòu)設(shè)計如圖4所示。
圖4 系統(tǒng)總體結(jié)構(gòu)
客戶端主要包括主機接入監(jiān)測模塊、非法接入阻斷模塊、非法信息上報模塊及日志模塊;服務(wù)端主要包括主機狀態(tài)管理模塊、告警模塊、展現(xiàn)模塊及日志模塊。具體框架如圖5所示。
圖5 系統(tǒng)框架
4 基于ARP協(xié)議的非法主機監(jiān)測系統(tǒng)的設(shè)計
客戶端通過底層驅(qū)動實現(xiàn)對操作系統(tǒng)自身ARP的阻斷,并構(gòu)造具有簽名的私有ARP,實現(xiàn)主機接入監(jiān)測并通過判斷收到的是否為合法的私有ARP判斷主機的合法性,并將非法主機信息上報給服務(wù)端;服務(wù)端接收客戶端信息,如果一定時間內(nèi)未收到客戶端信息說明該客戶端處于離線,同時對收到的非法主機進行判斷生產(chǎn)告警信息。遠程用戶可以通過Web瀏覽器查看主機接入狀態(tài)及非法主機告警信息。
4.1 驅(qū)動開發(fā)
客戶端需要通過底層驅(qū)動對操作系統(tǒng)自身ARP的阻斷并構(gòu)造私有ARP,這些都是發(fā)送和接收以太網(wǎng)數(shù)據(jù)幀,需要驅(qū)動支持。
NDIS的中間驅(qū)動層位于微端口驅(qū)動與協(xié)議驅(qū)動中間,因此可以在微端口驅(qū)動與協(xié)議驅(qū)動之間插入自己的驅(qū)動程序,自己的驅(qū)動程序可以實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的截獲、轉(zhuǎn)發(fā)等功能。這樣,當(dāng)下層的微端口驅(qū)動程序接收到網(wǎng)卡傳輸?shù)臄?shù)據(jù)后會通過Miniport接口發(fā)送到導(dǎo)出的Protocol接口上,NDIS中間層驅(qū)動程序?qū)奈⒍丝诮邮盏臄?shù)據(jù)進行處理,當(dāng)NDIS中間層驅(qū)動處理完數(shù)據(jù)后,再把處理后的數(shù)據(jù)通過導(dǎo)出的Miniport接口發(fā)送到接口Protocol上,這樣就完成了一個截獲數(shù)據(jù)包的過程[9]。
當(dāng)上層協(xié)議驅(qū)動要發(fā)送數(shù)據(jù)時,首先會通過中間層接口將數(shù)據(jù)發(fā)送到中間層,然后中間層使用MiniportSend和MiniportSendPackets兩個函數(shù)對接收的數(shù)據(jù)進行轉(zhuǎn)發(fā),在轉(zhuǎn)發(fā)時可以在這兩個函數(shù)中設(shè)置過濾規(guī)則以過濾無關(guān)的數(shù)據(jù),NDIS可以過濾任何網(wǎng)絡(luò)協(xié)議[10]。本文只需要過濾ARP協(xié)議,中間層如果發(fā)現(xiàn)是ARP協(xié)議則進行阻斷不轉(zhuǎn)發(fā),其他協(xié)議放行,同時構(gòu)造私有ARP數(shù)據(jù)包發(fā)送出去。當(dāng)有網(wǎng)絡(luò)數(shù)據(jù)包到達網(wǎng)卡時,微端口驅(qū)動會調(diào)用NdisMindicateReceive通知中間層,然后NDIS會調(diào)用中間層的函數(shù)PtReceive/PtReceivePacket來接收和處理數(shù)據(jù)包,如果發(fā)現(xiàn)是ARP數(shù)據(jù)包則判斷是否是合法的私有ARP,如果是合法私有ARP說明是合法主機,否則是非法主機。
4.2 私有ARP的構(gòu)造
如第1.2節(jié)所述,以太網(wǎng)數(shù)據(jù)幀最小長度為64 B,而ARP固定長度為42 B,去除4 B的CRC還剩余18 B需要填充。構(gòu)造的私有ARP就是通過對這18 B進行填充來實現(xiàn)的,填充內(nèi)容為私有內(nèi)容,同時需要簽名機制實現(xiàn)“完整性檢查機認(rèn)證”,以防非法用戶在合法主機上通過旁路偵聽技術(shù)捕獲合法主機的ARP通信技術(shù),從而構(gòu)造非法的私有ARP偽造成合法主機接入網(wǎng)絡(luò)。
4.3 客戶端處理流程
步驟1:通過第4.1節(jié)所述實現(xiàn)阻斷操作系統(tǒng)自身ARP的收發(fā),判斷收的數(shù)據(jù)包是否為ARP數(shù)據(jù)包,如果不是則丟棄,如果是ARP數(shù)據(jù)包,則進行阻斷;
步驟2:Agent構(gòu)造私有ARP,原有ARP數(shù)據(jù)報文的格式不變,在此基礎(chǔ)上增加最長為18 B的私有標(biāo)記,因為原有ARP協(xié)議數(shù)據(jù)包長度固定位42 B,而以太網(wǎng)的最小幀長度為64 B,還有18 B的空余可供填充。在構(gòu)造私有ARP時需要對私有標(biāo)記進行完整性檢查及認(rèn)證,防止非法設(shè)備獲取私有標(biāo)記進而偽造成合法設(shè)備接入網(wǎng)絡(luò)。
步驟3:將構(gòu)造的私有ARP數(shù)據(jù)包進行廣播,接收其他設(shè)備的ARP請求及應(yīng)答。如果收到其他設(shè)備的ARP請求,則對該ARP進行解析,取出私有標(biāo)記,使用一定的加密算法及局域網(wǎng)內(nèi)所有主機的共享密鑰對私有標(biāo)記進行合法性和完整性檢查。如果檢查通過,說明是安裝Agent的合法設(shè)備,則可以進行通信;如果檢查不通過,說明是非法設(shè)備,則Agent向非法設(shè)備發(fā)送一個ARP應(yīng)答報文,該ARP數(shù)據(jù)包的發(fā)送端IP為非法設(shè)備IP,發(fā)送端MAC地址為一個偽造的、不存在的MAC地址的數(shù)據(jù)包,以阻斷非法設(shè)備與其通信,并將該非法設(shè)備上報給服務(wù)端。阻斷并構(gòu)造ARP及判斷非法設(shè)備的具體流程如圖6所示。
4.4 服務(wù)端處理流程
步驟1:客戶端與服務(wù)端一直保持通信,當(dāng)一定時間內(nèi)服務(wù)端未收到客戶端的消息,則認(rèn)為客戶端已經(jīng)處于離線狀態(tài)。
步驟2:服務(wù)端在其庫表中查找客戶端的IP,如果沒有找到,說明該客戶端是安裝Agent的合法設(shè)備,因為沒有安裝Agent的設(shè)備是不能與服務(wù)端通信的;如果在庫表中找到了,說明此設(shè)備IP或者曾經(jīng)與服務(wù)端通信過或者作為非法設(shè)備上報過;如果其狀態(tài)為非法,那么此時將其狀態(tài)修改為合法、在線,如果其狀態(tài)為合法,則需要查看其是否在線;如果不在線說明是合法設(shè)備離線后現(xiàn)在重新接入,將狀態(tài)標(biāo)記為在線。具體處理流程如圖7所示。
圖6 客戶端處理流程
圖7 服務(wù)端處理流程
4.5 告警處理流程
服務(wù)端收到客戶端上報的非法設(shè)備的信息后,在服務(wù)端庫表中查找該非法IP,如果未找到,說明此非法IP是首次使用,產(chǎn)生告警;如果找到了,則查看此IP在數(shù)據(jù)庫表中的狀態(tài)是否合法。如果是合法,說明此前該IP作為合法設(shè)備使用,但是當(dāng)前有非法設(shè)備使用該IP,因此需要將其狀態(tài)修改為非法,同時產(chǎn)生告警;如果查找的IP狀態(tài)為非法,要查看是否已有其他客戶端上報過該IP。如果沒有其他設(shè)備上報過該IP而該IP狀態(tài)時非法,說明此前該IP非法使用過,則產(chǎn)生次告警;如果已有其他客戶端上報過該IP則不需要再次產(chǎn)生告警。具體處理流程如圖8所示。
圖8 告警處理流程
5 實驗結(jié)果
通過安裝修改過的ARP驅(qū)動監(jiān)測網(wǎng)絡(luò)中非法設(shè)備。本實驗所處環(huán)境中有主機100多臺,將字符串為“NARIMONITOR”作為構(gòu)造ARP的私有標(biāo)記,經(jīng)過處理后其在ARP數(shù)據(jù)包中的表現(xiàn)為“05919CA23243AA3BF
4333EB561414D39”。
分別做2組實驗:第1組實驗中,只有主機A安裝監(jiān)測程序,其余主機都未安裝;第2組實驗中除了主機A安裝監(jiān)測程序外,主機B(10.144.100.57)和主機C(10.144.100.117)也安裝了監(jiān)測程序。
(1) 第1組實驗。如圖9所示,只有主機A安裝了驅(qū)動程序,因此合法的主機設(shè)備只有A,而其他設(shè)備都是非法設(shè)備,并且主機A與其他非法設(shè)備通信中斷。
圖9 只有主機A安裝監(jiān)測程序
如圖10所示,通過對其他設(shè)備的抓包可以發(fā)現(xiàn)ARP填充部分與構(gòu)造的私有ARP填充部分不一致。
(2) 第2組實驗。第2組實驗中有3臺主機安裝了監(jiān)測程序,其余主機未安裝。如圖11所示,安裝了監(jiān)測程序的主機A,B,C為合法設(shè)備,而其他未安裝監(jiān)測程序的主機為非法設(shè)備。
如圖13所示,即使其他設(shè)備(10.144.100.129)對ARP數(shù)據(jù)包進行了填充,但是填充的信息經(jīng)過處理后不能與設(shè)定的字符串相符,也作為非法設(shè)備。
圖10 非法設(shè)備ARP數(shù)據(jù)包
圖11 多臺合法設(shè)備
如圖12,通過對合法設(shè)備抓包可以發(fā)現(xiàn)合法設(shè)備的ARP數(shù)據(jù)包中填充部分與設(shè)定的字符串相符。
圖12 合法ARP數(shù)據(jù)包
如圖13所示,即使其他設(shè)備(10.144.100.129)對ARP數(shù)據(jù)包進行了填充,但是填充的信息經(jīng)過處理后不能與設(shè)定的字符串相符,也作為非法設(shè)備。
圖13 非法設(shè)備相關(guān)ARP數(shù)據(jù)包
6 結(jié) 語
如何快速發(fā)現(xiàn)主機接入,并及時阻斷非法主機的通信是網(wǎng)絡(luò)管理的一個重要內(nèi)容。本文以NDIS驅(qū)動為基礎(chǔ),開發(fā)中間層驅(qū)動實現(xiàn)對操作系統(tǒng)自身ARP阻斷、構(gòu)造私有ARP、識別非法主機,當(dāng)主機接入網(wǎng)絡(luò)之時即可發(fā)現(xiàn)該主機,同時對其合法性進行判斷,對非法主機阻斷與其他設(shè)備的通信,降低非法主機存活時長。本文通過ARP欺騙實現(xiàn)對非法接入主機的阻斷,后續(xù)還可通過驅(qū)動層直接阻斷非法接入主機的通信。
參考文獻
[1] 吳少華,方勇,胡勇,等.基于ARP協(xié)議的非法入網(wǎng)檢測與阻止技術(shù)研究[J].微計算機信息,2007(18):27?28.
[2] 劉貴松,晏華,章毅.基于ARP協(xié)議的局域網(wǎng)訪問控制[J].電子科技大學(xué)學(xué)報,2005,34(2):240?243.
[3] 郭幽燕,杜曄,王楊,等.基于ARP協(xié)議的內(nèi)網(wǎng)訪問控制系統(tǒng)[J].計算機工程與科學(xué),2010,32(1):21?24.
[4] 周晴倫,石恒,高明.一種非法主機接入內(nèi)部網(wǎng)絡(luò)監(jiān)視系統(tǒng)的設(shè)計與實現(xiàn)[J].桂林電子科技大學(xué)學(xué)報,2011,31(4):300?303.
[5] 胡清桂.確認(rèn)機制對ARP協(xié)議的改進[J].華中師范大學(xué)學(xué)報:自然科學(xué)版,2011,45(3):380?385.
[6] 宋建,王文蔚,趙玉國,等.利用ARP協(xié)議進行網(wǎng)絡(luò)管理[J].微計算機應(yīng)用,2007,28(12):1270?1273.
[7] 楊智軍,馬駿驍,田地,等.基于NDIS的IP安全協(xié)議的研究與實現(xiàn)[J].計算機工程,2007,33(22):166?168.
[8] 韓玲艷,夏靖波,李健勇.基于NDIS中間層驅(qū)動程序的網(wǎng)絡(luò)嗅探神器[J].現(xiàn)代電子技術(shù),2007,30(21):73?75.
[9] 何映,覃以威,李丹.基于Windows內(nèi)核態(tài)個人防火墻的設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2012,35(6):49?51.
[10] CHEN Shin?Shung, CHEN Yuwei, KUO Tzong?Yih. Defence design for ARP spoofing based on NDIS intermediate driver [C]//International Conference on Security Science and Technology. Hong Kong: ASME, 2012: 111?121.