欢迎光临
免费的PDF电子书下载网站

恶意代码分析实战 PDF下载

编辑推荐

不管你是否有恶意代码分析的背景和经验,《恶意代码分析实战》极其丰富的内容都将使你获益匪浅。
《恶意代码分析实战》教你如何、以及何时使用恶意代码分析技术,深入掌握恶意代码分析工具的核心功能,从而达到准确诊断、及时突破、快速响应的效果。
《恶意代码分析实战》一经问世,便赢来业内好评如潮,被业内人士一致推荐为入门、晋级的读本。
详尽,经典——每一位认真学习过《恶意代码分析实战》的读者,必将在恶意代码分析的专业技能上获得巨大的提升。

 ;

内容简介

本书是一本内容全面的恶意代码分析技术指南,其内容兼顾理论,重在实践,从不同方面为读者讲解恶意代码分析的实用技术方法。 本书分为21章,覆盖恶意代码行为、恶意代码静态分析方法、恶意代码动态分析方法、恶意代码对抗与反对抗方法等,并包含了shellcode 分析,C 恶意代码分析,以及64 位恶意代码分析方法的介绍。本书多个章节后面都配有实验并配有实验的详细讲解与分析。通过每章的介绍及章后的实验,本书一步一个台阶地帮助初学者从零开始建立起恶意代码分析的基本技能。 本书获得业界的一致好评,IDA Pro 的作者Ilfak Guilfanov 这样评价本书:“一本恶意代码分析的实践入门指南,我把这本书推荐给所有希望解剖Windows 恶意代码的读者”。

作者简介

本书作者Michael Sikorski, Andrew Honig虽不是安全领域中名声很大的人物,但从背景来看都是工作在一线的安全工程师与培训讲师,相信本书应是一本从事计算机病毒、恶意代码分析的专业人士,以及计算机病毒领域爱好者案头必备的一本实践指南参考书。
本书作者Michael Sikorski, Andrew Honig虽不是安全领域中名声很大的人物,但从背景来看都是工作在一线的安全工程师与培训讲师,相信本书应是一本从事计算机病毒、恶意代码分析的专业人士,以及计算机病毒领域爱好者案头必备的一本实践指南参考书。

恶意代码分析实战 PDF下载

目录

目 录
第0章 恶意代码分析技术入门1
0.1 恶意代码分析目标1
0.2 恶意代码分析技术2
0.2.1 静态分析基础技术2
0.2.2 动态分析基础技术2
0.2.3 静态分析高级技术2
0.2.4 动态分析高级技术2
0.3 恶意代码类型3
0.4 恶意代码分析通用规则4
第 1 篇 静态分析
第1章 静态分析基础技术 6
1.1 反病毒引擎扫描:实用的第一步6
1.2 哈希值:恶意代码的指纹7
1.3 查找字符串7
1.4 加壳与混淆恶意代码9
1.4.1 文件加壳10
1.4.2 使用PEiD 检测加壳10
1.5 PE 文件格式11
1.6 链接库与函数12
1.6.1 静态链接、运行时链接与动态链接12
1.6.2 使用Dependency Walker 工具探索动态链接函数13
1.6.3 导入函数14
1.6.4 导出函数15
1.7 静态分析技术实践15
1.7.1 PotentialKeylogger.exe:一个未加壳的可执行文件15
1.7.2 PackedProgram.exe:穷途末路18
1.8 PE 文件头与分节18
1.8.1 使用PEview 来分析PE 文件19
1.8.2 使用Resource Hacker 工具来查看资源节22
1.8.3 使用其他的PE 文件工具23
1.8.4 PE 文件头概述23
1.9 小结24
1.10 实验24
第2章 在虚拟机中分析恶意代码 27
2.1 虚拟机的结构27
2.2 创建恶意代码分析机28
2.2.1 配置VMware29
2.2.2 断开网络30
2.2.3 创建主机模式网络30
2.2.4 使用多个虚拟机30
2.3 使用恶意代码分析机31
2.3.1 让恶意代码连接互联网31
2.3.2 连接和断开外围设备32
2.3.3 拍摄快照32
2.3.4 从虚拟机传输文件33
2.4 使用VMware 进行恶意代码分析的风险34
2.5 记录/重放:重复计算机运行轨迹34
2.6 小结35
第3章 动态分析基础技术 36
3.1 沙箱:简便但粗糙的方法36
3.1.1 使用恶意代码沙箱36
3.1.2 沙箱的缺点37
3.2 运行恶意代码38
3.3 进程监视器39
3.3.1 进程监视器的显示40
3.3.2 进程监视器中的过滤41
3.4 使用进程浏览器(Process Explorer)来查看进程43
3.4.1 进程浏览器的显示43
3.4.2 使用验证选项44
3.4.3 比较字符串45
3.4.4 使用依赖遍历器(Dependency Walker)45
3.4.5 分析恶意文档46
3.5 使用Regshot 来比较注册表快照46
3.6 模拟网络47
3.6.1 使用ApateDNS47
3.6.2 使用Netcat 进行监视48
3.7 使用Wireshark 进行数据包监听49
3.8 使用INetSim51
3.9 基础动态分析工具实践52
3.10 小结55
3.11 实验56
第 2 篇 静态分析高级技术篇
第4章 x86 反汇编速成班 60
4.1 抽象层次60
4.2 逆向工程62
4.3 x86 体系结构62
4.3.1 内存63
4.3.2 指令64
4.3.3 操作码和字节序64
4.3.4 操作数65
4.3.5 寄存器65
4.3.6 简单指令67
4.3.7 栈70
4.3.8 条件指令73
4.3.9 分支指令73
4.3.10 重复指令74
4.3.11 C 语言主函数和偏移76
4.3.12 更多信息:Intel x86 Architecture Manual77
4.4 小结78
第5章 IDA Pro 79
5.1 加载一个可执行文件79
5.2 IDA Pro 接口81
5.2.1 反汇编窗口模式81
5.2.2 对分析有用的窗口83
5.2.3 返回到默认视图83
5.2.4 导航IDA Pro 83
5.2.5 搜索85
5.3 使用交叉引用86
5.3.1 代码交叉引用87
5.3.2 数据交叉引用88
5.4 分析函数88
5.5 使用图形选项89
5.6 增强反汇编91
5.6.1 重命名位置91
5.6.2 注释92
5.6.3 格式化操作数92
5.6.4 使用命名的常量93
5.6.5 重新定义代码和数据94
5.7 用插件扩展IDA95
5.7.1 使用IDC 脚本96
5.7.2 使用IDAPython97
5.7.3 使用商业插件97
5.8 小结98
5.9 实验98
第6章 识别汇编中的C代码结构 100
6.1 全局与局部变量101
6.2 反汇编算术操作102
6.3 识别if 语句104
6.3.1 用IDA Pro 图形化分析函数105
6.3.2 识别嵌套的if 语句106
6.4 识别循环107
6.4.1 找到for 循环107
6.4.2 找到while 循环109
6.5 理解函数调用约定110
6.5.1 cdecl110
6.5.2 stdcall 111
6.5.3 fastcall 111
6.5.4 压栈与移动 111
6.6 分析switch 语句112
6.6.1 If 样式112
6.6.2 跳转表114
6.7 反汇编数组118
6.8 识别结构体119
6.9 分析链表遍历121
6.10 小结123
6.11 实验123
第7章 分析恶意Windows程序 126
7.1 Windows API126
7.1.1 类型和匈牙利表达法126
7.1.2 句柄127
7.1.3 文件系统函数127
7.1.4 特殊文件128
7.2 Windows 注册表129
7.2.1 注册表根键130
7.2.2 Regedit131
7.2.3 自启动程序131
7.2.4 常用注册表函数131
7.2.5 练习分析注册表操作代码132
7.2.6 使用.reg 文件的注册表脚本133
7.3 网络API133
7.3.1 伯克利兼容套接字134
7.3.2 网络的服务器和客户端134
7.3.3 WinINet API 135
7.4 跟踪恶意代码的运行136
7.4.1 DLL136
7.4.2 进程137
7.4.3 线程139
7.4.4 使用互斥量的进程间协作142
7.4.5 服务143
7.4.6 组件对象模型145
7.4.7 异常:当事情出错时147
7.5 内核与用户模式148
7.6 原生API149
7.7 小结151
7.8 实验151
第 3 篇 动态分析高级技术篇
第8章 动态调试 154
8.1 源代码级与汇编级的调试器154
8.2 内核模式与用户模式调试155
8.3 使用调试器155
8.3.1 单步调试155
8.3.2 单步跳过(Stepping-Over)和单步跳入(Stepping-Into)156
8.3.3 用断点暂停执行157
8.4 异常161
8.4.1 首次和二次异常处理162
8.4.2 常见异常162
8.5 使用调试器修改可执行文件163
8.6 修改可执行程序的实践163
8.7 小结164
第9 章 OllyDbg 165
9.1 加载恶意代码165
9.1.1 打开一个可执行文件165
9.1.2 附加调试器到一个运行程序166
9.2 OllyDbg 的接口167
9.3 内存映射168
9.3.1 基地址重定位169
9.4 查看线程和堆栈170
9.5 执行代码171
9.6 断点172
9.6.1 软件断点173
9.6.2 条件断点174
9.6.3 硬件断点175
9.6.4 内存断点175
9.7 加载DLL176
9.8 跟踪177
9.8.1 标准回溯跟踪177
9.8.2 堆栈调用跟踪178
9.8.3 运行跟踪178
9.8.4 跟踪Poison Ivy178
9.9 异常处理179
9.10 修补180
9.11 分析shellcode181
9.12 协助功能182
9.13 插件182
9.13.1 OllyDump183
9.13.2 调试器隐藏插件183
9.13.3 命令行184
9.13.4 书签185
9.14 脚本调试185
9.15 小结186
9.16 实验187
第10章 使用WinDbg 调试内核 189
10.1 驱动与内核代码189
10.2 安装内核调试191
10.3 使用WinDbg193
10.3.1 从内存中读取194
10.3.2 使用算术操作符194
10.3.3 设置断点194
10.3.4 列举模块195
10.4 微软符号表195
10.4.1 搜索符号195
10.4.2 查看结构信息196
10.4.3 配置Windows 符号表198
10.5 内核调试实践198
10.5.1 用户空间的代码198
10.5.2 内核模式的代码200
10.5.3 查找驱动对象203
10.6 Rootkit204
10.6.1 Rootkit 分析实践205
10.6.2 中断208
10.7 加载驱动209
10.8 Windows Vista、Windows 7 和x64 版本的内核问题209
10.9 小结210
10.10 实验210
第 4 篇 恶意代码功能篇
第11章 恶意代码行为 214
11.1 下载器和启动器214
11.2 后门(backdoor)214
11.2.1 反向shell215
11.2.2 远程控制工具216
11.2.3 僵尸网络216
11.2.4 远程控制工具与僵尸网络的比较217
11.3 登录凭证窃密器217
11.3.1 GINA 拦截217
11.3.2 口令哈希转储218
11.3.3 击键记录221
11.4 存活机制223
11.4.1 Windows 注册表223
11.4.2 特洛伊木马化(Trojanized)系统二进制文件225
11.4.3 DLL 加载顺序劫持227
11.5 提权228
11.5.1 使用SeDebugPrivilege228
11.6 隐藏它的踪迹——用户态的Rootkit229
11.6.1 IAT Hook 230
11.6.2 Inline Hook 231
11.7 小结232
11.8 实验232
第12章 隐蔽的恶意代码启动 234
12.1 启动器(Launcher)234
12.2 进程注入234
12.2.1 DLL 注入235
12.2.2 直接注入237
12.3 进程替换238
12.4 钩子(Hook)注入240
12.4.1 本地和远程钩子(Hook)240
12.4.2 使用钩子的击键记录器241
12.4.3 使用SetWindowsHookEx 241
12.4.4 目标线程241
12.5 Detours 242
12.6 APC 注入243
12.6.1 用户模式下APC 注入244
12.6.2 内核模式的APC 注入245
12.7 小结246
12.8 实验246
第13章 数据加密 248
13.1 分析加密算法的目的248
13.2 简单的加密算法248
13.2.1 凯撒密码249
13.2.2 XOR249
13.2.3 其他一些简单的加密策略254
13.2.4 Base64255
13.3 常见的加密算法258
13.3.1 识别字符串和导入259
13.3.2 查找加密常量259
13.3.3 查找高熵值内容261
13.4 自定义加密262
13.4.1 识别自定义加密263
13.4.2 攻击者使用自定义加密的优势265
13.5 解密265
13.5.1 自解密265
13.5.2 手动执行解密函数266
13.5.3 使用通用的解密规范267
13.6 小结270
13.7 实验271
第14章 恶意代码的网络特征273
14.1 网络应对措施273
14.1.1 在原始环境中观察恶意代码273
14.1.2 恶意行为的痕迹274
14.1.3 OPSEC=操作安全性275
14.2 安全地调查在线攻击者275
14.2.1 间接性策略275
14.2.2 获取IP 地址和域名信息276
14.3

媒体评论

《恶意代码分析实战》是业内公认的迄今为止优秀的一本恶意代码分析指南,《恶意代码分析实战》也是每一位恶意代码分析师都必须作为指导手册珍藏的案头必备。

《恶意代码分析实战》既是一本教材,也是一本动手实践的指南。不仅教会你如何分析恶意代码(技术指导),而且配了大量的实验练习、案例、答案以及详细的分析过程,同时还包含很多用作案例的恶意代码样本,提供了丰富、安全的学习环境。

针对初学者:本书的技术内容、实验作业可以帮你渐入佳境;

针对中级读者:本书大量的分析实践会直接带你进入更高的级别,臻入化境。

前沿

好评袭来
一本优秀的恶意代码速成教程。
Dino Dai Zovi,自由安全咨询师
一本最为全面的恶意代码分析技术指南,覆盖了所有恶意代码分析所需的关键技术,帮助你理解最新恶意代码带来的技术挑战。
Chris Eagle,美国海军研究生院,计算机科学系高级讲师
一本恶意代码分析的实践入门指南,我把这本书推荐给所有希望解剖Windows恶意代码的读者。
— Ilfak Guilfanov,IDA PRO创始人
一本恶意代码分析的优秀指南,所有章节都包含有详细的技术解释和动手实践案例教程,让你能够立即面对真实的恶意代码。
— Sebastian Porst,Google软件工程师
本书为各个技术层次上的读者带来逆向工程方法,提供了一大堆覆盖各种技术并且容易访问的实践案例,将带领你更加深入地理解逆向工程的艺术与科学。我强烈推荐本书,无论是新手还是领域专家。
— Danny Quist,博士,OFFENSIVE COMPUTING创始人
如果你只要读一本恶意代码的书籍,或是希望进入到恶意代码分析师的世界,就来看这本书吧!
— Patrick Engbretson,达科他州立大学教授,The Basics of Hacking and Pen Testing一书的作者
为软件安全或入侵检测系统等研究生级别高级课程提供很好的课程资料,实践案例对学生学习逆向工程方法、恶意代码分析和理解等方面具有特殊的价值。
— Sal Stolfo,哥伦比亚大学教授

警 告
这是一本关于恶意代码的书籍,本书中描述的所有链接和软件都可能是恶意的。在执行任何未知代码和访问不可信URL时请务必保持极度的小心。
请参考第2章,以创建用于恶意代码分析的安全虚拟环境。
不要犯傻,保护你的计算环境安全。

关于作者
迈克尔·斯科尔斯基(Michael Sikorski)是在Mandiant公司任职的计算机安全顾问。他对恶意代码进行逆向分析,支持公司安全事件响应调查,并为公司的联邦政府部门客户提供专业研究与开发的安全解决方案。迈克创建了一套恶意代码分析的系列课程,并对不同的受众进行培训,包括联邦调查局和Black Hat黑客大会参会者。在加入Mandiant公司之前,他在麻省理工学院林肯实验室工作,在那里他对被动网络映射技术和渗透测试进行研究。迈克也是美国国家安全局为期三年的系统和网络跨学科研究生项目的毕业生。在美国国家安全局期间,他为逆向工程方面的研究做出了贡献,并获得在网络分析方面的多项发明奖项。
安德鲁·哈尼格(Andrew Honig)是美国国防部的一位信息保障专家。他在国家密码学院
(National Cryptologic School)教授软件分析、逆向工程和Windows系统编程的课程,并是一位CISSP安全认证专家。安德鲁是VMware虚拟化产品几个零日漏洞的发现者,并开发了一些可以检测新型恶意代码(包括内核套件)的创新工具。作为一位精于恶意代码与良性软件分析技术的专家,他已经拥有超过10年的计算机安全业界分析师的经验。
技术编辑
斯蒂芬·劳勒(Stephen Lawler)是一家小型计算机软件和安全咨询公司的创始人和总裁。斯蒂芬一直在信息安全领域活跃工作了超过七年时间。主要涉及逆向工程、恶意代码分析和安全漏洞研究。他是Mandiant恶意代码分析团队的一位成员,协助调查分析了影响福布斯全球100强企业的几个高价值计算机入侵事件。在此之前,他曾在ManTech国际公司的安全与任务保证部门(SMA)工作,在那里,作为软件确保工作的职责内容,他发现了许多零日安全漏洞和软件利用技术。而在之前,他的生活与计算机安全没有关联,曾是美国海军SMMTT计划中声纳模拟部件的首席软件开发工程师。
贡献作者
尼克·哈波尔(Nick Harbour)是Mandiant公司的一位恶意代码分析师和逆向工程业务经验丰富的老将。他在信息安全领域有着13年的职业生涯,首先是作为国防部计算机取证实验室的一位计算恶意代码分析实践机取证分析师和研究员,在过去6年中,尼克都任职于Mandiant公司,主要工作内容都集中在恶意代码分析上。他是反逆向工程技术领域的一线研究员,编写了好几个加壳和代码混淆工具,如PE-Scrambler等。他已经在Black Hat和Defcon黑客大会做过多次关于反逆向工程与反取证技术的演讲。他也是Black Hat黑客大会高级恶意代码分析课程的主要开发者与培训师。
林赛·莱克(Lindsey Lack)是Mandiant公司一位有着超过12年信息安全工作经验的技术总监,精于恶意代码逆向工程、网络防御和安全运营等技术。他曾帮助创建和运营了一个安全操作中心(SOC),并领导网络防御方面的研究工作,开发了安全托管解决方案。他曾在国家信息安全保障研究实验室、总统执行办公室、Cable and Wireless公司,以及美国军队中任职。除了斯坦福大学计算机科学学士学位之外,林赛也获得了美国海军研究生院信息安全保障专业方向的硕士学位。
杰罗尔德·“杰”·史密斯(Jerrold “Jay” Smith)是Mandiant公司的首席顾问,他擅长恶意代码逆向工程与取证分析。在这个角色上,他已经在来自于福布斯500强企业许多客户的入侵响应事件中做出了贡献。在加盟Mandiant公司之前,杰曾经在美国国家安全局作,但他不被允许谈论这段经历。杰持有加州大学伯克利分校的电子工程与计算机科学学士学位,以及约翰·霍普金斯大学
(JHU)的计算机科学硕士学位。

推 荐 序
没有几个数字安全的领域,像本书讨论的恶意代码方向这么不对称。
2011年夏天,我参加了在内华达州拉斯维加斯召开的黑客大会,聆听了Peiter(麦基)Zatko的主题演讲。麦基在他的演讲中,引入了现代软件中本质存在的不对称性。他解释了他如何分析了9 000个恶意代码的二进制文件样本,而他的样本集平均源代码行数为125行(LOC)。
你可能认为麦基的样本集中只包含了那些“简单”或是“寻常”的恶意代码。你也许会问,那些真正的“武器”会有多大规模呢?比如说(能够让你屏住呼吸的)——Stuxnet病毒?根据Larry L.Constantine的说法1,Stuxnet病毒包含了约15 000行源代码,因此是样本集平均125行代码的120倍。
Stuxnet病毒是一个高度专业性和目标性的“战争武器”,大概可以理解为其代码行数高于平均大小的原因。
我们稍微离开一会儿恶意代码的世界,来看看我所使用的文本编辑器(gedit,GNOME中的文本编辑器),其中包含了295行源代码的gedit.c,而gedit.c仅仅是其中128个源文件(以及其他3个目标)中的1个源文件。2GNOME GIT源代码库经过统计之后,总共有128个文件和3个目录,共计70 484行源代码。合法程序的源代码数量与恶意代码的比值超过了500∶1。与一个如文本编辑器这样相当简单的工具相比,恶意代码样本从平均源码行数上看起来似乎非常高效!麦基的恶意代码样本集平均125行源代码对我来说似乎有点低,因为不同类型“恶意代码”定义的存在。很多恶意应用程序是一类“套件”,拥有许多功能和基础设施元素。为了看看这类恶意代码的大致规模,我统计了Zeus网银木马中你应该认为是合理的“源代码”部分(.cpp、.obj、.h等)的代码行数,结果是253 774行。将一个像是Zeus网银木马这样的恶意程序与麦基的恶意代码样本集平均大小相比,我们现在看到了一个新的比值,超过了2 000∶1。然后麦基将恶意代码源代码行数与用来检测和查杀恶意代码的安全产品源代码行数进行比较,他估计现在主流的安全防御产品源代码行数大概是1000万行左右。为了让算术变得简单一些,来想象一样存在有至少1250万行源代码的安全防护产品,这样就使得防御性软件代码与进攻性软件代码的比值进入了100 000∶1的级别。换句话说,对于每1行源代码的进攻火力,防御者需要写出10万行作为防御堡垒的源代码。
1 http://www.informit.com/articles/article.aspx?p=1686289
2 http://git.gnome.org/browse/gedit/tree/gedit?id=3.3.1
麦基也将恶意代码源代码行数与恶意代码试图颠覆的操作系统源代码行数进行了比较。分析师估计Windows XP操作系统的源代码行数为4 500万行。而没人知道Windows 7有多少行源代码。麦基认为一个现代操作系统大概会有15 000万行源代码,想必他指的是Windows的最新版本。同样让我们保守估计到12 500万行,以简化我们的计算,这样我们就得出了一个100万比1的比值,来估计目标操作系统的大小规模与滥用操作系统的恶意武器大小规模之间的比例。
让我们停下来,概括一下我们已经获得的源代码行数计数分析结果。
● 120:1:Stuxnet病毒与平均恶意代码大小规模的比值。
● 500:1:简单的文本编辑器与平均恶意代码大小规模的比值。
● 2 000:1:恶意代码套件与平均恶意代码大小规模的比值。
● 100 000:1:防守工具软件与平均恶意代码大小规模的比值。
● 1 000 000:1:目标操作系统与平均恶意代码大小规模的比值。
从一位防御者的角度来看,防御性工具和目标操作系统和平均恶意代码大小规模的比值,是多么地让人心情沮丧。甚至将平均恶意代码大小规模换成恶意代码套件的大小规模,也不会很好地改善防御者所面临的境遇!它看起来像是我们的防御者(以及他们的供应商)花费了很多努力生产出成千上万的源代码,而最终只能看到它们被装备着少得多源代码的入侵者们无情戏弄。
那防御者应该怎么做呢?答案就是不要被那些火力强大的领跑者牵着鼻子走,而将一个“障碍”重新定义为“机会”!忘记安全防御工具和目标操作系统的大小规模——那可不是你可

恶意代码分析实战 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:恶意代码分析实战