bitsCN.com
最近在研究病毒的检测技术,虽然在这个木马、流氓件猖獗的年代,检测技术(除了考虑效率因素外)已经变得不是十分重要了。但俺仍然出于兴趣想从这里面寻找些思路。或许对抗技术的本身并不在于谁彻底打败了谁,而在于彼此间共同进步。在查阅资料中发现了这篇文章(Anti heuristic techniques author:Black Jack ),虽然是比较古老的,但还是可以从中获得很多新的思路。翻译的比较粗糙,如有不正确或不准确的地方还望大家指正,后面我会继续谈些对抗仿真技术的策略。译文如下:
简介
在早些年的日子里,杀毒软件通过对病毒的特征码搜索是完全可以检测出病毒的。但随着病毒数量的快速增涨,反病毒研究人员发明了一些启发式的病毒检测方法,并把它应用到工作中。代码仿真的启发式扫描器会像虚拟机一样运行程序的代码,并在此环境下检测程序是否具有病毒的相似行为。
所以在理论上,这样的启发式扫描可以发现任何一种新的病毒。但仅仅是理论上,因为代码仿真不可能达到对真实CUP的100%模拟,所以该技术并不能毫无遗漏的检测出每一个病毒。由此可见,在VX社区中,寻找启发式引擎的缺陷和利用它们就成了我们的目标和责任。我所要谈的就是如何利用不同的手段欺骗并愚弄这些启发式引擎,使我们最新创造的那些无形的邪恶的程序不被启发式引擎所找到及清除。
这是我认为在病毒的编程领域里最有趣的事情(因为始终是有一种伟大的感觉,那就是你比你的敌人更聪明; -) ).以下是我在过去的日子里关于这方面的研究成果。
了解你的对手
如果你想研究Anti heuristic技术,第一件事就是你需要一个具有启发式功能的扫描器来检测你编写的创作(virus),我建议你尽量多的找些这样的扫描器。因为每一启发式的扫描器都有自己的强项及弱点。我给你一个简单的扫描器列表,我将使用这些来进行测试。
.Thunderbyte Antivirus (在早期,这被认为是最好的扫描器了,但现在,在vxer的眼中它已经被认是很一般的了,至少在"启发式检测"(其实仅是特定的字符串描)方面如此。但在其它方面它附带了很多实用的扫描器(checksummer, cleaner, memory resident utilities...)。顺便说一下,每个人都会有自己喜欢的不同版本,我建议您使用7.xx这一版本。因为这个版本可以让您制定您自己的扫描方式,这一点很重要,如果你自己不小心感染了自己的机器。
.F-prot 这个是不算太坏的,虽然还有很多更好的。有趣的是,比起现在最后的一个版本在启发式方面有了更好的改进。所有我建议您使用V2.2.8版或像我一样使用V2.2.7版来测试你的病毒。另外有趣的特点是这款扫描器,支持使用可疑扫描的命令行参数方式执行。如果您使用它,将进入一个智能的扫描模式。基于这样的原因,你知道开启可疑检测模式并不是必需的,如果你这样做了,你会知道你的anti-heuristic 技术实在是太好用了。
.AVP :在我认为最好的启发式扫描器当中,确实是难于欺骗的一个。我是用的版本是version 3.0 build 128
.NOD : 像AVP一样的优秀。
.Dr. Web: 这也是非常好的启发式扫描器,那些俄罗斯人知道如何取得更好的Anti Virus效果。
.Dr Solomon's :从我一个在NAI工作的一个朋友那里知道,这是一款中高质量的扫描器,但它的效果仍优于mcafee。
.Ikarus Antivirus :一个中等品质的扫描器,我使用它,是出于爱国的原因。
重要的思路
我的所有欺骗手段,都是基于同样的思路的:那就是病毒是加密的,我们要在扫描器能解密出病毒体前停止仿真代码的执行,或者在扫描过程中隐藏我们的加密密钥。如果你仍然没有使用加密的方式,密钥隐藏手段也是可以使用的,在“加密”的调用方式中(例如,int 21h 中断的值bitsCN.com