恶意代码是信息安全工程师考试中每年都会出现的知识点。从 2020 年到 2024 年的真题看,上午选择题每年都有直接考题,题型稳定:要么考命名规则与前缀识别,要么考病毒、蠕虫、木马、宏病毒之间的分类辨析。这类题目难度不高,丢分率却居高不下,根源在于家族众多、边界交织、命名格式生疏,考生常在"冰河是病毒还是木马""IRC-worm 算不算漏洞利用类"上摇摆。本文按概念定义、原理机制、分类与应用、常见误区、真题关联、备考总结六个层次,把该知识点彻底拆开。
恶意代码,是指为达到恶意目的而专门设计的程序或代码。这是教材给出的标准定义,关键词有两个:一是"恶意目的",即编写者主观上以窃取信息、破坏数据、控制系统、扰乱业务为意图;二是"专门设计",即功能围绕恶意目标构造,与带缺陷的正常程序有本质区别。恶意代码是上位概念,其下包括计算机病毒、网络蠕虫、特洛伊木马、宏病毒、后门程序、Rootkit、僵尸程序、逻辑炸弹、间谍软件、广告软件等。历年真题多次直接引用这一定义并列举上述类型,命题人显然希望考生建立"恶意代码是总称"的认知框架。
在各类恶意代码中,计算机病毒的地位最特殊,因为它的定义出自法律法规。我国 1994 年颁布的《中华人民共和国计算机信息系统安全保护条例》第二十八条规定:计算机病毒,是指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据,影响计算机使用,并能自我复制的一组计算机指令或者程序代码。这一定义揭示了两个核心属性:一是破坏性,二是自我复制能力,后者是病毒区别于其他恶意代码的根本标志。教材据此归纳出病毒六大特征:寄生性,依附宿主存在;传染性,能自我复制并感染其他文件;隐蔽性,感染后通常不立即暴露;潜伏性,可长期潜伏等待触发;破坏性,发作后破坏系统功能或数据;可触发性,发作由预设条件触发。
与病毒不同,网络蠕虫的定义强调独立运行与主动传播。教材将其描述为一种可以独立运行,并能将自身完整版本传播到其他计算机的程序。蠕虫不需要宿主,不需要用户干预,自身就是完整的代码实体。特洛伊木马的定义则强调伪装与欺骗:木马是指伪装成合法程序或隐藏在合法程序之中,诱骗用户安装运行,从而实现对目标主机远程控制的程序。木马之名取自希腊神话"特洛伊木马"典故,寓意外表无害、内藏杀机。理解三类核心恶意代码的定义差异,是后续一切辨析的基础。
恶意代码的命名规则是考试高频考点,也是安全工作中识别样本类型的通用语言。主流安全厂商沿用的命名格式为三段式:前缀、名称、后缀,即用前缀标识类型、名称标识家族、后缀标识变体编号。前缀是命名第一要素,直接声明类别:Worm 表示网络蠕虫,Trojan 表示特洛伊木马,Macro 表示宏病毒,Script 表示脚本病毒,Binder 表示捆绑机病毒,Backdoor 表示后门程序,Hack 表示黑客工具,Win32 等平台标识表示系统病毒。名称字段通常是家族名或代号;后缀字段是按字母或数字递增的变体编号,表示同家族的不同变种。
掌握这套规则后,识别恶意代码类型就变成一道"看前缀"的题目:Macro.Melissa 的前缀是 Macro,可立即判断为宏病毒;Worm.Blaster.g 属网络蠕虫,Blaster 即冲击波蠕虫,后缀 g 表示第七代变种;Trojan.huigezi.a 属木马,huigezi 即灰鸽子;Backdoor.Agobot.frt 属后门程序。历年真题中,2020 年第 24 题直接考查"以下属于脚本病毒前缀的是",2020 年第 62 题与 2024 年第 2 题都考查了宏病毒识别。前缀表是考生必须熟记的第一个考点清单。
计算机病毒的运行机制围绕"寄生"二字展开。病毒不能独立存在,必须依附于宿主,宿主可以是可执行文件、引导扇区或文档。按感染对象,病毒分为文件型、引导型与宏病毒三大类。
文件型病毒寄生在 COM、EXE、DLL 等可执行文件中。感染方式主要有三种:一是在宿主首部追加病毒代码并修改程序入口点,使程序先跳转执行病毒代码,执行完毕后再交还控制权;二是在宿主尾部追加病毒代码,同样通过修改入口点实现先执行;三是利用宿主文件已有的空隙插入病毒代码,不改变文件长度,隐蔽性更强。无论哪种方式,核心都是控制权的转移:病毒代码先于宿主执行,完成复制与破坏后再交还控制权,使程序照常运行。用户看到程序"一切正常",恰恰因为病毒在暗中完成了寄生与复制,这正是隐蔽性的技术来源。
引导型病毒寄生在磁盘引导区,包括硬盘的主引导记录(MBR)或分区引导扇区(DBR)。系统加电后,基本输入输出系统首先读取引导扇区并执行其中的引导代码,引导型病毒通过改写引导扇区,让自己在操作系统加载之前率先执行,获得系统的完全控制。由于引导区不参与常规文件扫描,此类病毒曾长期难以清除。
宏病毒寄生在办公文档中,宿主是文档内嵌的宏。用户打开文档时办公软件自动执行宏,病毒随即获得执行机会,并可进一步感染文档模板,使后续新建的每一份文档都携带病毒。宏病毒依赖文档交换传播,绕开了杀毒软件对可执行文件的扫描范围。
病毒的生命周期一般划分为潜伏、传染、触发、表现四个阶段:潜伏阶段隐藏在宿主体内不活动,传染阶段寻找新宿主并自我复制,触发阶段在预设条件满足后进入激活,表现阶段执行破坏性操作。可触发性与潜伏性相互配合,使病毒能够长期潜伏、集中发作,增加追溯与清除的难度。
网络蠕虫与病毒最本质的机制差异在于:蠕虫不需要宿主,是独立运行、自我复制、主动传播的程序实体。病毒靠文件交换等被动途径传播,蠕虫则自带扫描与攻击能力,自主寻找下一个受害目标。蠕虫的程序结构通常包含传播模块与主体功能模块,前者负责发现目标与攻击渗透,后者负责破坏、窃密或建立后门。
蠕虫的传播流程概括为四步:第一步扫描,在网络中探测存活主机与开放端口,策略有随机、顺序与选择性扫描之分,后者使用预置目标列表或漏洞指纹匹配;第二步攻击渗透,利用系统漏洞、弱口令或社会工程手段获得执行权限;第三步复制上传,将自身副本传递到目标主机;第四步副本激活,副本独立运行并重复上述流程,形成指数级扩散。这种循环不需要人的参与,蠕虫的爆发速度远超病毒,往往在补丁发布前就能席卷全球网络。
历史上爆发过的著名蠕虫都是漏洞利用类的代表。2001 年 7 月的 CodeRed(红色代码)利用微软 IIS 索引服务的缓冲区溢出漏洞,攻击 Web 服务器,数小时内感染数十万台主机。2003 年 1 月的 Slammer 利用 SQL Server 解析服务的缓冲区溢出漏洞,攻击 1434 端口,代码仅数百字节,一个数据包即可完成感染,被称为传播速度最快的蠕虫。2003 年 8 月的 MSBlaster(冲击波)利用 Windows 的 RPC DCOM 漏洞经 135 端口传播,发作时使大量主机重启。三者都以系统或服务的代码缺陷为突破口,不需要用户任何操作,因而在补丁普及前能够大规模蔓延。
除漏洞利用类外,蠕虫还有其他传播途径。口令破解类扫描弱口令账户,攻击开放远程登录服务的主机,利用的是配置缺陷。电子邮件类以邮件为载体,将自身作为附件发送,典型手法包括伪装发件人、伪造主题与地址簿群发。P2P 类将副本伪装成热门资源放入共享目录,诱使其他用户下载执行。IRC 类借助互联网中继聊天网络传播,通过 IRC 服务器向频道成员分发恶意指令或副本,如 IRC-worm。真题考查"以下不属于漏洞利用类蠕虫的是"时,IRC-worm 就是正确选项,命题逻辑正在于:它利用的是聊天网络的社交分发机制,而不是系统漏洞。
特洛伊木马的运行机制建立在客户端与服务端架构之上:服务端是被控端程序,植入并运行在受害主机上,负责监听指令、执行操作并回传数据;客户端是控制端程序,运行在攻击者机器上,负责连接服务端、下发指令、接收窃取的信息。木马攻击的成败,取决于服务端能否成功植入与控制通道能否稳定建立。
植入是木马机制的第一环。木马必须诱使用户主动执行服务端程序,因此伪装是核心技术。常见手段包括:图标伪装,把恶意程序图标伪装成图片、文档或安装包;扩展名欺骗,利用系统默认隐藏已知扩展名的特性,把"照片.jpg.exe"显示为"照片.jpg";捆绑伪装,将木马服务端与正常软件捆绑,用户安装正常软件时木马随之运行,这一功能工具即捆绑机,对应前缀 Binder。恶意网站挂马、邮件附件、软件下载站与聊天工具文件传输都是常见植入入口。
控制通道是木马机制的第二环。早期木马采用正向连接,由控制端主动连接被控端的监听端口,防火墙普及后易被阻断。后来的木马普遍采用反弹连接,由服务端主动向外连接控制端,因防火墙对出站连接限制宽松,反弹连接能穿透防火墙与网络地址转换设备,灰鸽子等远程控制型木马正是凭此长期活跃。为逃避检测,高级木马还用端口复用、HTTP 隧道甚至加密通信隐藏控制流量,使恶意通信混杂在正常流量中。
隐蔽运行是木马机制的第三环。木马服务端植入后需长期存活,因此采用多种手段隐藏自身:注册为系统服务实现开机自启动;通过进程注入附着在正常进程地址空间中;借助 Rootkit 技术挂钩系统调用,使文件、进程、网络连接在系统工具中不可见。在此基础上,木马执行键盘记录、屏幕截图、文件回传、摄像头调用、注册表修改、进程管理与远程桌面控制等功能。需要注意的是,木马本身不自我复制,也不主动感染其他文件,其扩散依赖攻击者反复植入或与其他恶意代码配合,这是它与病毒、蠕虫在机制层面的根本区别。
计算机病毒按感染对象分为四类:引导型病毒,感染硬盘主引导记录或分区引导扇区;文件型病毒,感染可执行文件;宏病毒,感染文档及模板中的宏;混合型病毒,兼具二者。按破坏程度又分良性与恶性。这一分类体系与前文的感染机制一一对应,理解寄生对象就能理解分类依据。网络蠕虫的分类在教材中有明确表述:漏洞利用类、口令破解类、电子邮件类、P2P 类,此外实际工作中还常见 IRC 类。漏洞利用类是考试重点,CodeRed、Slammer、MSBlaster 三大著名蠕虫都属此类,共同特征是攻击目标存在可利用的代码缺陷;口令破解类针对弱口令配置,电子邮件类与 P2P 类依赖用户行为配合,IRC 类依赖聊天网络分发。考
本篇完!