系统架构设计笔记(87)—— 计算机病毒与防治

计算机技术和网络技术的飞速发展,为人们的工作 、 学习 、 生活带来了极大的方便。计算机已经成为人们不可缺少的现代化工具。但是计算机病毒的出现带给人们不安和忧虑,同时向人们提出了挑战。

1 计算机病毒概述

计算机病毒( Computer Virus )的概念最早是由美国计算机病毒研究专家 F.Cohen 博士提出的。对于计算机病毒的定义,不同的国家 、 不同的专家从不同的角度给出的定义也不尽相同。根据 《 中华人民共和国计算机信息系统安全保护条例 》 第 28 条规定: “ 计算机病毒,是指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据,影响计算机使用,并能自我复制的一组计算机指令或者程序代码 。” 此定义在我国具有法律效力和权威性。

和生物病毒一样,计算机病毒的复制能力使得计算机病毒可以很快地蔓延,又常常难以根除。它们能把自身附在宿主系统或文件中,当系统被运行或文件从一个用户传送到另一个用户时,它们就随同系统运行或文件传输一起蔓延开来。

在病毒的生命周期中,病毒一般会经历潜伏阶段 、 传染阶段 、 触发阶段和发作阶段4个阶段。多数病毒是基于某种特定的方式进行工作的,因此也依赖于某个特定的操作系统或某个特定的硬件平台。因此,攻击者经常利用某个特定系统的细节和弱点来设计病毒程序。

1.1 计算机病毒的特征

计算机病毒多种多样,但是它们都具有共同的特征,即传染性 、 非授权性 、 潜伏性和破坏性。计算机病毒的传染性是指病毒具有把自身复制到其他系统或文件等宿主中去的能力,这是病毒的基本特征。

非授权性是指病毒程序的执行不需要得到用户的同意,对用户来说是未知的。潜伏性是病毒生存的必要条件,即病毒潜伏在系统中而不被人们所发觉。破坏性是指病毒在一定条件下可以自动触发,并对计算机实施破坏,是病毒的表现特征。病毒的非授权性 、 潜伏性使得病毒的行为是不可预见的,也增加了病毒检测的困难。病毒破坏性的触发条件越多,则传染性越强,但同时其潜伏性降低。一个病毒必须具备传染性,但不一定需要拥有其他属性。

1.2 计算机病毒的分类

计算机病毒按不同的分类标准,有许多不同分类:

按照操作系统分,可分为攻击 DOS 系统的病毒 、 攻击 Windows 系统的病毒 、 攻击 Unix/Linux 系统的病毒 、 攻击 OS/2 系统的病毒 、 攻击 Macintosh 系统的病毒 、 攻击手机的病毒 、 其他操作系统上的病毒。

按照链接方式分,计算机病毒可分为源码型病毒 、 嵌入型病毒 、 Shell病毒 、 宏病毒 、 脚本型病毒 、 操作系统型病毒。

按照破坏情况分,计算机病毒可分为良性病毒和恶性病毒。

按传播媒介来分,计算机病毒可分为单机病毒和网络病毒。

1.3 计算机病毒的组成

病毒程序一般由传染模块 、 触发模块 、 破坏模块和主控模块组成,相应地完成病毒的传染 、 触发和破坏等任务。也有少数病毒不具备所有的模块。

(1)传染模块

传染模块是病毒进行扩散传播的部分,负责把计算机病毒从一个系统或文件传播到更多的系统或文件中去。每个病毒都有一个自我识别的标记,叫作传染标记或病毒签名。病毒程序传染系统或文件时,要把传染标记写入系统或文件中某个特定区域,例如,宿主程序 、 注册表 、 物理磁道等,作为该系统或文件已被传染的标记,以防止重复传染,增强病毒的潜伏效果。传染模块的主要功能有:寻找一个可传染的系统或文件;检查该系统或文件中是否有传染标记,判断该系统或文件是否已经被传染;如果没有传染标记,则进行传染操作,将病毒代码植入宿主系统或文件中,完成一次传染。

(2)触发模块

病毒触发模块主要检查预定触发条件是否满足,如果满足,则调用相应传染或破坏模块,进行传染和破坏动作。病毒的触发条件有多种形式,如日期 、 时间 、 键盘 、 发现特定程序 、 发现网络连接 、 发现系统漏洞 、 传染的次数 、 特定中断调用的次数等。依据触发条件的情况,可以控制病毒传染和破坏动作的频率,使病毒在隐蔽的状态下,进行传染和破坏动作。

(3)破坏模块

破坏模块负责实施病毒的破坏动作。这些破坏动作可能是破坏程序及数据 、 降低系统的性能 、 干扰系统的运行,还有些病毒甚至可以破坏计算机硬件。也有少数病毒的破坏模块并没有明显的恶意破坏行为,仅在被传染的系统设备上表现出特定的现象,该模块有时又称为表现模块。

(4)主控模块

主控模块在总体上控制病毒程序的运行。染毒程序运行时,首先运行的是病毒的主控模块。

2 网络环境下的病毒发展新趋势

在互联网给人们的工作 、 生活带来方便的同时,也给大量新病毒的产生和发展带来了 “ 方便 ” 。 在互联网高度发达的今天,计算机病毒的数量急剧增多,传播途径也更加多样,传染速度也更加快捷。

除了以往通过相互复制文件 、 系统之间交叉传染等方式外,目前的计算机病毒更多地通过网页 、 电子邮件 、 局域网共享 、 系统漏洞等方式在网络上进行自动传播。有些流行病毒,常常借助于网络在两 、 三天内迅速传遍全国,传遍全世界。

例如, E-mail 病毒就是目前最为流行 Internet 病毒种类之一,它通过在电子邮件附件中添加危险的病毒执行程序,在邮件正文中添加诱惑性的文字,诱使收件人执行附件病毒程序,以达到其激活的目的。目前此类病毒多数针对微软的 Outlook 和 Outlook Express程序,并以使用 Windows 的地址簿联系人发送病毒邮件形式传播。不但危害个人,而且可能导致 Internet 邮件服务器由于收发大量的病毒附加的邮件被大量占用网络资源,直至邮件服务器崩溃。此外,由于 Internet 即时通信被广泛运用,借助于MSN 、 QQ 、 OICQ等传播病毒也成为近年来病毒流行的一个趋势,病毒很可能通过这些软件自动发送有害信息实现自动传播。

目前,通过局域网共享传播的病毒也有很多。在广泛使用的 Windows 系统中,管理共享 、 特殊端口等默认是打开的,有些版本的系统中,甚至具有可写权限。这样,病毒在搜索到局域网共享资源后,便可以直接传染目标计算机相应文件夹中的文件或者将病毒写入相应系统中,以便得到在目标计算机中执行的机会。也正是因为这个原因,很多病毒在传染一台计算机后会造成某个局域网普遍传染的情况,并且在不断开网络连接的情况下很难将病毒清除干净。

在当前的网络环境下,最常见的恶意程序是木马程序,也称后门程序。它们大多利用系统漏洞或者空闲的端口,通过在系统中安装相应的木马程序,并通过互联网使用专门的软件监视宿主计算机,以这样的方式获得宿主系统文件访问授权,以及收集宿主系统的信息,如用户个人资料 、 银行账号与密码 、 网游账号等。由于网络传输速度很快,所以网络环境下的病毒传染速度也非常快,一度轰动的 “ 冲击波 ” 、 “ 震荡波 ” 等病毒都是在相应的系统漏洞被发现后几天时间里,就迅速在全世界大范围蔓延开来。可以说,今天的计算机病毒的品种和传播速度,超过了以往任何时候。

3 计算机病毒的检测与清除

3.1 特征码检测

所谓特征码查毒法,就是在获取病毒样本后,提取出其特征码,(例如,杨基病毒的特征码是 16 进制的 “ F47A2C00 ” ,快乐时光病毒中的 “ Fun Time ” 字符串等),然后通过该特征码对目标文件或内存等进行扫描。如果发现这种特征码,就说明感染了这种病毒,然后针对性地清除病毒。

特征码技术是最早被采用,而且被许多反病毒软件一直沿用至今的病毒检测方法。特征码检测方法检测病毒,方法简单 、 准确 、 快速,可识别病毒的名称,误报警率低。但是,特征码技术只能诊断已知的计算机病毒,其响应速度永远滞后于病毒,而且不能检查未知病毒和变形病毒,不能对付隐蔽性病毒。

随着计算机病毒的发展,不断出现的新的病毒,甚至有些病毒具有自动变形功能,例如, “ 卡死脖 ” 病毒,采用传统病毒特征码搜索技术的杀毒软件常常难以应付这些变形病毒。为此,人们提出了广谱特征码过滤技术,该技术在一定程度上可以弥补以上缺陷。

3.2 校验和检测

先计算正常文件的内容和正常的系统扇区数据的校验和,将该校验和写入数据库中保存。检测时,检查文件现在内容的校验和与原来保存的校验和是否一致,从而可以发现文件或扇区是否被感染,这种方法称校验和检测。

校验和检测技术的优点是:方法简单 、 能发现未知病毒 、 被查文件的细微变化也能发现。但是,它不能识别病毒种类。而且,由于病毒感染并非是文件内容改变的唯一原因,文件内容的改变有可能是正常程序引起的,所以校验和检测技术受到种种限制,同时这种方法也会影响文件的运行速度。另外,校验和不能检测新的文件,如从网络传输来的文件 、 磁盘和光盘拷入的文件 、 备份文件和压缩文档中的文件等。

3.3 行为监测

随着近年来病毒与反病毒斗争的不断升级 、 新病毒产生的速度不断加快,传统反病毒技术滞后于病毒的特点越来越不能适应防病毒的需要,更需要采用通用反病毒技术来保护计算机的安全。现阶段中被广泛研究和采用的通用病毒检测技术有病毒行为监测技术 、 启发式扫描技术和虚拟机技术。

通过研究发现,病毒不论伪装得如何巧妙,它们总是存在着一些和正常程序不同的行为,而这些行为在正常应用程序中却十分罕见,这就是病毒的行为特性。

常见的病毒行为特性有:对可执行文件进行写操作 、 写磁盘引导区 、 病毒程序与宿主程序的切换 、 程序自己重定位 、 通过搜索函数索引表来获取 API 函数地址等。

利用这些特征,就可以对病毒实施监视,在病毒程序体进行活动时发出报警。采用这种行为特性检测方法不仅可以检测出已知病毒,而且可以检测出新出现的未知病毒,无论该病毒是什么种类,或是否变形。但是,行为监测技术也可能误报警,而且不能识别病毒名称。

3.4 启发式扫描

在特征码扫描技术的基础上,利用对病毒代码的分析,获得一些统计的 、 静态的启发性知识,可以用于静态的启发性扫描技术( Heuristic Scanning )。启发式扫描主要分析文件中的指令序列,根据统计知识,判断该文件可能被感染或者没有被感染,从而有可能找到未知的病毒。因此,启发式扫描技术是一种概率方法,遵循概率理论的规律。

早期的启发式扫描软件采用代码反编译技术作为它的实现基础。这类病毒检测软件在内部保存数万种病毒行为代码的跳转表,每个表项对应一类病毒行为的必用代码序列,如病毒格式化磁盘必须用到的代码等。启发式病毒扫描软件利用代码反编译技术,反编译出被检测文件的代码,然后在这些表格的支持下,使用 “ 静态代码分析法 ” 和 “ 代码相似比较法 ” 等有效手段,就能有效地查出已知病毒的变种,以及判定文件是否含有未知病毒。

由于病毒代码千变万化,具体实现启发式病毒扫描技术是相当复杂的。通常这类病毒检测软件要能够识别并探测许多可疑的程序代码指令序列,如格式化磁盘类操作 、 搜索和定位各种可执行程序的操作 、 实现驻留内存的操作 、 子程序调用中只执行入栈操作 、 远距离(如超过文件长度的三分之二)跳往文件头的指令等。一般来说,仅仅一项可疑的功能操作不足以触发病毒报警。但如果同时具有多项可疑操作,目标程序就很可能是病毒程序。

3.5 虚拟机

自动变形病毒,也称为多态性病毒或多型(形)性病毒。自动变形病毒每次感染宿主时都自动改变自身的程序代码和特征码,这类病毒的代表有 “ 幽灵 ” 病毒等。

一般而言,自动变形病毒采用以下几种操作来不断变换自己:采用等价代码对原有代码进行替换;改变与执行次序无关的指令的次序;增加许多垃圾指令;对原有病毒代码进行压缩或加密等。因为自动变形病毒对其代码不断进行变换,而且每次传染使用不同的密钥。将染毒文件的病毒代码相互比较,也难以找出相同的可作为病毒特征的稳定特征码,因此用传统检测方法根本无法检测出这类病毒。但是,自动变形病毒也有一个共同的规律:即无论病毒如何变化,每一个自动变形病毒在其自身执行时都要对自身进行还原。

为了检测自动变形病毒,出现了一种新的病毒检测方法 ——“ 虚拟机技术 ”。 该技术用软件方法让病毒在一个虚拟的环境中,仿真一部分系统指令和功能调用,对病毒代码作解释执行,而且仿真运行不对系统产生实际的影响,即可获得程序运行的后果,并在此基础上对程序运行分析,进而判断是否存在病毒。

不管病毒使用什么样的加密 、 隐形等伪装手段,只要在虚拟机所营造的虚拟环境下,病毒都会随着运行过程自动褪去伪装(实际上是被虚拟机动态还原)。正是基于上述设计原理,虚拟机在处理加密 、 变换 、 变形病毒方面具有很强的优越性。虚拟机检测方法,实际上是用软件实现了模拟人工反编译 、 智能动态跟踪 、 分析代码运行的过程,其效率更高,也更准确。使得反病毒从单纯的静态分析进入了动态和静态分析相结合的新时期,极大地提高了对已知病毒和未知病毒的检测水平。在今后相当长的一段时间内,虚拟机技术还会有很大的发展。

3.6 病毒的清除

将病毒代码从宿主中去除,使之恢复为可正常运行的系统或程序,称为病毒清除。大多数情况下,采用反病毒软件或采用手工处理方式可以恢复受感染的文件或系统。不是所有染毒文件都可以消毒,也不是所有染毒的宿主都能够被有效恢复。

依据病毒的种类及其破坏行为的不同,感染病毒后,如果宿主数据没有被删除,常常可以恢复;如果宿主数据被病毒删除或复盖 、 或者宿主数据的逻辑关系被病毒破坏,常常不能恢复。

4 计算机病毒的预防

“ 防重于治 ” ,对于计算机病毒也是如此。在日常使用计算机的过程中,同时做好预防工作,可以很大程度上避免被病毒感染,减少不必要的物力 、 数据损失。

要预防计算机病毒,最好的方法就是不与外界交换文件,但这是不可能的。人们在工作中,要经常与外界进行各种数据交换。而大量与外界交换信息,就给病毒的感染与传播创造了条件。为了保护计算机不受病毒破坏,至少必须做到:

(1)一定要在计算机中安装反病毒软件。

(2)不要轻易使用来历不明的或者没有经过确认的软件;对从网络上下载的程序和文档应十分小心,在执行文件或打开文档之前,要检查是否有病毒;从外部取得的介质及其中的文件,应检查病毒后再使用;压缩后的文件应解压缩后检查病毒。

(3)电子邮件的附件应该先检查病毒后再开启,并在发送邮件之前检查病毒;不要运 行来历不明的 E-mail 附件,尤其是在邮件正文中以诱惑性的文字建议执行的附件程序。

(4)定期使用反病毒软件扫描系统。

(5)确保所使用的反病毒软件的扫描引擎和病毒代码库为最新的,因为旧的扫描引擎和病毒代码库不会检查到新出现的病毒。

(6)为防止引导型病毒对系统的破坏,应该在系统安装完成后立即制作系统应急启动盘,以便万一硬盘分区表遭到破坏时,能从应急盘启动,并用备份的引导区、分区表等直接 进行恢复。

(7)对于一些重要的文件,要定期进行备份,以便万一系统遭受病毒破坏时能够从备份恢复。

(8)利用安全扫描工具定时扫描系统和主机。若发现漏洞,及时寻找解决方案,从而减少被病毒和蠕虫感染的机会。

(9)使用反病毒软件时,最好先查毒,找到了带毒文件后,再确定是否进行杀毒操作。因为查毒不是危险操作,它可能产生误报,但绝不会对系统造成任何损坏;而杀毒是危险操作,有的操作可能把文件破坏。

(10)建立本单位的计算机病毒防治管理制度;并对计算机用户进行反病毒培训。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349