计算机病毒(
计算机 Virus)是指编制者在
计算机程序中插入的破坏计算机功能或者破坏数据,影响计算机的使用并且能够
自我复制的一组计算机指令或者
程序代码。与医学上的“病毒”不同,计算机病毒不是天然存在的,是某些人利用计算机软件和硬件所固有的脆弱性编制的一组指令集或程序代码。它能通过某种途径潜伏在计算机的存储介质(或程序)里,当达到某种条件即被激活,通过修改其他程序的方法将自己的精确复制或者可能演化的形式入其他程序中,从而感染其他程序,对计算机资源进行破坏。
狭义上的计算机病毒是指能够进行自我传播、需要用户干预来触发执行的破坏性程序或代码,例如用户通过双击U盘盘符的方式触发病毒。广义上的计算机病毒,是指凡驻留于计算机系统内部,能对系统原有功能进行非正确修改的程序或过程,按广义定义,那些能危及计算机工作的现象也称为“计算机病毒”,包括木马、后门、僵尸(bot)、流氓软件、广告软件、黑客工具等。
随着计算机网络的发展,计算机病毒对信息安全的威胁日益严重,
计算机安全的重要性也被越来越多的人认识到,正因于此,人们开始了反计算机病毒的研究。一方面要掌握对计算机病毒的防范措施,另一方面要加强对病毒未来发展趋势的研究,真正做到防患于未然。
发展历程
对计算机病毒理论的构思可追溯到
科幻小说。20世纪70年代,
美国作家雷恩在其出版的小说《P-1的青春》中构思了一种能够
自我复制,利用通信进行传播的
计算机程序,并称之为计算机病毒。1983年,美国计算机安全专家Fred Cohen首次通过实验证明了计算机病毒的可实现性,计算机病毒(
计算机 Viruses)正式命名。1986年初,第一个真正的病毒问世,它是由
巴基斯坦一对名叫Basit和Amjad 的兄弟创造出来的,名叫C-Brain。1987年,世界各地的计算机用户几乎同时发现了形形色色计算机病毒,如大麻、
圣诞树、
黑色星期五等,众多的计算机用户乃至专业人员都感到惊惶失措。但直到1987年,病毒并没有真正在世界上传播开来,也没有引起人们的重视,更没有被充分认识到将造成多大的危害。1988年11月的一次病毒发作,造成Intenet网上的6200多用户系统
瘫痪,经济损失达九千多万美元,随后一系列病毒事件的发生,才引起人们对计算机病毒高度重视,并在国际计算机领域掀起了一个探讨病毒的高潮。计算机病毒的发展大致分为如下几个阶段。
原始病毒阶段
一般认为原始病毒阶段这一时期在1986年至1989年之间,由于当时
计算机的应用软件少,而且大多是单机运行,因此病毒没有大量流行,种类也很有限,病毒的清除工作相对来说较容易。这一时期还有一些良性病毒,它们没有太多的破坏力,只是为了开个玩笑或进行版权保护。具有代表性的是小球、石头病毒,它们利用
软盘的启动原理工作,修改系统
引导扇区,在计算机启动时首先取得控制权,减少系统
内存,修改
磁盘读写中断,在系统存取操作磁盘时传播,影响系统工作效率。这一时期计算机病毒的主要特点是:攻击目标较单一;主要通过截获系统
中断向量的方式来监视系统的运行状态,并在一定的条件下对目标进行传染;病毒程序不具有自我保护的措施,容易被人们分析和解剖。
混合型病毒阶段
其产生的年限在1989年至1991年之间,是计算机病毒由简单发展到复杂的阶段。
局域网开始应用与普及,给计算机病毒带来了第一次流行高峰。这类病毒不仅感染
HDD引导记录,也感染
磁盘文件。如果只解除了感染文件上的病毒而没有清除引导区的病毒,那么在系统重新引导时病毒又将激活,重新感染文件;如果只清除了引导区的病毒而没有清除文件上的病毒,一旦执行被感染文件,就又会感染硬盘引导区。例如,3544幽灵、“侵略者”/Invader病毒等就属于这类病毒。这一时期计算机病毒的主要特点为:攻击目标趋于混合;采取更为隐蔽的方法驻留内存和传染目标;病毒传染目标后没有明显的特征;病毒程序往往采取自我保护措施;出现许多病毒的变种等。
伴随、批次型阶段
1992年,伴随型病毒出现,它们利用
dos 加载文件的优先顺序进行工作。具有代表性的是“金蝉”病毒,它感染EXE 文件时生成一个和EXE 同名的扩展名为COM 的伴随体,它感染COM文件时,将原来的COM文件改为同名的EXE文件,再产生一个原名的伴随体,文件扩展名为COM,这样在DOS加载文件时,病毒就取得控制权。这类病毒的特点是不改变原来的文件内容、日期及属性,解除病毒时只要将其伴随体删除即可。在非DOS操作系统中,一些伴随型病毒利用操作系统的描述语言进行工作,较典型的代表是“海盗旗”病毒,它在得到执行时,询问用户名称和口令,然后返回一个出错信息,将自身删除。批次型病毒是工作在DOS下的和“海盗旗”病毒类似的一类病毒,这一阶段的病毒技术开始向多维化方向发展,有些病毒开始破坏
计算机HDD的
引导扇区,使得计算机无法启动。
网络病毒阶段
1995年以后,随着网络的普及,病毒大量利用网络进行传播,但只是以上几代病毒的改进。在非DOS操作系统中,“
Worm.Win32.AutoRun.qpv”是典型的代表。它不占用除
内存以外的任何资源,不修改
磁盘文件、利用网络功能搜索网络地址,将自身向下一地址进行传播,有时也在网络服务器和启动文件中存在。1997 年,随着因特网的发展,各种病毒也开始利用因特网进行传播,一些携带病毒的数据包和邮件越来越多,如果不小心打开了这些邮件,机器就有可能中毒。这类病毒的主要特点是:它们一般不需要宿主程序,多数都能够跨平台,借助网络迅速传播,破坏系统数据;有一些能够窃取使用者的重要数据资料,如个人的数据文件、网络账号密码信用卡信息等。网络病毒的查杀具有更大的难度,而且容易复发。这一时期病毒传播快、隐蔽性强、破坏性大。也就是从这一阶段开始,反病毒产业开始萌芽并逐步形成一个规模宏大的新兴产业。典型代表为2003年出现的“冲击波”病毒和2004年流行的“震荡波”病毒。这些病毒利用操作系统和网络的漏洞进行进攻型的扩散,并且不需要任何媒介或操作,用户只要接入互联网络就有可能被感染,而且破坏性非常大。正因为如此,该病毒的危害性更大。
手机病毒阶段
2004年出现了手机蠕虫病毒Cabir,该恶意代码感染
诺基亚Symbian S60系列手机,通过不断扫描附近开启蓝牙协议的设备,将自身发送到目标手机,诱骗用户安装。此后针对移动智能手机的移动僵尸病毒等恶意软件呈现多发趋势,对用户的个人隐私、财产(话费、手机支付业务等)、有价值信息(银行卡、密码等)等构成直接威胁,计算机病毒开始从传统的互联网络走进移动通信网络世界。与互联网用户相比,手机用户覆盖面更广、数量更多,因而高性能的
手机病毒一旦爆发,其危害和影响比“冲击波”“震荡波”等互联网病毒还要大。
勒索病毒阶段
勒索病毒是一种新型计算机病毒,利用钓鱼邮件、网页挂马、漏洞攻击等方式感染用户设备,劫持系统的使用权、破坏数据的可用性,通过
弹窗、电话、邮件等方式告知勒索信息,要求用户限期通过比特币等方式支付赎金,以恢复设备使用权或解密文件数据。2016年,
计算机端勒索病毒样本新增16.7万个,近500万用户计算机遭到了勒索病毒攻击,其中11.9%的受害者会支付勒索赎金。这种病毒利用各种加密算法对文件进行加密,被感染者一般无法解密,必须拿到解密的私钥才有可能破解,但是要拿到解密的私钥就要给攻击者比特币等钱财。因此,此类计算机病毒的特点就是勒索钱财。
计算机病毒的分类和结构
分类
对于计算机病毒的分类,没有统一的标准,常见的分类方式有以下几种:
根据破坏程度进行分类
良性病毒
良性病毒一般对
计算机中的程序和数据没有破坏作用,只是占用CPU和
内存资源,降低系统运行速度。这种病毒发作时,会干扰系统的正常运行,一旦清除后,系统可恢复正常工作。
恶性病毒
恶性病毒对计算机系统具有较强的破坏性,病毒发作时,会破坏计算机中的程序或数据、删改系统文件、重新格式化硬盘、使用户无法打印,甚至中止系统运行等。由于这种病毒破坏性较强,有时即使清除了病毒,系统也难以恢复。
基于计算机病毒依附的操作系统分类
基于DOS系统的病毒
基于DOS 系统的病毒是一种只能在DOS环境下运行、传染的计算机病毒,是最早出现的计算机病毒。例如,“米开朗琪罗病毒”“黑色星期五”病毒等均属于此类病毒。
基于 Windows系统的病毒
指针对Windows操作系统的病毒。Windows 病毒一般感染 Windows系统,其中最典型的病毒有CIH病毒。Windows病毒主要感染的文件扩展名为EXE、SCR、DLLOCX等。
随着病毒技术的发展,病毒的攻击目标也开始指向Unix和
Linux。2001年4月,出现了首例能够跨平台的 Win32.Winux病毒,它可以同时感染Windows操作系统下的PE文件和Linux操作系统下的ELF文件。Unix操作系统的应用非常广泛,许多大型的操作系统均采用Unix作为其主要的操作系统,所以攻击Unix的病毒对信息处理是一个严重的威胁。
基于嵌入式操作系统的病毒
嵌人式操作系统是一种用途广泛的系统软件,随着 Internet技术的发展、
3C产品的普及应用,及嵌入式操作系统的微型化和专业化,嵌人式操作系统的应用也越来越广泛,如应用到手机操作系统中。这种病毒将自身代码嵌入到被感染文件中,当文件被感染后,查杀和清除病毒都非常不易。
根据宿主类型进行分类
有宿主的计算机病毒包括引导型病毒,是指
寄生在
磁盘引导区或主引导区的计算机病毒。它是一种开机即可启动的病毒,先于操作系统而存在。病毒在利用系统引导时,不对主引导区的内容正确与否进行判别的缺点,直接侵入系统,驻留内存,随时进行传染和破坏;文件型病毒,是指能寄生在文件中的计算机病毒。这类病毒可以感染可执行文件(即文件扩展名为comexe等),也可以感染objdocdot等文件。
而无宿主的计算机病毒则以网络蠕虫类病毒为典型代表。蠕虫病毒是一种通过网络传播的恶意病毒,其本身不具有太多破坏特性,危害以消耗系统
带宽、
内存、CPU为主。这类病毒最大的破坏之处不是对终端用户造成的麻烦,而是对网络的中间设备的无谓耗用。
结构
一般来说,计算机病毒结构包括三大功能模块,即引导模块、传染模块、破坏或表现模块。
引导模块
病毒的引导模块是病毒的总控模块,它设置病毒传染模块和破坏或表现模块的地址,通过病毒的引导模块来调用传染模块和破坏或表现模块。对于
寄生在
磁盘引导扇区的病毒,病毒引导程序占有了原系统引导程序的位置,系统一启动,病毒引导模块就会自动地装入
内存并获得执行权,然后该引导程序负责将病毒程序的传染模块和发作模块装入内存的适当位置,并采取常驻内存技术以保证这两个模块不会被覆盖,接着对该两个模块设定某种激活方式,使之在适当的时候获得执行权。
对于寄生在可执行文件中的病毒,病毒程序一般通过修改原有可执行文件,使该文件一执行首先转入病毒程序引导模块,该引导模块也完成把病毒程序的其他两个模块驻留内存及初始化的工作,然后把执行权交给执行文件,使系统及执行文件在带毒的状态下运行。
传染模块
计算机病毒的传染模块是计算机病毒由一个系统扩散到另一个系统、由一个网络传入另一个网络、由一张
软盘传入另一张软盘、由一个系统传入一张软盘的唯一途径。计算机病毒的传染模块一般包括两部分:一是计算机病毒的传染条件判断部分,计算机病毒传染的先决条件是捕获计算机操作系统
磁盘读写时的
中断向量,并修改正常磁盘读写及其它外设读写时的中断服务程序。二是计算机病毒的传染部分,这一部分负责将计算机病毒的全部代码链接到被传染的攻击目标上。
破坏或表现模块
破坏或表现模块是病毒程序的核心部分,分为两大模块。一个模块用于干扰,常见的方式主要用于干扰设备的正常使用,如显示屏幕上无关图形、字符串的出现,显示内容颠倒、显示内容移位等;驱动器读、写不正常;对打印机进行封锁;使
键盘乱码;
扬声器的声音干扰等。另一模块主要用于
信息资源的破坏,严重的是攻击
HDD的主引导区;
软盘或硬盘的引导区;文件分配表区;
根目录区,造成整个盘上信息资源的全部损失。有一些病毒仅破坏部分文件。
计算机病毒的生命周期
计算机病毒的生命周期通常是由以下的四个步骤组成的一个循环:
休眠阶段
在休眠阶段,计算机病毒并不执行操作,而是等待被某些事件激活,如到某个日期、启动某个进程、打开某个文件等。
传播阶段
在传播阶段,计算机病毒通过病毒载体即系统的
外存储器进入系统的
内存,常驻内存。该病毒在系统内存中监视系统的运行,当它发现有攻击的目标存在并满足条件时,便从内存中将自身存入被攻击的目标,从而将病毒进行传播。而病毒利用系统读写
磁盘的中断又将其写入系统的外存储器中,再感染其他系统。每个被感染的程序都包含病毒副本,而这些副本会自动向其他程序传播。
触发阶段
相对于休眠阶段,在触发阶段,计算机病毒被某些事件激活,将会进入执行阶段。这时,计算机病毒执行预先设定的功能,这些功能可能是无害的行为,也可能具有很大的破坏性。常见的触发条件可归为三类:1、日期和时间,主要是用于干扰和破坏的触发条件,多数都是一些有特定意义的日期(如节日、某些纪念日等);2、功能触发,以某些特定的系统功能调用作为触发条件。如启动次数、DOS的某些内部命令或内部功能调用等。分别用于传染,干扰和破坏;3、日期、时间和功能的组合,因条件较复杂,用得比较少,偶尔有病毒以此三种情况为干扰的触发条件(如Filp病毒)。
执行阶段
病毒的功能已经被执行,其影响可能是无伤大雅的,如在屏幕上显示一段信息;也可能伤害力十足,如中止其他程序以及文件运行。破坏的方式包括 :攻击系统数据区,攻击部位包括
磁盘扇区和文件目录,一般来说,攻击系统数据区的病毒是恶性病毒,受损的数据不易恢复;攻击文件,如删除、改名、替换内容、丢失簇和对文件加密等;攻击
内存,病毒额外地占用和消耗内存资源,可导致一些大程序运行受阻;干扰系统运行,使运行速度下降。
计算机病毒的传播途径
移动式存储介质
计算机和手机等数码产品常用的
移动存储介质,主要包括:
软盘、光盘、DVD、
HDD、闪存、U盘、CF卡、SD卡和
移动硬盘等。移动存储介质以其便携性和大容量存储性为病毒的传播带来了极大的便利,这也是其成为主流病毒传播途径的重要原因。例如,“U盘杀手”(Worm_Autorun)病毒,该病毒是一个利用U盘等
手持移动设备进行传播的蠕虫病毒。autorun.inf文件一般存在于U 盘、MP3、移动硬盘和硬盘各个分区的
根目录下,当用户双击U盘等设备时,该文件就会利用Windows的自动播放功能优先运行autorun.inf文件,并立即执行所要加载的病毒程序,导致用户机器被破坏且用户遭受损失。
网络传播
现代通信技术的巨大进步使空间距离不再遥远,数据、文件和电子邮件可以方便地在各个网络工作站间通过电缆、光纤或电话线路进行传送。网络感染计算机病毒的途径主要有以下几种:
电子邮件
电子邮件是病毒通过互联网进行传播的主要媒介。病毒主要依附在邮件的附件中,而电子邮件本身并不产生病毒。由于人们可以发送任意类型的文件,而大部分计算机病毒防护软件在这方面的功能还不是很完善。当用户下载附件时,计算机就会感染病毒,病毒入侵至系统中,伺机发作。
下载文件
病毒被捆绑或隐藏在互联网上共享的程序或文档中,用户一旦下载了该类程序或文件而不进行查杀病毒,感染计算机病毒的几率将大大增加。病毒可以伪装成其他程序或隐藏在不同类型的文件中,通过下载操作感染
计算机。
浏览网页
Java Applets 和 Active Control等程序及脚本原本是用于增强网页功能与页面效果的,当它们被他人利用编写计算机病毒和恶意攻击程序时,用户浏览网页时就有可能感染病毒。
聊天通信工具
QQ、MSN、微信和
Skype等即时通信聊天工具,是人们进行信息通信与数据交换的重要手段之一,成为网上生活必备软件。但由于通信工具本身安全性的缺陷,加之聊天工具中的联系列表信息量丰富,给病毒的大范围传播提供了极为便利的条件,仅通过 QQ这一种通信聊天工具进行传播的病毒就达上百种。
移动通信终端
手机作为最典型的移动通信终端已经成为病毒的新的攻击目标。具有传染性和破坏性的病毒,会利用发送的手机短信、彩信,无线网络下载歌曲、图片或文件等方式传播,由于手机用户往往在不经意的情况下接收读取短信、彩信或直接单击网址链接等方式获取信息,让病毒毫不费力地入侵手机进行破坏,甚至使之无法正常使用。
计算机病毒的破坏机制
攻击系统数据区
系统数据区主要包括:
HDD主
引导扇区、Boot扇区、FAT表和文件目录,一般来说,攻击系统数据区的病毒是恶性病毒,受损的数据不易恢复。2002年12月出现的“硬盘杀手”病毒,该病毒是一个破坏力直逼CIH的恶性病毒,“硬盘杀手”病毒运行时,会首先将自己复制到系统目录下,然后修改注册表进行自启动。病毒会通过Windows 9X系统的漏洞和共享文件夹进行疯狂的网络传播,即使网络共享文件夹有共享密码,病毒也能传染。如果是NT系列系统,则病毒会通过共享文件夹感染网络。病毒会获取当前时间,如果病毒已经运行两天,则病毒会在C盘下写入病毒文件,该病毒文件会改写
HDD分区表,当系统重启时,会出现病毒信息,并将硬盘上所有数据都破坏掉,并且不可恢复。
攻击文件和硬盘
病毒对文件的攻击方式很多,可造成文件长度变化,文件时间日期变化,文件丢失,文件后缀变化等,攻击
磁盘病毒除攻击文件外,病毒还会干扰磁盘的操作,如不写盘、把写操作变为读操作和写盘时丢
字节。例如Burger病毒,病毒的程序运行时,该病毒便企图在—[C]—
根目录下感染一个以前未被感染的.COM程序。为了确定一个.COM文件是否受到感染,该病毒首先检查该.COM文件的头三个NOP。如果这三个NOP对得上909090h,该病毒便继续检查其他文件,直到找到一个未受感染的.COM为止.如未找到没有感染的.COM文件,该病毒便将根目录下的所有.EXE改名成.COM,然后再检查这些文件.一旦找到了一个未受感染的.COM文件,该病毒便将其头560个
字节覆盖成病毒的内码。此时若用户调用此程序,不是退出就是死机,感染的程序都不能正常运行。
攻击内存
内存是
计算机的重要资源,也是病毒的攻击目标。病毒额外地占用和消耗系统的内存资源,可以导致一些大程序的运行受阻。病毒攻击内存的方式列举如下:占用大量内存、改变内存总量、禁止分配内存、蚕食内存。2003年出现的“清醒”病毒(Worm.Sober),该病毒发作后,电脑反应迟钝,刚开始的时候病毒进程占用的CPU和内存都不多,过一段时间就会慢慢地蚕食机器的CPU和内存,才几分钟CPU资源就被它占尽了,内存也被占尽。
干扰系统的运行
病毒会干扰系统的正常运行,以此作为自己的破坏行为。包括不执行命令、干扰内部命令的执行、虚假报警、打不开文件、内部栈溢出、占用特殊数据区、换现行盘、时钟倒转、重启动、死机、强制游戏、扰乱串并行口。同时,病毒使得系统速度下降。2003年出现的冲击波(Blaster)病毒,该病毒运行时会不停地利用IP扫描技术寻找网络上系统为Win2K或XP的计算机,找到后就利用DCOMRPC缓冲区漏洞攻击该系统,一旦攻击成功,病毒体将会被传送到对方计算机中进行感染,使系统操作异常、不停重启、甚至导致系统崩溃。另外,该病毒还会对
微软的一个升级网站进行拒绝服务攻击,导致该网站堵塞,使用户无法通过该网站升级系统。
盗取隐私数据
病毒制造者的出发点转向经济利益,盗取用户的隐私数据,例如网上银行、网络游戏以及QQ的账号和密码等。2007年出现的网银大盗木马病毒,是一种专门盗窃网上银行账号密码的病毒,利用网上银行系统漏洞——用户登录网上银行正常登录页面时,会自动跳转到一个没有安全控件的登录页面,从而避开微软的安全认证,该病毒利用这一漏洞,轻而易举地窃取到用户账号及密码,并利用自身发信模块向病毒作者发送。
干扰浏览器或下载新的恶意软件
有些病毒发作后,会涂改网页,或强行篡改操作系统中IE浏览器主页,将主页设置成为指定的网站地址,同时感染后会从指定的网络服务器上下载恶意代码的木马程序变种。例如2001年出现的红色代码,该病毒能够迅速传播,并造成大范围的访问速度下降甚至阻断,这种病毒一般首先攻击计算机网络的服务器,遭到攻击的服务器会按照病毒的指令向政府网站发送大量数据,最终导致网站瘫痪,其造成的破坏主要是涂改网页。
实施网络攻击和网络敲诈
犯罪分子利用木马等病毒控制
计算机,实施从网络攻击、网络敲诈到通过弹出
恶意广告等方式获取利益。该类破坏行为主要表现在,连接互联网的计算机在被病毒感染后受控于黑客,形成僵尸网络,可以随时按照黑客的指令展开DOS攻击或发送垃圾信息,如
分布式拒绝服务攻击、海量垃圾邮件等,同时黑客控制的这些计算机所保存的信息也都可被黑客随意“取用”。2007年10月出现的“BHO劫持者”变种cg,以及2008年10月出现的“歪速波”变种bdd,运行时均会在被感染的计算机系统中定时弹出恶意广告网站,从而提高这些恶意网站的访问量,不仅给黑客带来经济利益,而且还会严重影响和干扰用户的正常操作。
计算机病毒的隐藏方式
不同病毒的隐藏技术
引导病毒进行隐藏一般采用两种基本方法。一种是改变基本输入输出系统(BIOS),中断13H(十六进制)的入口地址,使其指向痛毒代码,当发现有调用INT13H被感染扇区的请求的时候,用正常13H中断代码进行操作过回给调用的程序,这样,任何DOS程序都无法觉察到病毒的存在,如果反病毒软件无法首先将
内存中的病毒清除(也就是说,首先恢复被替换的IN13H中断服务程序),那么要彻厢清除这种病毒是非常困难的。
另外一种更高明的方法是直接针对杀毒软件的。他们使用了在加载程序的时候制造假象的方法,当启动任何程序的时候(包括反病毒程序),修改DOS执行程序的中断功能,首先把被病毒感染的扇区恢复原样,这样即使反病毒程序采用直接
磁盘访问也只能看到正常的磁盘扇区,当程序执行完成后再重新感染。对付这种病毒的唯一方法是在进行病毒检测之前首先清除
内存中的所有病毒。
Windows 病毒的隐藏技术:Windows 环境下的病毒采用的隐藏技术比较多,警如,修改文件时间、大小,在文件空隙中插入病毒片段,
Windows 98下隐藏进程,
Windows 2000下创建服务进程,创建远程线程,等等。
rootkit 隐藏技术:Rootkit是一种特殊的恶意软件,其功能是在目标系统中隐藏自身,同时获取目标系统中软件的相关信息并发送给恶意软件控制方,或者在目标系统中进行破坏行为。在Windows平台上比较成熟的RootKit技术主要有SSDTHook,直接
内存对象修改等,利用这样的技术,病毒可以达到从驱动层隐藏指定进程、文件、服务、网络活动等目的。Rootkit技术的发展非常迅速,其技术的应用也越来越广泛,检测难度也越来越大。
花指令
花指令就是在程序之间加入一些似乎没有什么意义的代码,这些代码不会妨碍程序正常地运行,但是在静态反汇编时,却会让原本正常的代码解释成有些怪异的汇编代码。通过在程序中加入特定的花指令,可以防止程序被静态反汇编,被人进一步分析破解。这用在计算机病毒中同样可以达到提高病毒的生存能力,隐藏自己的目的。花指令作为一种隐藏自身代码的方法,在动态跟踪面前没有任何效果,就是对于某些很多可以抗花指令的静态反汇编工具来说,其也难有理想的效果。
计算机病毒的简单加密
为了加大静态反汇编的难度,提高病毒生存能力,病毒制造者采用了病毒加密技术,病毒的简单加密是指对病毒的某些主体代码采用固定的
密钥进行加密,这样静态反汇编出来的代码就是经过加密处理过的,在某种程度上可以起到保护病毒程序的目的。一个被简单加密的病毒一般有如下几个部分:(1)解密算法(解开被加密的代码,以便病毒执行);(2)病毒主体代码(被加密的病毒代码);(3)跳转(病毒解密完毕后,跳到解密代码部分执行解密语句),加密时一般采用XOR,OR,SUB,ADD等一些简单的变换。在传播的过程中,只需要将原有加密代码和解密部分复制到被感染文件并作相应代码修改即可,而不需要重新加密。但是,由于所有病毒的代码都是一模一样的,如果该病毒的特征码被提取出来,同样也逃脱不了反病毒软件的监控,只要病毒样本被分析出来,所有同类病毒都会被杀毒软件查到。
病毒的多态
多态病毒是对简单加密技术的一种提升,病毒在每次感染其他文件时,病毒
密钥的生成可以随机产生,可以采用被感染机器里面的某些特征,譬如被感染文件的文件名,机器名,IP地址,机器时间等。多态变形引擎最重要的功能在于两部分:代码的等价变换和代码重排。前者将一条或一组指令,替换成与其执行效果相同的另外一条或一组指令。后者在进行完指令的等价变换后,指令的长度势必发生变化,代码内调用者和调用目标的偏移也会发生改变,故需要进行代码的重新排列(可参考指令重组),将所有使用偏移寻址的指令的偏移进行调整。
多态变形作为病毒一种非常有效的防御反病毒软件的手法,执行时无须做任何代码和数据的还原工作(可对比加密技术),想要通过依赖于特征码的检测技术来检测这些多态病毒,即使是有
仿真技术支持的特征码检测技术,也不可能达到目的。
病毒的变形技术
病毒的变形是病毒加密的最高状态。它与多态技术不同的是:每次加密的原始病毒代码是变化的。因此变形引擎一般可以使用如下一些方式生成病毒:(1)随机插入废指令。(2)随机为相同功能选择不同代码。(3)随机选择
寄存器。(4)改变代码块顺序。以NATAS/4744(幽灵王病毒的变形为例,该病毒为DOS准变形病毒,
编程语言为In tel8086
汇编语言,所采用的主要变形方法是在病毒体中插入垃圾代码。
变形病毒随着每次复制而发生变化,因此,通过在可能被感染的文件中搜索简单的、专门的字节序列,是不能检测到这种病毒的。作为一种能变异的病毒,随着感染时间的不同而改变其形式,不同的感染操作会使病毒在文件中以不同的方式出现,使传统的模式匹配法杀毒软件对这种病毒显得软弱无力。
加壳技术
加壳是一种专用加密软件技术。在一些计算机软件里有一段专门负责保护软件不被非法修改或反编译的程序,它们附加在原始程序上通过
Windows加载器载入
内存后,先于原始程序执行,得到控制权,执行过程中对原始程序进行解密、还原,还原完成后再把控制权交还给原始程序,执行原来的代码部分。加上外壳之后,原始程序代码就可以比较有效地防止破解者对程序文件的非法修改,同时也可以防止程序被静态反编译。加壳分可以为压缩壳和加密壳,压缩壳侧重于压缩,重在减小被加壳软件的体积大小,而加密壳则侧重于加密。加壳是保护文件的常用手段,它们一般都是先于程序运行并拿到控制权,然后完成它们保护软件的任务,同时“加壳”也是一种非常有效的病毒伪装技术,对于加了壳的病毒程序,杀毒软件很难判断壳里的程序合法性,从而达到干扰杀毒软件检测及分析的目的。
脚本加密技术
计算机病毒为了逃避一些特征码扫描技术的查杀,可以通过一些加密解密技术进行一定程度的自我保护,对于杀毒软件来讲,识别是非常困难的。例如“熊猫烧香”病毒,就是利用网页木马进行脚本加密来使自身传播的。黑客在制作网页木马时,在“加密方式”区域中选择“空字符加密”单选按钮,对网页文件进行加密。加密后,打开muma—encode文件,可以看到网页文件已经被完全打乱了,这样杀毒软件一般就无法查杀出这是一个木马网页了。当这个网页木马页面上传到Web服务器的WWWROOT(也就是Web服务器的
根目录)时,没有打上06-014的Ms补丁的
计算机用户浏览了这个网页,就会运行黑客种植的木马程序。同时,黑客还可以利用上述方式制作通过“
转义字符加密”、“ESCAPE加密”和“拆分特征码”等方式加密的网页。
计算机病毒的检测方法
一台计算机感染病毒之后,会有许多明显或不明显的特征,比如文件的长度和日期忽然改变、系统执行速度下降、出现一些奇怪的信息或无故死机,更为严重的如
HDD已经被格式化等。对系统进行检测,可以及时掌握系统是否感染病毒,便于及时处理。计算机病毒检测的常见方法主要有特征代码法、校验和法、行为检测法、软件模拟法和启发式扫描法。
特征代码法
特征代码法的实现是通过采集已知病毒样本。病毒如果既感染COM 文件,又感染EXE 文件,对这种病毒要同时采集COM 型病毒样本和EXE型病毒样本。打开被检测文件,在文件中进行搜索,检查文件中是否含有病毒数据库中的病毒特征代码。由于特征代码与病毒一一对应,如果发现病毒特征代码,便可以断定被查文件中感染何种病毒。采用病毒特征代码法的检测工具,面对不断出现的新病毒,必须不断更新版本,否则检测工具便会老化,逐渐失去使用价值。病毒特征代码法对从未见过的新病毒,无法知道其特征代码,因而无法去检测这些新病毒。
校验和法
计算正常文件内容的校验和,将该校验和写入文件中或写入其他文件中保存。在文件使用过程中定期地或每次使用文件前,检查文件现在内容算出的校验和与原来保存的校验和是否一致,可以发现文件是否被感染,这种方法叫校验和法。在 SCAN和CPAV工具的后期版本中除了病毒特征代码法之外,还纳入校验和法,以提高其检测能力。这种方法既能发现已知病毒,也能发现未知病毒,但是,它不能识别病毒类,不能报出病毒名称。由于病毒感染并非文件内容改变的唯一非他性原因,文件的容的改变有可能是正常程序引起的,所以校验和法常常误报警,而且此种方法也会影响文件的运行速度。
行为监测法
利用病毒的特有行为特征性来监测病毒的方法,称为行为监测法。通过对病毒多年的观察、研究,有一些行为是病毒的共同行为,而且比较特殊。在正常程序中,这些行为比较罕见,当程序运行时,监视其行为,如果发现了病毒行为,立即报警。
软件模拟法
检测病毒多态性的方法。借助软件分析器,用软件方法模拟和分析程序运行,可在
虚拟机上进行查毒。新型检测工具利用启发式查毒软件模拟法,使用特征代码法检测病毒,如果发现隐蔽病毒或多态性病毒嫌疑时,启动软件模拟模块,监视病毒运行,在病毒自身的密码译码后,再运用特征代码法识别病毒的种类。
启发式扫描
病毒和正常程序的区别可以体现在许多方面,通常一个应用程序最初的指令是检查命令行输入有无参数项,清屏和保存原来屏幕显示等,而病毒程序从来不会这样做,它通常最初的指令是直接写盘操作、解码指令,或搜索某路径下的可执行程序等相关操作指令序列。这些显著的不同之处,在调试状态下可一目了然。启发式扫描技术,实际上就是把这种经验和知识移植到一个查病毒软件中的具体程序体现。因此,启发式指的是“自我发现的能力”或“运用某种方式或方法去判定事物的知识和技能”。一个运用启发式扫描技术的病毒检测软件,实际上就是以特定方式实现的动态高度器或反编译器,通过对有关指令序列的反编译,逐步理解和确定其蕴藏的真正动机。
计算机病毒的防范
对于计算机病毒,应采取以预防为主的策略,若在病毒侵入计算机系统后再去检测和清除就很被动。用户应通过切断病毒传播途径的方法,防止
计算机感染上病毒。
计算机病毒专家弗莱德·科恩基于理论上提出了以下预防计算机病毒方式:
分割法
分割法主要是把用户分割成为不能互相传递信息的封闭的
子集。由于信息流的控制。这些子集可以被看作是由系统分割成的相互独立的子系统。因此,计算机病毒就不会在子系统之间相互传染,而只能传染给其中的某个子系统,从而使得整个系统不至于被全部感染。
流模型法
流模型法是为共享信息流传播的距离设立一个阈值,使一定的信息只能在一定的区域中流动,以此建立一个防卫机制。若使用超过某一距离阈值的信息,就可能存在危险。
限制解释法
限制解释法也就是限制兼容,即采用固定的解释模式,就可能不被计算机病毒传染。例如,对应用程序实行加密就可以及时检测出可执行文件是否受到计算机病毒的感染,从而清除计算机病毒的潜在威胁。