具体描述
本书由业界知名安全技术人员撰写,系统介绍了逆向工程反病毒软件。主要内容包括:反病毒软件所采纳的各种具体手段,攻击和利用杀毒软件的多种常见方法,杀毒软件市场现状以及未来市场预估。
本书是逆向工程师、渗透测试工程师、安全技术人员和软件开发人员的必读指南。
作者简介
作者简介:
Joxean Koret
逆向工程、漏洞研究和恶意软件分析领域知名专家,安全咨询公司Coseinc安全研究员,经常受邀在国际性安全会议上做演讲。
Elias Bachaalany
安全专家,微软软件安全工程师,曾做过程序员、逆向工程师、自由技术写作者;另与人合著有《逆向工程实战》。
译者简介:
周雨阳
安全研究员,喜爱英语翻译。研究方向主要为反病毒技术、浏览器安全、Web安全,曾挖掘出谷歌、苹果、雅虎等多个厂商的漏洞并获得致谢。目前就职于腾讯安全平台部。
目录信息
第1章 反病毒软件入门 2
1.1 何谓反病毒软件 2
1.2 反病毒软件的历史与现状 2
1.3 反病毒扫描器、内核和产品 3
1.4 反病毒软件的典型误区 4
1.5 反病毒软件功能 5
1.5.1 基础功能 5
1.5.2 高级功能 8
1.6 总结 10
第2章 逆向工程核心 11
2.1 逆向分析工具 11
2.1.1 命令行工具与GUI工具 11
2.1.2 调试符号 12
2.1.3 提取调试符号的技巧 13
2.2 调试技巧 16
2.3 移植内核 22
2.4 实战案例:为Linux版Avast编写Python binding 23
2.4.1 Linux版Avast简介 23
2.4.2 为Linux版Avast编写简单的Python binding 25
2.4.3 Python binding的最终版本 30
2.5 实战案例:为Linux版Comodo编写本机C/C++工具 30
2.6 内核加载的其他部分 46
2.7 总结 47
第3章 插件系统 48
3.1 插件加载原理 48
3.1.1 反病毒软件的全功能链接器 49
3.1.2 理解动态加载 49
3.1.3 插件打包方式的利弊 50
3.2 反病毒插件的种类 52
3.2.1 扫描器和通用侦测程序 52
3.2.2 支持文件格式和协议 53
3.2.3 启发式检测 54
3.3 高级插件 57
3.3.1 内存扫描器 57
3.3.2 非本机代码 58
3.3.3 脚本语言 59
3.3.4 模拟器 60
3.4 总结 61
第4章 反病毒特征码技术 62
4.1 典型特征码 62
4.1.1 字节流 62
4.1.2 校验和 63
4.1.3 定制的校验和 63
4.1.4 加密散列算法 64
4.2 高级特征码 64
4.2.1 模糊散列算法 65
4.2.2 基于程序图的可执行文件散列算法 66
4.3 总结 68
第5章 反病毒软件的更新系统 69
5.1 理解更新协议 69
5.1.1 支持SSL/TLS 70
5.1.2 验证更新文件 71
5.2 剖析更新协议 72
5.3 错误的保护 79
5.4 总结 79
第二部分 绕过反病毒软件
第6章 绕过反病毒软件 82
6.1 谁会使用反病毒软件的绕过技术 82
6.2 探究反病毒软件侦测恶意软件的方式 83
6.2.1 用于侦测恶意软件的老把戏:分治算法 83
6.2.2 二进制指令和污点分析 88
6.3 总结 89
第7章 绕过特征码识别 90
7.1 文件格式:偏门案例和无文档说明案例 90
7.2 绕过现实中的特征码 91
7.3 绕过特定文件格式的相关提示和技巧 96
7.3.1 PE文件 96
7.3.2 JavaScript 98
7.3.3 PDF 100
7.4 总结 102
第8章 绕过扫描器 104
8.1 绕过技术的通用提示和策略 104
8.1.1 识别分析模拟器 105
8.1.2 高级绕过技巧 106
8.2 自动化绕过扫描器 117
8.2.1 初始步骤 117
8.2.2 MultiAV配置 121
8.2.3 peCloak 125
8.2.4 编写终极工具 126
8.3 总结 128
第9章 绕过启发式引擎 130
9.1 启发式引擎种类 130
9.1.1 静态启发式引擎 130
9.1.2 绕过简单的静态启发式引擎 131
9.1.3 动态启发式引擎 137
9.2 总结 142
第10章 确定攻击面 144
10.1 理解本地攻击面 145
10.1.1 查找文件和系统目录权限的弱点 145
10.1.2 权限提升 146
10.2 错误的访问控制列表 146
10.2.1 在Unix平台上利用SUID和SGID二进制文件漏洞 148
10.2.2 程序和二进制文件的ASLR和DEP保护 149
10.2.3 利用Windows对象的错误权限 151
10.2.4 利用逻辑缺陷 153
10.3 理解远程攻击面 155
10.3.1 文件解析器 155
10.3.2 通用侦测和感染文件修复代码 156
10.3.3 网络服务、管理面板和控制台 156
10.3.4 防火墙、入侵监测系统和解析器 157
10.3.5 更新服务 157
10.3.6 浏览器插件 157
10.3.7 安全增强软件 158
10.4 总结 159
第11章 拒绝服务攻击 161
11.1 本地拒绝服务攻击 161
11.1.1 压缩炸弹 162
11.1.2 文件格式解析器中的缺陷 165
11.1.3 攻击内核驱动 165
11.2 远程拒绝服务攻击 166
11.2.1 压缩炸弹 166
11.2.2 文件格式解析器中的缺陷 167
11.3 总结 167
第三部分 分析与攻击
第12章 静态分析 170
12.1 手动二进制审计 170
12.1.1 文件格式解析器 170
12.1.2 远程服务 177
12.2 总结 181
第13章 动态分析 182
13.1 模糊测试 182
13.1.1 模糊测试工具是什么 182
13.1.2 简单的模糊测试 183
13.1.3 对反病毒产品的自动化模糊测试 185
13.1.4 找到好的模糊测试模版 192
13.1.5 查找模版文件 194
13.1.6 使代码覆盖率最大化 196
13.1.7 模糊测试套组Nightmare 201
13.2 总结 207
第14章 本地攻击 209
14.1 利用后门和隐藏功能 209
14.2 挖掘非法特权、权限分配和访问控制列表 213
14.3 在内核态查找隐蔽的功能特性 217
14.4 更多的内核逻辑漏洞 223
14.5 总结 231
第15章 远程漏洞 233
15.1 实施客户端漏洞利用攻击 233
15.1.1 利用沙盒的缺陷 233
15.1.2 利用ASLR、DEP和位于固定地址的RWX页面漏洞 234
15.1.3 编写复杂的payload 235
15.1.4 利用更新服务中的漏洞 240
15.2 服务器端的漏洞利用 248
15.2.1 客户端和服务器端漏洞利用的区别 248
15.2.2 利用ASLR、DEP和地址固定的RWX内存页面相关漏洞 249
15.3 总结 249
第四部分 当前趋势与建议
第16章 当前反病毒防护趋势 252
16.1 匹配攻击技术与目标 252
16.1.1 多种多样的反病毒产品 252
16.1.2 针对家庭用户 253
16.1.3 针对中小型公司 254
16.2 针对政府机构和大型公司 254
16.3 总结 255
第17章 一些建议和未来展望 256
17.1 给反病毒软件用户的建议 256
17.1.1 盲目信任是错误的 256
17.1.2 隔离机器来增强防护 260
17.1.3 审计反病毒产品 261
17.2 给反病毒厂商的建议 261
17.2.1 优秀的工程师并不代表安全 261
17.2.2 利用反病毒软件的漏洞很简单 262
17.2.3 进行审计 262
17.2.4 模糊测试 262
17.2.5 安全地使用权限 263
17.2.6 减少解析器中的危险代码 263
17.2.7 改进升级服务和协议的安全性 264
17.2.8 删除或禁用旧代码 264
17.3 总结 265
· · · · · · (收起)
读后感
用户评价
我非常欣赏作者在某些特定章节中展现出的对系统安全模型深刻的理解,尤其是在权限隔离和沙箱机制的对比分析上。然而,这种深入的分析常常戛然而止,留下了一个巨大的“然而,我们将在后续章节中讨论”的悬念,但后续章节却将重点转移到了其他不那么直接相关的主题上。我感觉这本书像是一幅宏伟蓝图的草稿,勾勒出了一个庞大的安全知识体系的轮廓,但关键的、能支撑起整个“攻防”大厦的承重结构部分却显得有些单薄。特别是关于当前主流安全产品(如EDR或下一代防火墙)的绕过技巧,书中提及的往往是几年前的经典方法论,对于近年来安全防护技术的飞速迭代,这本书提供的前瞻性指导略显不足。它似乎更偏向于对经典理论的梳理和重申,而非对前沿攻防策略的探索与展示。
拿到这本书时,我最大的疑惑是,为什么一个聚焦于“攻防技术”的书会花费如此多的篇幅去探讨一些看似基础到不能再基础的网络安全概念。比如,关于TCP/IP协议栈的细节描述,那感觉就像是在重温大学的计算机网络课程。我原以为,既然定位是“宝典”,就应该直奔主题,揭示那些不为人知的技巧和工具的使用心得。我翻阅了大量的章节,试图寻找那些能让我眼前一亮的、能立刻应用到我的渗透测试实践中的“独门秘籍”,结果却发现大部分内容都是对公开信息的系统性梳理和整理。这种感觉就像是去一家米其林餐厅,点了一份招牌菜,结果上来的是一份食材清单和详细的烹饪流程,但最重要的那道菜品本身却缺席了。当然,对于初学者来说,这或许是份难得的系统性读物,但对于有一定经验的从业者而言,它更像是一本详尽的参考手册,而不是一本能带来突破性思维的“宝典”。
这本书的排版和语言风格,说实话,有点过于学术化了。它大量使用了专业术语,并且倾向于用严谨的、教科书式的语言来阐述概念,这使得阅读过程充满了挑战性。我常常需要停下来,查阅大量的背景资料才能完全理解某一个段落的含义。我期待的是那种能让人沉浸其中的叙事方式,那种通过实际攻击案例来串联技术点的叙述手法。这本书提供的更多是知识点的堆砌,缺乏一个引人入胜的“主线故事”来串联这些复杂的安全机制。例如,在讨论某个特定的软件漏洞时,作者更侧重于从底层C语言或汇编的角度去剖析其内存布局,而非聚焦于如何构造一个能够成功利用该漏洞的Payload。这种对底层细节的极致追求是值得称赞的,但它牺牲了故事的流畅性和读者的代入感,使得整本书读起来像是在啃一本技术规格说明书,而非一本充满实战智慧的“宝典”。
从装帧和设计上看,这本书无疑是厚实且专业的,散发着一种令人信服的“权威感”。但当我真正开始阅读内部内容时,我发现它更像是一套精心编纂的、面向企业安全培训的内部教材,而非面向广泛黑客爱好者的“实战指南”。书中对“如何构建一个安全防御体系”的论述篇幅,明显超过了“如何高效地发现和利用安全缺陷”的部分。这种侧重于“防守方”视角的叙事,虽然对于提升整体安全意识有巨大帮助,但无疑会削弱那些主要目标是学习渗透测试和漏洞挖掘的读者的热情。我本希望看到的是那些充满技巧和捷径的“黑客之道”,却得到了一本严谨的、强调合规与系统性的“安全工程师入门指南”。这并非说书的内容不好,而是它与我期待的那种充满反叛精神和技术奇思妙想的“攻防宝典”定位存在着明显的落差。
这本书的标题实在是太引人注目了,就像黑客世界里的一盏明灯,直指人心最深处的渴望——掌握那些神秘的技术。我抱着极大的热情翻开了第一页,期待能一头扎进那些关于权限提升、内核挖掘的惊险世界。然而,当我深入阅读后,我发现这本书的视角似乎有些偏差。它更像是一本关于网络协议和基础架构的教科书,虽然内容扎实,但对于那些期待看到零日漏洞利用或者绕过最新沙箱技术的新手来说,可能会感到一丝丝的失落。书中的案例分析很有深度,对于理解系统底层是如何运作的提供了坚实的基础,但那些关于“攻防”的实战演练,那种刀光剑影的紧张感,似乎被大量的理论论述所稀释了。我花了大量时间去消化那些关于操作系统内存管理和数据结构的部分,它们无疑是技术宝典的基石,但对于一个渴望立即上手“战斗”的读者来说,这前期的准备工作显得有些漫长和枯燥。我理解,万丈高楼平地起,但这本书给我的感觉更像是花了一大半篇幅来讲解如何炼钢,而真正锻造兵器的部分却只是寥寥数笔,让人意犹未尽。
值得翻一翻,知道作者是因为他的开源diff工具diaphora,书里面也有一些内容来源于他的演讲。
看中里面的杀毒原理,开阔眼界的一本书
值得翻一翻,知道作者是因为他的开源diff工具diaphora,书里面也有一些内容来源于他的演讲。
看中里面的杀毒原理,开阔眼界的一本书
值得翻一翻,知道作者是因为他的开源diff工具diaphora,书里面也有一些内容来源于他的演讲。