隨著科技的發(fā)展和計(jì)算機(jī)網(wǎng)絡(luò)的普及,即時通信軟件已逐漸融人人們的生活。即時通信軟件為個人和企業(yè)提供了便捷、快速、高效的溝通方式。常用的即時通信軟件有微軟的MSN Messenger、騰訊QQ、Googletalk等。即時通信技術(shù)在給個人及企業(yè)帶來高效便捷溝通的同時也產(chǎn)生了一系列的安全問題。隨著即時通信軟件的普及和用戶數(shù)量的快速增長,其已成為病毒和黑客攻擊的主要對象。對于企業(yè)而言,即時通信技術(shù)使得員工的行為更加難以控制,容易導(dǎo)致泄露機(jī)密、竊取資料等事件的發(fā)生,這將給企業(yè)造成無法估量的損失。針對中小規(guī)模企業(yè)網(wǎng)對即時通信安全的實(shí)際需求,對企業(yè)廣泛使用的MSN Messenger進(jìn)行了協(xié)議分析,并在此基礎(chǔ)上設(shè)計(jì)實(shí)現(xiàn)了一個基于網(wǎng)絡(luò)嗅探技術(shù)的MSN協(xié)議監(jiān)控分析系統(tǒng)——MSNAnalyzer。該系統(tǒng)可以對企業(yè)內(nèi)部網(wǎng)絡(luò)進(jìn)行實(shí)時監(jiān)控,監(jiān)督員工的上網(wǎng)行為,預(yù)防重要資料泄露等情況的發(fā)生,保護(hù)企業(yè)的信息安全,減少不必要的經(jīng)濟(jì)損失。 1、體系結(jié)構(gòu) 該監(jiān)控系統(tǒng)采集企業(yè)網(wǎng)絡(luò)出口處的所有數(shù)據(jù)幀,通過對幀的IP地址進(jìn)行分析提取出被監(jiān)控客戶機(jī)的數(shù)據(jù)幀并以一定的格式保存到文件中。然后,從文件中讀取數(shù)據(jù)幀并將數(shù)據(jù)幀交給協(xié)議分析處理模塊處理,處理后的結(jié)果以文件的形式保存在磁盤中。圖1所示為該系統(tǒng)的總體結(jié)構(gòu)示意圖。圖中,Sniffer是運(yùn)行MSNAnalymr程序的主機(jī),Clientl、Client2、Client3為內(nèi)網(wǎng)主機(jī)。 圖1 系統(tǒng)體系結(jié)構(gòu) MSNAnalyzer工作的基本過程為: (1)基于Sniffer技術(shù)從網(wǎng)絡(luò)總出入口處采集網(wǎng)絡(luò)數(shù)據(jù)(抓包)。 (2)存儲數(shù)據(jù)幀。 (3)提取數(shù)據(jù)幀并進(jìn)行分析。 根據(jù)分析,系統(tǒng)實(shí)現(xiàn)模型如圖2所示。 圖2 系統(tǒng)總體實(shí)現(xiàn)模型及模塊劃分 2、數(shù)據(jù)采集及存儲 系統(tǒng)采用基于網(wǎng)絡(luò)嗅探技術(shù)的數(shù)據(jù)采集方法,以WinPcap 4.0.1作為開發(fā)工具,Windows平臺下使用WinPcap從網(wǎng)絡(luò)適配器嗅探數(shù)據(jù)十分方便,圖3是使用WinPeap捕獲網(wǎng)絡(luò)數(shù)據(jù)包的基本流程。 使用WinPcap開發(fā)應(yīng)用程序除可以捕獲數(shù)據(jù)包外,最大的優(yōu)點(diǎn)在于WinPcap可以對數(shù)據(jù)包進(jìn)行過濾。WinPeap從網(wǎng)絡(luò)適配器上嗅探到的是最原始的數(shù)據(jù)幀,這包括了所有流經(jīng)的數(shù)據(jù)。如果不對數(shù)據(jù)包進(jìn)行相應(yīng)的過濾,將會捕獲到許多無關(guān)的數(shù)據(jù),這會增加系統(tǒng)的負(fù)擔(dān),使系統(tǒng)工作效率降低。 圖3 WinPcap數(shù)據(jù)采集流程 在數(shù)據(jù)采集之后,采用什么樣的存儲策略來存儲數(shù)據(jù),以最大限度地保證采集到的網(wǎng)絡(luò)數(shù)據(jù)包(Pack.et)不丟失,是系統(tǒng)設(shè)計(jì)中必須面對的一個重要問題。網(wǎng)絡(luò)丟包的原因可能有很多,包括內(nèi)存緩沖技術(shù)、磁盤I/O能力、包過濾及處理技術(shù)、數(shù)據(jù)流量大小、網(wǎng)絡(luò)接口性能、CPU處理能力等諸多方面。 網(wǎng)絡(luò)丟包的指標(biāo)一般采用丟包率(Rate of PacketLoss,RPL)。計(jì)算公式為:L=((發(fā)送的數(shù)據(jù)包數(shù)一接收到的數(shù)據(jù)包數(shù))/發(fā)送的數(shù)據(jù)包數(shù))×100%。 眾所周知。頻繁的磁盤I/O顯然會影響到系統(tǒng)的性能和效率,這在大的數(shù)據(jù)流量下尤為明顯。為了避免頻繁的磁盤I/O,需要在數(shù)據(jù)存儲時引入內(nèi)存緩沖處理技術(shù)。在基于WinPcap的網(wǎng)絡(luò)數(shù)據(jù)采集中,系統(tǒng)使用了多級內(nèi)存緩沖,內(nèi)核緩沖器和用戶緩沖器的大小分別設(shè)置為6MB和1MB,并設(shè)置內(nèi)核緩沖器和用戶緩沖器之間一次傳送的最小數(shù)據(jù)塊的大小為512kB。 3、數(shù)據(jù)分析與處理 數(shù)據(jù)分析與處理分為四部分。首先是Ethernet數(shù)據(jù)幀處理,主要完成鏈路層數(shù)據(jù)驗(yàn)證、拆包,并將數(shù)據(jù)提交給IP層進(jìn)行處理。IP數(shù)據(jù)報(bào)的處理主要完成IP層數(shù)據(jù)驗(yàn)證、拆包,并將數(shù)據(jù)提交給傳輸層進(jìn)行處理。TCP分組的處理主要完成TCP層數(shù)據(jù)的驗(yàn)證、拆分及TCP重復(fù)和無序分組的處理,完成TCP會話重建,并將重組后的應(yīng)用層數(shù)據(jù)提交至協(xié)議分析層處理。協(xié)議分析主要完成應(yīng)用層數(shù)據(jù)和最終用戶數(shù)據(jù)的處理。對應(yīng)用層數(shù)據(jù)主要進(jìn)行命令解析和協(xié)議數(shù)據(jù)重組,對最終用戶數(shù)據(jù)的處理包括聊天信息的提取、顯示圖片和自定義表情的提取、文件傳輸?shù)奶崛〉取SNP協(xié)議分析模型如圖4所示。 3.1、命令解析 命令解析的本質(zhì)就是分析字符串的含義,它類似計(jì)算機(jī)高級語言編譯器中詞法分析的功能。MSNP協(xié)議涉及多達(dá)幾十個命令,服務(wù)器和客戶端使用的命令也不相同。系統(tǒng)對涉及信息傳輸?shù)拿钸M(jìn)行了重點(diǎn)解析,主要包括握手命令和數(shù)據(jù)傳輸命令。對于客戶端命令。主要解析“ANS”和“MSG”。服務(wù)器端主要解析“IRO”、“USR”、“JOI”和“MSG”。 圖4 MSNP協(xié)議分析模型 3.2、協(xié)議數(shù)據(jù)重組 協(xié)議數(shù)據(jù)重組主要針對P2P消息,當(dāng)二進(jìn)制頭和二進(jìn)制尾之間的消息內(nèi)容大小超過1202字節(jié)時。消息會被分片傳輸。通常被拆分的P2P消息包括MSNSLP消息和實(shí)際傳輸?shù)母鞣N數(shù)據(jù)(如文件、表情)。二進(jìn)制頭中共有9個字段,其中“Data Offset”、“Total Data Size”和“Message Length”3個字段和消息分片密切相關(guān)。這3個字段分別表示“總數(shù)據(jù)大小”、“數(shù)據(jù)偏移量”和“本條消息長度”。由于TCP處理模塊已對重復(fù)和無序的數(shù)據(jù)流進(jìn)行了處理,協(xié)議分析模塊的輸入是順序的數(shù)據(jù)流。按順序?qū)?shù)據(jù)取出即可。如圖5所示。 圖5 P2P消息重組方法 3.3、數(shù)據(jù)存儲 在協(xié)議數(shù)據(jù)重組之后,對重組的數(shù)據(jù)進(jìn)行分析及數(shù)據(jù)提取。分析主要針對MSNSLP消息,MSNSLP消息負(fù)責(zé)會話的建立和結(jié)束。對MSNSLP的分析除取得傳輸?shù)念愋屯,最重要的是提取文件名,以備存儲時使用。顯示圖片和自定義表情的文件名封裝在各自的MSNObi對象中,而傳輸文件的文件名以Unicode格式存儲在INVITE方法的Context中類CFileName用于存儲文件名,其結(jié)構(gòu)如下: //name of file transfered in asession class CFileName{ public: CHIcNanle(); ~CFileNameTram(); public: U_int m_nSessioID;//Session ID char*m_pszFileName;//Name of current file }; 其中數(shù)據(jù)成員m_nSessionID用于確定文件名和文件數(shù)據(jù)的對應(yīng)關(guān)系。在數(shù)據(jù)提取完畢后根據(jù)CHle.Name和CDataTrans的m_nSessionID大小得到對應(yīng)關(guān)系,進(jìn)行數(shù)據(jù)存儲。 3.4、性能方面的考慮 在數(shù)據(jù)流量比較大的時候,數(shù)據(jù)處理會導(dǎo)致大量的內(nèi)存占用,從而降低系統(tǒng)的效率。對于協(xié)議數(shù)據(jù)重組模塊,尤其是傳輸文件的提取,系統(tǒng)使用定時器機(jī)制和定量存儲機(jī)制進(jìn)行控制。 當(dāng)接收到第1個分片的時候?qū)ο鄳?yīng)的CDataTrans對象設(shè)置定時器。如果在定時器超時的時候仍沒有接收到新的分片,就認(rèn)為此次傳輸失敗,將之前緩存的數(shù)據(jù)清除,釋放所占用的空間。若有新的分片到達(dá),還原定時器的超時時間。系統(tǒng)預(yù)設(shè)的定時器為10分鐘,管理員可以重設(shè)超時時間。 對于大小超過1MB的文件,系統(tǒng)采用定量存儲。當(dāng)接收的數(shù)據(jù)大小達(dá)到一定量,便進(jìn)行一次存儲操作。當(dāng)然。頻繁的存儲操作會增加磁盤讀寫的開銷。系統(tǒng)預(yù)設(shè)大小為1MB,管理員同樣可以更改大小,以減少磁盤讀寫的開銷。 4、系統(tǒng)測試 系統(tǒng)測試主要是對系統(tǒng)進(jìn)行性能測試。目標(biāo)是測試系統(tǒng)在給定工作環(huán)境下的性能,檢查系統(tǒng)對指定數(shù)據(jù)的監(jiān)聽提取能力。監(jiān)控服務(wù)器主機(jī)一臺,客戶機(jī)(目標(biāo)主機(jī))若干,客戶機(jī)通過交換機(jī)連接在一個局域網(wǎng)中,并與Internet互聯(lián)。對上述測試環(huán)境進(jìn)行一個工作周(周一到周五)測試。每個工作日測試時間為12小時(早8點(diǎn)到晚8點(diǎn)),每個工作日客戶機(jī)數(shù)量維持在124--168之間,測試結(jié)果如表1所示。 表1測試結(jié)果 從上表可以看出顯示圖片和自定義表情的提取率均在96%以上。數(shù)據(jù)丟失的原因主要是由于丟包造成的,由于系統(tǒng)采用過濾策略進(jìn)行數(shù)據(jù)包捕獲,在網(wǎng)絡(luò)流量比較大的時候,可能會導(dǎo)致一定的丟包率,而顯示圖片和自定義表情文件比較都比較小,若干數(shù)據(jù)包的丟失對結(jié)果會有一定影響。文件傳輸?shù)奶崛÷手挥?1.7%,原因主要有3個方面:一是丟包率;二是協(xié)議分析中對NAT穿越的判斷結(jié)果;第三點(diǎn),也是最重要的一點(diǎn),當(dāng)傳輸?shù)碾p方位于同一局域網(wǎng)時,實(shí)際數(shù)據(jù)傳輸僅在局域網(wǎng)中進(jìn)行,而不會通過服務(wù)器中轉(zhuǎn),這樣系統(tǒng)僅能監(jiān)聽到傳輸邀請,而無法監(jiān)聽到實(shí)際傳輸?shù)臄?shù)據(jù)。測試結(jié)果沒有對文字信息進(jìn)行評估,因?yàn)槲淖中畔⒌膫鬏敍]有握手過程,難以評估。系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)能夠保證在丟包率較小的情況下,使文字信息的提取率接近100%。 5、結(jié)束語 針對中小規(guī)模企業(yè)網(wǎng)對即時通信安全的實(shí)際需求,研究、設(shè)計(jì)并實(shí)現(xiàn)了MSN協(xié)議的監(jiān)控分析系統(tǒng)。首先分析了系統(tǒng)的功能和性能需求,并給出了系統(tǒng)的體系結(jié)構(gòu)、總體實(shí)現(xiàn)模型。接著詳細(xì)討論了數(shù)據(jù)采集與存儲策略,數(shù)據(jù)分析與處理的過程,重點(diǎn)研究了MSNP協(xié)議的分析。最后,對系統(tǒng)性能進(jìn)行測試,并對測試結(jié)果進(jìn)行了分析。 |