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