天行健,君子以自强不息;地势坤,君子以厚德载物。
承蒙大家厚爱,历数《0day安全:软件漏洞分析技术》上架三秋,我收到了各方朋友的改进意见,从篇首名句的出处,到插入语中大顶机位序的解释;从虚拟机下载链接,到插图编排的勘误;从一个错字的纠正,到技术深度和全书布局的改进……可谓上至风云变色下到雨打芭蕉无所不有。踌躇两载,我终于在2009年底鼓足勇气开始酝酿0day的第二版。
简单说来,这次再版的原因有二:
首先,国人深知与时俱进的道理,技术上面更是如此。随着windows平台保护技术的不断改进,win7的广泛使用,第一版中所述的很多方法已有较大局限。为此我们逐一搜集了近年来各类安全峰会上的前沿文章,读懂消化之后将其重绘于书中。可以说我们在这次再版中逐一讲述并总结了目前世界上windows平台下几乎所有最前沿的内存exploit技术。时效性是再版的重要原因。
然后,第一版的编纂始于我求学阶段的一个简单的冲动:把手头所有的文档手稿编纂成册与大家分享。限于本人学识有限《0day》第一版虽然写的热情洋溢,但深度广度仍有较大遗憾。这次我力邀四位好友加入本次的编纂阵营。三者为众,更何况这次新加入四名远比臭皮匠厉害的狠角色,应该足够“亮”和“量”了吧。博采众家之长是再版的又一个重要原因。
让我们来看看这次的编纂团队。
Shineast: 内核调试专家,漏洞挖掘专家。此次负责了windows内核安全方面的内容。他会手把手的教你搭建调试环境,分享他挖掘内核的各种心得,体验若干个内核漏洞分析实验,直至教你制作自己的内核fuzz工具。
子寒:windows安全机制专家,职业的渗透测试专家,手机调试专家。此次负责了高级exploit技术的内容。他会用一系列精心设计的实验把复杂的windows保护机制惟妙惟肖的讲述清楚,并讨论如何用更加智慧的方式绕过这些保护机制。此外子涵还将首次在正式的出版物中和您一起讨论windows mobile下的各类exploit问题。
爱无言:漏洞挖掘专家,调试专家,黑客防线的至尊作者。此次负责部分漏洞挖掘的内容和案例分析的内容。爱无言将在书中毫无保留的与您一起分享他丰富的漏洞挖掘经验和调试经验,书中很多的案例都来自于他亲手找到的的0day。
Dflower:文件分析专家,漏洞调试专家。此次负责了文件类型fuzz和部分调试章节的编写。他会与您一起讨论如何解析复杂的文件,如何在复杂文件中寻找有价值的脏数据注入点,以触发未知的漏洞。
总体说来第二版有超过70%的新内容。除第一篇中最基本的exploit原理入门保留、工具使用方面的内容做了更新之外,剩下的几乎都是新加入的内容。让我们从目录大纲上来感受一下0day第二版与第一版的不同吧。
我们将很荣幸的聆听各种关于书目的反馈,请您于跟帖中不吝贴出。
《0day安全:软件漏洞分析技术第二版》大事记
2009年底筹划写作,组编纂团队
2010年2月,初步确立写作大纲
2010年8月,初步完成内容
2010年10月,看雪论坛公示书目,听取反馈意见
2010年11月,看雪论坛样章展示,听取反馈意见
2010年12月,exploit me竞赛
2011年, 第二版上架
《0day安全:软件漏洞分析技术第二版》
(本篇继承,保留于第一版,堆方面的内容经过了修订,增加了手机exploit内容)
第一篇 漏洞利用基础篇
第1章 基础知识
第2章 栈溢出原理与实践
第3章 开发shellcode的艺术
第4章 用MetaSploit开发Exploit
第5章 堆溢出利用
第6章 形形色色的内存攻击技术
第7章 手机漏洞利用
7.1. windows mobile简介
7.1.1. windows mobile的进程管理
7.1.2. windows mobile的内存管理
7.2. arm汇编指令简介
7.2.1. arm汇编的常用寄存器
7.2.2. arm汇编的函数调用
7.3. windows mobile exploit me实验
7.3.1. 手机的调试方法
7.3.2. 手机上的exploit me
第8章 其他类型的软件漏洞
8.1. 格式化串漏洞
8.1.1. printf中的缺陷
8.1.2. 用printf读取内存数据
8.1.3. 用printf向内存写数据
8.1.4. 格式化串漏洞的检测与防范
8.2. SQL注入攻击
8.2.1. SQL注入原理
8.2.2. 攻击PHP+MySQL网站
8.2.3. 攻击ASP+SQL Server网站
8.2.4. 注入攻击的检测与防范
8.3. XSS攻击
8.3.1. 脚本能够“跨站”的原因
8.3.2. XSS Reflection攻击场景
8.3.3. Stored XSS攻击场景
8.3.4. 攻击案例回顾:XSS蠕虫
8.3.5. XSS的检测与防范
8.4. 路径回溯漏洞
8.4.1. 路径回溯的基本原理
8.4.2. 范式化与路径回溯
8.5. ActiveX与“网马”
(本篇在第一版基础上经过大幅度的扩充,与修订)
第二篇 漏洞利用挑战篇
第9章 Windows安全机制概述
第10章 栈中的守护天使:GS
10.1. GS安全编译选项的保护原理
10.2. 利用未被保护的内存突破GS
10.3. 覆盖虚函数突破 GS
10.4. 攻击异常处理突破GS
10.5. 同时替换栈中和.data中的Cookie突破GS
第11章 亡羊补牢:SafeSEH
11.1. SafeSEH对异常处理的保护原理
11.2. 攻击返回地址绕过SafeSEH
11.3. 利用虚函数绕过SafeSEH
11.4. 从堆中绕过SafeSEH
11.5. 利用未启用SafeSEH模块绕过SafeSEH
11.6. 利用加载模块之外的地址绕过SafeSEH
11.7. 利用Adobe Flash Player ActiveX控件绕过SafeSEH
第12章 数据与程序的分水岭:DEP
12.1. DEP机制的保护原理
12.2. 攻击未启用DEP的程序
12.3. 利用Ret2Libc挑战DEP
12.3.1. Ret2Libc实战之利用ZwSetInformationProcess
12.3.2. Ret2Libc实战之利用VirtualProtect
12.3.3. Ret2Libc实战之利用VirtualAlloc
12.4. 利用可执行内存挑战DEP
12.5. 利用.NET挑战DEP
12.6. 利用Java applet挑战DEP
第13章 在内存中躲猫猫:ASLR
13.1. 内存随机化保护机制的原理
13.2. 攻击未启用ASLR的模块
13.3. 利用部分覆盖进行定位内存地址
13.4. 利用Heap spray技术定位内存地址
13.5. 利用Java applet heap spray技术定位内存地址
13.6. 为.NET控件禁用ASLR
第14章 S.E.H终极防护: SEHOP
14.1. SEHOP的原理
14.2. 攻击返回地址
14.3. 攻击虚函数
14.4. 利用未启用SEHOP的模块
14.5. 伪造S.E.H链表
第15章 重重保护下的堆
15.1. 堆保护机制的原理
15.2. 攻击堆中存储的变量
15.3. 利用chunk重设大小攻击堆
15.4. 利用Lookaside表进行堆溢出
(本篇除工具介绍修订于第一篇外,其他均为新增内容)
第三篇 漏洞挖掘篇
第16章 漏洞挖掘技术简介
16.1. 漏洞挖掘概述
16.2. 建立测试环境
16.3. 利用Python脚本进行自动化测试
16.4. 常用的测试工具简介
16.4.1. SPIKE
16.4.2. COMRaider
16.4.3. beSTORM简介
16.5. 静态代码审计
第17章 Smart Fuzz与文件类型漏洞的挖掘
17.1 Smart Fuzz概述
17.1.1 文件格式Fuzz的基本方法
17.1.2 Blind Fuzz 和 Smart Fuzz
17.2 用Peach挖掘文件漏洞
17.2.1 Peach介绍及安装
17.2.2 XML介绍
17.2.3定义简单的 Peach Pit
17.2.4定义数据之间的依存关系
17.2.5用Peach Fuzz PNG文件
17.3 010脚本,复杂文件解析的瑞士军刀
17.3.1 010 Editor简介
17.3.2 010脚本编写入门
17.3.3 010脚本编写提高 —— PNG文件解析
17.3.4 深入解析,深入挖掘 —— PPT文件解析
第18章 FTP的漏洞挖掘
18.1. FTP协议简介
18.2. 挖掘FTP漏洞
18.2.1. FTP协议的手工测试
18.2.2. 漏洞挖掘案例:Easy FTP Server v1.7.0.2 CWD 命令远程溢出
18.2.3. 自动化测试工具FTPFuzz
18.3. 发现FTP非内存漏洞
18.3.1. FTP服务程序的特殊性
18.3.2. CompleteFTP Server跨目录访问漏洞
18.4. 开发自动化FTP协议测试工具
第19章 E-Mail的漏洞挖掘
19.1. 挖掘SMTP漏洞
19.1.1. SMTP协议简介
19.1.2. SMTP协议测试方法
19.1.3. 漏洞挖掘案例:MailCarrier 2.51 SMTP HELO溢出漏洞
19.2. 挖掘POP3漏洞
19.2.1. POP3协议简介
19.2.2. POP3协议的测试方法
19.2.3. 漏洞挖掘案例:TurboMail 4.3 POP3远程拒绝服务漏洞漏洞
19.3. 挖掘IMAP4漏洞
19.3.1. IMAP4协议简介
19.3.2. IMAP4协议的测试方法
19.3.3. 漏洞挖掘案例:TurboMail 4.3 IMAP4协议远程拒绝服务漏洞
19.4. 非内存类的漏洞
19.4.1. 邮件服务程序的远程管理模式
19.4.2. Kerio Mailserver管理用户权限越界漏洞
19.4.3. CompleteFTP Server跨目录访问漏洞
第20章 ActiveX控件的漏洞挖掘
20.1. ActiveX控件简介
20.1.1. 浏览器与ActiveX控件的关系
20.1.2. 权限的区分
20.1.3. 注册表中的位置
20.1.4. KillBit的意义
20.2. 测试ActiveX控件
20.2.1. 测试环境的建立
20.2.2. 解析COM文件
20.2.3. 获取控件的接口
20.2.4. 基本的测试思路
20.3. ActiveX漏洞挖掘实战
20.3.1. ActiveX漏洞的分类
20.3.2. 内存溢出:超星阅读器ActiveX执行任意代码
20.3.3. 越权查找文件:微软COMCT233.OCX控件远程文件判断漏洞
20.3.4. 越权读取文件:Cell ActiveX Control远程窃取用户文件漏洞
20.3.5. 越权删除文件:卡巴斯基6.0远程任意删除文件漏洞
20.4. ActiveX控件漏洞攻击的防范
(本篇完全为新增内容)
第四篇 操作系统内核安全篇
第21章 内核漏洞介绍
21.1. 内核漏洞概述
21.2. 内核漏洞的分类
21.3. 内核漏洞的作用
21.4. 内核漏洞的成因
21.5. 内核漏洞的研究过程
21.5.1. 漏洞学习过程
21.5.2. 漏洞挖掘过程
第22章 内核程序漏洞分析
22.1. 内核漏洞分析方法
22.1.1. 内核调试跟踪
22.1.2. 蓝屏分析
22.2. 内核漏洞举例分析
22.2.1. 远程拒绝服务内核漏洞
22.2.2. 本地拒绝服务内核漏洞
22.2.3. 远程缓冲区溢出内核漏洞
22.2.4. 本地缓冲区溢出内核漏洞
22.2.5. 任意地址写任意数据内核漏洞
22.2.6. 固定地址写任意数据内核漏洞
22.2.7. 任意地址写固定数据内核漏洞
22.2.8. 设计缺陷内核漏洞
第23章 内核程序漏洞利用
23.1. 内核漏洞利用思路
23.2. 内核漏洞利用方法
23.3. 内核漏洞利用实战与编程
第24章 内核程序漏洞挖掘
24.1. 内核漏洞挖掘心态
24.2. 内核漏洞挖掘思路
24.3. 现有的挖掘工具
24.4. 自己开发挖掘工具
24.4.1. Fuzz对象、Fuzz策略、Fuzz项
24.4.2. IoControl MITM Fuzz
24.4.3. IoControl Driver Fuzz
24.4.4. MyIoControl Fuzzer
24.5. 内核漏洞挖掘实战
24.5.1. 超级巡警ASTDriver.sys本地提权漏洞
24.5.2. 东方微点mp110013.sys本地提权漏洞
24.5.3. 瑞星HookCont.sys驱动本地拒绝服务漏洞
第25章 内核程序漏洞防御
25.1. 输入输出检查
25.2. 安全验证和过滤
25.3. 安全编码
25.4. 白名单机制的挑战
第26章 内核程序漏洞前景
26.1. 内核漏洞的总结
26.2. 内核漏洞的前景
(本篇少数章节修订于第一版,其他均为新增内容)
第五篇 漏洞案例分析篇
第27章 漏洞分析技术概述
27.1. 漏洞分析的思想方法
27.2. 运动中寻求突破:调试技术
27.2.1. 断点技巧
27.2.2. 回溯思路
27.3. 指令追踪技术:“白眉”
27.3.1. 指令追踪技术与Paimei
27.3.2. Paimei的安装
27.3.3. 使用PE Stalker
27.3.4. 迅速定位特定功能对应的代码
27.4. 事后诸葛亮:补丁比较技术
第28章 MS08-067分析:系统入侵与蠕虫
28.1. MS08-067 简介
28.2. 漏洞分析
28.2.1. 动态调试
28.2.2. 静态分析
28.3. 远程Exploit
28.3.1. RPC编程简介
28.3.2. MS08-067与蠕虫
第29章 MS06-055分析:实践Heap Spray
29.1. MS06-055简介
29.1.1. 矢量标记语言(VML)简介
29.1.2. 0 day安全响应纪实
29.2. 漏洞分析
29.3. 漏洞利用 实践Heap Spray技术
第30章 MS09-032分析:一个“&”引发的血案
30.1. MS09-032简介
30.2. 漏洞原理及利用分析
第31章 坝之蚁穴:LVBA(铝霸)超长URL溢出漏洞
31.1. LVBA(铝霸)简介
31.2. 漏洞说明
31.3. 漏洞原理及利用分析
第32章 CVE-2009-0927:PDF中的JS
32.1. 漏洞简介
32.2. PDF文件格式简介
32.3. 漏洞原理及利用分析
第33章 暴风影音0day分析
33.1. 漏洞简介
33.2. M3U文件简介
33.3. 漏洞原理及利用分析
第34章 美中不足-Q播远程溢出0day
34.1. 漏洞简介
34.2. 漏洞分析
34.3. 漏洞利用
第35章 PP点点通畸形文件溢出漏洞
35.1. 漏洞简介
35.2. 漏洞分析
35.3. 漏洞利用
第36章 非内存漏洞分析
36.1. TurboMail 4.3邮件系统XSS 0day漏洞
36.2. 路径遍历漏洞
36.3. LNK快捷方式文件漏洞
(本篇内容修订于第一版)
第六篇 软件安全
第37章 从开发者的角度看软件安全
37.1. Threat Modeling
37.1.1. 明确风险与攻击向量
37.1.2. 用攻击者的思维来验证系统设计
37.2. 编写安全的代码
37.3. 输入输出检查
37.4. 使用安全编译选项及内存保护技术
37.5. 产品安全性测试
37.6. 漏洞管理与应急响应
第38章 产品安全实践举例
附录
已公布的内核程序漏洞列表
其他参考资料
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课