在软考信息安全工程师的考试大纲里,恶意代码是一个出现频率极高、却又最容易被考生低估的考点。很多考生背过"病毒、蠕虫、木马"这几个名词,到了考场上面对"以下属于脚本病毒前缀的是""以下不属于漏洞利用类蠕虫的是""以下恶意代码中属于宏病毒的是"这类题目时,依然会选错。问题的根源在于,恶意代码不是几个孤立的名词,而是一个有命名规范、有寄生机制、有传播途径、有功能分类的完整知识体系。本文从恶意代码的命名格式讲起,一路拆解到六大类型的技术本质与命题陷阱,帮助考生把这一块散落的知识点彻底串联起来。
恶意代码是指为达到恶意目的而专门设计的程序或代码。这个定义在教材中被反复强调,它有一个关键限定词——"专门设计"。也就是说,判定一段代码是不是恶意代码,看的是设计意图而非代码本身的形态。一段看似普通的脚本、一个正常的文档、一个再常规不过的安装包,只要它的设计初衷是窃取信息、破坏系统、控制主机或者传播自身,就落入了恶意代码的范畴。反过来,一个因为编写失误而产生漏洞的普通程序,尽管可能被攻击者利用,但它本身并不因此被归类为恶意代码。
恶意代码有一套国际通用的三段式命名格式,形式为"恶意代码前缀加恶意代码名称加恶意代码后缀"。这套命名规范是软考命题人非常偏爱的一个考点,因为它能够一次性考查考生对恶意代码类型的整体把握。前缀标识恶意代码的类别,名称标识具体的恶意代码个体,后缀则是同一恶意代码的变种编号。考生需要重点记忆的是各类恶意代码的标准前缀:系统病毒的前缀是 Virus,网络蠕虫的前缀是 Worm,特洛伊木马的前缀是 Trojan,宏病毒的前缀常见为 Macro 或直接以脚本语言冠名,后门程序的前缀是 Backdoor,脚本病毒的前缀是 Script,捆绑机病毒的前缀是 Binder。真题中曾直接提问"以下属于脚本病毒前缀的是",选项给出 Worm、Trojan、Binder、Script,正确答案就是 Script。这道题看似简单,实则考查的正是考生能否把前缀与类型一一对应起来。前缀之所以重要,是因为它承载了分类的第一层信息:见到 Worm 便知它是能自主传播的蠕虫,见到 Trojan 便知它是伪装成正常程序的木马,见到 Script 便知它是以脚本语言为载体、需要解释器执行的脚本病毒。
三段式命名规范的背后还隐藏着一个容易被忽视的细节:同一种恶意代码会因变种迭代而产生大量样本,后缀正是用来区分这些变种的。命题人偶尔会给出一个完整的恶意代码名称让考生判断类型,此时只需看前缀即可锁定类别,名称与后缀往往只是干扰信息。理解了命名规范,还需要厘清一个概念边界:恶意代码与合法软件之间并没有一条天然的技术分界线,两者的区别在于意图。远程管理软件(RAT)与远程控制型木马在技术实现上高度相似,都包含客户端与服务端、都能执行远程指令,差别在于前者经过用户授权、后者是隐蔽植入。广告软件(Adware)与间谍软件(Spyware)的边界也在于信息收集是否经过知情同意。正因为边界模糊,教材在列举恶意代码类型时才会使用"特洛伊木马、蠕虫、病毒、后门、Rootkit、僵尸程序、广告软件"这样的并列表述,把一些灰色地带的程序也纳入讨论范围。考生在复习时应当建立起"意图导向"的判定思维,而不是试图从代码特征上机械地区分善意与恶意。
要真正区分六大类型的恶意代码,不能停留在名词背诵层面,必须回到它们的底层运行机制。恶意代码的三个核心机制分别是传播机制、寄生机制与触发机制,这三者的不同组合方式,恰恰构成了各类恶意代码之间的本质差异。命题人在设计选择题时,最常用的挖坑手法就是把这三者张冠李戴。
计算机病毒的核心特征是寄生性。病毒不是一段可以独立运行的程序,它必须寄生在一个合法的宿主程序中,把自己的代码插入宿主的代码里。当宿主程序被执行时,病毒代码随之被加载执行,从而获得感染其他程序的机会。这种寄生特性决定了病毒传播的被动性——它不能主动去寻找目标,只能跟随宿主程序的流动而传播。正是基于这一点,教材对病毒的定义才会强调"通过复制自身来感染其他程序"。病毒的触发通常与特定条件绑定,例如特定日期、特定操作次数或者特定文件的访问,这种条件触发的设计使得病毒能够在潜伏一段时间后集中爆发,增加检测与清除的难度。寄生、复制、条件触发,构成了病毒的三大行为支柱,任何一道考查病毒本质的题目,最终都会落到这三点上。
与病毒形成鲜明对比的是网络蠕虫。蠕虫是一种可以独立运行、并且能将自身一个包含所有功能的版本传播到其他计算机上的程序。这句话里的"独立运行"四个字是蠕虫与病毒的分水岭。蠕虫不需要寄生在宿主程序上,它是一个自包含的完整程序,一旦在目标主机上被执行,就能主动扫描网络、寻找其他存在漏洞或弱口令的主机,把自己复制过去。蠕虫的传播不需要人的参与,也不需要宿主程序的配合,这使得它的扩散速度远超传统病毒。教材把网络蠕虫分为漏洞利用类、口令破解类、电子邮件类、P2P类等若干子类,这个分类的依据正是蠕虫的传播途径。漏洞利用类蠕虫通过系统或服务的已知漏洞入侵,口令破解类蠕虫通过暴力破解弱口令渗透,电子邮件类蠕虫通过携带附件的邮件传播,P2P类蠕虫则借助点对点文件共享网络扩散。理解了这个分类依据,遇到"以下不属于漏洞利用类蠕虫的是"这类题目时,就只需要判断某个蠕虫样本的传播方式是否依赖漏洞即可。
这一部分是全文的核心,也是真题最密集出题的地方。教材中常见的恶意代码类型包括系统病毒、网络蠕虫、特洛伊木马、宏病毒、后门程序、脚本病毒、捆绑机病毒、Rootkit、僵尸程序、广告软件等。下面选取考查频率最高的几类逐一拆解。
系统病毒寄生在操作系统的可执行文件或系统引导区中,属于最传统的一类恶意代码。它通过修改宿主文件的代码来实现自我复制,一旦系统启动或者宿主程序运行,病毒就被激活。宏病毒则是寄生对象特殊化的一种恶意代码,它不以可执行文件为载体,而是寄生在包含宏的文档中,典型载体是 Word 文档、Excel 表格这类办公文件。宏是办公软件内置的一种自动化脚本功能,宏病毒正是利用了这一点,把恶意代码写进文档的宏里。当用户打开带有宏病毒的文档时,宏自动执行,病毒随即感染文档模板,进而感染此后新建的每一个文档。真题中曾出现这样一道题:某种病毒表现为通过电子邮件向通讯录中的联系人发送邮件,并通过邮件自带的 Word 文档附件感染主机,问该病毒属于哪一类。正确答案是宏病毒。这道题的关键在于识别传播载体——邮件只是外壳,真正的感染源是 Word 文档附件里的宏,所以它属于宏病毒而非邮件蠕虫。宏病毒的判定要点永远是"载体是不是带宏的文档",而不是"是不是通过邮件传播"。
网络蠕虫的分类在真题中反复出现,需要考生完整掌握其四大子类以及各自的代表性样本。漏洞利用类蠕虫的代表有 CodeRed、Slammer、MSBlaster,它们分别利用 IIS 缓冲区溢出漏洞、SQL Server 解析服务漏洞和 Windows RPC 漏洞进行传播。口令破解类蠕虫以弱口令为目标,通过扫描网络上使用默认口令或简单口令的主机来扩散。电子邮件类蠕虫则伪装成正常邮件,诱导用户点击附件或链接,其典型特征是会读取被感染主机的通讯录并把自身转发给所有联系人。P2P类蠕虫把自己复制到 P2P 软件的共享目录中,伪装成热门资源的文件名等待其他用户下载。真题曾以"以下不属于漏洞利用类蠕虫的是"设问,选项给出 CodeRed、Slammer、MSBlaster、IRC-worm,正确答案是 IRC-worm,因为它属于借助 IRC 聊天网络传播的蠕虫,传播途径不是漏洞利用。这道题提示考生,判断蠕虫子类的唯一依据是传播途径,记住了传播途径就等于记住了分类。
特洛伊木马得名于古希腊的木马计,其核心特征是伪装性——它把自己伪装成正常的、有吸引力的程序,诱导用户主动下载并运行,一旦运行便在后台植入恶意功能。木马与病毒、蠕虫的最大区别在于它通常不具备自我复制能力,也不主动传播,它依赖的是社会工程学手段让用户"自愿"把它请进系统。按照行为和功能特性,特洛伊木马可以分为远程控制型、信息窃取型和破坏型三大类。远程控制型木马是考查重点,它通常由客户端和服务端两部分构成,服务端被植入受害主机,攻击者通过客户端与服务端建立连接,实现对受害主机的远程操控。冰河、彩虹桥、PC Share 都属于远程控制型木马的典型代表。真题曾问"以下不属于远程控制型木马的是",选项给出冰河、彩虹桥、PC Share、
本篇完!