新書推薦:
《
UE5虚幻引擎必修课(视频教学版)
》
售價:NT$
505.0
《
真需求
》
售價:NT$
505.0
《
阿勒泰的春天
》
售價:NT$
230.0
《
如见你
》
售價:NT$
234.0
《
人格阴影 全新修订版,更正旧版多处问题。国际分析心理学协会(IAAP)主席力作
》
售價:NT$
305.0
《
560种野菜野果鉴别与食用手册
》
售價:NT$
305.0
《
中国官僚政治研究(一部洞悉中国政治制度演变的经典之作)
》
售價:NT$
286.0
《
锂电储能产品设计及案例详解
》
售價:NT$
505.0
|
編輯推薦: |
本书是一部详细介绍各类计算机病毒工作、传播、感染机制的书,教材中以伪代码的形式给出了相关关键技术的详细实现方法,是目前可以找到的关于计算机病毒相关技术介绍*为详细的一本书。同时为了适应教学,本书还专门设计了系列实验。
|
內容簡介: |
本书共8章,第1章概述与计算机病毒相关的理论研究成果和研究方法; 第2章介绍Windows系统的内部机制和工作方式; 第3章介绍引导型病毒、PE病毒与脚本病毒的攻击原理和基本方法; 第4章从检测技术和杀毒技术两个方面讨论计算机病毒的防御问题; 第5章主要介绍木马、蠕虫技术,以及恶意代码的发展方向; 第6章主要通过静态分析和动态调试介绍恶意代码的分析方法; 第7章介绍加密、变形等代码自保护技术; 第8章设计了一些与病毒攻防相关的小实验。 本书主要面向信息安全专业的教学和研究,以及对病毒防护技术感兴趣的其他专业人员,可以作为信息安全专业本科生和研究生的计算机病毒与防护教材,以及其他相关课程的辅助教材,也可作为从事信息安全领域工作的科研人员或系统管理人员的参考用书。
|
目錄:
|
目录
第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章为病毒实验,根据作者在信息安全领域多年的研究和教学经验,设计了一些与病毒攻防相关的实验,供读者选做。对读者的假设本书是针对一些具有编程经验的安全专业人员而编写的。由于要与系统的底层打交道,不可避免地要使用汇编语言,因此读者要有一定的汇编基础。本书假设读者具备以下基础知识。 操作系统的知识,如进程、线程的概念,存储器的管理机制。 计算机组成原理的知识,如计算机系统典型部件的工作原理。 CC语言的基础知识,书中使用更容易理解的高级语言来描述病毒的实现过程。 汇编语言的基础知识,汇编语言与其他高级语言相比更能胜任病毒编写所需的执行效率及代码控制能力。 脚本语言的基础知识,如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 将硬盘MBR0头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处继续执行特定系统的启动程序。11 启动系统。以上步骤中2,3,4,5步由BIOS的引导程序完成; 6,7,8,9,10步由MBR中的引导程序完成。多系统引导程序如Smart Boot Manager,BootStar,PQBoot等大多将标准主引导记录替换成自己的引导程序,在运行系统启动程序前让用户选择想要启动的分区。而某些系统自带的多系统引导程序如LILO,NTLoader等则是将自己的引导程序放在系统所处分区的第一个扇区DBR中。在Windows NT系统中,Ntldr是一个具有隐藏和只读属性的系统文件,一般存放于C盘根目录下,其主要作用是解析Boot.ini文件。下面以Windows XP为例介绍Ntldr在系统引导过程中的作用。Windows XP在引导过程中将经历预引导、引导和加载内核三个阶段,这与Windows 9x直接读取引导扇区的方式来启动系统是完全不一样的,Ntldr在这三个阶段的引导过程中起到至关重要的作用。1. 预引导阶段在预引导阶段中计算机所做的工作包括运行POST程序,POST将检测系统的总内存以及其他硬件设备的状况,将MBR加载到内存运行,MBR查找活动分区的起始位置。接着活动分区的引导扇区被加载并执行,最后从引导扇区加载并初始化Ntldr文件。2. 引导阶段在引导阶段中,Windows XP将会依次经历初始引导PE Loader阶段、操作系统选择阶段、硬件检测阶段以及配置选择阶段这四个过程。1 在初始引导PE Loader阶段中,Ntldr将把计算机的CPU从实模式转换为32位平面内存模式,在实模式中,系统为MSDOS预留640KB大小的内存空间,其余的内存都被看作是扩展内存,在32位平面模式中系统将所有内存都视为可用内存,然后Ntldr执行小型文件系统驱动程序,这时Ntldr可以识别NTFS或FAT格式的文件系统分区,至此初始引导PE Loader阶段结束。2 当初始引导PE Loader阶段结束后,进入操作系统选择阶段。如果计算机上安装了多个操作系统,由于Ntldr加载了正确的Boot.ini文件,那么在启动时将会出现要求选择操作系统的菜单,Ntldr正是从Boot.ini文件中查找到系统文件的分区位置。如果选择了NT系统,那么Ntldr将会运行Ntdetect.com文件,否则Ntldr将加载Bootsect.dos,然后将控制权交给Bootsect.dos。如果Boot.ini文件中只有一个操作系统或者其中的timeout值为0,那么将不会出现选择操作系统的菜单画面; 如果Boot.ini文件非法或不存在,那么Ntldr将会尝试从默认系统卷启动系统。注意: Ntldr启动后,如果在系统根目录下发现有Hiberfil.sys文件且该文件有效,那么Ntldr将读取Hiberfil.sys文件里的信息并让系统恢复到休眠以前的状态,这时并不处理Boot.ini文件。3 操作系统选择阶段结束后将会进入硬件检测阶段,这时Ntdetect.com文件将会收集计算机的硬件信息列表,然后将列表返回给Ntldr,由Ntldr将这些硬件信息加载到注册表HKLM中的Hardware中。4 硬件检测阶段结束后将会进入配置选择阶段,如果有多个硬件配置列表,那么将会出现配置文件选择菜单,如果只有一个则不会显示。3. 加载内核阶段在加载内核阶段中,Ntldr将加载Ntoskrnl.exe内核程序,然后加载硬件抽象层Hal.dll,接着系统将加载注册表中的HKLM\System键值,这时Ntldr将读取HKLM\System\select键值来决定加载哪一个ControlSet。所加载的ControlSet将包含设备的驱动程序以及需要加载的服务。接下来Ntldr加载注册表HKLM\System\service下的start键值为0的底层设备驱动。当ControlSet的镜像CurrentControlSet被加载时,Ntldr将把控制权传递给Ntoskrnl.exe,至此引导过程将结束。注意: 如果在启动时按F8键,将会在启动菜单中看到多种选择启动模式,这时Ntldr将根据用户的选择来使用启动参数加载NT内核,用户也可以在Boot.ini文件里设置启动参数。3.1.2引导型病毒的感染原理
图32Stone病毒的感染原理
Stone病毒又名大麻病毒1988年出现在新西兰,具有驻留特性,感染硬盘时将MBR保存在0头0道7扇区,感染软盘时将DBR保存在0头0道3扇区。从图32可以看出,Stone病毒感染系统后,只替换了引导扇区的引导程序,保留了分区表信息,杀毒时只要用正常MBR代码覆盖引导扇区即可。1. 感染方法Stone病毒采用的是替换并保存MBR的感染方法。如果病毒覆盖了引导区但没有备份引导程序,那么病毒就需要自己完成系统的引导如Azusa病毒。有的病毒修改硬盘分区表中的分区信息分区的第一个扇区就是分区的DBR,改变分区的起始位置,使DBR落入指定扇区,StarShip病毒使用这种方法,使分区的DBR恰好落入存储自身代码的扇区,实现对DBR的感染。2. 技术特点引导型病毒具有如下特点。 实现方法简单,具有一定的跨平台兼容能力。 防毒方法简单,杀毒容易。 部分病毒无法正常杀毒。严格意义的杀毒指将目标还原到感染前的状态,对于覆盖型的病毒来说,虽然可以将目标修复到正常状态,但可能因为并不知道目标感染前的具体状态,导致无法实施这种还原。3.1.3主引导扇区代码分析当系统从硬盘启动时,ROM BIOS程序把硬盘上0柱面0磁道1扇区的主引导程序加载到内存0000:7C00处,并开始执行。因此,下面代码中第一条指令CLI的绝对地址是0000:7C00。
|
|