捉虫日记
2012-9
人民邮电出版社
Tobias Klein
180
202000
张伸
无
欢迎阅读《捉虫日记》。这本书描述了过去几年里我发现的七个有趣、真实的软件安全漏洞的过程。每章侧重于一个bug。我将解释是怎么找出这个bug 的,利用它的步骤,以及开发者最终怎样给它打补丁。 内容简介 本书主要是从实践的角度向你展示捉虫的世界。读过本书后,你将会对捉虫人用以发现安全漏洞的方法、如何用“概念验证”代码(proof-of-concept code)测试漏洞,以及如何向开发者报告漏洞有更好的理解。 另外,本书还介绍了这七个bug 背后的故事。这些故事很有价值。 目标读者 本书的目标读者是安全研究人员、安全顾问、C/C++程序员、入侵测试员(penetration tester),以及任何想投身到捉虫这个令人激动的世界中的人。为更好地理解书中内容,你应该扎实掌握C 语言,并且对x86 汇编很熟悉。 如果你是漏洞研究领域的新人,本书能帮你了解捉虫、漏洞利用以及报告软件漏洞的方方面面。如果你是经验丰富的捉虫老手,针对你已熟悉的各种挑战,本书可以提供新的视角,而且会时不时让你会心一笑。 免责声明 本书的目标是教授读者如何识别、抵御以及缓解软件的安全漏洞。理解用以寻找并利用漏洞的技术对于彻底掌握底层问题以及适当的缓解技术是必要的。2007 年以来,制作或传播“黑客工具”在我的祖国德国已是违法的。这些工具包括简单的端口扫描程序和有效的漏洞利用程序。因此,为遵守法律,本书中不会提供完整的漏洞利用程序代码。所有的示例仅仅显示控制漏洞程序执行流(指令指针或者程序计数器控制)的步骤。
《捉虫日记》从实践角度介绍安全漏洞,描述了作者在过去几年里怎样发现漏洞、怎样利用漏洞来攻击以及开发商如何修复,旨在为开发人员提醒,为漏洞研究领域的工作人员提供工作思路。
《捉虫日记》适合所有程序员以及安全领域相关工作人员。
Tobias Klein 德国著名信息安全咨询与研究公司NESO安全实验室创始人,资深软件安全研究员,职业生涯中发现的软件安全漏洞无数,更曾为苹果、微软等公司的产品找出不少漏洞。除本书外,还出版过两本信息安全方面的德文作品。
目 录
第1章 捉虫 1
1.1 兴趣还是利益 2
1.2 通用技巧 2
1.2.1 个人技术偏好 2
1.2.2 代码中潜在的漏洞 3
1.2.3 模糊测试 3
1.2.4 延伸阅读 3
1.3 内存错误 4
1.4 专用工具 4
1.4.1 调试器 4
1.4.2 反汇编工具 5
1.5 EIP=41414141 5
1.6 结束语 6
第2章 回到90年代 7
2.1 发现漏洞 8
2.1.1 第一步:生成VLC中解复用器的清单 8
2.1.2 第二步:识别输入数据 8
2.1.3 第三步:跟踪输入数据 9
2.2 漏洞利用 11
2.2.1 第一步:找一个TiVo格式的样例电影文件 11
2.2.2 第二步:找一条代码路径执行到漏洞代码 11
2.2.3 第三步:修改这个TiVo电影文件,使VLC崩溃 14
2.2.4 第四步:修改这个TiVo电影文件,控制EIP 15
2.3 漏洞修正 16
2.4 经验和教训 20
2.5 补充 21
第3章 突破区域限制 24
3.1 发现漏洞 24
3.1.1 第一步:列出内核的IOCTL 25
3.1.2 第二步:识别输入数据 26
3.1.3 第三步:跟踪输入数据 27
3.2 漏洞利用 34
3.2.1 第一步:触发这个空指针解引用,实现拒绝服务 34
3.2.2 第二步:利用零页内存控制EIP/RIP 38
3.3 漏洞修正 47
3.4 经验和教训 48
3.5 补充 48
第4章 空指针万岁 50
4.1 发现漏洞 50
4.1.1 第一步:列出FFmpeg的解复用器 51
4.1.2 第二步:识别输入数据 51
4.1.3 第三步:跟踪输入数据 52
4.2 漏洞利用 55
4.2.1 第一步:找一个带有有效strk块的4X样例电影文件 55
4.2.2 第二步:了解这个strk块的布局 55
4.2.3 第三步:修改这个strk块以使 FFmpeg崩溃 57
4.2.4 第四步:修改这个strk块以控制EIP 60
4.3 漏洞修正 65
4.4 经验和教训 68
4.5 补充 68
第5章 浏览即遭劫持 70
5.1 探寻漏洞 70
5.1.1 第一步:列出WebEx注册的对象和导出方法 71
5.1.2 第二步:在浏览器中测试导出方法 73
5.1.3 第三步:找到二进制文件中的对象方法 74
5.1.4 第四步:找到用户控制的输入数值 76
5.1.5 第五步:逆向工程这个对象方法 78
5.2 漏洞利用 81
5.3 漏洞修正 83
5.4 经验和教训 83
5.5 补充 83
第6章 一个内核统治一切 85
6.1 发现漏洞 85
6.1.1 第一步:为内核调试准备一个VMware客户机 86
6.1.2 第二步:生成一个avast!创建的驱动和设备对象列表 86
6.1.3 第三步:检查设备的安全设置 87
6.1.4 第四步:列出IOCTL 89
6.1.5 第五步:找出用户控制的输入数据 94
6.1.6 第六步:逆向工程IOCTL处理程序 97
6.2 漏洞利用 101
6.3 漏洞修正 107
6.4 经验和教训 107
6.5 补充 108
第7章 比4.4BSD还老的BUG 110
7.1 发现漏洞 110
7.1.1 第一步:列出内核的IOCTL 111
7.1.2 第二步:识别输入数据 111
7.1.3 第三步:跟踪输入数据 113
7.2 漏洞利用 116
7.2.1 第一步:触发这个bug使系统崩溃(拒绝服务) 116
7.2.2 第二步:准备一个内核调试的环境 118
7.2.3 第三步:连接调试器和目标系统 118
7.2.4 第四步:控制EIP 120
7.3 漏洞修正 125
7.4 经验和教训 126
7.5 补充 126
第8章 铃音大屠杀 129
8.1 发现漏洞 129
8.1.1 第一步:研究iPhone的音频性能 130
8.1.2 第二步:创建一个简单的模糊测试程序对这个手机进行模糊测试 130
8.2 崩溃分析及利用 136
8.3 漏洞修正 142
8.4 经验和教训 143
8.5 补充 143
附录A 捉虫提示 145
附录B 调试 158
附录C 缓解技术 170
版权页: 插图:
译 者 序2011 年12 月发生的一系列网站账号密码泄漏事件,使得网络安全再一次成了IT 圈里圈外的热门话题,电商的蓬勃发展也把安全问题甩到我们面前。在一些程序员社区里,大家愤愤声讨那些账号密码泄漏的网站。作为IT 人,声讨之后我们更应该回头看看自己写的代码,反思自己在编写安全代码方面的表现。读这本书的时候,我时常面红耳赤、冷汗不离身。有太多我们不知道、不熟悉、不注意的编码是存在隐患、很容易被利用攻击的。这是一本讲述安全漏洞的书。作者用实际的例子讲解他是怎样发现这些漏洞、怎样利用漏洞来攻击,以及开发商是怎样修复这些漏洞的。作者的知识面广且深。这些看上去很艰深的安全漏洞话题,作者用日记的方式娓娓道来,条理清楚,化繁为简,向读者展示了本不该陌生的世界。感谢王江平(新浪微博@steedhorse),感谢李琳骁(新浪微博@veldts)。在翻译这本书的过程中,他们给了我很大的帮助和鼓励,并审校了全部译稿,除了修正了许多问题,还在文字表达上给了我非常多的建议和指导。感谢CSDN 的老朋友青润、西西、一醉千年、dayadream、cxs1991 和purpleendurer,博客园的嗷嗷、小AI 和坐看云起,lava 微博的魏忠老师(新浪微博@shukebeta),豆瓣的直立行走的喵,静静(新浪微博@风平浪静)、秃子(新浪微博@不许说话)和Roland(新浪微博@Roland_Xu),感谢译言网和译言的nc和异议等朋友们。书中的任何疏漏、错误都与他们无关,我应负全责。感谢家人对我的关心、支持和容忍。读者有任何的批评、意见,都可以发邮件给我(ericnomail@gmail.com),或者到新浪微博上联系我(@loveisbug)。发现任何错误都可以提交到图灵社区http://www.ituring.com.cn/book/909。我都非常感谢。
信息安全技术专家作品专业网站好评如潮真实再现流行软件漏洞发现全过程作者多年积累的知识和工作经验精华分享
无
这书真的是笔记啊~想学习找bug的人都可以看看学习学习
挺有意思的一本书,了解了一些这方面的观点
灰常好的一本书,精简精要。
这本书讲述了作者寻找软件bug的整个过程,是很好的一本书,向人们展示了思考的一个过程
可能适合通晓底层的人看吧,对我来说是浪费了。
改bug的书
意想不到的薄
比较有用,比较有用,比较有用
好书,蛮好的