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