2.4 计算机病毒进化的外部机制
正如生物进化通过自然选择的外部机制,适者生存、不适者淘汰,并由此造就了生物的多样性与复杂性,计算机病毒进化的外部机制同样受制于自然选择法则。自然选择是计算机病毒进化的外因、外部动力,制约并控制计算机病毒进化的方向与速度,并通过与内部自组织共同作用而形成多样性的新物种,如蠕虫、木马、后门、Rootkit、逻辑炸弹、僵尸网络、流氓软件、勒索软件、间谍软件等。
计算机病毒进化的自然选择法则,主要表现为两大机制:①自然选择机制,使其适应外部运行环境,促使适者生存、不适者淘汰;②逐利机制,使其适应经济环境,获得内驱动力,促使新物种诞生与演化。
2.4.1 自然选择机制
1. 生物学自然选择机制
自然选择学说是达尔文进化论的精髓。自然选择最初是由达尔文在其《物种起源》一书中提出的,是指在生物的生存斗争中,自然对生物有害变异的淘汰、对有利变异的保存,即适者生存、不适者淘汰,这从客观上造就了生物的多样性与复杂性。整个进化学说围绕自然选择展开:变异和遗传是自然选择的基础和前提条件;性状分歧、物种形成、绝灭和系统树的存在是自然选择的结果。
自然选择是外在环境对生存于其中的生物所产生的选择压力,是生物进化的外在动力。这个外在环境包括生物环境和非生物环境。因此,自然选择的压力既来自生物环境,也来自非生物环境。来自非生物环境的是恶劣的自然条件。来自生物环境的是生存竞争:物种内和物种间的竞争,是一种为各自的生存和利益而采取的合作或不合作的应对策略。生物之间合作是为了共同进化,不合作则是为了使自己更好地生存,更好地适应环境,并力争将竞争对手挤出生态位。
众所周知,自然生态系统是在特定的时空范围内,依靠自然调节能力维持的相对稳定的生态系统,如森林、草原、海洋、湿地等。自然生态系统的一个重要特点是常常趋于达到一种稳态或平衡状态,这种稳态是依靠反馈式自我调节来实现的。
当自然生态系统中某种成分发生变化时,必然会引起其他成分发生相应的变化,这种变化又会反过来影响最初发生变化的那种成分,使其变化减弱或增强,这个过程就是反馈。负反馈机制能够使生态系统趋于平衡或稳态。
自然生态系统的反馈现象主要表现在两个方面:生物与环境之间、生物体结构与其功能之间。生物与环境之间关系密切,是不可分割的整体,主要体现在如下两个方面:①生物离不开环境,生物的生命活动依赖于环境获取物质与能量,得到信息与栖所;②生物改造着环境,生物的生命活动又不断地改变着环境状况,影响环境的发展变化。生物之间既有相互竞争和制约,又有互利和相互维系的协同关系。协同进化是普遍性的关系,优胜劣汰是局部性关系。此外,生物体结构与其功能也存在负反馈关系:结构决定其功能(鸟类身体结构决定其能自由飞翔),功能的变化又会反作用于生物体结构(普通棕熊皮毛呈黑色,但北极熊却能进化出白色皮毛)。
2. 计算机病毒自然选择机制
与自然生态系统类似,在计算生态系统中,各物种与环境、各物种之间普遍存在相互制约、既竞争又合作的关系。具体而言,协同进化是普遍性的关系,优胜劣汰是局部性关系。
1)协同进化机制
在生物学上,协同进化是指两个相互作用的物种在进化过程中发展起来的相互适应、相互制约的共同进化,是一个物种由于另一物种影响而发生遗传进化的进化类型。例如,一种植物由于食草昆虫所施加的压力而发生遗传变化,这种变化又导致昆虫发生相适应的遗传性变化。
计算机病毒协同进化是指计算机病毒与外部运行环境、计算机病毒与反病毒软件、计算机病毒之间发展起来的相互适应、相互制约的共同进化。计算机病毒协同进化表明了计算机病毒对外部运行环境的适应。协同进化可发生在计算机病毒的不同层次:既可发生在指令代码水平上的协同突变,也可发生在宏观水平上软件行为的协同进化。
(1)计算机病毒与操作系统之间的协同进化。在DOS时代,DOS系统在系统机制上无特权之分,不区分系统内核与应用程序,导致普通应用程序能随心所欲地进入系统并与系统内核共处相同内存空间。因此,DOS时代的计算机病毒能驰骋于内存之中、纵横在内核之间,一个小小的程序错误就能导致DOS系统崩溃。
DOS系统的脆弱性,在计算机病毒肆虐下非常明显。从某种意义上说,是计算机病毒促使Microsoft公司改进了操作系统,推出安全性更强的Windows操作系统。在Windows系统推出之后近两年的时间内,计算机病毒一直未能适应这个全新的运行环境:全新的内存管理机制、全新的FAT32和NTFS文件系统、全新的PE文件格式、全新的32位系统字节长度,DOS时代的计算机病毒仍旧无奈徘徊门外。这也是那段时间内的计算机病毒在数量上较少的主要原因。
在吸取DOS系统安全教训的基础上,Windows系统在内存管理方面当机立断,在Intel CPU硬件的有力支持下,大胆引入了内存空间逻辑隔离机制,使不同权限的程序能互不干扰、相安无事地运行于各自的虚拟内存空间。Windows系统内核程序运行于Ring 0级,拥有系统管理员权限,能调用系统内存空间中的所有代码;普通应用程序运行于Ring 3级,只拥有修改自己内存空间代码的权限,如要调用系统服务例程,则需借助Windows系统提供的系统服务调用机制从Ring 3进入Ring 0。
面对Windows系统管理机制的阻挡,计算机病毒开始了艰难进化之旅。为了能进入Windows系统内核层,达到与DOS时代一样为所欲为的能力水平,计算机病毒发展了各种技术。例如,利用系统内核驱动机制,设计一个设备驱动程序;借助修改内核数据结构或钩挂技术等进入系统内核。
由此可知,计算机病毒与操作系统(系统环境)之间协同进化关系非常明显:一方面,计算机病毒为适应外部运行环境,必然会随系统环境的改变而进化自身,否则,将被淘汰、灭绝;另一方面,当计算机病毒严重威胁系统安全时,操作系统必然要提升自身安全性,浴火重生,以更好地防范计算机病毒。
(2)计算机病毒与反病毒软件之间的协同进化。计算机病毒的加速进化,促使反病毒软件不断发展,开始采用新的不同于特征码扫描的启发式或虚拟机方式,导致传统的PE文件病毒极易被查杀。然而,“道高一尺,魔高一丈”,为对抗或躲避反病毒软件,计算机病毒继而进化出EPO(EntryPoint Obscuring,入口点模糊)技术,使传统的启发式杀毒失效。EPO技术是计算机病毒为对抗反病毒软件常规入口点检测而进化出的一种技术,该技术改变了传统的PE头部入口点修改方法,模糊相关病毒代码入口而使病毒免杀。
从计算机病毒EPO技术与反病毒软件的启发式检测技术的进化发展过程,可以看出协同进化机制在计算机病毒与反病毒软件发展中的明显促进作用。一方面,计算机病毒技术的改进与提高,促使反病毒软件采用启发式杀毒,遏制了计算机病毒的蔓延与发展;另一方面,反病毒软件采用新的查毒技术,促使计算机病毒引入EPO技术,迷惑反病毒软件以保存自身。计算机病毒与反病毒软件之间的进化,是一种相互促进、相互提高、共同发展的协同进化关系。
(3)计算机病毒之间协同进化。在计算机病毒世界里,协同进化机制不仅表现在计算机病毒与外部运行环境、计算机病毒与反病毒软件之间,还表现在计算机病毒之间。由于计算机病毒种类繁多,每类计算机病毒所采用的技术也各不相同,如果能取长补短,借鉴其他计算机病毒技术的优点来弥补自身的缺陷,将使计算机病毒成功逃避反病毒软件的查杀,更好地适应外部运行环境、进化发展自身。因此,计算机病毒之间的协同进化关系是非常自然的。
下面以计算机病毒借鉴Rootkit技术来隐藏自身为例,探讨计算机病毒之间的协同进化关系。由于Rootkit技术类型很多,这里选择其中的SYSENTER Hook进行说明。SYSENETER是在Pentium II及以上处理器中提供的一条CPU指令,是快速系统调用的一部分。SYSENTER和SYSEXIT这对指令专门用于实现快速调用。在此之前一般采用INT 0x2E来实现,INT 0x2E在实现系统调用时,需要进行栈切换工作。Interrupt和Exception Handler的调用都是通过Call/Trap/Task之类的Gate来实现的,此类方式会进行栈切换,且系统栈的地址等信息由TSS提供。此类调用方式可能引起多次内存访问,以获取相关栈切换信息。因此,从Pentium II开始,IA-32架构的CPU引入了新指令:SYSENTER和SYSEXIT。
SYSENTER和SYSEXIT指令用于完成从用户Ring 3级到系统特权Ring 0级的堆栈及指令指针的转换。在此过程中,需要切换的新堆栈地址及首条指令的位置,都由如下3个MSR(Model Specific Register,特殊模式寄存器)来实现:SYSENTER_CS_MSR、SYSENTER_ESP_MSR、SYSENTER_EIP_MSR。
由计算机病毒的进化史可以看出,计算机病毒之间相互借鉴、相互提高、相互促进是非常自然的。计算机病毒之间的这种协同进化关系,促进了计算机病毒的极大发展,导致计算机病毒之间相互融合、相互渗透的趋势越来越明显;计算机病毒之间的协同进化机制,将推动计算机病毒日趋复杂,更难防范。
总之,计算机病毒协同进化机制,对于计算机病毒及其与其他软件的相互影响、相互制约、共同进化具有重要意义。具体体现在如下4个方面:①促进计算机软件的多样性,例如,计算机病毒与外部运行环境的协同进化促进计算机病毒种类多样性的增加;②促进计算机病毒与其他软件的共同适应,例如,计算机病毒与反病毒软件、正常良性软件的共生关系;③促进计算机病毒在指令代码层次的相互渗透,例如,计算机病毒各种类型之间在指令层共享代码的协同进化;④维持计算生态系统的稳定性,例如,计算机病毒与反病毒软件的“猎物—捕食者”关系、计算机病毒与正常良性程序的寄生关系、计算机病毒之间的互惠共生关系。
2)优胜劣汰机制
达尔文进化论认为:生物在生存竞争中普遍存在适者生存,不适者淘汰的自然选择机制,即所谓的优胜劣汰机制。与自然生态系统类似,在计算生态系统中也普遍存在优胜劣汰机制。具体而言,计算机病毒的优胜劣汰关系体现在如下几个方面:计算机病毒与操作系统、计算机病毒与反病毒软件、计算机病毒与宿主程序、计算机病毒之间。
(1)计算机病毒与操作系统。与自然生态系统中的自然环境类似,操作系统就是计算生态系统中的自然环境,决定了计算机病毒的生与死、进化与发展。计算机病毒与操作系统之间存在计算机病毒能否适应操作系统外部环境的问题。随着操作系统的更新换代,凡通过相关功能进化而适应该运行平台的计算机病毒,将会继续生存下来;反之,凡不适应该运行平台的计算机病毒,将因无法运行而遭到淘汰。
例如,在操作系统由DOS系统变为Windows系统后,原来顺水顺风的DOS病毒因无法适应新运行平台而遭到淘汰;同时,那些在原来DOS病毒基础上通过针对Windows系统而改进设计相关功能的新计算机病毒,就因适应新的运行平台而生存下来。此外,那些适应Windows系统环境、依赖Windows系统环境的新计算机病毒,无疑将能更好地生存延续下去。
可以预见,作为计算机病毒生存环境的操作系统,每次更新换代都将导致计算机病毒的新陈代谢;而且,每种新的操作系统出现,将会促使在该系统环境中新计算机病毒的诞生与进化。例如,随着智能终端的各种操作系统(如Android、iOS等)的出现,此类系统中的病毒也在逐渐增多。
(2)计算机病毒与反病毒软件。计算机病毒与反病毒软件之间是“猎物—捕食者”关系。在一种新型计算机病毒诞生后,将造成很大的经济、社会危害:或破坏文件系统,或阻滞网络系统,或窃取敏感数据。为消除该病毒的恶劣影响与危害,维护网络系统安全,反病毒软件必然要出手狙击对抗之。这就是所谓的“魔高一尺,道高一丈”。此外,为对抗反病毒软件查杀,计算机病毒也会采用先发制人策略,通过卸载反病毒软件或删除其关键文件让自己继续感染并危害计算生态系统。
在DOS时代,计算机病毒数量还不多,反病毒软件的特征码扫描法几乎能检测所有病毒。此时,不能对抗反病毒软件的计算机病毒难逃被查杀、淘汰的命运。然而,面对反病毒软件这个天敌的查杀,计算机病毒先后进化出加密、加花、多态、变形等求生技巧,尽力越过反病毒软件布下的天罗地网。此时的反病毒软件无疑成了有名无实的“捕食者”,在与计算机病毒对抗中处于劣势。面对逆境只有奋起直追,反病毒软件进化出启发式、虚拟机等多种“捕食”技巧,迫使多数计算机病毒无处可逃,只有坐以待毙。然而,魔道之争的军备竞赛是永不停息的。此时的计算机病毒又顽强进化出如Rootkit、进程注入、内存运行等多种对抗技术,让反病毒软件在某种程度上成了“摆设”,对磁盘上的病毒竟然毫无察觉。计算机病毒又一次占据了攻防对抗的上风。总之,计算机病毒与反病毒软件之间的对抗与竞争将永远持续下去。猎物和捕食者是相对的,优胜劣汰则是绝对的。
(3)计算机病毒与宿主程序。计算机病毒与宿主程序之间是寄主与宿主的关系。计算机病毒本质上是寄生的:或利用文件系统寄生,或借助网络漏洞寄生。在某个操作系统运行平台上,当其所采用的文件格式确定后,采用该文件格式的应用程序就会大量出现。这在客观上为计算机病毒提供了大量潜在可能的宿主。当文件格式改变或文件系统安全性提高后,原来的计算机病毒会因无法运行而“死亡”。只有针对文件格式改变而改变自身、自我进化的计算机病毒,才能在新环境中生存下来。
例如,对于寄生于可执行文件中的计算机病毒,在DOS时代,文件系统是FAT16,可执行文件格式为.com和.exe,导致感染这两类文件的计算机病毒数量猛增,且进化出诸如伴随、洞穴、驻留内存等多种感染技巧。当Windows系统取代DOS系统后,原来感染DOS文件的计算机病毒就被环境淘汰了。计算机病毒只能进化自身以适应新的感染环境:Windows的FAT32文件系统中的PE文件格式,并进化发展出针对PE文件格式的新的感染技巧。
Office系列软件的推出为寄生于数据文档中的计算机病毒诞生提供了寄生环境支撑。不同于以前寄生于可执行文件中的计算机病毒,此类病毒寄生在Office文档中,并随着被感染文档的打开而启动自身以完成感染功能。然而,当Microsoft公司提高Office系列软件的安全性后,原来以“宏”形式寄生于文档中的宏病毒,就被系统拒之门外,不能自动加载运行。
不难理解,当宿主程序的防范措施提高后,计算机病毒可能难以实施寄生感染而面临淘汰;但只要有新的宿主程序出现,适应该宿主环境的计算机病毒肯定会出现并不断进化自身。这种发展趋势是不变的,优胜劣汰机制是永恒的。
(4)计算机病毒之间。计算机病毒之间是竞争共生的关系。具体而言,不同的计算机病毒种类之间是利用生态位不同而共生的关系;同种类型的计算机病毒之间则是一种直接的竞争关系。不同类型的计算机病毒,由于各自的生态位不同,其寄生或占据的计算生态系统的空间位置、所利用的资源也不同,它们能各司其职、和谐共处:计算机病毒利用文件格式规则,蠕虫利用网络漏洞,木马或借助相关漏洞或利用社会工程学原理,等等。同种类型的计算机病毒,由于各自在计算生态系统中的生态位相同或相似,必然引起对相同资源的争夺,优胜劣汰在所难免。
例如,感染PE文件的计算机病毒争夺相同的资源,感染对象都是PE文件格式的文件(如EXE文件、SYS文件、DLL文件等),如果在实施感染时没能更好地识别目标是否已被感染,将导致目标的二次感染,从而使反病毒软件能将其一举歼灭。而那些能避免重复感染、隐蔽性更强的PE文件病毒将会避免厄运,从而保存自身,占据进化优势。
2.4.2 逐利机制
计算机病毒不管如何进化发展,终究还是人工生命体,能掌控其进化命运的是计算机病毒背后的编写者。计算机病毒的编写者,始终具有普通人所共有的心理特征。无论是爱慕虚荣式的技术炫耀,还是以牙还牙式的报复攻击;无论是探究世界的好奇心理,还是金钱至上的黑客产业链,都关乎人类的某些心理特征。因此,进化发展着的计算机病毒无一例外不留着编写者个人逐利和国家逐利的烙印。
1. 个人逐利
人有趋利避害的天性,都会最大可能地趋向利益而避免祸害。趋向利益的行为可能不合法或不符合道德价值判断,但在特定环境下,在生存本能的驱使下,趋利避害的天性往往不受法律或道德的束缚而单独行动。计算机病毒的进化发展离不开计算机病毒编写者的个人逐利天性。
在计算机病毒发展早期,计算机病毒编写者的个人逐利表现为心理获利:因炫耀编程技能而获得他人崇拜或尊敬,从而获得某种程序的心理满足;也有计算机病毒编写者因被惩罚而产生编写计算机病毒攻击特定计算机系统的报复心理;还有部分计算机病毒出自计算机病毒编写者在好奇心的驱使下的技术实践。更多的计算机病毒是利益至上的黑客产业链上所结出的恶果。在黑客产业链中,计算机病毒作为攻击载体,是黑客离不开的攻击工具。从这个层面来看,越厉害的计算机病毒越能得到黑客的关注,从而使计算机病毒编写者获利越多。因此,从个人逐利的角度来看,计算机病毒编写者会竭尽所能编写能变异、能逃避反病毒软件的各种复杂的、高级的计算机病毒,从而促进了计算机病毒进化。
2. 国家逐利
计算机病毒作为网络攻击载体,承载的不仅是黑客个人的利益,还有国家利益。某些国家为了追求政治、经济、军事等方面的利益,发起悄无声息的APT(Advanced Persistent Threat,高级持续性威胁)攻击或采用间谍软件通过网络收集他国情报。
APT攻击是指有组织的或有国家背景支持的黑客,采用具有高级隐遁技术的计算机病毒,针对特定目标和系统进行长期持续的一种新型网络攻击。其攻击特征主要表现在以下几个方面:①针对性。攻击者针对某些特定软件竭力寻找有针对性的安全漏洞,为后续攻击提供漏洞渗透支撑。②持续性。攻击者借助某些特定安全漏洞,针对目标系统发起持续定向性的攻击,可长达数年之久,安全危害极大。③隐蔽性。攻击者成功渗透至目标系统后,利用高级隐遁技术潜伏于该系统,长期控制目标与窃取敏感信息,令人防不胜防。APT攻击通常借助计算机病毒来完成网络攻击前期渗透、中期攻击实施、后期攻击维持等相关工作。因此,作为APT等网络攻击载体的计算机病毒,势必会加快进化速度,病毒日趋复杂,更加难以检测。