韓少聰+陳玉慧+劉嘉華+康睿



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