计算机病毒不会来源于突发或偶然事件。例如,一次突然停电或偶然错误,可能会在计算机磁盘或内存中产生一些乱码或随机指令,但这些代码是无序和混乱的,从概率上来讲,这些随机代码不可能成为计算机病毒。计算机病毒是人为编写的、遵循相关程序设计模式的、逻辑严谨的、能充分利用系统资源的计算机程序代码。计算机病毒在运行后通常会对计算机系统或数据产生破坏性,且具有传播、隐蔽、潜伏、干扰等特性。计算机病毒的主要特性有繁殖性、破坏性、传染性、潜伏性、可触发性、衍生性、不可预见性(见图1-7)。
图1-7 计算机病毒特性
繁殖(或称生殖),是自然界所有生物都具有的本能。繁殖是生物为延续种族所进行的产生后代的生理过程,即生物产生新的个体的过程。其实,自然界现存的每个个体都是上一代繁殖的结果。生物病毒的繁殖性不言而喻,新冠病毒全球大暴发,就是其强大繁殖性的明证。
计算机病毒尽管不是自然界纯粹的生物体,却可被视为网络空间中的一种人工生命体。计算机病毒为扩大感染范围、造成重要影响,也像生物病毒一样具有繁殖性:通过自我复制来进行大量繁殖。因此,是否具有繁殖性成为判断某段程序是否为计算机病毒的重要条件之一。计算机病毒的繁殖性,是计算机病毒不断演化发展的基础。通过不断繁殖自身,产生尽可能多的子代,才能促进计算机病毒家族枝繁叶茂并不断进化发展。
任何事物的出现都有其目的,计算机病毒也不例外。计算机病毒的出现并表现为破坏性,是计算机病毒的本质体现。表现出其独特的目的性,是计算机病毒背后的编程者的意志体现。
任何计算机病毒在成功入侵目标系统后,都会表现出或多或少的破坏性。有些计算机病毒只是为炫耀编程者高超的编程技术,有炫耀表现之意而无破坏之实;有些计算机病毒会大量占用系统资源,导致系统负荷超载,严重时甚至导致系统崩溃;有些计算机病毒对系统资源占用极少,却能利用系统的碎片时间,瞒天过海地窃取敏感数据,导致隐私信息被泄露或知识产权被侵害。
计算机病毒不仅具有繁殖性,更有与之相关的传染性。与生物病毒在适当条件下大量繁殖并扩散至其他寄生体类似,计算机病毒在进行自我复制或产生变种后,必定会想方设法、千方百计地将其复制体从一个系统扩散至更多系统。与繁殖性一样,传染性也是计算机病毒的基本特性,是判断某段程序为计算机病毒的最重要条件。计算机病毒的传染性一般需要借助于特定的传输介质,如软盘、硬盘、移动硬盘、计算机网络等,将自身复制传染至其他目标系统。计算机病毒的传染性,是计算机病毒的本质体现,是其扩大攻击面、不断演化发展的基础。
为逃避安全软件的查杀,部分计算机病毒在感染目标系统后并不会立刻表现出破坏性,而会相对安静地隐匿于系统中等待时机。与生物界中的伪装、拟态、保护色等动物自我保护机制类似,计算机病毒的潜伏性多为避人耳目,以免引起用户或安全软件的注意,从而更好地保护自身。一旦时机成熟,当其触发条件满足时,计算机病毒便会极力繁殖、四处扩散、危害系统。因此,如从适者生存的视角来看,计算机病毒的潜伏性,是计算机病毒为适应外部环境、保护自身、更好地生息繁衍的进化明证。
计算机病毒的可触发性,实质上是一种条件控制机制,用以控制感染、破坏行为的发作时间与频率。当所设定的触发条件因某个事件或数值而被满足时,计算机病毒便会被触发而实施感染或攻击行为。计算机病毒可设定的触发条件很多,主要有时间、日期、文件类型、特定操作或特定数据等。例如,CIH病毒会在每月26日被触发,台湾一号病毒则在每月1号被触发。当计算机病毒完成感染而加载时,会检查触发机制所设定的条件是否满足,如满足条件,则启动感染操作或破坏行为;否则,就继续潜伏静待时机。
衍生,是指母体化合物分子中的原子或原子团被其他原子或原子团取代而形成不同于母体的物质的过程。通过衍生过程而生成的异于母体的物质,被称为该母体化合物的衍生物。例如,卤代烃、醇、醛、羧酸等都可视为烃的衍生物,因为它们是烃的氢原子被取代为卤素、羟基、氧等的产物。
计算机病毒的衍生性,是指由一种母体病毒演变为另一种病毒变种的特性。由于计算机病毒是由某种计算机语言编码而成的,在相关技术条件下,多数计算机病毒可被逆向工程解析为可阅读的计算机病毒源代码。通过对计算机病毒源代码的理解与修改,增添或删除某些代码,就能衍生出另一种计算机病毒变种,这在脚本类病毒(如宏病毒)中尤为常见。
此外,计算机病毒的多态、混淆、加密、加壳等相关特性,都可视为其衍生性的自然扩展与应用。计算机病毒的衍生性,是计算机病毒变种不断出现及计算机病毒越来越复杂、越来越难以查杀的理论基础,也是计算机病毒不断进化的明证。
自然界充满了不确定性,环顾四周会发现很多概率事件。必然与偶然,如影随形。人们可预估未来趋势,但无人能精确预测未来事件。常言道:明天与意外,你永远不知哪个会先到。正如人们无法预测未来会出现什么生物病毒一样,人们同样不能准确预见未来会出现何种计算机病毒。计算机技术的多样性与不确定性,人的意愿的多样性与不确定性,决定了计算机病毒的不可预见性。
计算机病毒的不可预见性,是多数安全软件所采用的反病毒技术滞后于计算机病毒技术的理论基础,也是计算机病毒演化发展的表现。