网络安全 频道

安全扫盲贴 到底什么样的杀毒软件好

  【IT168 应用】在计算机的世界里,病毒就是一种执着的力量,那么杀毒软件,就是死亡的力量;也或者病毒才是死亡的力量,不管怎样,杀毒软件是一种不可或缺的东西。我用过的一些杀毒软件,和我体验试用,或者给求助的朋友安装或者卸载的,都有我的一点感受,写出来,给大家一点思路,选择一个更适合自己用的杀毒软件。

  (1)杀软篇

  在介绍之前,先简单结合自己的理解和引用一些文章,来说点技术性的知识:

  一、杀毒软件引擎与病毒库的关系

  其实病毒库与杀毒引擎没有直接的关系,杀毒引擎的任务和功能非常简单,就是对指定的文件或者程序进行判断其是否合法。而病毒库,只不过是对杀毒引擎的一种补充,也就是说:“我们没有足够聪明的杀毒引擎来完成这个过程”,那个过程,就是杀毒引擎对文件或者程序判断。明白这一点,就应该知道,好的杀毒软件,重要在引擎的优秀,病毒库只不过是补充,而且病毒库越大,杀毒速度肯定会降低。因为病毒库杀毒的过程,是引擎把判断能力交给病毒库,用病毒库与指定的文件进行对比判断。

  二、加壳、脱壳

  1.什么是加壳:所谓加壳,是一种通过一系列数学运算,将可执行程序文件或动态链接库文件的编码进行改变(目前还有一些加壳软件可以压缩、加密驱动程序),以达到缩小文件体积或加密程序编码的目的。

  当被加壳的程序运行时,外壳程序先被执行,然后由这个外壳程序负责将用户原有的程序在内存中解压缩,并把控制权交还给脱壳后的真正程序。一切操作自动完成,用户不知道也无需知道壳程序是如何运行的。一般情况下,加壳程序和未加壳程序的运行结果是一样的。

  如何判断一个可执行文件是否被加了壳呢?有一个简单的方法(对中文软件效果较明显)。用记事本打开一个可执行文件,如果能看到软件的提示信息则一般是未加壳的,如果完全是乱码,则多半是被加壳的。我们还可以使用一款叫做Fileinfo的工具来查看文件具体加的是什么壳。目前,较常见到的壳有“UPX”、“ASPack”、“PePack”、“PECompact”、“UPack”、“NsPack”、“免疫007”、“木马彩衣”等等。

  为什么黑客能够利用加壳技术来对抗反病毒软件呢?众所周知,目前杀毒软件主要依靠特征码技术查杀病毒。由于加壳软件会对源文件进行压缩、变形,使加密前后的特征码完全不同。

  脱壳能力不强的杀毒软件,对付“加壳”后病毒就需要添加两条不同的特征记录。如果黑客换一种加壳工具加壳,则对于这些杀毒软件来说又是一种新的病毒,必须添加新的特征记录才能够查杀。如果杀毒软件的脱壳能力较强,则可以先将病毒文件脱壳,再进行查杀,这样只需要一条记录就可以对这些病毒通杀,不仅减小杀毒软件对系统资源的占用,同时大大提升了其查杀病毒的能力。

  2. 脱壳

  马甲”能穿也能脱。相应的,有加壳也一定会有解壳(也叫脱壳)。脱壳主要有两种方法:硬脱壳和动态脱壳。

  第一种,是硬脱壳,这是指找出加壳软件的加壳算法,写出逆向算法,就像压缩和解压缩一样。由于,目前很多“壳”均带有加密、变形的特点,每次加壳生成的代码都不一样。硬脱壳对此无能为力,但由于其技术门槛较低,仍然被一些杀毒软件所使用。 ?

  第二种,是动态脱壳。由于加壳的程序运行时必须还原成原始形态,即加壳程序会在运行时自行脱掉“马甲”。目前,有一种脱壳方式是抓取(Dump)内存中的镜像,再重构成标准的执行文件。相比硬脱壳方法,这种脱壳方法对自行加密、变形的壳处理效果更好。

  三、虚拟机脱壳引擎(VUE)技术

  对于病毒,如果让其运行,则用户计算机就会被病毒感染。因此,一种新的思路被提出,即给病毒构造一个仿真的环境,诱骗病毒自己脱掉“马甲”。并且“虚拟环境”和用户的计算机隔离,病毒在虚拟机的操作不会对用户计算机有任何的影响。

  “虚拟机脱壳”技术已经成为近年来全球安全业界公认的、解决这一问题的最有效利器。但由于编写虚拟机系统需要解决虚拟CPU、虚拟周边硬件设备、虚拟驱动程序等多个方面的困难,即使有雄厚的研发实力,也未必能在短时间内达到实用的程度。

  四、启发式杀毒(启发式代码扫描技术)

  病毒和正常程序的区别可以体现在许多方面,比较常见的如:通常一个应用程序在最初的指令,是检查命令行输入有无参数项、清屏和保存原来屏幕显示等,而病毒程序则没有会这样做的,通常它最初的指令是直接写盘操作、解码指令,或搜索某路径下的可执行程序等相关操作指令序列。这些显著的不同之处,一个熟练的程序员在调试状态下只需一瞥便可一目了然。启发式代码扫描技术实际上就是把这种经验和知识移植到一个查病毒软件中的具体程序体现。

  启发式指的“自我发现的能力”或“运用某种方式或方法去判定事物的知识和技能。”一个运用启发式扫描技术的病毒检测软件,实际上就是以特定方式实现的动态高度器或反编译器,通过对有关指令序列的反编译逐步理解和确定其蕴藏的真正动机。例如,如果一段程序以如下序列开始:MOVAH,5/INT,13h,即调用格式化盘操作的BIOS指令功能,那么这段程序就高度可疑值得引起警觉,尤其是假如这段指令之前不存在取得命令行关于执行的参数选项,又没有要求用户交互性输入继续进行的操作指令时,就可以有把握地认为这是一个病毒或恶意破坏的程序。

  启发式杀毒代表着未来反病毒技术发展的必然趋势,具备某种人工智能特点的反毒技术,向我们展示了一种通用的、不需升级(较省需要升级或不依赖于升级)的病毒检测技术和产品的可能性。由于诸多传统技术无法企及的强大优势,必将得到普遍的应用和迅速的发展。资料显示,目前国际上最著名的排名在前五名的反病毒软件产品均声称应用了这项技术,从来自不同机构和出处的评测结果来看,纯粹的启发式代码分析技术的应用(不借助任何事先的对于被测目标病毒样本的研究和了解),已能达到80%以上的病毒检出率,而其误报率极易控制在0.1%之下,这对于仅仅使用传统的基于对已知病毒的研究而抽取“特征字串”的特征扫描技术的查毒软件来说,是不可想象的,一次质的飞跃。在新病毒,新变种层出不穷,病毒数量不断激增的今天,这种技术的产生和应用更具有特殊的重要意义。

  对于杀毒软件的选择,许多人总是问别人该用那一个。其实大多数情况下,如果你有一个很干净的的上网习惯(正常的网站被挂马毕竟少数),不随意打开未知邮件中的附件和链接等等,绝大多的杀软都可以保证你的安全了!剩下的选择条件就看你的硬件配置、与其他重要软件冲突、使用习惯等方面考虑了。

  (2)病毒篇

  所谓病毒就是一段代码,其本质和大家使用的QQ、WORD什么的程序没有区别,只不过制作者令其具有了自我复制和定时发作进行破坏功能。一般病毒都在1K到数K大小。

  一、病毒种类

  我们所遇到的病毒可分引导型(感染磁盘引导区)程序型(感染可执行文件)宏病毒(感染WORD文档)等。

  二、病毒工作原理

  计算机系统的内存是一个非常重要的资源,我们可以认为所有的工作都需要在内存中运行(相当与人的大脑),所以控制了内存就相当于控制了人的大脑,病毒一般都是通过各种方式把自己植入内存,获取系统最高控制权,然后感染在内存中运行的程序。(注意,所有的程序都在内存中运行,也就是说,在感染了病毒后,你所有运行过的程序都有可能被传染上,感染那些文件这由病毒的特性所决定)

  1、程序型病毒的工作原理。

  这是目前最多的一类病毒,主要感染.exe 和 .dll等可执行文件和动态连接库文件,比如很多的蠕虫病毒都是这样。注意蠕虫病毒不是一个病毒,而是一个种类。他的特点是针对目前INTERNET高速发展,主要在网络上传播,当他感染了一台计算机之后,可以自动的把自己通过网络发送出去,比如发送给同一居欲网的用户或者自动读取你的EMAIL列表,自动给你的朋友发EMAIL等等。感染了蠕虫病毒的机器一秒种可能会发送几百个包来探测起周围的机器。会造成网络资源的巨大浪费。所以这次我们杀毒主要是针对这种病毒。

  那么病毒是怎么传染的那?

  切记:病毒传染的前提就是,他必须把自己复制到内存中,硬盘中的带毒文件如果没有被读入内寸,是不会传染的,这在杀毒中非常重要。而且,计算机断电后内存内容会丢失这我想大家都知道。

  所以:病毒和杀毒软件斗争的焦点就在于争夺启动后的内存控制权。

  2、程序型病毒是怎么传播的。

  病毒传播最主要的途径是网络,还有软盘和光盘。比如,我正在工作时,朋友拿来一个带病毒的软盘,比如,该病毒感染了磁盘里的A文件,我运行了一下这个A文件,病毒就被读如内存,如果你不运行染毒文件,程序型病毒是不会感染你的机器的(不要骂,我这里说的是程序型病毒,后面我会说引导型病毒,他只要打开软盘就会感染)当染毒文件被运行,病毒就进入内存,并获取了内存控制权,开始感染所有之后运行的文件。比如我运行了WORD。EXE,则该文件被感染,病毒把自己复制一份,加在WORD.EXE文件的后面,会使该文件长度增加1到几个K。(不是所有病毒都这样,我举这个离子只是想介绍病毒感染过程)

  好,接下来,比如说我关机了,则内存中的病毒被清除,我机子中所有的染毒文件只有WORD.exe。第二天,我又开机时,内存是干净的。比如我需要用WORD,于是,该染毒文件中的病毒被读如内存,继续感染下面运行的程序,周而复始,时间越长,染毒文件越多。

  到了一定时间,病毒开始发作(根据病毒作者定义的条件,有的是时间,比如CIH,有的是感染规模等等)执行病毒作者定义的操作,比如无限复制,占用系统资源、删除文件、将自己向网络传播甚至格式化磁盘等等。

  但是,无论如何,病毒只不过是一段代码,他不可能破坏硬件(欢迎和我讨论),就算是CIH也不是破坏硬件,他只是改写了BIOS中的数据,实际上还是软破坏。什么叫破坏硬件?就是病毒发作时,你的硬盘啪的一下裂成两半,可能吗?

  所以,完全不必惧怕病毒,他不会让我门受到太大的经济损失,如果我们养成良好的工作习惯的话(比如自己的文档不要保存在C盘等,后面我会细说)

  3、引导型病毒的工作原理

  看了前面的病毒传染过程,大家很容易想到,只要我启动计算机后不运行染毒程序,直接删除不就可以了。实际上,现在的病毒没有那么弱智的,下面我门来看看其他的几种传染机制,首先看看引导型病毒

  刚才说了,病毒必须进入内存才可以继续感染,只有被运行他才可以进入内存,那么与等用户来运行,如果用户长期不用这个染度文件,岂不是等的花而也谢了。引导型病毒感染的不是文件,而是磁盘引导区,他把自己写入引导区,这样,只要磁盘被读写,病毒就首先被读取入内存。这就是为什么杀毒要用干净的启动盘启动,为的就是防止引导型病毒。下面我详细的谈一下磁盘引导区,看不懂的可以跳过去。

  4、引导型病毒是如何传播的

  在计算机启动时,必须读取硬盘主引导区获得分区信息,再读取C:盘引导区获取操作系统信息,这时候任何杀毒软件都无法控制,这样我先介绍一下计算机的启动顺序,大家只要记住一点就是:任何程序都要被读入内存才会起作用。

  计算机加电后,内存是空的,首先从BIOS中读取一些启动参数到内存中,这些命令控制计算机去做下一步工作就是自检。(BIOS就是固化在ROM中的基本输入输出系统的意思,ROM是只读存储器,因为计算机是一个机电设备,他不会自己干什么事情,必须由软件,也就是人事先写好的程序来控制他工作,而这些程序必须被读入内存才可以控制计算机,哈哈越扯越远了,不说了,在将就变成计算机基础讲座了,哈哈)

  接下来,计算机自检,发现硬盘,读取硬盘主引导程序到内存中,再读取C盘的引导程序到内存中,再读取操作系统文件到内存中,然后开始由操作系统文件控制计算机开始启动。启动完毕后,读入各种自动运行的文件,比如天网放火墙、QQ、病毒监测软件、等等,

  前面说过,谁先进入内存,谁先占据系统控制权,从上面的启动顺序可以发现,如果病毒在引导区,那么,他被读入内存的时候,杀毒软件还不知道在那里呢。

  举个离子:比如我拿了一张染有引导型病毒的软盘用,当我双击A盘图标后,计算机开始读软盘,首先读入软盘引导区,病毒随之进入内存,并立即把自己写入硬盘引导区(如果开了病毒检测,则时可以检测到并杀之)。如果没有装杀毒软件,检测布道,则下次开机时,计算机自检之后,读硬盘引导区时就会同时读入病毒,接下来,病毒获得系统控制权,改写操作系统文件,隐藏自己,然后计算机继续启动进入WIN200桌面,然后病毒检测才开始运行,病毒完全可能已经把自己伪装起来,让杀毒软件找不到。

  所以这中病毒一定要用启动盘启动后,再杀,就是为了跳过读硬盘引导区那一段。在后面我会纤细介绍。

  5、病毒如何自动把自身装入内存。

  刚才介绍了现在的病毒不会等待用户去运行染毒文件才进驻内存,他们都有自己的办法运行自己,进驻内存,但是有一个共同的特征就是,他必须把自己放在合适的位置,让系统在启动的某个阶段自动去调用他。因为计算机刚刚加电的时候,系统控制权是在BIOS手里的(因为他最早装入内存),而BIOS是保存在只读的ROM中的,所以这时,系统是无毒的,所以引导型病毒要做的就是在BIOS向操作系统交权之前也就是读取启动盘时截取之。

  那么程序型病毒怎么把自身装如内存呢?他没有截取控制权的这个能力,BIOS会顺利的把控制权交给操作系统,这时,用户看到的就是开始启动WIN200,由于操作系统在启动时会读取大量的动态联结库文件,病毒就可以把自己放在一个合适的位置上,然后告诉WIN2000启动时把自己读如内存,这一步很好实现,比如大家都知道,QQ启动时会被自动运行,实际上,程序型病毒自动运行自己的办法和QQ从本质上是相同的。就是让系统在启动的某个阶段自动去调用而已。

  下面先介绍蠕虫病毒,用他携带的木马程序的自动运行方式来介绍一下这个过程。

  三、关于蠕虫病毒

  我们学校网络中最多的就是蠕虫病毒,所以我要单独的说一下。

  蠕虫病毒是在INTERNET高速发展后出现的病毒,他具有了一些新特性。大部分的蠕虫病毒是程序型的,不会感染引导区,他们一般通过邮件传播(注意,不是唯一的传播方式,所有传统的传播方式都会传播之,并且许多蠕虫病毒会自己搜索网络上没有感染的机器并感染之,他实际上是一个写的很好的以太网传输状态的检测工具^_^),并且大多携带木马程序,具有根据微软服务软件的漏洞来入侵计算机的攻击能力,大部分蠕虫病毒并不破坏计算机里的信息,只是疯狂的去感染其他的计算机。感染了蠕虫病毒的计算机会不停的向外发送信息包,占用CPU可在80%以上,造成本机运行极其缓慢,网络拥塞,甚至可以导致网络瘫痪。

  一般蠕虫病毒会携带木马程序,安装在系统目录中,那么他是怎么自动运行的那,等一会我通过一个例子来介绍。

  四、什么是木马

  木马就是远程控制软件的一种,也称为后门软件,其作用就是利用操作系统的漏洞或者使用者的疏忽来进入系统并在远程控制下从系统内部攻击系统。因特洛伊木马病毒是一种比较早期的成功的此种软件,且有古代战争典故,想必大家都知道。所以,后来多称此种带有攻击性质的远程控制软件为木马而其他的一些不带攻击性质的远程控制软件其实原理都是一样的,比如,

  塞门铁客(英文不会写)的大名鼎鼎的PCANYWHERE就是一个很成功的远程控制软件

  木马可以被杀毒软件查杀,所以,这里也把他作为病毒来处理。

  五、杀毒软件为什么能杀毒

  1、 为什么杀毒软件必须不停的升级

  病毒就是一段代码,用一些语言写出来,比如汇编等。没种病毒都会有一些特征,叫做病毒特征码,实际上就是病毒代码中的一段读一无二的字符。举个容易理解的例子(实际上不是这样):比如有个病毒发作后会格式化C:盘,那么病毒代码中就会有这么一句命令:FORMAT C:/U (实际上病毒不会去用DOS命令的,那太高级了,他会直接调用13号中断写硬盘,所以这里只是一个例子),那么就可以用FORMAT C: /U这样一个字符串作为这个病毒的特征代码,杀毒时,把所有的文件打开,从头到尾的搜索,如果找到着段代码,就报告发现病毒,然后清除之。

  从我描述的这个过程大家就可以明白,为什么杀毒软件必须不停的升级,因为,只有一种病毒被发现后,他的特征代码才能被找到,才能被杀毒软件识别。

  2、 一个病毒从制作、传播到被杀死过程的例子:

  某个软件天才某天心情好,写了一个病毒,然后开始通过网络传播,然后大批的机器被感染,然后用户向杀毒软件公司抱怨有病毒杀不了,(其实大部分是杀毒软件公司的工作人员更早发现该病毒),然后,软件公司得到病毒样本,开始分析样本,找到病毒特征码,然后更新其病毒库,令其在杀毒时也查找这种病毒码,然后通知用户,请他们升级其购买的软件。然后用户升级,再杀毒,结果,该病毒被杀死,同时新的病毒被发现,周而复始。

  所以,杀毒软件永远跟在病毒的后面这是毫无疑问的。从我的叙述中大家可以发现,实际上,如果一种病毒被发现,几乎所有的公司都会得到他的样本并分析出他的特征码,然后另其自己的杀毒软件可以杀死该毒,那么,各种杀毒软件的优劣从何而来呢?

  3、 什么杀毒软件好?

  其实,大家都有一样的病毒库,但是,在我刚才描述的查毒过程中,大家不知道有没有注意到,实际上他是等于在磁盘的所有文件中寻找某段特征代码,如果你的硬盘有200G的数据,他就要把这200G的数据过滤一遍,逐个字符来对比,其速度我不说你们也能想到。更要命的是一般的病毒库都装了几万中病毒代码,哈哈,这么查上几万遍,查下来,估计你也从我们学校毕业了。所以实际上各个公司都有自己的杀毒引擎,实际上这才是核心技术,他使用的独特的算法高速检查,但就算这样,查一遍下来至少也要几个小时。所以,为了提高杀毒效率,可以令杀毒程序只检查一些可能被感染的文件,比如。EXE 。DLL等,象。BMP 。MPG就不会被检查,这样,时间就缩短了很多,然后,他们可以只检查每个。EXE文件的文件头,从这里可以发现病毒修改的蛛丝马迹。然后,他们开始把一些不常见的病毒排除出病毒库之外,只检查一些常见的病毒,就是所谓的快速杀毒。这是为什么不同软件查出不同病毒的原因之一,再下来,也是最关键的一点,就是杀毒软件根据病毒代码判断病毒是完全有可能发生误判,错判的,提高判断的准确性必须以牺牲查毒时间为代价。所以,不同公司的杀毒引擎提供不同的判断方法,导致了可能有的软件查不出来的毒别的软件可以查出。

  所以,所有的杀毒软件都包括两个主要的部分,一是杀毒引擎,另一个是病毒数据库。病毒数据库必须不停的更新。

  我认为,各种杀毒软件其实功能相差不多,主要是看哪个可以迅速更新,再好的杀毒软件不跟新等于没有。

0
相关文章