
编辑推荐
本书是一部详细介绍各类计算机病毒工作、传播、感染机制的书,教材中以伪代码的形式给出了相关关键技术的详细实现方法,是目前可以找到的关于计算机病毒相关技术介绍最为详细的一本书。同时为了适应教学,本书还专门设计了系列实验。
目录
目录
第1章计算机病毒基础
1.1计算机病毒的起源
1.1.1代码的自复制理论基础
1.1.2磁芯大战
1.1.3典型的计算机病毒
1.2计算机病毒的定义
1.2.1计算机病毒的结构
1.2.2计算机病毒的分类
1.3计算机病毒的基本原理
1.3.1计算机病毒的形式化模型
1.3.2计算机病毒的传播模型
1.3.3系统安全模型
1.3.4计算机病毒的防御
1.3.5计算机病毒的特征
1.4计算机病毒的命名
1.4.1命名规则
1.4.2计算机病毒的环境依赖性
第2章Win32系统关键技术
2.1Windows体系结构
2.1.1Win32的含义
2.1.2x86 CPU的工作模式
2.1.3内核态和用户态
2.1.4地址空间
2.2内存管理机制
2.2.1地址绑定
2.2.2Windows的分页机制
2.2.3i386的地址转换
2.2.4内存保护
2.2.5虚拟内存
2.2.6内存映射文件
2.3中断和异常
2.3.1中断
2.3.2Win32系统服务调用
2.3.3异常
2.4存储和文件系统
2.4.1硬盘物理结构
2.4.2硬盘分区结构
2.4.3FAT文件系统
2.4.4NTFS文件系统
2.5典型的可执行文件格式
2.5.1Windows可执行文件
2.5.2.com文件
2.5.3可移植文件格式
2.5.4加载器
第3章计算机病毒的感染机制
3.1引导型病毒
3.1.1系统引导过程
3.1.2引导型病毒的感染原理
3.1.3主引导扇区代码分析
3.1.4引导型病毒的实现
3.2文件型病毒
3.2.1文件型病毒的感染机制
3.2.2可移植文件的操作方法
3.2.3空洞病毒的实现
3.2.4追加新节的实现
3.2.5病毒编写技术
3.3脚本病毒
3.3.1VBS病毒的原理
3.3.2VBS病毒的自保技巧
3.3.3VBS病毒生产机
3.4代码进化技术
3.4.1加密病毒
3.4.2寡态病毒
3.4.3多态病毒
3.4.4变形病毒
3.4.5病毒生产机
第4章计算机病毒防御技术
4.1扫描器技术
4.1.1特征码扫描
4.1.2快速扫描
4.1.3骨架检测
4.1.4精确识别技术
4.1.5算法扫描
4.2启发式检测
4.2.1静态启发式检测
4.2.2动态启发检测技术
4.2.3神经网络启发式检测
4.3行为检测器
4.4完整性检测器
4.5杀毒技术
4.5.1内存杀毒
4.5.2文件杀毒
4.5.3通用杀毒
第5章恶意代码技术的发展
5.1恶意代码及其分类
5.1.1恶意代码攻击机制
5.1.2常见的恶意代码
5.2特洛伊木马技术
5.2.1木马的攻击机制
5.2.2木马的传播技术
5.2.3木马的隐藏技术
5.2.4木马的通信技术
5.3蠕虫技术
5.4缓冲区溢出攻击
5.4.1缓冲区溢出攻击的原理
5.4.2缓冲区溢出攻击的实现
5.4.3ShellCode的编写技巧
第6章恶意代码的分析技术
6.1代码分析环境
6.2静态分析技术
6.2.1x86的指令编码格式
6.2.2x86反汇编
6.3动态跟踪技术
6.3.1Win32调试API
6.3.2Win32调试机制
6.3.3Win32的异常处理机制
第7章代码的自保护技术
7.1防反汇编技术
7.1.1采用加密常量
7.1.2采用复杂指令
7.1.3在操作码中混合数据
7.1.4使用压缩(加密)代码
7.1.5显式链接外部函数
7.1.6使用隐式的字符串
7.2反调试技术
7.2.1使用IsDebuggerPresent() API
7.2.2挂接x86系统调试中断
7.2.3利用代码的校验和检测断点
7.2.4在执行过程中检查栈状态
7.2.5通过异常处理器执行代码
7.3反启发式检测技术
7.3.1利用加壳技术
7.3.2追加多个病毒节
7.3.3伪造文件头部
7.3.4感染首节的空隙
7.3.5扩大首节的空洞
7.3.6压缩首节
7.3.7使用随机入口点
7.3.8隐藏代码节的属性
7.3.9重新计算校验和
7.3.10避免使用CALLtoPOP技巧
7.3.11使用非常规指令
7.3.12随机执行病毒代码
7.4抗替罪羊与反转录病毒
7.4.1抗替罪羊技术
7.4.2反转录病毒技术
7.4.3反转录病毒的典型行为
7.4.4反转录病毒的防范措施
第8章病毒实验设计
8.1实验总目的和要求
8.2引导型病毒的编写
8.3空洞病毒的编写
8.4追加病毒的编写
8.5脚本病毒的编写
8.6手工杀毒技巧
8.7恶意代码的分析
参考文献
序言
前言
目前市场上出版过不少计算机病毒方面的教材,但只有少数涉及具体的编程细节,而且大部分与计算机病毒编程的相关内容都停留在DOS时代,因此这些书不能从实践角度讨论目前流行病毒的技术细节。
如今,系统管理员甚至家庭用户常常需要应对网络中的计算机病毒和其他恶意程序。不幸的是,信息安全课程很少讨论利用病毒进行攻击的实现细节,公众也很少知道如何分析和保护其网络免受攻击。
作者在书中介绍了目前流行的计算机病毒所采用的感染技术,重点介绍了相关技术的实现方法。研究病毒的最终目的是为了消灭病毒,“知己知彼,百战不殆”,要想战胜对手,首先就要了解对手,正是由于大多数计算机用户对病毒的原理不了解才造成病毒的横行,对于精通病毒原理的人来说,病毒是毫无攻击力的。研究反病毒技术,必然要熟悉病毒技术,了解病毒原理只是为了认识病毒,消除对病毒的恐惧心理,最终达到能够防毒、清除病毒的目的。
但是探讨计算机病毒技术是一个很敏感的话题。本书中讨论的技术和部分代码仅出于介绍病毒工作原理的目的,读者在使用这些内容时,请遵守国家的相关法律法规。
关于本书的内容
全书共分为8章,其中:
第1章为计算机病毒基础,主要介绍与计算机病毒相关的理论研究结果,这些研究结果对于制定有效的防病毒策略具有重要的指导意义。
第2章为Win32系统关键技术,主要介绍Windows系统的内部机制和工作方式,掌握系统的内部机制是设计和实现计算机病毒的基础,这部分也是学习Win32病毒的难点。
第3章为计算机病毒的感染机制,病毒代码的编写是本书的重点内容,主要介绍了目前主流的计算机病毒的编写方法和技巧,其中引导型病毒虽然比较古老,但是因为其感染方法与操作系统无关,所以目前仍威胁着系统的安全; 而Windows系统的普及,也使得PE病毒能够占据计算机病毒的半壁江山,因此PE病毒的介绍也是本书的核心内容,脚本病毒主要感染互联网网页和Office文档,不论是计算机从业人员还是家庭用户都不能忽视脚本病毒。
第4章为计算机病毒防御技术,主要从检测技术和杀毒技术两方面介绍主流的反病毒技术,包括扫描器、启发式检测、完整性检测器等检测技术,以及文件、内存杀毒的实现方法。
第5章为恶意代码技术的发展,主要介绍木马技术和蠕虫技术,以及缓冲区溢出攻击技术。
第6章为恶意代码的分析技术,主要介绍静态分析技术和动态分析技术的工作原理,包括反汇编技术和Win32 系统的调试机制。
第7章为代码的自保护技术,主要介绍计算机病毒与主流的反病毒技术对抗过程中所出现的自保护技术,包括反汇编、反调试和反替罪羊技术。
第8章为病毒实验,根据作者在信息安全领域多年的研究和教学经验,设计了一些与病毒攻防相关的实验,供读者选做。
对读者的假设
本书是针对一些具有编程经验的安全专业人员而编写的。由于要与系统的底层打交道,不可避免地要使用汇编语言,因此读者要有一定的汇编基础。本书假设读者具备以下基础知识。
操作系统的知识,如进程、线程的概念,存储器的管理机制。
计算机组成原理的知识,如计算机系统典型部件的工作原理。
C/C++语言的基础知识,书中使用更容易理解的高级语言来描述病毒的实现过程。
汇编语言的基础知识,汇编语言与其他高级语言相比更能胜任病毒编写所需的执行效率及代码控制能力。
脚本语言的基础知识,如VBScript。
Intel 80x86处理器的基础知识,如寻址方式和指令的使用等。
书中的约定
除非特别声明,本书使用“Windows 9x”代表Windows 95,Windows 98和Windows Millennium(Windows ME)操作系统; “Windows NTs”代表Windows NT 4,Windows 2000,Windows XP,Windows Server 2003,Windows Vista,Windows 7,Windows 8.x以及Windows 10系统。
另外,鉴于汇编语言中指令助记符复杂多样的特点,本书中使用大写的指令助记符表示某一类指令(如JMP指所有的跳转指令),小写的指令助记符表示该类指令中的某种具体指令(如jmp表示JMP指令中的无条件跳转指令)。
编者
2017年3月
文摘
第3章计算机病毒的感染机制
随着计算机网络的发展,计算机病毒对信息安全的威胁日益严重,对于计算机管理人员,一方面要掌握对当前计算机病毒的防范措施,另一方面要加强对未来病毒发展趋势的研究,做好技术上的储备,严阵以待,保障受保护网络的信息安全。本章重点分析了典型的引导型病毒和文件型病毒的实现细节,另外介绍了计算机病毒常用的代码进化技术。不管何种病毒在感染时都要首先考虑其隐蔽性及传染性,然后才是其攻击负载的功能,这也是病毒区别于其他程序的重要特征,而病毒所提供的隐蔽性和传染性的能力,也是判断一个病毒是否可以成为一种成功的攻击手段的主要依据。
3.1引导型病毒
1986年,IBM个人计算机(PC)上出现的第一个病毒Brain,就属于典型的引导型病毒。引导型病毒指针对主引导扇区(MBR)和磁盘引导区(DBR)进行感染的计算机病毒。此类病毒利用系统引导时不对主引导区的内容正确与否进行判别的缺点,在系统引导的过程中侵入系统。
引导型病毒成功的主要原因在于利用了PC的引导过程。大多数计算机的只读存储器(ROM)中不包含操作系统映像,需要从其他位置(如磁盘)装载系统。由于历史原因,PC的引导过程基本固定,系统加电自检后,总是由BIOS在固定的位置寻找、加载、并执行操作系统的引导代码。另外,在早期系统中,因为不能定义系统引导的顺序,计算机系统总是从软盘引导系统,也为引导病毒在OS之前装载提供了条件。
引导型病毒的实现思路非常简单,病毒代码通过修改或者直接替换引导扇区代码的方式完成对目标系统感染,按照系统的引导过程,机器下次引导时会自动执行处于引导扇区中的病毒代码。由此可见,病毒的加载运行是由系统引导过程中的BIOS自动完成,无须用户干预,只要病毒处于引导扇区中,就总是能够在机器下次启动的时候获取系统控制权。
Cohen的病毒模型中曾经假定图灵机一开始运行,读写头处的符号序列就是病毒,前面曾经讨论过,这一假定其实是Cohen模型的缺陷,但这一情况恰好与引导型病毒的情况相似。在Cohen模型中如果将读写头的初始位置修改到其他位置,那么读写头下的符号序列就未必是计算机病毒。由此可以联想到针对引导性病毒的防范措施,对于一个已启动且未感染引导型病毒的系统来说,只要它不重新引导就自然具有抗引导型病毒的能力。因为既然系统不会重新引导,那么其他外来磁盘上的引导型病毒就没有在本系统上运行的机会(引导区代码仅在系统引导时执行且只执行一次),也就无法将病毒传染到本系统的磁盘引导区,即使攻击者使用非常规的手段(如直接将病毒写入本系统)将病毒植入本系统,但因为系统将来不会重新引导,植入的引导型病毒永远没有机会执行,所以这种系统具有抗引导型病毒的能力,只不过这并非一个实用的系统,因为实际中无法保证这个系统永远不重启。
引导型病毒的特点: 隐蔽性强,兼容性强,但传播速度较慢。引导扇区代码本身就具有良好的兼容性,如MBR代码的执行与操作系统无关。引导型病毒主要借助磁盘的引导扇区进行传播,虽然现阶段可移动磁盘用的非常广泛,但用户使用这类磁盘进行引导的机会少之又少,这与早期主要通过软盘在主机间共享数据的情况有明显的差别,导致引导型病毒难以在机器之间进行传播。
引导型病毒的盛行主要在DOS时期,如大麻病毒、小球病毒等,在目前主流的WindowsNT系统上很少出现引导型病毒。但是只要系统还在按照既定的模式进行引导,引导型病毒威胁就会持续存在。
引导型病毒的杀除方法也很简单,使用正常的引导区数据覆盖被感染的引导区就可以使引导区恢复正常。
3.1.1系统引导过程
计算机的启动过程如图31所示,大致分为三个阶段。
(1) 从按下电源按钮到CPU Reset: 这一阶段通过硬件逻辑电路来完成CPU Reset。
(2) BIOS引导阶段(从CPU Reset到操作系统引导): 这一阶段完全在BIOS的控制之下,由BIOS完成计算机硬件POST自检(Power On Self Test)与初始化,BIOS还提供BIOS设置和Runtime服务(BIOS中断服务),最后BIOS从可引导介质上引导操作系统。
(3) 操作系统引导阶段: 由主引导记录和可引导分区的操作系统引导记录完成。
图31PC系统的引导过程
本节(以硬盘启动为例)介绍第三阶段的引导过程。
(1) 开机。
(2) BIOS加电自检,内存地址为0FFF:0000。
(3) 将硬盘MBR(0头0道1扇区)读入内存地址0000:7C00处。
(4) 检查0000:7DFE处的字是否等于0x55AA。若不等于则转去尝试其他介质; 如果没有其他可启动介质,则显示No ROM BASIC,然后宕机。
(5) 跳转到0000:7C00处执行MBR中的程序。
(6) MBR先将自己复制到0000:0600处,然后继续执行。
(7) 在主分区表中搜索标志为活动的分区。如果发现没有活动分区或者不止一个活动分区,则停止。
(8) 将活动分区的第一个扇区(DBR)读入内存地址0000:7C00处。
(9) 检查0000:7DFE是否等于0x55AA,若不等于则显示Missing Operating System,然后停止,或尝试软盘启动。
(10) 跳转到0000:7C00处继续执行特定系统的启动程序。
本书是一部详细介绍各类计算机病毒工作、传播、感染机制的书,教材中以伪代码的形式给出了相关关键技术的详细实现方法,是目前可以找到的关于计算机病毒相关技术介绍最为详细的一本书。同时为了适应教学,本书还专门设计了系列实验。
目录
目录
第1章计算机病毒基础
1.1计算机病毒的起源
1.1.1代码的自复制理论基础
1.1.2磁芯大战
1.1.3典型的计算机病毒
1.2计算机病毒的定义
1.2.1计算机病毒的结构
1.2.2计算机病毒的分类
1.3计算机病毒的基本原理
1.3.1计算机病毒的形式化模型
1.3.2计算机病毒的传播模型
1.3.3系统安全模型
1.3.4计算机病毒的防御
1.3.5计算机病毒的特征
1.4计算机病毒的命名
1.4.1命名规则
1.4.2计算机病毒的环境依赖性
第2章Win32系统关键技术
2.1Windows体系结构
2.1.1Win32的含义
2.1.2x86 CPU的工作模式
2.1.3内核态和用户态
2.1.4地址空间
2.2内存管理机制
2.2.1地址绑定
2.2.2Windows的分页机制
2.2.3i386的地址转换
2.2.4内存保护
2.2.5虚拟内存
2.2.6内存映射文件
2.3中断和异常
2.3.1中断
2.3.2Win32系统服务调用
2.3.3异常
2.4存储和文件系统
2.4.1硬盘物理结构
2.4.2硬盘分区结构
2.4.3FAT文件系统
2.4.4NTFS文件系统
2.5典型的可执行文件格式
2.5.1Windows可执行文件
2.5.2.com文件
2.5.3可移植文件格式
2.5.4加载器
第3章计算机病毒的感染机制
3.1引导型病毒
3.1.1系统引导过程
3.1.2引导型病毒的感染原理
3.1.3主引导扇区代码分析
3.1.4引导型病毒的实现
3.2文件型病毒
3.2.1文件型病毒的感染机制
3.2.2可移植文件的操作方法
3.2.3空洞病毒的实现
3.2.4追加新节的实现
3.2.5病毒编写技术
3.3脚本病毒
3.3.1VBS病毒的原理
3.3.2VBS病毒的自保技巧
3.3.3VBS病毒生产机
3.4代码进化技术
3.4.1加密病毒
3.4.2寡态病毒
3.4.3多态病毒
3.4.4变形病毒
3.4.5病毒生产机
第4章计算机病毒防御技术
4.1扫描器技术
4.1.1特征码扫描
4.1.2快速扫描
4.1.3骨架检测
4.1.4精确识别技术
4.1.5算法扫描
4.2启发式检测
4.2.1静态启发式检测
4.2.2动态启发检测技术
4.2.3神经网络启发式检测
4.3行为检测器
4.4完整性检测器
4.5杀毒技术
4.5.1内存杀毒
4.5.2文件杀毒
4.5.3通用杀毒
第5章恶意代码技术的发展
5.1恶意代码及其分类
5.1.1恶意代码攻击机制
5.1.2常见的恶意代码
5.2特洛伊木马技术
5.2.1木马的攻击机制
5.2.2木马的传播技术
5.2.3木马的隐藏技术
5.2.4木马的通信技术
5.3蠕虫技术
5.4缓冲区溢出攻击
5.4.1缓冲区溢出攻击的原理
5.4.2缓冲区溢出攻击的实现
5.4.3ShellCode的编写技巧
第6章恶意代码的分析技术
6.1代码分析环境
6.2静态分析技术
6.2.1x86的指令编码格式
6.2.2x86反汇编
6.3动态跟踪技术
6.3.1Win32调试API
6.3.2Win32调试机制
6.3.3Win32的异常处理机制
第7章代码的自保护技术
7.1防反汇编技术
7.1.1采用加密常量
7.1.2采用复杂指令
7.1.3在操作码中混合数据
7.1.4使用压缩(加密)代码
7.1.5显式链接外部函数
7.1.6使用隐式的字符串
7.2反调试技术
7.2.1使用IsDebuggerPresent() API
7.2.2挂接x86系统调试中断
7.2.3利用代码的校验和检测断点
7.2.4在执行过程中检查栈状态
7.2.5通过异常处理器执行代码
7.3反启发式检测技术
7.3.1利用加壳技术
7.3.2追加多个病毒节
7.3.3伪造文件头部
7.3.4感染首节的空隙
7.3.5扩大首节的空洞
7.3.6压缩首节
7.3.7使用随机入口点
7.3.8隐藏代码节的属性
7.3.9重新计算校验和
7.3.10避免使用CALLtoPOP技巧
7.3.11使用非常规指令
7.3.12随机执行病毒代码
7.4抗替罪羊与反转录病毒
7.4.1抗替罪羊技术
7.4.2反转录病毒技术
7.4.3反转录病毒的典型行为
7.4.4反转录病毒的防范措施
第8章病毒实验设计
8.1实验总目的和要求
8.2引导型病毒的编写
8.3空洞病毒的编写
8.4追加病毒的编写
8.5脚本病毒的编写
8.6手工杀毒技巧
8.7恶意代码的分析
参考文献
序言
前言
目前市场上出版过不少计算机病毒方面的教材,但只有少数涉及具体的编程细节,而且大部分与计算机病毒编程的相关内容都停留在DOS时代,因此这些书不能从实践角度讨论目前流行病毒的技术细节。
如今,系统管理员甚至家庭用户常常需要应对网络中的计算机病毒和其他恶意程序。不幸的是,信息安全课程很少讨论利用病毒进行攻击的实现细节,公众也很少知道如何分析和保护其网络免受攻击。
作者在书中介绍了目前流行的计算机病毒所采用的感染技术,重点介绍了相关技术的实现方法。研究病毒的最终目的是为了消灭病毒,“知己知彼,百战不殆”,要想战胜对手,首先就要了解对手,正是由于大多数计算机用户对病毒的原理不了解才造成病毒的横行,对于精通病毒原理的人来说,病毒是毫无攻击力的。研究反病毒技术,必然要熟悉病毒技术,了解病毒原理只是为了认识病毒,消除对病毒的恐惧心理,最终达到能够防毒、清除病毒的目的。
但是探讨计算机病毒技术是一个很敏感的话题。本书中讨论的技术和部分代码仅出于介绍病毒工作原理的目的,读者在使用这些内容时,请遵守国家的相关法律法规。
关于本书的内容
全书共分为8章,其中:
第1章为计算机病毒基础,主要介绍与计算机病毒相关的理论研究结果,这些研究结果对于制定有效的防病毒策略具有重要的指导意义。
第2章为Win32系统关键技术,主要介绍Windows系统的内部机制和工作方式,掌握系统的内部机制是设计和实现计算机病毒的基础,这部分也是学习Win32病毒的难点。
第3章为计算机病毒的感染机制,病毒代码的编写是本书的重点内容,主要介绍了目前主流的计算机病毒的编写方法和技巧,其中引导型病毒虽然比较古老,但是因为其感染方法与操作系统无关,所以目前仍威胁着系统的安全; 而Windows系统的普及,也使得PE病毒能够占据计算机病毒的半壁江山,因此PE病毒的介绍也是本书的核心内容,脚本病毒主要感染互联网网页和Office文档,不论是计算机从业人员还是家庭用户都不能忽视脚本病毒。
第4章为计算机病毒防御技术,主要从检测技术和杀毒技术两方面介绍主流的反病毒技术,包括扫描器、启发式检测、完整性检测器等检测技术,以及文件、内存杀毒的实现方法。
第5章为恶意代码技术的发展,主要介绍木马技术和蠕虫技术,以及缓冲区溢出攻击技术。
第6章为恶意代码的分析技术,主要介绍静态分析技术和动态分析技术的工作原理,包括反汇编技术和Win32 系统的调试机制。
第7章为代码的自保护技术,主要介绍计算机病毒与主流的反病毒技术对抗过程中所出现的自保护技术,包括反汇编、反调试和反替罪羊技术。
第8章为病毒实验,根据作者在信息安全领域多年的研究和教学经验,设计了一些与病毒攻防相关的实验,供读者选做。
对读者的假设
本书是针对一些具有编程经验的安全专业人员而编写的。由于要与系统的底层打交道,不可避免地要使用汇编语言,因此读者要有一定的汇编基础。本书假设读者具备以下基础知识。
操作系统的知识,如进程、线程的概念,存储器的管理机制。
计算机组成原理的知识,如计算机系统典型部件的工作原理。
C/C++语言的基础知识,书中使用更容易理解的高级语言来描述病毒的实现过程。
汇编语言的基础知识,汇编语言与其他高级语言相比更能胜任病毒编写所需的执行效率及代码控制能力。
脚本语言的基础知识,如VBScript。
Intel 80x86处理器的基础知识,如寻址方式和指令的使用等。
书中的约定
除非特别声明,本书使用“Windows 9x”代表Windows 95,Windows 98和Windows Millennium(Windows ME)操作系统; “Windows NTs”代表Windows NT 4,Windows 2000,Windows XP,Windows Server 2003,Windows Vista,Windows 7,Windows 8.x以及Windows 10系统。
另外,鉴于汇编语言中指令助记符复杂多样的特点,本书中使用大写的指令助记符表示某一类指令(如JMP指所有的跳转指令),小写的指令助记符表示该类指令中的某种具体指令(如jmp表示JMP指令中的无条件跳转指令)。
编者
2017年3月
文摘
第3章计算机病毒的感染机制
随着计算机网络的发展,计算机病毒对信息安全的威胁日益严重,对于计算机管理人员,一方面要掌握对当前计算机病毒的防范措施,另一方面要加强对未来病毒发展趋势的研究,做好技术上的储备,严阵以待,保障受保护网络的信息安全。本章重点分析了典型的引导型病毒和文件型病毒的实现细节,另外介绍了计算机病毒常用的代码进化技术。不管何种病毒在感染时都要首先考虑其隐蔽性及传染性,然后才是其攻击负载的功能,这也是病毒区别于其他程序的重要特征,而病毒所提供的隐蔽性和传染性的能力,也是判断一个病毒是否可以成为一种成功的攻击手段的主要依据。
3.1引导型病毒
1986年,IBM个人计算机(PC)上出现的第一个病毒Brain,就属于典型的引导型病毒。引导型病毒指针对主引导扇区(MBR)和磁盘引导区(DBR)进行感染的计算机病毒。此类病毒利用系统引导时不对主引导区的内容正确与否进行判别的缺点,在系统引导的过程中侵入系统。
引导型病毒成功的主要原因在于利用了PC的引导过程。大多数计算机的只读存储器(ROM)中不包含操作系统映像,需要从其他位置(如磁盘)装载系统。由于历史原因,PC的引导过程基本固定,系统加电自检后,总是由BIOS在固定的位置寻找、加载、并执行操作系统的引导代码。另外,在早期系统中,因为不能定义系统引导的顺序,计算机系统总是从软盘引导系统,也为引导病毒在OS之前装载提供了条件。
引导型病毒的实现思路非常简单,病毒代码通过修改或者直接替换引导扇区代码的方式完成对目标系统感染,按照系统的引导过程,机器下次引导时会自动执行处于引导扇区中的病毒代码。由此可见,病毒的加载运行是由系统引导过程中的BIOS自动完成,无须用户干预,只要病毒处于引导扇区中,就总是能够在机器下次启动的时候获取系统控制权。
Cohen的病毒模型中曾经假定图灵机一开始运行,读写头处的符号序列就是病毒,前面曾经讨论过,这一假定其实是Cohen模型的缺陷,但这一情况恰好与引导型病毒的情况相似。在Cohen模型中如果将读写头的初始位置修改到其他位置,那么读写头下的符号序列就未必是计算机病毒。由此可以联想到针对引导性病毒的防范措施,对于一个已启动且未感染引导型病毒的系统来说,只要它不重新引导就自然具有抗引导型病毒的能力。因为既然系统不会重新引导,那么其他外来磁盘上的引导型病毒就没有在本系统上运行的机会(引导区代码仅在系统引导时执行且只执行一次),也就无法将病毒传染到本系统的磁盘引导区,即使攻击者使用非常规的手段(如直接将病毒写入本系统)将病毒植入本系统,但因为系统将来不会重新引导,植入的引导型病毒永远没有机会执行,所以这种系统具有抗引导型病毒的能力,只不过这并非一个实用的系统,因为实际中无法保证这个系统永远不重启。
引导型病毒的特点: 隐蔽性强,兼容性强,但传播速度较慢。引导扇区代码本身就具有良好的兼容性,如MBR代码的执行与操作系统无关。引导型病毒主要借助磁盘的引导扇区进行传播,虽然现阶段可移动磁盘用的非常广泛,但用户使用这类磁盘进行引导的机会少之又少,这与早期主要通过软盘在主机间共享数据的情况有明显的差别,导致引导型病毒难以在机器之间进行传播。
引导型病毒的盛行主要在DOS时期,如大麻病毒、小球病毒等,在目前主流的WindowsNT系统上很少出现引导型病毒。但是只要系统还在按照既定的模式进行引导,引导型病毒威胁就会持续存在。
引导型病毒的杀除方法也很简单,使用正常的引导区数据覆盖被感染的引导区就可以使引导区恢复正常。
3.1.1系统引导过程
计算机的启动过程如图31所示,大致分为三个阶段。
(1) 从按下电源按钮到CPU Reset: 这一阶段通过硬件逻辑电路来完成CPU Reset。
(2) BIOS引导阶段(从CPU Reset到操作系统引导): 这一阶段完全在BIOS的控制之下,由BIOS完成计算机硬件POST自检(Power On Self Test)与初始化,BIOS还提供BIOS设置和Runtime服务(BIOS中断服务),最后BIOS从可引导介质上引导操作系统。
(3) 操作系统引导阶段: 由主引导记录和可引导分区的操作系统引导记录完成。
图31PC系统的引导过程
本节(以硬盘启动为例)介绍第三阶段的引导过程。
(1) 开机。
(2) BIOS加电自检,内存地址为0FFF:0000。
(3) 将硬盘MBR(0头0道1扇区)读入内存地址0000:7C00处。
(4) 检查0000:7DFE处的字是否等于0x55AA。若不等于则转去尝试其他介质; 如果没有其他可启动介质,则显示No ROM BASIC,然后宕机。
(5) 跳转到0000:7C00处执行MBR中的程序。
(6) MBR先将自己复制到0000:0600处,然后继续执行。
(7) 在主分区表中搜索标志为活动的分区。如果发现没有活动分区或者不止一个活动分区,则停止。
(8) 将活动分区的第一个扇区(DBR)读入内存地址0000:7C00处。
(9) 检查0000:7DFE是否等于0x55AA,若不等于则显示Missing Operating System,然后停止,或尝试软盘启动。
(10) 跳转到0000:7C00处继续执行特定系统的启动程序。
ISBN | 9787302464617 |
---|---|
出版社 | 清华大学出版社 |
作者 | 于振伟、刘军、周海刚 |
尺寸 | 16 |