当前位置:首页 > 工业技术
计算机病毒防范艺术
计算机病毒防范艺术

计算机病毒防范艺术PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:(美)Peter Szor著;段海新,杨波,王德强译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2007
  • ISBN:7111205561
  • 页数:444 页
图书介绍:本书是由Symantec首席反病毒研究员执笔的讲述现代病毒威胁、防御技术和分析工具的权威指南。与多数讲述计算机病毒的书籍不同,本书完全是一本为白帽子黑客(即负责保护自己所在组织免受恶意代码攻击的IT及安全专业人士)编写的参考书。作者系统地讲述了防毒技术的方方面面,包括病毒行为、病毒分类、保护策略、防毒技术及蠕虫拦截技术等等。
《计算机病毒防范艺术》目录

译者序 1

作者介绍 1

前言 1

致谢 1

第一部分 攻击者的策略 1

第1章 引言:自然的游戏 1

1.1 自我复制结构的早期模型 1

1.1.1 约翰·冯·诺伊曼:自我复制自动机理论 2

1.1.2 Fredkin:重建结构 3

1.1.3 Conway:生命游戏 4

1.1.4 磁芯大战:程序对战 6

1.2 计算机病毒的起源 10

1.3 自动复制代码:计算机病毒的原理和定义 11

参考文献 13

第2章 恶意代码分析的魅力 14

2.1 计算机病毒研究的通用模式 16

2.2 反病毒防护技术的发展 16

2.3 恶意程序的相关术语 17

2.3.1 病毒 17

2.3.2 蠕虫 17

2.3.3 逻辑炸弹 18

2.3.4 特洛伊木马 19

2.3.5 细菌 20

2.3.6 漏洞利用 20

2.3.7 下载器 20

2.3.8 拨号器 20

2.3.9 投放器 20

2.3.10 注入程序 21

2.3.11 auto-rooter 21

2.3.12 工具包(病毒生成器) 21

2.3.13 垃圾邮件发送程序 21

2.3.14 洪泛攻击 22

2.3.15 击键记录器 22

2.3.16 rootkit 22

2.4 其他类别 23

2.4.1 玩笑程序 23

2.4.2 恶作剧:连锁电子邮件 23

2.4.3 其他有害程序:广告软件和间谍软件 24

2.5 计算机恶意软件的命名规则 24

2.5.1 <family_name> 25

2.5.2 <malware_type>:// 25

2.5.3 <platform>/ 25

2.5.4 <group_name> 26

2.5.5 <infective_length> 26

2.5.6 <variant> 26

2.5.7 [<devolution>] 26

2.5.8 <modifiers> 26

2.5.9 :<locale_specifier> 26

2.5.10 #<packer> 26

2.5.11 @m或@mm 26

2.5.12 !<vendor-specific_comment> 26

2.6 公认的平台名称清单 27

参考文献 29

第3章 恶意代码环境 31

3.1 计算机体系结构依赖性 32

3.2 CPU依赖性 33

3.3 操作系统依赖性 34

3.4 操作系统版本依赖性 34

3.5 文件系统依赖性 35

3.5.1 簇病毒 35

3.5.2 NTFS流病毒 36

3.5.3 NTFS压缩病毒 37

3.5.4 ISO镜像文件感染 37

3.6 文件格式依赖性 37

3.6.1 DOS上的COM病毒 37

3.6.2 DOS上的EXE病毒 37

3.6.3 16位Windows和OS/2上的NE病毒 38

3.6.4 OS/2上的LX病毒 38

3.6.5 32位Windows上的PE病毒 38

3.6.6 UNIX上的ELF病毒 41

3.6.7 设备驱动程序病毒 41

3.6.8 目标代码和库文件病毒 42

3.7 解释环境依赖性 42

3.7.1 微软产品中的宏病毒 42

3.7.2 IBM系统中的REXX病毒 50

3.7.3 DEC/VMS上的DCL病毒 51

3.7.4 UNIX上的shell脚本(csh、ksh和bash) 51

3.7.5 Windows系统中的VBScript病毒 52

3.7.6 批处理病毒 52

3.7.7 mIRC、PIRCH脚本中的即时消息病毒 53

3.7.8 SuperLogo病毒 53

3.7.9 JScript病毒 55

3.7.10 Perl病毒 55

3.7.11 用嵌入HTML邮件的JellyScript编写的WebTV蠕虫 55

3.7.12 Python病毒 56

3.7.13 VIM病毒 56

3.7.14 EMACS病毒 56

3.7.15 TCL病毒 56

3.7.16 PHP病毒 56

3.7.17 MapInfo病毒 57

3.7.18 SAP上的ABAP病毒 57

3.7.19 Windows帮助文件病毒——当你按下F1 57

3.7.20 Adobe PDF中的JScript威胁 58

3.7.21 AppleScript的依赖性 58

3.7.22 ANSI的依存关系 58

3.7.23 Macromedia Flash动作脚本(Action-Script)威胁 59

3.7.24 HyperTalk脚本威胁 59

3.7.25 AutoLisp脚本病毒 60

3.7.26 注册表依赖性 60

3.7.27 PIF和LNK的依赖性 61

3.7.28 Lotus Word专业版中的宏病毒 61

3.7.29 AmiPro的文档病毒 61

3.7.30 Corel脚本病毒 61

3.7.31 Lotus 1-2-3宏的依赖性 62

3.7.32 Windows安装脚本的依赖性 62

3.7.33 AUTORUN.INF和Windows INI File依存性 62

3.7.34 HTML依赖性 63

3.8 系统漏洞依赖性 63

3.9 日期和时间依赖性 63

3.10 JIT依赖性:Microsoft.NET病毒 64

3.11 档案文件格式依赖性 65

3.12 基于扩展名的文件格式依赖性 65

3.13 网络协议依赖性 66

3.14 源代码依赖关系 66

3.15 在Mac和Palm平台上的资源依赖性 68

3.16 宿主大小依赖性 68

3.17 调试器依赖性 69

3.18 编译器和连接器依赖性 70

3.19 设备翻译层依赖性 71

3.20 嵌入式对象插入依赖性 73

3.21 自包含环境的依赖性 73

3.22 复合病毒 74

3.23 结论 75

参考文献 76

第4章 感染策略的分类 79

4.1 引导区病毒 79

4.1.1 主引导记录感染技术 80

4.1.2 DOS引导记录感染技术 82

4.1.3 随Windows 95发作的引导区病毒 83

4.1.4 在网络环境下对引导映像的可能攻击 84

4.2 文件感染技术 84

4.2.1 重写病毒 84

4.2.2 随机重写病毒 85

4.2.3 追加病毒 85

4.2.4 前置病毒 86

4.2.5 典型的寄生病毒 87

4.2.6 蛀穴病毒 88

4.2.7 分割型蛀穴病毒 88

4.2.8 压缩型病毒 89

4.2.9 变形虫感染技术 90

4.2.10 嵌入式解密程序技术 90

4.2.11 嵌入式解密程序和病毒体技术 91

4.2.12 迷惑性欺骗跳转技术 92

4.2.13 入口点隐蔽病毒 92

4.2.14 未来可能的感染技术:代码建造器 99

4.3 深入分析Win32病毒 99

4.3.1 Win32 API及其支持平台 100

4.3.2 32位Windows感染技术 102

4.3.3 Win32和Win64病毒:是针对Microsoft Windows设计的吗 116

4.4 结论 118

参考文献 118

第5章 内存驻留技术 120

5.1 直接感染型病毒 120

5.2 内存驻留病毒 120

5.2.1 中断处理和钩挂 121

5.2.2 钩挂INT 13h中断例程(引导区病毒) 123

5.2.3 钩挂INT 21h中断例程(文件型病毒) 124

5.2.4 DOS环境常用的内存加载技术 127

5.2.5 隐藏型病毒 129

5.2.6 磁盘高速缓存和系统缓存感染 135

5.3 临时内存驻留病毒 136

5.4 交换型病毒 137

5.5 进程病毒(用户模式) 137

5.6 内核模式中的病毒(Windows 9x/Me) 137

5.7 内核模式中的病毒(Windows NT/2000/XP) 138

5.8 通过网络传播的内存注入病毒 139

参考文献 140

第6章 基本的自保护策略 141

6.1 隧道病毒 141

6.1.1 通过扫描内存查找原中断处理例程 141

6.1.2 跟踪调试接口 141

6.1.3 基于代码仿真的隧道技术 142

6.1.4 使用I/O端口直接访问磁盘 142

6.1.5 使用未公开的函数 142

6.2 装甲病毒 142

6.2.1 反反汇编 143

6.2.2 数据加密 143

6.2.3 使用代码迷惑对抗分析 144

6.2.4 基于操作码混合的代码迷惑 145

6.2.5 使用校验和 146

6.2.6 基于压缩的隐蔽代码 146

6.2.7 反跟踪 147

6.2.8 抗启发式检测技术 152

6.2.9 抗仿真技术 158

6.2.10 抗替罪羊病毒 161

6.3 攻击性的反制病毒 162

参考文献 163

第7章 高级代码演化技术和病毒生成工具 165

7.1 引言 165

7.2 代码演化 165

7.3 加密病毒 166

7.4 寡形病毒 169

7.5 多态病毒 171

7.5.1 1260病毒 171

7.5.2 Dark Avenger病毒中的突变引擎(MtE) 172

7.5.3 32位多态病毒 174

7.6 变形病毒 177

7.6.1 什么是变形病毒 177

7.6.2 简单的变形病毒 178

7.6.3 更加复杂的变形病毒和置换技术 179

7.6.4 置换其他程序:病毒机的终极版 181

7.6.5 高级变形病毒:Zmist 182

7.6.6 {W32,Linux}/Simile:跨平台的变形引擎 185

7.7 病毒机 190

7.7.1 VCS 190

7.7.2 GenVir 190

7.7.3 VCL 190

7.7.4 PS-MPC 191

7.7.5 NGVCK 191

7.7.6 其他病毒机和变异工具 192

7.7.7 如何测试病毒机 193

参考文献 193

第8章 基于病毒载荷的分类方法 195

8.1 没有载荷 195

8.2 偶然破坏型载荷 196

8.3 非破坏型载荷 196

8.4 低破坏型载荷 197

8.5 强破坏型载荷 198

8.5.1 数据重写型病毒 198

8.5.2 数据欺骗 199

8.5.3 加密数据的病毒:好坏难辨 200

8.5.4 破坏硬件 201

8.6 DoS攻击 201

8.7 窃取数据:用病毒牟利 203

8.7.1 网络钓鱼攻击 203

8.7.2 后门 204

8.8 结论 205

参考文献 205

第9章 计算机蠕虫的策略 207

9.1 引言 207

9.2 计算机蠕虫的通用结构 208

9.2.1 目标定位 208

9.2.2 感染传播 208

9.2.3 远程控制和更新接口 208

9.2.4 生命周期管理 209

9.2.5 蠕虫载荷 209

9.2.6 自跟踪 210

9.3 目标定位 210

9.3.1 收集电子邮件地址 210

9.3.2 网络共享枚举攻击 214

9.3.3 网络扫描和目标指纹分析 215

9.4 感染传播 218

9.4.1 攻击安装了后门的系统 218

9.4.2 点对点网络攻击 219

9.4.3 即时消息攻击 220

9.4.4 电子邮件蠕虫攻击和欺骗技术 220

9.4.5 插入电子邮件附件 220

9.4.6 SMTP代理攻击 221

9.4.7 SMTP攻击 221

9.4.8 使用MX查询进行SMTP传播 223

9.4.9 NNTP攻击 223

9.5 常见的蠕虫代码传送和执行技术 224

9.5.1 基于可执行代码的攻击 224

9.5.2 连接到Web站点或者Web代理 224

9.5.3 基于HTML的邮件 225

9.5.4 基于远程登录的攻击 225

9.5.5 代码注入攻击 225

9.5.6 基于shellcode的攻击 226

9.6 计算机蠕虫的更新策略 228

9.6.1 在Web和新闻组上的认证更新 229

9.6.2 基于后门的更新 232

9.7 用信令进行远程控制 232

9.8 有意无意的交互 234

9.8.1 合作 234

9.8.2 竞争 236

9.8.3 未来:简单蠕虫通信协议 237

9.9 无线移动蠕虫 237

参考文献 239

第10章 漏洞利用、漏洞和缓冲区溢出攻击 241

10.1 引言 241

10.1.1 混合攻击的定义 241

10.1.2 威胁 241

10.2 背景 242

10.3 漏洞的类型 243

10.3.1 缓冲区溢出 243

10.3.2 第一代缓冲区溢出攻击 243

10.3.3 第二代攻击 245

10.3.4 第三代攻击 250

10.4 攻击实例 261

10.4.1 1988年的Morris蠕虫(利用堆栈溢出执行shellcode) 261

10.4.2 1998年的Linux/ADM(“抄袭”Morris蠕虫) 263

10.4.3 2001年爆发的CodeRed(代码注入攻击) 263

10.4.4 2002年的Linux/Slapper蠕虫(堆溢出实例) 266

10.4.5 2003年1月的W32/Slammer蠕虫(Mini蠕虫) 270

10.4.6 2003年8月Blaster蠕虫(Win32上基于shellcode的攻击) 272

10.4.7 计算机病毒中缓冲区溢出的一般用法 274

10.4.8 W32/Badtrans.B@mm描述 274

10.4.9 W32/Nimda.A@mm所用的漏洞攻击方法 274

10.4.10 W32/Bolzano描述 275

10.4.11 VBS/Bubbleboy描述 276

10.4.12 W32/Blebla描述 277

10.5 小结 277

参考文献 278

第二部分 防御者的策略 281

第11章 病毒防御技术 281

11.1 第一代扫描器 282

11.1.1 字符串扫描 282

11.1.2 通配符 284

11.1.3 不匹配字节数 285

11.1.4 通用检测法 285

11.1.5 散列 285

11.1.6 书签 286

11.1.7 首尾扫描 287

11.1.8 入口点和固定点扫描 287

11.1.9 超快磁盘访问 288

11.2 第二代扫描器 288

11.2.1 智能扫描 288

11.2.2 骨架扫描法 289

11.2.3 近似精确识别法 289

11.2.4 精确识别法 290

11.3 算法扫描方法 291

11.3.1 过滤法 292

11.3.2 静态解密程序检测法 293

11.3.3 X光检测法 294

11.4 代码仿真 298

11.4.1 用代码仿真来检测加密和多态病毒 301

11.4.2 动态解密程序检测法 303

11.5 变形病毒检测实例 304

11.5.1 几何检测法 305

11.5.2 反汇编技术 305

11.5.3 采用仿真器进行跟踪 306

11.6 32位Windows病毒的启发式分析 308

11.6.1 代码从最后一节开始执行 309

11.6.2 节头部可疑的属性 309

11.6.3 PE可选头部有效尺寸的值不正确 309

11.6.4 节之间的“间隙” 309

11.6.5 可疑的代码重定向 309

11.6.6 可疑的代码节名称 310

11.6.7 可能的头部感染 310

11.6.8 来自KERNEL32.DLL的基于序号的可疑导入表项 310

11.6.9 导入地址表被修改 310

11.6.10 多个PE头部 310

11.6.11 多个Windows程序头部和可疑的KERNEL32.DLL导入表项 310

11.6.12 可疑的重定位信息 310

11.6.13 内核查询 311

11.6.14 内核的完整性 311

11.6.15 把节装入到VMM的地址空间 311

11.6.16 可选头部的SizeOfCode域取值不正确 311

11.6.17 含有多个可疑标志的例子 311

11.7 基于神经网络的启发式分析 312

11.8 常规及通用清除法 314

11.8.1 标准清除法 314

11.8.2 通用解密程序 315

11.8.3 通用清除程序如何工作 316

11.8.4 清除程序如何确定一个文件是否染毒 316

11.8.5 宿主文件原来的结尾在哪里 316

11.8.6 能用这种方法清除的病毒有多少类 316

11.8.7 通用修复法中的启发性标记实例 317

11.8.8 通用清除过程实例 318

11.9 接种 319

11.10 访问控制系统 319

11.11 完整性检查 320

11.11.1 虚警 321

11.11.2 干净的初始状态 321

11.11.3 速度 322

11.11.4 特殊对象 322

11.11.5 必须有对象发生改变 322

11.11.6 可能的解决方案 322

11.12 行为阻断 323

11.13 沙箱法 324

11.14 结论 325

参考文献 325

第12章 内存扫描与杀毒 328

12.1 引言 329

12.2 Windows NT虚拟内存系统 330

12.3 虚拟地址空间 331

12.4 用户模式的内存扫描 334

12.4.1 NtQuerySystemlnformation()的秘密 334

12.4.2 公共进程及特殊的系统权限 335

12.4.3 Win32子系统中的病毒 336

12.4.4 分配私有页面的Win32病毒 337

12.4.5 原生Windows NT服务病毒 338

12.4.6 使用隐藏窗口过程的Win32病毒 339

12.4.7 被执行映像自身包含的Win32病毒 339

12.5 内存扫描和页面调度 341

12.6 内存杀毒 342

12.6.1 终止包含病毒代码的特定进程 342

12.6.2 检测和终止病毒线程 343

12.6.3 修复活跃页面中的病毒代码 345

12.6.4 如何为已装入内存的DLL及运行中的应用程序杀毒 346

12.7 内核模式的内存扫描 346

12.7.1 扫描进程的用户地址空间 346

12.7.2 确定NT服务API的入口点 347

12.7.3 用于内核模式内存扫描的重要NT函数 348

12.7.4 进程上下文 348

12.7.5 扫描地址空间上部的2GB 349

12.7.6 如何使一个过滤驱动程序病毒失去活性 349

12.7.7 对付只读型的内核内存 350

12.7.8 64位平台上内核模式的内存扫描 351

12.8 可能的内存扫描攻击 353

12.9 结论和下一步工作 354

参考文献 354

第13章 蠕虫拦截技术和基于主机的入侵防御 356

13.1 引言 356

13.1.1 脚本拦截和SMTP蠕虫拦截 357

13.1.2 需要拦截的新型攻击:CodeRed,Slammer 359

13.2 缓冲区溢出攻击的对策 359

13.2.1 代码复查 360

13.2.2 编译器级的解决方案 361

13.2.3 操作系统级的解决方案和运行时扩展 366

13.2.4 子系统扩展——Libsafe 367

13.2.5 内核模式扩展 368

13.2.6 程序监管 369

13.3 蠕虫拦截技术 369

13.3.1 注入代码检测 369

13.3.2 发送拦截:自发送型代码的 374

拦截实例 374

13.3.3 异常处理程序验证 375

13.3.4 减轻Return-to-LIBC攻击的其他技术 378

13.3.5 “GOT”和“IAT”页面属性 381

13.3.6 高连接数和大量的连接错误 382

13.4 未来可能出现的蠕虫攻击 382

13.4.1 反制蠕虫数量的可能增长 382

13.4.2 雷达探测不到的“慢”蠕虫 382

13.4.3 多态和变形蠕虫 383

13.4.4 大规模的破坏 384

13.4.5 自动化的漏洞利用代码发现——从环境中学习 384

13.5 结论 384

参考文献 385

第14章 网络级防御策略 387

14.1 引言 387

14.2 使用路由器访问列表 388

14.3 防火墙保护 389

14.4 网络入侵检测系统 391

14.5 蜜罐系统 392

14.6 反击 395

14.7 早期预警系统 395

14.8 蠕虫的网络行为模式 396

14.8.1 捕捉Blaster蠕虫 396

14.8.2 捕捉Linux/Slapper蠕虫 397

14.8.3 捕捉W32/Sasser.D蠕虫 399

14.8.4 捕获W32/Welchia蠕虫的ping请求 401

14.8.5 检测W32/Slammer及相关的漏洞利用代码 401

14.9 结论 403

参考文献 403

第15章 恶意代码分析技术 404

15.1 个人的病毒分析实验室 404

15.2 信息、信息、信息 406

15.2.1 系统结构指南 406

15.2.2 知识库 406

15.3 VMware上的专用病毒分析系统 407

15.4 计算机病毒分析过程 408

15.4.1 准备 408

15.4.2 脱壳 413

15.4.3 反汇编和解密 413

15.4.4 动态分析技术 419

15.5 维护恶意代码库 437

15.6 自动分析:数字免疫系统 437

参考文献 439

第16章 结论 441

进一步阅读资料 441

安全和早期预警方面的信息 441

安全更新 442

计算机蠕虫爆发统计数据 442

计算机病毒研究论文 442

反病毒厂商联系方式 443

反病毒产品测试机构及相关网站 444

返回顶部