【上文我们学习了未知检测环节,下面深入了解降低误报的方法与流程。】
七、降低误报的方法与流程
目前反病毒工作者们都在通过一套技术体系和耐心的工作来降低反病毒产品的误报事件的发生。
反病毒厂商都是小心翼翼的,大家不仅要避免将正常的程序报警为病毒为用户和软件作者带来的不良影响,也要积极回避检测一些有争议程序可能导致的法律风险。下面我们来看看反病毒厂商通常使用的手段。
1、白名单测试
白名单测试是原始的降低误报发生概率的方法,但毫无疑问也最有效的。一般反病毒厂商都要维系一个庞大的白名单文件库。
由于目前软件种类越来越多,白名单库收集搜集不全,是一种必然。就算已经在白名单库中的软件,由于目前各类软件更新速度也日趋频繁,也很难获得这些程序的全部升级。而对于已经掌握的资源来说,另外一点,同时如果说通过完整的白名单测试静态扫描并无问题,但如果用于测试内存特征以及未知行为检测,则该任务可能是不收敛的。
另外,白名单的建立不仅要搜集所有软件,还必须自我构造很多测试资源,其中非常重要的两项是:
用所有能搜集到所有加壳工具(包括同一个工具的每个版本)对各种编译器编译的正常程序加壳。
另外,能搜集到的所有安装包制作工具(包括同一个工具的每个版本),都要做出无毒的安装包。
白名单测试的工作让人感觉耗时和笨拙,但不管怎样来说,最原始的通常是最有效的。
2、开放β库测试
一些厂商采用对外公开β库的方式,通过专业型用户的协作来排除误报,这样那些骨灰级的玩家承担一些误报的风险,但可以选择享受到最快速的升级服务。
3、辅助判定标志
笔者在《AV辨证法的挑战》一文中说明,内容不再是代码判定的唯一标志,判定依据可能与具体环境有关。
对于那些有可能被病毒和攻击者利用的软件产品,可以采用“特征规则+辅助判定” 的方法,笔者在《计算机反病毒技术的取证应用》一文中分析了某反病毒产品中使用的一个辅助判定机理。
当部分类似mirc客户端、Server-U一类的商用程序的特征被匹配到后,引擎不是马上与gui交互,将报警信息传递给界面,而是根据病毒库的定义将检测标志和文件名传递给公共恶意文件名判定模块。
这个模块的部分反汇编代码如下:
|
上面的代码是用于识别一些具有欺骗性的文件名
这个模块的完整机理如下:
①对文件名前若干个字符基于一个词表(约20个)做一个比较,类似expl*;syst*;wind*.*;rund*.*;ms*.*;如果在表内,则认为是Mirc类恶意程序(置AX)并返回,如果不在表内,则继续执行②。
②从文件名左起寻找第一个".",如果没有找到,则认为是正常程序(这时无扩展名不可执行)返回(清AX)。如果找到则继续执行③。
③判断"."之前的字符数是否大于8个,如果大于(长文件名),则认为是正常程序返回,如果少于(含等于)8个字符,则判断文件名的字符是否均为数字,如果是则认为是恶意程序,如果不是则作为正常程序返回。
通过以上的方式,经验型的涵盖了大部分这些程序被作为蠕虫组件或者遗留后门的一些文件名属性,避免了误报。
4、选项检测
对于一些可能引起误报的敏感规则,采用让用户选择是否检测的方式,也是从工作机理上避免误报、误杀影响的方式。如下图是木马防线提供界面让用户选择扫描策略。

5、检测结果加入前/后缀标志
另外值得参考的是, AVP等厂商对广告件(advware)、色情件(pornware)等类别,提供了一些类似not-a-virus的前缀或者后缀,表明厂商并未认定这是一个病毒,把是否清除的选择权交给了用户。
6、更细腻的加权采集点
多标志加权机制是未知病毒识别模型的基本方法,降低这种方法的误报率,除了加权模型和权值的选取的合理性之外,就是对用于的静态或行为采集点的工作需要更加扎实。
安天的VCS(抓毒精灵)未知病毒检测技术,曾经误报过兄弟厂商产品中的一个PE文件为未知病毒。兄弟厂商采取了这样的一个技巧,把所有的其产品的界面资源都填充到一个空PE结构中,这样要实现增加一个skin,就不用更新主程序,只要替换这些资源就可以了。
除了迅速更新和表达歉意外,我们对这个误报进行了一些分析,这个程序标志加权达到了未知告警的阈值的重要原因,就是PE结构异常(这是一个相当高的权值)。因为一些病毒作者/加工者为了破坏反病毒软件的识别,经常在PE结构上做出一些处理,因此我们设定了这个标志,但如果我们考虑的细腻一些,增加更多的判定,就可以发现这个PE并无功能代码,就可以避免这次误报了。
7、快捷高效的误报处理机制
不论付出多少努力,上述的方法注定不可能修正所有的误报问题,因此有一个快捷高效的误报处理流程是非常重要的。下图是厂商进行误报处理的流程图。

【后面的文章里,我们将了解误报构造的可行性分析。】
【相关文章】
最新相关文章
发表评论