首页>参考读物>金融学>金融工程习题

计算机病毒防范艺术
作者 : Peter Szor
译者 : 段海新 杨波 王德强
出版日期 : 2006-12-20
ISBN : 7-111-20556-1
定价 : 49.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 444
开本 : 16开
原书名 : The Art of Computer Virus Research and Defense
原出版社: Pearson
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书由Symantec首席反病毒研究员执笔,是讲述现代病毒威胁、防御技术和分析工具的权威指南。与多数讲述计算机病毒的书籍不同,本书完全是一本为白帽子黑客 (即负责保护自己所在组织免受恶意代码攻击的IT及安全专业人士) 编写的参考书。作者系统地讲述了反病毒技术的方方面面,包括病毒行为、病毒分类、保护策略、反病毒技术及蠕虫拦截技术等。
  书中介绍了目前最先进的恶意代码技术和保护技术,提供充分的技术细节帮助读者对付日益复杂的攻击。书中包含大量关于代码变形和其他新兴技术方面的信息,学习这些知识可以让读者未雨绸缪,为应对未来的威胁提前做好准备。
  本书是目前已出版的同类书中对基本病毒分析技术讲解最透彻和最实用的,从个人实验室的创建到分析过程的自动化,对其中涉及的方方面面都作了描述。本书主要包括以下内容:
  ●探索各种平台上的恶意代码是如何实施攻击的。
  ●对恶意代码感染、内存驻留、自我保护、载荷传送和漏洞利用所采用的策略进行分类。
  ●如何识别和应对代码隐藏技术带来的威胁,包括加密、多态和变形技术。
  ●掌握恶意代码分析的经验方法,以及如何根据发现的情况采取行动。
  ●用反汇编器、调试器、模拟器和虚拟机对恶意代码进行逆向工程。
  ●实现技术性防御,包括扫描、代码模拟、杀毒、接种、完整性检查、沙箱、蜜罐、行为拦截等。
  ●使用蠕虫拦截、基于主机的入侵防御和网络级的防御策略。

图书特色

图书前言

读者对象
  过去20年中出版过不少计算机病毒方面的出版物,但只有少数是由计算机病毒研究专业人士(“圈里人”)所写。尽管很多书都讨论了计算机病毒问题,但它们通常是面向初学者,根本引不起专业人员太多的兴趣。只有少数著作勇敢深入地探讨了技术细节,而只有理解了技术细节,才能有效防御计算机病毒。
  现有书籍的部分问题在于:很少介绍当今计算机病毒的复杂性。例如,这些书籍未从技术上详细讨论快速传播的计算机蠕虫如何利用漏洞来侵入远程系统,也没讨论最近出现的代码演化技术(如代码变形)。如果读者想要弄懂本书涉及的所有知识,可能需要花很多时间来阅读大量的计算机病毒和安全方面的文章和学术论文,可能需要对恶意代码钻研多年,才能具备从浩瀚的信息海洋中提取重要信息的能力。
  本书最主要的读者是那些每天都要对付病毒的IT及安全专业人员。今天,系统管理员甚至家庭用户常常需要对付网络中的电脑蠕虫和其他恶意程序。不幸的是,安全课程很少培训如何防范电脑病毒,公众很少知道如何分析和保卫其网络免受这些攻击。更糟的是,过去没有任何著作细致讨论过计算机病毒分析技术。
  另外,对任何对信息安全感兴趣的人来说,知道病毒编写者现今的“技术成就”也是很重要的。
  多年来,计算机病毒研究人员一直关注的是“文件”或“染毒对象”。安全专家们则相反,只关注网络级的可疑事件。可是现在,像CodeRed蠕虫这样的威胁通过网络把其代码注入到有漏洞进程的内存空间中,而不会“感染”磁盘上的对象。今天,学会从各种视角—文件(存储)、内存和网络—进行观察特别重要,并要学会使用恶意代码分析技术将各方面的事件关联起来。
  这些年来,笔者培训过很多病毒和安全分析人员,使他们能够高效地分析和响应恶意代码威胁。本书包含了我曾遭遇过的各种问题,例如像Commodore 64计算机上的8位病毒这样的老式威胁。书中介绍了最早的电脑病毒使用的技术,如隐藏(stealth)技术,以及在各种平台上应用的病毒技术。这样,读者就会认识到:当今的rootkit根本不代表什么新技术!书中可以找到对32位Windows蠕虫威胁的详细分析和对“漏洞利用代码”(exploit)的深入讨论,还包括涉及64位病毒及移动设备上的“袖珍怪物”。自始至终,笔者的目标是展示旧攻击手段如何在新威胁中获得“新生”,并以适当的程度揭示最新攻击的技术细节。
  笔者确信很多读者都希望加入到对抗恶意代码的斗争中来,而且有些读者可能和笔者一样还会成为新防御技术的发明人。但是,所有读者都应该清楚这个领域的潜在危险和挑战!
  本书涵盖的内容
  本书的目的是展示当前计算机病毒和反病毒软件的最新技术,并向读者讲授计算机病毒分析和防护的方法学。笔者从各种视角—文件(存储)、内存和网络—讨论了病毒的感染技术,对过去20年中黑客们开发的各种恶劣的病毒技巧进行了分类和讲解,而且还介绍了当前对于代码多态性和漏洞利用这些复杂威胁所采取的措施。
  阅读本书最简单的方法是:逐章阅读。但有时理解了后面章节中对应的防御技术后,可以更好地理解前面章节中的攻击技术。任何情况下,如果读者感觉哪一章不符合自己口味或感觉太难或太冗长,都可以跳到下一章。笔者确信所有人都会发现书中的某些部分非常难而某些部分却很简单,具体感受依赖于个人的知识情况而定。
  本书假定读者熟悉相关技术,并具有一定的编程能力。本书涉及的东西很多,根本不可能对每一样都充分地展开讲解。然而,本书会准确地告诉读者如果要成功地对付恶意威胁,还需要去什么地方学习什么额外知识。为方便读者,本书每章都给出了详细的参考文献清单,可以据此找到那些必要的背景知识。
  本书未涵盖的内容
  本书未详细讨论木马程序和后门程序。本书关注的重点是自我复制型的恶意代码。因为讨论普通恶意代码的好书有很多,但讨论电脑病毒的好书却不多。
  笔者未在本书中给出任何可能被读者直接用来开发新病毒的病毒代码,不属于“如何编写病毒”这一类书。然而,笔者认为:坏人对于本书中讨论的大部分技术都已经很熟悉了,因此好人需要学习更多的知识,并开始从攻击者的角度去思考(而不是行动),才能开发出有效的防御方案!
  有意思的是,很多大学都尝试开设电脑病毒研究课程,其中主要讲述如何编写病毒。一个学生能够编写可以感染全世界数百万台系统的病毒是否真的有助于病毒研究?这些学生是否就更懂得如何开发更好的防御方案?显然,答案是不……
  实际上,这些课程应该着重于分析现有的恶意威胁。世界上现有的威胁太多了,都有待于学生们去理解和对其做点什么。
  当然,电脑病毒知识和《Star Wars》(星球大战)中的“原力”(The Force)一样,根据使用者不同,对知识的利用也可能从善变为恶。笔者不能逼迫读者远离“黑暗面”(Dark Side),但真诚地劝诫读者不要用本书中学到的知识作恶。
  联系方式
  如果读者在本书中发现错误或想建议作者在下一版本中阐明或增加某些内容,我很乐意收到大家的来信。我正计划在我的网站上增加对本书某些内容的阐释、可能的勘误和相关的新信息。尽管我认为我们已经找出了大部分问题(特别是那些在深夜里或在病毒及安全紧急事件发生期间写成的段落里的问题),但我不相信像本书这么复杂和这么厚的著作会没有任何小缺陷。尽管如此,我还是根据我的科研知识,竭尽全力向读者提供“可信赖”的信息。
Peter Szor
美国加州Santa Monica市
pszor@acm.org
http://www.peterszor.com


致   谢
  首先,我要感谢我的妻子Natalia在过去15年多来对我工作的鼓励!我也要谢谢她在我写作本书期间所有的周末都毫无怨言地独自忍受了那些我们本来可以共同度过的时光。
  我要感谢所有为本书诞生出过力的人士。这本书由计算机病毒方面的一系列文章和论文发展而来,其中有些是多年来我与其他研究人员合著的。Eric Chien、Peter Ferrie、Bruce McCorkendale和Frederic Perriot对第7章和第10章有杰出的贡献,在此深表谢意。
  如果没有很多朋友、卓越的防毒研究专家和同事的帮助,本书是不可能写成的。首先,我要感谢Vesselin Bontchev博士在我们共事的多年间教给我恶意程序的术语。Vesselin因其在病毒研究方面极度的严谨和认真而闻名,他极大地影响和支持了我的研究。
  十分感谢以下曾鼓励过我写作本书并在病毒研究方面指导过我以及多年来对我的研究有很大影响的人士:Oliver Beke、Zoltan Hornak、Frans Veldman、Eugene Kaspersky、Istvan Farmosi、Jim Bates、Frederick Cohen博士、Fridrik Skulason、David Ferbrache、Klaus Brunnstein博士、Mikko Hypponen、Steve White博士和Alan Solomon博士。
  非常感谢本书的技术评审们,他们是:Vesselin Bontchev博士、Peter Ferrie、Nick FitzGerald、Halvar Flake、Mikko Hypponen、Jose Nazario博士和Jason V. Miller。他们对本书早期手稿的鼓励、批评、洞察和审阅工作绝对是无价的。
  我还要感谢Janos Kis和Zsolt Szoboszlay,在BBS还是计算世界的交流中心时期,他们允许我访问和分析那些造成大规模危害的病毒代码。我还要感谢Gunter May,他送给我一个礼物—一台C64,这在过去对东欧小孩来说最好的礼物。
  十分感谢Symantec公司的每位同事,特别是Linda A. McCarthy和Vincent Weafer,他们对我写作此书给予了极大的鼓励。我还要感谢Nancy Conner和Chris Andry,她们做了出色的编辑工作。如果没有她们的帮助,这个项目现在绝对不可能完成。我还应该特别感谢Jessica Goldstein、Kristy Hart和Christy Hackerd,她们在出版过程中一直给予我帮助。
  十分感谢“计算机反病毒研究组织”(Computer Antivirus Researchers Organization,CARO)、VFORUM和“反病毒紧急讨论列表”(AntiVirus Emergency Discussion List,AVED List)的所有过去和现在的成员,感谢他们对计算机病毒和其他恶意程序及防御方案的激动人心的讨论。
  我想感谢《Virus Bulletin》(病毒公告)杂志的所有工作人员,谢谢他们近10年来在国际上发表我的文章和论文,并允许我在本书中使用那些材料。
  最后,我非常感激从事教师职业的父母和祖父母,他们给予了我数学、物理、音乐和历史方面的优异的“家庭教育”。

作者简介

Peter Szor:Peter Szor: Peter Szor是一位举世闻名的计算机病毒和安全研究人员,他积极从事计算机病毒研究已经15年以上。1991年,他的毕业论文主题就是计算机病毒和病毒防护。这些年来,Peter很幸运地参与了一些最负盛名的反病毒产品的研发,如AVP、F-PROT和Symantec Norton AntiVirus。最初(1990~1995年),他曾在匈牙利开发自己的反病毒程序—Pasteur(巴斯德)。除了对反病毒软件开发有兴趣外,Peter还有多年的容错和安全金融交易系统的开发经验。 Peter于1997年受邀加入了计算机反病毒研究者组织(Computer Antivirus Researchers Organization,CARO)。他是《Virus Bulletin》(病毒公告)杂志的顾问委员会成员,也是反病毒应急讨论网络(AntiVirus Emergency Discussion (AVED)network)的创办人之一。他在加利福尼亚Santa Monica的Symantec公司担任首席研究员已5年以上。 Peter为《Virus Bulletin》、《Chip》、《Source》、《Windows NT Magazine》和《Information Security Bulletin》等杂志写过70多篇有关计算机病毒和安全方面的文章和论文。他经常在Virus Bulletin、EICAR(欧洲计算机防毒研究所)、ICSA(国际计算机安全协会)和RSA等会议上发表演讲,而且曾在USENIX Security Symposium(USENIX安全专题讨论会)这样的安全会议上作过特邀演讲。Peter热心于分享自己的研究成果和向别人传授计算机病毒与安全方面的知识。

译者简介

段海新 杨波 王德强:段海新: 段海新,工学博士、副教授、国际信息系统安全认证专家(CISSP)。现任清华大学信息网络工程研究中心网络与信息安全研究室主任,中国教育和科研计算机网紧急响应组(CCERT)负责人,互联网协会安全工作委员会委员,国际信息系统安全认证联盟(ISC)2亚太区顾问。主要从事计算机网络安全方面的科研、运行管理和教学工作。

译者序

随着互联网的飞速发展,计算机病毒技术也迅速发展,逐渐融合了网络蠕虫、木马、拒绝服务攻击等各种攻击手段。造成的损失也由最初的数据丢失,发展到现在的信息泄密,甚至互联网的瘫痪,破坏力越来越大。
  计算机病毒从产生到现在一直都是计算机网络和信息安全的热门话题,无论是普通用户还是计算机或信息安全的专业人士都对此非常关注,市面上关于计算机病毒技术和防病毒技术的书籍也不胜枚举。但是这些书大多是面向初学者,只是泛泛地介绍病毒与防范的原理,真正出自防病毒技术专业人员之手、能够引起病毒研究专业人员兴趣的却寥寥无几。
  本书是目前病毒研究专业人员不可多得的专业参考书,作者Peter Szor是病毒研究界举世闻名的研究人员,他在从事病毒研究15年的经历中,参与开发过很多著名的防病毒产品,比如AVP、F-PROT和Symantec Norton AntiVirus。
  本书从专业研究人员的视角,分两部分展示了计算机病毒技术和病毒防范技术的原理、技巧及发展趋势。在第一部分,作者首先对过去20年中黑客们开发的各种病毒技巧进行了系统分类和详细讲解,从磁盘、文件、内存、网络等多个角度分析了传统病毒感染技术,从最古老的病毒代码、网络蠕虫,一直到病毒各种最新的变形技术以及各种恶意代码融合的趋势。在第二部分,作者系统地介绍了病毒防御的各种技术,针对第一部分介绍的各种病毒技术给出了病毒检测、清除的方法,包括文件、内存、网络等各种防范途径,最后介绍了病毒等恶意代码的分析方法、工具以及自动分析方法。
  本书面向有志于从事计算机病毒或恶意代码研究的专业人员。读者应该具备计算机组成原理、操作系统以及程序设计(特别是汇编语言)等预备知识。作者在每一章都给出了详细的参考文献,读者可以找到必要的背景知识。
  本书涉及的内容非常广泛、专业,而且融入了作者多年的病毒研究经验。由于译者的知识和经验有限,翻译中难免有疏漏或错误,敬请广大读者谅解并批评指正。

译  者
2006年9月

图书目录

第一部分 攻击者的策略
第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 INIFile依存性 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
第二部分 防御者的策略
第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 NtQuerySystemInformation()的秘密 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
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

教学资源推荐
作者: (加)约翰·赫尔(John C.Hull) 著
参考读物推荐
作者: [美]威廉·斯托林斯 (William Stallings) 著