众所周知,网关防毒在防毒领域占有很重要的位置,但是传统的完整流(文件)层次的病毒检测会让网络变得相当缓慢、影响网络的使用,从而让用户对防毒网关也有拒而远之的感觉。在这样的情况下,有些安全厂商初步提出并基本实现了基于流的病毒检测方案。
1.定义
基于流的病毒检测是一种完全不同于传统的基于文件扫描的病毒检测方法,它是指不经过重组还原,直接由防毒引擎对TCP流进行扫描,然后再进行相应的处理。
2.原理
基于流的病毒检测由于数据的长度不大,因此对于特征的长度提出了要求。如果特征的长度太小可能引起很大的误报率,从而最终的结果会使这样的防毒网关形同虚设。因此,基于流的病毒检测对TCP流的数据长度是有要求的,就是不能太小,但以下的两个论据说明,大部分的TCP流是不太小的,而且特别小的TCP流含有病毒特征的可能性是不大的。
1)一些有关TCP通信量的研究如[Caceres et al. 1991]发现,如果按照分组数量计算,约有一半的TCP报文段包含成块数据(如FTP、电子邮件和Usenet新闻),另一半则包含交互数据(如Telnet和Rlogin)。如果按字节计算,则成块数据与交互数据的比例约为90%和10%。这是因为成块数据的报文段基本上都是满长度(full-sized)的(通常为512字节的用户数据),而交互数据则小得多(上述研究表明,Telnet和Rlogin分组中通常约90%的用户数据小于10个字节)。
2)4.2 BSD默认设置发送和接受缓冲区的大小为2048个字节。在4.3BSD中双方增加为4096个字节。SunOS 4.1.3、BSD/386和SVR4仍然使用4 0 9 6字节的默认大小。其他的系统,如Solaris 2.2、4. 4 BSD和AIX3.2则使用更大的默认缓存大小,如8192或16384等。
3.扫描引擎的位置
可以把AV病毒检测引擎放到运输层,直接对TCP流缓冲中的数据进行病毒检测。
4.优点
对于基于流的病毒检测的最大好处是提高网关检测病毒的速度与性能。
5.缺点
对部分病毒不能检测,因为文件格式不完全,不能进行脱壳、解压缩、宏和脚本分离等病毒处理方法,所以从原理上来说基于流的病毒检测能力也是不完善的。