查看: 70193|回复: 322
收起左侧

[技术原创] 谈谈我对QVM引擎的理解(重编辑版)

  [复制链接]
jefffire
头像被屏蔽
发表于 2010-12-16 14:55:54 | 显示全部楼层 |阅读模式
本帖最后由 jefffire 于 2011-10-6 12:55 编辑

   声明:本文可以不经允许随意转载,但请转载时请标明来源谢谢合作:)

   360推出QVM智能引擎后,一石激起千层浪,赞赏者有之,质疑者有之。今天我就来谈谈我对这个智能引擎的一些不成熟看法。     
    为了识别病毒,反病毒手段在不断改进,从最初的简单特征码,到复合特征码、广谱特征码,到虚拟启发,到行为判定,经历了不少阶段(具体可参见此文:http://bbs.kafan.cn/thread-866036-1-1.html)。今天让我们跳出这些个条条框框的思维限制,让我们从根本上来思考一下,这样一个问题:区分病毒文件和正常文件,究竟靠的是什么??

      我反复思考,得出一个自认为正确的答案:difference,也就是差异、不同。 只有靠发现病毒文件和正常文件的difference,才能识别出病毒文件。这一点是我讨论的理论基础。纵观特征码,启发,还是行为,实质上都是在找出差异:病毒文件和正常文件行为上的差异,文件代码上的差异。所谓特征码,其实就是病毒和正常文件的差异特征代码罢了。
     找到了问题的本质,解决问题的方法也就千变万化了。     

     于是,有人就想到,既然是找出差异,那能不能利用搜索引擎广泛使用的一些智能算法来完成目标呢?搜索引擎需要完成的任务和我们的反病毒任务有很多相似之处:1、都是海量文件的分析  2、都是去寻找特定特征的目标。设想就这样确立了。
   
     我为了使介绍更通俗易懂,先介绍一个广泛运用于拦截垃圾邮件的智能算法——贝叶斯算法。贝叶斯是基于概率的一种算法。是Thomas Bayes:一位伟大的数学大师所创建的,贝叶斯过滤器是基于自我学习的智能技术,能够使自己适应垃圾邮件制造者的新把戏。
   我就不讲述复杂的算法步骤,我就举一个实际例子,让大家知道,贝叶斯算法是如何去区分垃圾邮件和正常邮件的。

   例:一封含有 “ 法轮功 ” 字样的垃圾邮件 A 和一封含有 “ 法律 ” 字样的非垃圾邮件 B 。 根据邮件 A 生成 哈希表(坏),该表中的记录为

  法: 1 次

  轮: 1 次

  功: 1 次

  计算得在本表中:

  法出现的概率为 0.3

  轮出现的概率为 0.3

  功出现的概率为 0.3

  根据邮件B生成哈希表(好)
,该表中的记录为:

  法: 1 次

  律: 1 次

  计算得在本表中:

  法出现的概率为 0.5

  律出现的概率为 0.5

  综合考虑两个哈希表,共有四个 字符
串:法 轮 功 律

  当邮件中出现“法”时,该邮件为垃圾邮件的概率为:

  P = 0.3/ ( 0.3 + 0.5 ) = 0.375

  出现“轮”时,该邮件为垃圾邮件的概率为:

  P = 0.3/ ( 0.3 + 0 ) = 1

  出现“功”时,该邮件为垃圾邮件的概率为:

  P = 0.3/ ( 0.3 + 0 ) = 1

  出现“律”时,该邮件为垃圾邮件的概率为:

  P = 0/ ( 0 + 0.5 ) = 0

  由此可得第三个哈希表 hashtable_probability (也就是数据库文件),其数据为:

  法: 0.375

  轮: 1

  功: 1

  律: 0

  当新到一封含有“功律”的邮件时,我们可得到两个字符
串:功 律

  查询哈希表 hashtable_probability 可得:

  P (垃圾邮件 | 功) = 1

  P (垃圾邮件 | 律) = 0

  此时该邮件为垃圾邮件的可能性为:

  P= ( 0*1 ) /[0*1+ ( 1-0 ) * ( 1-1 ) ] = 0

  由此可推出该邮件为非垃圾邮件。

   从这个例子我们可以看出,贝叶斯算法是先通过对垃圾邮件和正常邮件的“学习”,得出模型数据(即上例中的哈希表 hashtable_probability),然后利用模型数据,去区分新的垃圾邮件。显而易见,学习的越多,模型数据越大,则最终的鉴别结果也就越准确。

    而QVM使用的也是类似的技术,即利用一套智能算法(当然并不是上例中的贝叶斯算法,而是一种独创的算法)学习海量的病毒文件以及正常文件,得出数据模型(也就是分发到客户端的MDF文件),最后利用模型数据区分新的病毒。为什么说QVM是智能引擎??并不是说QVM,具有人类的智能和情感,而是指这套算法是可以不断归纳总结新的数据模型,不断适应新的病毒变化。   
   

    因此千万不要被名字中的VM迷惑,以为是Virtual Machine.  实质这个VM是support vector machine的缩写。其具体理论细节可以参见Vapnik著作的机器学习经典《Statistical Learning Theory》
   

   从上述可以看出,这类技术有明显的优点:
    1、只要算法得当,完全可以自我学习,减少的人力成本。
    2、对病毒的变形,加密,加壳,具有良好的效果
    3、病毒编写者完全不知道你的算法是如何去区分病毒的,寻找定位特征的通用方法十分困难导致免杀成本大幅度提高


   也可以看出,明显的缺点:
    1、对算法,数学功底要求高,如果算法不行,效果大打折扣
     2、对和正常文件特征较近的流氓软件,不易区分。
    3、要求具备一定数量和较高质量的病毒和白文件库,以供算法学若样本质量差,则效果大打折扣,容易造成较多误报。
       4 、算法本身并不完美,因此不可避免的存在学习死区。











评分

参与人数 21魅力 +1 人气 +22 收起 理由
sli + 1 这个才是大牛级别的帖子 比起那个云好多了
zwl2828 + 1
威尔士王子 + 1 精品文章
Markel.Scofield + 1 乃精通那些加密算法吗?
pigiam + 1 技术啊~

查看全部评分

jefffire
头像被屏蔽
 楼主| 发表于 2010-12-16 14:57:55 | 显示全部楼层
自沙
XMonster
发表于 2010-12-16 14:58:30 | 显示全部楼层
技术帖…慢慢看 话说姐夫打算申请360版主麽?嘿嘿

评分

参与人数 1人气 +1 收起 理由
jefffire + 1 板凳奖励

查看全部评分

ablhr
发表于 2010-12-16 14:59:56 | 显示全部楼层
前排围观杰夫老师

评分

参与人数 1人气 +1 收起 理由
jefffire + 1 发现潜水大王

查看全部评分

空白页
发表于 2010-12-16 15:00:55 | 显示全部楼层
算法 膜拜了
卍解十字架
发表于 2010-12-16 15:02:21 | 显示全部楼层
LZ写这么多辛苦了,期待完整版QVM集成到卫士的那一天
fatezero
发表于 2010-12-16 15:04:06 | 显示全部楼层
本帖最后由 fatezero 于 2010-12-16 15:14 编辑

姐夫继续开课

最后那“习”和“。”

评分

参与人数 1人气 +1 收起 理由
jefffire + 1 这都被你看出来了

查看全部评分

zdolo
发表于 2010-12-16 15:05:13 | 显示全部楼层
jefffire 发表于 2010-12-16 14:55
360推出QVM智能引擎后,一石激起千层浪,赞赏者有之,质疑者有之。今天我就来谈谈我对这个智能引擎的一 ...

--------------------------------------------------------------------------------------------------
      我反复思考,得出一个自认为正确的答案:difference,也就是差异、不同。
--------------------------------------------------------------------------------------------------
不错,有悟性
wusuwusu
发表于 2010-12-16 15:07:10 | 显示全部楼层
前来支持下
bbs2811125
发表于 2010-12-16 15:08:51 | 显示全部楼层
有心情研究这个真是不错
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-11-24 03:44 , Processed in 0.129770 second(s), 18 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表