一种即时通信监控系统的设计与实现
随着科技的发展和计算机网络的普及,即时通信软件已逐渐融人人们的生活。即时通信软件为个人和企业提供了便捷、快速、高效的沟通方式。常用的即时通信软件有微软的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协议的分析。最后,对系统性能进行测试,并对测试结果进行了分析。
评论
查看更多