黑客攻防技术宝典-反病毒篇笔记(三)
反病毒特征码技术
所有反病毒引擎自始至终都在使用反病毒特征码技术。特征码一般是一串包括判断文件或缓冲区是否存在已知恶意文件特征的短小散列值或字节码。
典型特征码
字节流是最简单的反病毒特征码形式,侦测病毒最简单的方式就是匹配特征字节流,因为其简单而快速。
校检和
目前反病毒最常用的特征码匹配技术是基于计算匹配CRC实现的。 CRC(循环冗余校验)算法基于错误侦测技术,常用于检测或校检数据传输和保存后可能出现的错误。
取一个缓冲区的内容作为传入值,生成一段校检和形式,长度一般为4字节散列。
CRC算法校检速度快但也会产生大量误报,因为CRC算法的初衷为检测或校检数据传输或者保存后可能出现的错误,而不是查杀病毒。
从目前得分析情况来看,几乎所有反病毒软件都是用CRC算法进行校检。
加密散列算法
加密散列算法针对缓冲区逐一生成特征码,大大降低了误报的概率。
理想的加密散列函数有四个特性:
1.针对传入的任何数据都能轻松计算出散列值
2.加密散列值必须经过计算才能生成
3.更改数据加密散列值必发生改变
4.一段加密散列值只对应一段数据特征
模糊散列算法
模糊散列特征码技术不是针对单个文件进行查杀,而是针对文件集合进行查杀。
模糊散列算法具有以下特征:
1.变动小或无变化: 使用模糊散列算法,样本文件的细小变动对计算出的数值影响很小,只对改变的那一块有一定影响,仍可以检测出是否为恶意文件的散列值。
2.没有进行混淆:可以很清楚的依次分辨出键与生成的模糊散列值。
3.理想的重复率:重复率较低(重复率较高意味着误报率高)
简而言之,绕过模糊散列算法取决于选取校检区块的大小以及大小的数值。