logo资料库

杀毒软件查杀原理包含启发式扫描技术主动防御技术的原理.doc

第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
资料共14页,剩余部分请下载后查看
1.3 杀毒软件查杀原理 杀毒软件是根据什么来进行病毒判断并查杀的呢?在讲这个问题之前首先要弄清楚杀 毒软件检测病毒的方法,在与病毒的对抗中,及早发现病毒有重要。早发现,早处 理,可以减少损失。检测病毒的方法有:特征码法、校验和法、行为检测法、软件模 拟法。这些方法依据原理不同,实现时所需开销不同,检测范围不同,各有所长。 1.3.1 特征码法被早期应用于 SCAN、CPAV 等著名病毒检测工具中。国外专家认为特征码法 是检测已知病毒的最简单、开销最小的方法,特征码法的实现步凑如下: 1、 抽取的代码比较特殊,不大可能与普通正常程序代码吻合。 2、 抽取的代码要适当长度,一方面维持特征码的唯一性,另一方面又不要有太大 的空间与时间的开销。如果一种病毒的特征码增强一字节,要检测 3000 种病 毒,增加的空间就是 3000 字节。在保持唯一性的前提下,尽量使特征码长度 短些。 杀毒软件在扫描文件的时候,在文件中搜索是否含有病毒数据库中的病毒特征 码。如果发现病毒特征码,由于特征码与病毒一一对应,便可以断定为病毒。 这里的特征码分为两个部分,第一个是特征码位置;第二部分是狭义上的特征 码。 杀毒软件运用特征码扫描确定某文件为病毒时,这个文件需要满足两个条件: 1、该文件中的某一位置与杀毒软件病毒库的某一位置相对应。 2、该位置上存放的代码与病毒库中定义的该位置上的代码相同。 采用病毒特征码法的检测工具,面对不断出现的新病毒必须不断更新版本,否则检测 工具便会老化,逐渐失去实用价值。病毒特征码法对从未见过的新病毒,自然无法知 道其特征码,因而无法去检测这些新病毒。 特征码法的优点是检测准确快速、可识别病毒的名称、误报率低、依据检测结果可做 解毒处理。缺点是不能检测未知病毒、搜集已知病毒的特征码,费用开销大、在网络 上效率低(在网络服务器上,因长时间检索会使整个网络性能变坏)。特征码分为文 件特征码和内存特征码两种。内存特征码是程序载入内存之后所具有的特征码,在非 运行状态下是不可发觉的。关于有关特征码的知识,笔者会在后面的章节中详细介 绍。 特征码的特点:
A、速度慢。随着病毒种类的增多、检索时间变长。如果检索 5000 种病毒,必须对 5000 个病毒特征码逐一检查。如果病毒种数在增加,检病毒的时间开销就变得十分可 观。 B、误报率低。 C、不能检查多态性病毒。特征码法是不可能检测多态性病毒的。国外专家认为多态性 病毒是病毒特征码法的索命者。 D、不能对付隐藏性病毒。隐藏性病毒如果先于检测工具运行的时间进驻内存,在被检 测工具扫描前已经将被查文件中的病毒代码剥去,检测工具运行时便是在检查一个虚 假的“好文件”,因而不会报警,会被隐藏性病毒所蒙骗。 1.3.2 校验和法 将正常文件的内容,计算其效验和,将该效验和写入文件中或写入别的文件中保存。 在文件使用过程中,定期或不定期的检查文件当前内容算出的校验和与原来保存的校 验和是否一致,因而得出文件是否被感染的结论,这种方法叫校验和法,它即可发现 已知病毒又可发现未知病毒。在 SCAN 和 CPAV 工具的后期版本中除了病毒特征码法之 外,还纳入校验和法,以提高其检测能力。 运用校验和法查病毒采用三种方式: 1、在检测病毒工具中纳入校验和法,对被查的对象文件计算其正常状态的校验和,将 校验和值写入被查文件中或检测工具中,而后进行比较。 2、在应用程序中,放入校验和法自我检查功能,将文件正常状态的校验和写入文件本 身中,每当应用程序启动时,比较现行校验和与原校验和值。实现应用程序的自检 测。 3、将校验和检查程序常驻内存,每当应用程序开始运行时,自动比较检查应用程序内 部或别的文件中预先保存的校验和。 校验和法既能发现已知病毒也能发现未知病毒,但不能识别病毒类,不能报出病毒名 称。由于病毒感染并非文件内容改变的唯一原因,正常程序有时也会造成文件内容的 改变,所以校验和法常常误报警。而且此种方法也会影响文件的运行速度,所以用监 视文件的校验和来检测病毒,不是最好的方法。 遇到下述情况:已有软件版更新、变更口令、修改运行参数,校验和法都会误报警。 还有就是,校验和法对隐藏性病毒也无效。隐藏性病毒进驻内存后,会自动剥去染毒 程序中的病毒代码,使校验和法受骗,对一个有毒文件算出正常校验和。
校验和法的特点: 优点:方法简单,能发现未知病毒,被查文件的细微变化也能发现。缺点:发布通行 记录正常态的校验和、会误报警、不能识别病毒名称、不能对付隐蔽性病毒。 1.3.3 行为监控法 利用病毒的特有行为特征性来检测病毒的方法,称为行为监控法。通过对病毒多年的 观察、研究,有一些行为是病毒的共同行为,而且比较特殊。在正常程序中这些行为 比较罕见。当程序运行时监控其行为,如果发现了病毒行为,立即报警。 这些做为监控病毒的行为特征码如下: A. 占有 INT 13H 所有的引导型病毒,都攻击 boot 扇区或主引导扇区。系统启动时,但 boot 扇区或主 引导扇区获得执行权时,系统刚刚开工。一般引导型病毒都会占用 INT 13H 功能,因 为其他系统功能未设置好,无法利用。引导型病毒占据 INT 13H 功能,在其中放置病 毒所需的代码。 B、 改 DOS 系统为数据区的内存总量 病毒常驻内存后,为防止 DOS 系统将其覆盖,必须修改系统内存总量。 C、 对 COM、EXE 文件做写入动作 病毒要感染,必须写 COM、EXE 文件。 D、 病毒程序与宿主程序的切换 染毒程序运行中,先运行病毒,而后执行宿主程序。在两者切换时,有许多特征行 为。 行为监测法的特点: 行为监测法的长处:可发现未知病毒、可相当准确地预报未知的多数病毒。行为监测 法的短处:可能误报警、不能识别病毒名称、实现时有一定难度。 1.3.4 软件模拟法 多态性病毒每次感染都变化其病毒密码,对付这种病毒,特征代码法失效。因为多态 性病毒代码实施密码化,而且每次所用密钥不同,把染毒的病毒代码相互比较,也无 法找出相同的可能做为特征的稳定代码。虽然行为检测法可以检测多态性病毒,但是 在检测出病毒后,因为不知病毒的种类,难以将病毒彻底清除。
软件模拟法的特点: 软件模拟法的长处:对病毒的判断能力最强(因为综合了多种查毒方法)。 软件模拟法的短处:扫描速度慢,查毒往往不准确。 1.3.5 总结 了解完以上几种检测方法,最终的结论就是:目前杀毒软件最主要还是依靠特征码识 别技术来检测病毒。也就说特征码就是杀毒软件为了判定病毒而从病毒本身提取出来 的有特点的代码(病毒和人一样,总会有特点的)我们的免杀就是专门针对 这些特征 码的,也就是说让杀毒软件找不到这些特征码就可以达到免杀的目的了。不过还有一 点要强调的是,文件本身的功能 是不能损坏的,也就是说免杀之后 的文件和原文件在 功能上要做到完全相同。只有这样才算是真正有效的免杀。 1.4 常见杀毒软件及其引擎特点 1.卡巴斯基:这款杀毒软件是俄罗斯出品的,就目前国内免杀的情况来看,卡巴斯基 就是免杀的主要对象(扫描未知病毒非常厉害),我们到网上搜索“免杀”,在返回 的页面随处可见形如“某某木马免杀过卡巴”这样的教程。从其在免杀教程中出现的 频率就可以看出卡巴斯基的应用范围很广。事实确实如此。小到个人计算机,大到企 业服务器,随处可见卡巴斯基的身影。卡巴斯基的病毒库很大,扫描速度特别慢,而 且非常占资源,曾经国内最流行的版本是 360 安全卫士和卡巴斯基合作的卡巴斯基 7.0 版本,因为这个版本可以免费使用半年。现在的卡巴斯基不但杀毒能力卓越,主动防 御能力更是在界内颇有口碑,尽管卡巴斯基非常占用资源,不过算是瑕不掩瑜吧。 2、瑞星:这个杀毒软件是国产的,和卡巴斯基一样出名,而且瑞星公司自己也特别能 炒作,在互联网上有一定的影响力,用户非常多,所以针对这个杀毒软件的免杀教程 也很多,不过就笔者认为,瑞星的杀毒能力和卡巴斯基差距很大,主动防御功能模块 和卡巴斯基也没有办法相比,优势就是速度快、系统占用资源相对较小。 3、江民杀毒软件:这个杀毒软件可以说得上是真正的实力派(尽管实力上还是有些差 距,不过在国内就算是实力派了)。他的杀毒能力不错,耗费资源一般,主动防御功 能也很不错。可以说得上是中规中矩的一款杀毒软件了。 4、诺顿:这个杀毒软件是诺顿公司的,性能卓越。病毒库很大,扫描速度慢。不同版 本的诺顿占用系统资源的程度相差很大。这个杀毒软件的免杀非常好做。可谓是著名 杀毒软件中实力最弱的杀毒软件。 5、金山毒霸:杀毒能力很差,占用资源一般,速度快。因为操作简单,界面不错,所 以能满足一般家庭用户的需要。
6、NOD32:这个杀毒软件我得详细的讲讲,这个杀毒软件的查杀机制和其他几个差别 很大,针对他的免杀比较难做。如今新版的 NOD32 加入了主动防御功能,功能上的提 升使他成为目前最难对付的杀毒软件。系统占用资源一般,扫描速度非常的快。启动 扫描特别厉害,查杀未知病毒的性能和卡巴斯基旗鼓相当。 7、麦咖啡:国外杀毒软件,功能一般,查杀能力一般,占用资源一般。国内 PC 用户 很少使用,但经常可以在服务器上看到其身影,高级版本对未知病毒的查杀能力很 强。 8、小红伞:这是款非常出名的杀毒软件,尽管在国内没有广告宣传,但是依旧有一批 忠实的用户。小红伞的启发式扫描很厉害,可以说和 NOD32 的启发扫描不分伯仲,各 有各的特点。 9、F-Prot Antivirus:这是一款来自冰岛的杀毒软件。国内很少有资料介绍这款杀毒软 件,而这款杀毒软件恰恰是笔者最看好的。该杀毒软件查杀能力决对一流,对未知病 毒的查杀能力远在卡巴斯基和 NOD32 之上,不过因为其公司并未开拓中国市场,所以 我们很少见到有人使用这款杀毒软件。该杀毒软件性能卓越,本书作者鼎力推荐。 10、微软杀毒:微软的杀毒软件一经推出,便受到免杀爱好者的关注。依仗着微软在 操作系统的占有率,其杀毒软件也有一定的占有率。几乎所有的木马都不能过微软的 杀毒软件,等到大家对微软杀毒研究相对较深入之后,不难发现,目前的微软杀毒引 擎和 NOD32 的杀毒引擎很像,基本都是使用启发式扫描对 API 函数的调用进行判定和 加权(关于启发式扫描的知识,在后面的章节中会有详细的讲解)。 1.5 免杀技术的分类 免杀技术是病毒隐藏性变种技术的重要分支,这是一个非常庞大的分支,因为免杀技 术的类别和方法都有很多,那么免杀技术究竟可以分为哪几类呢,下面我们来具体看 看。 1.5.1 内部免杀和外部免杀 按照免杀针对的原文件的不同,可以将免杀分为内部免杀和外部免杀,外部免杀又通 常被称为 PE 免杀。内部免杀指的是从病毒的源代码入手,通过修改病毒的源代码实现 病毒的隐藏性变种,外部免杀指的是将已经编译连接后的病毒文件通过加密等手段将 病毒的代码复杂化,从而干扰杀毒软件对其的判定,使之免杀。 内部免杀有一个必要的前提,就是免杀制作者必须要有病毒的源代码,这一条件非常 苛刻,所以在网上关于内部免杀的讨论并不热烈,更多的是关于外部免杀技术细节的 讨论。外部免杀需要一定的反汇编基础和 PE 结构知识,有了这些之后,只需要一些常 见的反汇编工具,就可以对很多病毒进行免杀处理了。
对于这两种不同的免杀方式,网上一直争论不休,有的人认为内部免杀是外部免杀层 面至上的技术,而外部免杀则是免杀基础。针对这一看法,大叔要客观的说一下,内 部免杀和外部免杀属同一技术层次,没有高低之分。而如果非要说出哪种方式的技术 难度更高,那答案只能是“因人而异”,有些人高级语言编程基础比较好,可以更擅 长内部免杀,而另外一些人可能了解反汇编以及离散数学等知识,对这些人来说,使 用外部免杀往往更得心应手。至于两种免杀方式最终得出的免杀效果而言,并没有区 别,最终目的都是让病毒免杀,仅此而已。 1.5.2 特征码免杀和大范围免杀 根据免杀效果的不同,还可以将免杀分为特征码免杀和大范围免杀。 先进的杀毒引擎使用的杀毒技术依然是围绕特征码展开的,所以修改病毒的特征码在 可预见的很长一段时间里还是会是免杀技术的中流砥柱。大范围免杀通常又被称为 “无特征码免杀”,指的是使用一些例如加花加壳这种使病毒代码复杂化的方法对病 毒进行处理,处理过的病毒很可能会同时免杀掉多种杀毒软件。这里所说的“大范 围”只是狭义上的,并不代表范围一定很大,大范围指的不是直接针对特征码的修 改,只是指通过其他的方法使代码病毒的代码复杂化,从而间接影响杀毒软件对病毒 特征码的识别。 1.5.3 文件免杀、内存免杀和行为免杀 免杀还可以分为三类:文件免杀、内存免杀、行为免杀。 文件免杀指的是在计算机硬盘上存放的被某杀毒软件查杀的病毒,经过免杀处理后, 再对病毒进行静态的病毒扫描时,该杀毒软件不将这个原本被自己查杀的文件判断为 病毒。这其中所指的静态扫描时什么意思呢?最初的杀毒软件只具有静态扫描功能, 但是随着免杀技术的兴起,杀毒引擎也在不断的更新换代,现在的杀毒软件已经可以 自动的将硬盘上某些特定的文件的代码段或其他 PE 区段载入到内存并对内存中的数据 进行病毒扫描,而这已脱离了文件免杀的范畴。这种将硬盘上的病毒文件中特定的 PE 区段载入到内存并进行病毒鉴定的方法,被称为对病毒的动态文件扫描,这并不等同 于杀毒软件的内存扫描。杀毒软件的内存查杀是指在病毒运行的时候,病毒被载入计 算机的内存后,杀毒软件在内存中侦测到病毒的运行,并将病毒在内存中击杀。内存 免杀指的是在上述例子中的病毒被载入到内存后,系统无法通过杀毒软件的内存扫描 功能从内存中找出该病毒。 行为免杀的概念出现在文件免杀和内存免杀之后,是一个相对比较新的概念。病毒程 序大都有很多共性,如:在系统文件中释放一些动态链接库文件并添加启动项或服务 等。杀毒软件可以抓住病毒的这一特性,监控计算机运行的程序,控制程序可能产生
的对计算机系统有危害的行为,杀毒软件的这种监控方式就是行为监控,而突破这种 监控的方式的工作就称为病毒的行为免杀。 1.5.4 盲免技术 盲免技术又被简称为“盲免”,盲免可以说得上是一个隐藏在圈内很久未被公开的免 杀技术。这是因为盲免技术除了对免杀制作者自身的免杀技术实力要强要求非常高之 外,还需要一定的运气。那么究竟什么是盲免呢,盲免真的有那么难吗?大叔给大家 举一个真实的例子,通过这个例子,大家就可以对盲免有一个初步的了解。 2009 年一天,教主同志渗透某著名网络游戏公司,并且已经进入了最关键的阶段。该 公司员工的电脑安装的都是诺顿 11 杀毒软件,教主自己的电脑木马在装有诺顿 11 的 机器上运行执行后会导致诺顿 11 的驱动程序崩溃,进而使 WINDOWS 系统蓝屏。因 为该网络游戏公司在下午 4:30 的时候下班,此时已经 4:00 了,如果再不抓紧渗透, 今天的工作就要告一段落了。就在此时教主找到了我,让我给他一个过诺顿 11 的免杀 木马,而此时大叔刚来到长春不久,计算机也重新配置过,虚拟机中刚好没有诺顿 11 杀毒软件,教主的再三催促下,大叔决定盲免 PCSHARE 20071125。大叔拿出 PCSHARE 20071125,直接将 PE 头和配置文件的代码段移动了一段距离,然后又做了 一些简单的干扰码修改和加花工作,对最终生成的文件(无驱动的服务端)又进行了 上述修改(整个过程不到 5 分钟),在没有任何测试的情况下把这个文件发送给教 主。教主在网络游戏公司的员工电脑上运行大叔传过去的木马,木马成功上线,诺顿 11 没有任何提示。这就是一次成功的盲免,相信读者对盲免已经有一个初步的认识 了。盲免指的就是在不使用杀毒软件定位特征码也不需要杀毒软件测试免杀的效果, 直接制作出最终的免杀样本。在这看似投机的结果中,其实有很多技术细节和经验在 里面,盲免不是瞎搞,与特征码免杀一样,盲免也是有很强的针对性的。能熟练盲免 的免杀制作者,他们对各种杀毒引擎都非常了解,这些都是靠平时做一般性免杀的过 程中得到的,有了这个前提,才能在不借助杀毒软件的情况下,判断出杀毒软件对特 征码识别的弱点。就拿上面免杀诺顿 11 的例子来说,诺顿 11 喜欢把特征码定位在代 码段的开始处,所以我移动了代码段的起始位置并给 PCSHARE 加了一套花指令,移动 PE 头则是干扰诺顿 11 对代码段头的判断,而修改的干扰码则是 PCSHARE 木马服务端 中很多显眼的 ASCII 码,这些明显的 ASCII 码很可能被设定为特征码或干扰码。总 之,盲免技术是免杀技术实力的一个重要体现,体现出免杀制作者对杀毒引擎的了 解,当然,只是了解杀毒引擎是不够的,针对各种不同的杀毒引擎,修改特征码的方 法也是不尽相同,所以在研究查毒引擎之前,需要掌握好 PE 结构、反汇编等基础知 识。 7.1 再谈特征码
在第一章讲解杀毒软件对病毒的查杀原理的时候,我们曾经提到过特征码这个概念。 没错,特征码查杀技术就是当今主流杀毒软件引擎的灵魂。在本节,你将会了解到关 于特征码查杀技术更为深入的知识。相比于在第一章对特征码查杀技术的讲解,本节 的内容显得更容易理解,因为是笔者总结多年免杀经验对此类知识最直接最肯定的阐 述。 7.1.1 特征码查杀两要素 当杀毒软件捕获到一个病毒样本之后,杀毒软件公司的技术人员会提取病毒样本内比 较特殊的代码或者数据,并记录下所提取的代码或者数据在病毒样本中的文件偏移, 最后将病毒样本的特征码或特征码所在文件的偏移存放在杀毒软件的病毒库中。当用 户使用杀毒软件对某一个文件进行扫描时,杀毒软件的杀毒引擎会将病毒库中的特征 码与被扫描文件进行对比,特征码比对的大致过程很简单,就是从病毒库中提取出第 一条特征码和该特征码(记作特征码 A)所对应的文件偏移(记作文件偏移 A),然后 比对被扫描文件在文件偏移 A 处的代码或数据与特征码 A 的一致性。如果被扫描文件 在文件偏移 A 处的代码或数据与特征码 A 相同,那么被扫描文件在文件偏移 A 处的代 码或数据与特征码 A 不相同,则杀毒引擎会从病毒库中提取下一条特征码记录,继续 进行上述操作,如果将病毒库中所有特征码记录与被扫描文件对比完毕后都没有相同 的部分,则杀毒软件判断被扫描文件不为病毒。综上所述,特征码查杀技术的两个基 本的要素就是特征码和该特征码所在的文件偏移。而这种说法并不完全正确,因为将 这两个要素中的文件偏移转换做是 RVA,也就是相对镜像基址的偏移,则该特征码就 是内存特征码,具体的原因很好理解,此处不再阐述。所以正确的说法是特征码查杀 技术的两个最基本的要素是特征码和该特征码所在的偏移。 有的读者可能会生产疑问,上面的这些知识在第一章里面也讲过啊,尽管讲解与第一 章中有关特征码查杀技术的讲解并不完全相同,但是主旨都是强调特征码查杀技术的 两个要素——特征码和该特征码所在的文件偏移,为什么这里还要重复一次呢?笔者 想说的是,此处再次强调这些知识是为了引入即将讲解的更为深入的关于特征码查杀 技术的知识,从而能够让读者一气呵成掌握当今主流的特征码查杀技术之原理,闲话 少说,回到技术问题上来。 上面所说的特征码查杀技术是最基本最纯粹的特征码识别技术原理,而在实际杀毒软 件中,杀毒软件对于上述过程往往有优化措施,例如:复合特征码查杀、隐藏特征码 查杀等。接下来,笔者会向读者依次介绍复合特征码查杀和隐藏特征码查杀技术。 7.1.2 复合特征码查杀 当免杀技术爱好者了解到杀毒软件特征码查杀的原理后,使用特定的办法获取杀毒软 件对某病毒的特征码和该特征码所在的偏移,然后通过一些手段改掉病毒在这个偏移
分享到:
收藏