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