【摘要】本文主要探討了分布式網(wǎng)絡(luò)行為監(jiān)控系統(tǒng)的設(shè)計問題,針對分布式網(wǎng)絡(luò)行為監(jiān)控系統(tǒng)設(shè)計的要點進(jìn)行了探討。同時,本文還論述了分布式網(wǎng)絡(luò)行為監(jiān)控系統(tǒng)應(yīng)該如何來實現(xiàn),以期能夠為分布式網(wǎng)絡(luò)行為監(jiān)控系統(tǒng)的應(yīng)用提供參考。
【關(guān)鍵詞】網(wǎng)絡(luò)行為監(jiān)控系統(tǒng);設(shè)計;實現(xiàn)
一、前言
在分布式網(wǎng)絡(luò)行為監(jiān)控系統(tǒng)的構(gòu)建和應(yīng)用過程中,需要重點解決設(shè)計和應(yīng)用的相關(guān)問題,針對設(shè)計問題,提出一些有效的設(shè)計的有效對策,在實現(xiàn)的過程中,要更加明確分布式網(wǎng)絡(luò)行為監(jiān)控系統(tǒng)實現(xiàn)的途徑。
二、原型系統(tǒng)的研究與實現(xiàn)
1.系統(tǒng)框架設(shè)計
系統(tǒng)的框架模型按照IvIDA(ModelDriven-Architec-ture,簡稱MDA)的相關(guān)方法進(jìn)行設(shè)計,從系統(tǒng)和平臺相關(guān)視圖兩個角度給出了系統(tǒng)的模型描述。系統(tǒng)的工作流程就是一個依據(jù)各層協(xié)議對網(wǎng)絡(luò)報文進(jìn)行分析處理并從中提取有用信息的、自底向上的處理過程。
系統(tǒng)在Windows平臺的實現(xiàn)采用了基于c/s模型的分布式軟件架構(gòu),主要包括監(jiān)控代理(MonitorAgent)和中心控制臺(Monitor-Console)兩部分。監(jiān)控代理實現(xiàn)了報文捕獲引擎和報文協(xié)議分析引擎,并向控制臺報告XML描述的行為事件,監(jiān)控代理部署于監(jiān)控目標(biāo)的網(wǎng)段內(nèi);控制臺主要通過協(xié)議有限狀態(tài)機(jī)完成網(wǎng)絡(luò)行為的分析和顯示、主機(jī)和網(wǎng)絡(luò)信息的提取,以及各種報表的顯示、分析和生成等。
將系統(tǒng)分為這兩個部分主要有兩個原因:一是便于實現(xiàn)分布式的網(wǎng)絡(luò)監(jiān)控,將多個Agent部署在相應(yīng)的監(jiān)控目標(biāo)網(wǎng)段內(nèi),可以捕獲到Console收不到的報文,使得系統(tǒng)可以適應(yīng)復(fù)雜的網(wǎng)絡(luò)拓?fù)洵h(huán)境;二是可利用多個Agent實現(xiàn)報文分析的負(fù)載平衡,提高報文協(xié)議分析的效率,以便監(jiān)控更大規(guī)模和更高帶寬的網(wǎng)絡(luò)。
2.系統(tǒng)功能簡介
通過報文捕獲、解析與網(wǎng)絡(luò)行為分析,原型系統(tǒng)主要實現(xiàn)了以下功能:
(1)網(wǎng)絡(luò)報文捕獲。
(2)報文協(xié)議分析。
(3)網(wǎng)絡(luò)行為分析。
(4)此外,系統(tǒng)還實現(xiàn)了網(wǎng)絡(luò)和主機(jī)信息的分析、TCP會話重放、報表統(tǒng)計與策略管理等功能。
三、關(guān)鍵技術(shù)
1.監(jiān)聽與識別數(shù)據(jù)包
網(wǎng)絡(luò)實時監(jiān)控系統(tǒng)是通過對網(wǎng)卡編程實現(xiàn)網(wǎng)絡(luò)通訊,對網(wǎng)卡的編程是使用套接字方式來進(jìn)行。但是,通常的套接字程序只能響應(yīng)與自己硬件地址相匹配的或是以廣播形式發(fā)出的數(shù)據(jù)幀,對于其他形式的數(shù)據(jù)幀,網(wǎng)絡(luò)接口在驗證投遞地址并非自身地址之后將不引起響應(yīng),也就是說應(yīng)用程序無法收取到達(dá)的數(shù)據(jù)包。網(wǎng)絡(luò)實時監(jiān)控系統(tǒng)的首要任務(wù)恰恰是從網(wǎng)卡接收所有經(jīng)過它的數(shù)據(jù)包,這些數(shù)據(jù)包既可以是發(fā)給它的也可以發(fā)往別處。顯然,要達(dá)到此目的,網(wǎng)卡不能按正常的模式工作,而必須將其設(shè)置為混雜模式。
編程實現(xiàn)時,這種對網(wǎng)卡混雜模式的設(shè)置是通過原始套接字實現(xiàn),這也有別于通常使用的數(shù)據(jù)流套接字和數(shù)據(jù)報套接字。在創(chuàng)建原始套接字后,需要通過setsockopt()函數(shù)來設(shè)置IP頭操作選項,然后再通過bind()函數(shù)將原始套接字綁定到本地網(wǎng)卡。為了讓原始套接字能接受所有的數(shù)據(jù),還需要通過ioctlsocket()來進(jìn)行設(shè)置,而且還可以指定是否親自處理1P頭。至此,在完成了網(wǎng)卡模式的初始化設(shè)置后,就可以開始對網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行實時監(jiān)聽。對數(shù)據(jù)包的獲取仍像流式套接字或數(shù)據(jù)報套接字那樣通過recv()函數(shù)來完成,但是與這兩種套接字不同的是,原始套接字此時捕獲到的數(shù)據(jù)包并不僅僅是單純的數(shù)據(jù)信息,而是包含有IP頭、TCP頭等信息頭的最原始的數(shù)據(jù)信息,這些信息保留了它在網(wǎng)絡(luò)傳輸時的原貌。通過對這些在低層傳輸?shù)脑夹畔⒌姆治鼍涂梢缘玫接嘘P(guān)網(wǎng)絡(luò)的一些信息。由于這些數(shù)據(jù)經(jīng)過網(wǎng)絡(luò)層和傳輸層的打包,因此需要根據(jù)其附加的幀頭對數(shù)據(jù)包進(jìn)行分析。根據(jù)系統(tǒng)的設(shè)計思路,就可以寫出網(wǎng)絡(luò)實時監(jiān)聽和識別數(shù)據(jù)包功能的實現(xiàn)代碼。在編程時,將原始套接字設(shè)置完畢后,就可以通過recv()函數(shù)從網(wǎng)卡接收數(shù)據(jù)。接收到的原始數(shù)據(jù)包存放在緩存區(qū)中,然后就可以根據(jù)前面對IP數(shù)據(jù)包、TCP數(shù)據(jù)包、UDP數(shù)據(jù)包等數(shù)據(jù)包的段頭結(jié)構(gòu)描述而對捕獲的數(shù)據(jù)包進(jìn)行分析。
2.分析數(shù)據(jù)包
監(jiān)聽網(wǎng)絡(luò)數(shù)據(jù)包是網(wǎng)絡(luò)行為實時監(jiān)控系統(tǒng)的基礎(chǔ),分析監(jiān)聽到的數(shù)據(jù)包則是系統(tǒng)的關(guān)鍵環(huán)節(jié)。發(fā)現(xiàn)任何網(wǎng)絡(luò)異常行為,采取相應(yīng)的處理措施,都要依據(jù)數(shù)據(jù)包的分析結(jié)果進(jìn)行。
分析數(shù)據(jù)包的工作包括跟蹤用戶、鎖定用戶正在使用的1P、記錄登錄網(wǎng)頁網(wǎng)址和網(wǎng)頁內(nèi)容還原。跟蹤用戶是隨時從數(shù)據(jù)包中查詢用戶是否上網(wǎng)的信息。如果從數(shù)據(jù)包搜索到有關(guān)用戶名和用戶密碼的信息,則將用戶添加到列表。在搜索數(shù)據(jù)包的數(shù)據(jù)段,查找用戶名時,我們采用掃描效率較高的Boyer—Moore串匹配算法。該算法以自右至左的方式掃描模式和正文,一旦發(fā)現(xiàn)正文中出現(xiàn)模式中沒有的字符,就將模式、正文大幅度的“滑過”一段距離,使字符串的查找極大提高了效率。
獲得了用戶信息意味著同時也獲得了分配給用戶的IP,于是就鎖定了用戶當(dāng)前的IP地址。根據(jù)IP數(shù)據(jù)包的源地址或目的地址,將可以將數(shù)據(jù)包與用戶接收和發(fā)送的數(shù)據(jù)對應(yīng)上。如果只想對IP進(jìn)行跟蹤,不想了解用戶名,可以省略查找用戶名的工作,只記錄IP的情況。IP地址與用戶對應(yīng)上后,對用該IP登錄的任何網(wǎng)站的網(wǎng)址都能記錄下來,這些網(wǎng)址就是用戶登錄網(wǎng)站的記錄。系統(tǒng)查找網(wǎng)址時,也采用Boyer—Moore串匹配算法,具體實現(xiàn)類似于查找用戶名。
四、主機(jī)監(jiān)控端實現(xiàn)關(guān)鍵技術(shù)
DNBM按照三層過濾的規(guī)劃.劃分為內(nèi)容過濾、應(yīng)用過濾、數(shù)據(jù)包過濾。數(shù)據(jù)包要經(jīng)過層層的過濾最終才能完成傳輸。三層過濾之間的關(guān)系如圖2所示。
1.內(nèi)容過濾
該層的策略只給出了用戶可以訪問的Web站點,沒有給出的站點,都是不允許用戶訪問的站點。
將服務(wù)提供者接口的幾個關(guān)鍵函數(shù)替換為自己的函數(shù),其中包括:WSASOCKET、WSASEND、WSASENDT0、WSARECV、WSARECVFR0M、WSAC0N.NECT等。只要是通過套接字方式進(jìn)行網(wǎng)絡(luò)通信的數(shù)據(jù)都能被攔截到,但是對于直接通過tcp.sys,udp.sys進(jìn)行通信的數(shù)據(jù)該層是攔截不到的。在WSACONNECT函數(shù)中.可以通過遠(yuǎn)程端口號對套接字的協(xié)議類型進(jìn)行設(shè)置,協(xié)議類型包括H,丌、POP3、SMTP等。這樣根據(jù)協(xié)議類型。在WSASEND、WSASENDTO、WSARECV、WSARECVFR0M函數(shù)就可以解析該協(xié)議數(shù)據(jù),提取關(guān)鍵字。在提取完關(guān)鍵字之后.需要按照策略對關(guān)鍵字進(jìn)行過濾.并且記錄下來作為日志。
關(guān)于關(guān)鍵字的提取.以上各個協(xié)議都是明文協(xié)議。例如。通過在HTTR數(shù)據(jù)包查找“HOST”字符串。就能得到網(wǎng)站名稱。通過在SMTP數(shù)據(jù)包中查找“Subject:”字符串,就可以得到郵件主題。查找“From:”字符串,可以得到發(fā)信人地址。查找“To”字符串。可以得到收信人地址。對于POP3協(xié)議也同樣適用。
2.應(yīng)用過濾
在本層只有策略中給出的進(jìn)程才是允許訪問網(wǎng)絡(luò)的進(jìn)程,沒有允許的就是禁止的。同時為了防止嵌入在系統(tǒng)進(jìn)程中的嵌入式木馬,將系統(tǒng)進(jìn)程與端口綁定。比如windows2000中的services系統(tǒng)進(jìn)程.該進(jìn)程完成DNS地址解析等功能,通過53號端I=l訪問DNS服務(wù)器.那么只有通過53號端口發(fā)送出去的數(shù)據(jù)是合法的數(shù)據(jù)。
在TDI驅(qū)動層中,一個進(jìn)程要訪問網(wǎng)絡(luò),必須首先發(fā)送MajorFunction為IRPMJ_CREATE的IRP創(chuàng)建一個代表傳輸?shù)刂返奈募ο?。如果一個進(jìn)程無法創(chuàng)建代表傳輸?shù)刂返奈募ο?,就無法訪問網(wǎng)絡(luò)的任何后續(xù)操作。因此,拒絕一個進(jìn)程創(chuàng)建傳輸?shù)刂肺募ο蟮恼埱缶涂梢赃_(dá)到拒絕該進(jìn)程所有網(wǎng)絡(luò)請求的目的。創(chuàng)建傳輸?shù)刂肺募ο蟮恼埱笾刑峁┝艘髣?chuàng)建的地址信息,些信息包括進(jìn)程要求使用的本地端口號。是否應(yīng)該拒絕某進(jìn)程創(chuàng)建傳輸?shù)刂肺募ο蟮恼埱笫峭ㄟ^調(diào)用訪問控制模塊函數(shù)確定的。
五、結(jié)束語
總而言之,分布式網(wǎng)絡(luò)行為監(jiān)控系統(tǒng)的設(shè)計和應(yīng)用過程中,需要清楚的知道分布式網(wǎng)絡(luò)行為監(jiān)控系統(tǒng)的特點和各個要素的主要流程,不斷提升分布式網(wǎng)絡(luò)行為監(jiān)控系統(tǒng)的性能。
參考文獻(xiàn)
[1]溫研,王懷民,胡華平.分布式網(wǎng)絡(luò)行為監(jiān)控系統(tǒng)的研究與實現(xiàn)[J].計算機(jī)工程與科學(xué),2011,10:13-16.
[2]程文芳,王世倫,任繼念.基于CORBA的分布式網(wǎng)絡(luò)行為監(jiān)控系統(tǒng)的研究與設(shè)計[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2012,04:49-51.
[3]張信杰,王旭仁,吳剛.分布式網(wǎng)絡(luò)監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)[J].計算機(jī)工程與設(shè)計,2010,17:37.