内容简介
《恶意代码分析实战》是一本内容全面的恶意代码分析技术指南,其内容兼顾理论,重在实践,从不同方面为读者讲解恶意代码分析的实用技术方法。
《恶意代码分析实战》分为21章,覆盖恶意代码行为、恶意代码静态分析方法、恶意代码动态分析方法、恶意代码对抗与反对抗方法等,并包含了shellcode分析,C++恶意代码分析,以及64位恶意代码分析方法的介绍。本书多个章节后面都配有实验并配有实验的详细讲解与分析。通过每章的介绍及章后的实验,本书一步一个台阶地帮助初学者从零开始建立起恶意代码分析的基本技能。
《恶意代码分析实战》获得业界的一致好评,IDA Pro的作者Ilfak Guilfanov这样评价本书:“一本恶意代码分析的实践入门指南,我把这本书给所有希望解剖Windows恶意代码的读者”。
《恶意代码分析实战》的读者群主要是网络与系统安全领域的技术爱好者与学生及恶意代码分析研究方面的安全从业人员。
目录
第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 配置VMWARE 29
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 使用APATEDNS 47
3.6.2 使用NETCAT进行监视 48
3.7 使用WIRESHARK进行数据包监听 49
3.8 使用INETSIM 51
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 MANUAL 77
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.
摘要与插图
电话铃声急促响起,网络管理员告诉你说公司网站被黑了,网站上的客户敏感信息被盗了。于是你立马开始调查分析,先检查了日志记录,来确定事件涉及的主机。你用杀毒软件对这些主机进行了扫描,检查是否感染了恶意代码。你的运气还算不错,杀毒软件检测到一个木马程序,名为TROJ.snapAK。你删除这个文件,并清理了现场,同时你还部署了一个入侵检测系统,来确认没有其他主机被感染。你修补了一个你认为是被攻击者利用来入侵主机的安全漏洞,来确保这种攻击事件不会再次发生。不幸的是,几天之后网络管理员再次打电话过来,告诉你说敏感信息又被窃取了。这看起来似乎是相同的攻击,但你却不知道该做什么。很显然,你部署的入侵检测系统特征库失效了。因为更多的主机被感染了,而你的杀毒软件并没有提供足够的保护来隔离攻击威胁。现在,公司高层管理人员要求你解释发生了什么,而你可以告诉他们的只是一个名为TROJ.snapAK的恶意代码。你没有针对要问题的答案,这让他们认为你是一位不称职的安全工程师。
你该如何确定TROJ.snapAK恶意代码在做什么,从而可以让你消除这个威胁?你如何才能写出一个更有效的网络检测特征?你怎样才能找出其他感染了这个恶意代码的主机呢?你该如何确保你删除了整个恶意代码程序包,而不只是其中的一部分呢?你该如何回答管理层关于这个恶意代码干了些什么的问题呢?
如果你所有能做的,只是告诉你的老板,说你需要聘请昂贵的外部咨询顾问,因为你不能保护自己的网络,这真的不是确保工作饭碗的好办法。
幸运的是,你有着足够的智慧,马上啃起了这本《恶意代码分析实战》,从这本书中你将学到的技能,可以教你如何来回答这些困难的问题,并为你展示保护网络免受恶意代码侵害的方法。
什么是恶意代码分析
恶意代码,也称为恶意软件,在大多数计算机入侵事件中都扮演了重要角色。任何以某种方式来对用户、计算机或网络造成破坏的软件,都可以被认为是恶意代码,包括计算机病毒、木马、蠕虫、内核套件、勒索软件、间谍软件,等等。尽管各种不同的恶意代码类型会做一些不同的事情(你将会在本书中看到),作为恶意代码分析师,我们拥有一组核心的工具和技术,用来解剖分析各式各样的恶意代码。
恶意代码分析是一种解剖恶意代码的艺术,了解恶意代码是如何工作的、如何识别它,以及如何战胜或消除它。你并不是需要成为一名黑客,才能进行恶意代码分析。
网络上每天有着数以百万计,甚至更多的恶意代码,恶意代码分析成为了任何一位从事计算机安全事件响应安全工程师的技能。此外,由于恶意代码分析专业人才的短缺,熟练的恶意代码分析师正处于强烈的人才需求之中。
这么说吧,这不是一本关于如何找到恶意代码的书籍。我们的重点是在如何分析已经找到的恶意代码。我们专注于Windows操作系统上发现的恶意代码——因为到目前为止,Windows操作系统还是常用的操作系统。但你所学到的技能可以为你在任何操作系统上分析恶意代码提供支持。我们还将专注在可执行文件上,因为它们是见的,也是你所遇到的以分析的一些文件。与此同时,我们选择不讨论如恶意Javascript脚本、Java程序等其他类型的恶意代码,相反的是,我们选择对方法进行深入讨论,用于分析更加的威胁,比如后门、隐蔽性恶意代码和内核套件。
先决条件
不管你是否有恶意代码分析的背景或经验,你都会从本书中受益。
第1~3章将讨论基础的恶意代码分析技术,即使你没有安全或编程经验,也可以用这些技术来进行恶意代码分析。第4~14章则覆盖中等级别的内容,可以让你武装上一些用来分析大多数恶意程序的主流工具与技能