捉虫日记

当前位置:首页 > 计算机网络 > 信息安全 > 捉虫日记

出版社:人民邮电出版社
出版日期:2012-9
ISBN:9787115290441
作者:Tobias Klein
页数:180页

作者简介

《捉虫日记》由克莱恩所著,《捉虫日记》从实践角度介绍安全漏洞,描述了作者在过去几年里怎样发现漏洞、怎样利用漏洞来攻击以及开发商如何修复,旨在为开发人员提醒,为漏洞研究领域的工作人员提供工作思路。

书籍目录

目   录
第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

编辑推荐

信息安全技术专家作品专业网站好评如潮真实再现流行软件漏洞发现全过程作者多年积累的知识和工作经验精华分享

前言

  欢迎阅读《捉虫日记》。这本书描述了过去几年里我发现的七个有趣、真实的软件安全漏洞的过程。每章侧重于一个bug。我将解释是怎么找出这个bug 的,利用它的步骤,以及开发者最终怎样给它打补丁。  内容简介  本书主要是从实践的角度向你展示捉虫的世界。读过本书后,你将会对捉虫人用以发现安全漏洞的方法、如何用“概念验证”代码(proof-of-concept code)测试漏洞,以及如何向开发者报告漏洞有更好的理解。  另外,本书还介绍了这七个bug 背后的故事。这些故事很有价值。  目标读者  本书的目标读者是安全研究人员、安全顾问、C/C++程序员、入侵测试员(penetration tester),以及任何想投身到捉虫这个令人激动的世界中的人。为更好地理解书中内容,你应该扎实掌握C 语言,并且对x86 汇编很熟悉。  如果你是漏洞研究领域的新人,本书能帮你了解捉虫、漏洞利用以及报告软件漏洞的方方面面。如果你是经验丰富的捉虫老手,针对你已熟悉的各种挑战,本书可以提供新的视角,而且会时不时让你会心一笑。  免责声明  本书的目标是教授读者如何识别、抵御以及缓解软件的安全漏洞。理解用以寻找并利用漏洞的技术对于彻底掌握底层问题以及适当的缓解技术是必要的。2007 年以来,制作或传播“黑客工具”在我的祖国德国已是违法的。这些工具包括简单的端口扫描程序和有效的漏洞利用程序。因此,为遵守法律,本书中不会提供完整的漏洞利用程序代码。所有的示例仅仅显示控制漏洞程序执行流(指令指针或者程序计数器控制)的步骤。 

内容概要

Tobias Klein  德国著名信息安全咨询与研究公司NESO安全实验室创始人,资深软件安全研究员,职业生涯中发现的软件安全漏洞无数,更曾为苹果、微软等公司的产品找出不少漏洞。除本书外,还出版过两本信息安全方面的德文作品。
张伸 不合格码农。爱咖啡,爱葡萄酒。爱听布鲁斯,也爱吃巧克力。不小资,不文青,只是喜欢收藏图书和CD。慢生活,每天听相声才能入睡。twitter和新浪微博:@loveisbug。

媒体关注与评论

译 者 序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。我都非常感谢。

章节摘录

版权页:   插图:  

图书封面


 捉虫日记下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计6条)

  •     我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了
  •     对于苦逼的IT男而言,对下面这个场景应该感到亲切。发出去的软件版本出现了bug,事情很紧急,于是大佬召集所谓一堆专家头脑风暴寻求解bug的思路,各路专家你一言我一语各抒己见,最终在众人齐心协力下,终于在最后关头定位出了根因。没有解不了的bug,只有不努力的coder。然而这个世界上还有另外一种人,他们也是解bug,只不过是找别人软件中的bug,他们通常被我们称之为hacker。同样是解bug,主动去找的就被称为黑客,被称作漏洞攻击,是人人都崇拜的行为艺术,就像街头弹吉他的青年歌手一样;而被动去定位的则被称为IT码农,被称作问题攻关,是人人都摇头的养家糊口,就像路边上拉二胡的老人一样。所以,不同的心态就会有不同的境界。凡事都要主动的好,这跟追女孩子是一个道理,美女身边有那么多人在追她,你不努力,美女怎么可能会想起你来哪?当然,你努力了,美女也未必会想起你来 :)《捉虫日记》这本书的作者Tobias Klein就是那种可以被称之为hacker的人。作者热衷于找各个os的bug,这本书描述了作者找到的7个bug,他详细的记录了如何去寻找bug,以及如何利用这个bug,当然他也给出了每个bug的解决方案。像作者这种hacker,或者说geeker,应该会有twitter的,于是我翻墙搜了下,他的确开通了twitter,twitter账号是 @ tobiklein ,虽然作者是德国人,可是所发推文都是英文。可见,要想在twitter这个世界混的好,就得学会用英文,否则就只能在自己那个狭窄的母语圈来混了。而中文推特圈,则以狭隘、偏激而著称,至于原因,你懂的。Tobias Klein在10年3月31日发了一条推文“My new book just got released!”,指的就是这本书。至今为止Tobias Klein所发推文不多,从他的推文可以看出,他现在应该主要在研究iOS的bug。下面是作者这本书里面7个例子的大致介绍。作者讲的第一个例子是个典型的栈缓冲区溢出(stack overflow)的例子。下面是个简单的stackoverflow示例程序。/*stackoverflow.c*/void overflow(char *argc){char buff[8];strcpy(buff, argc);}int main(int argc, char *argv[]){if(argc > 1){overflow(argv[1]);}return 0;}对于上面这个简单的程序,如果我们输入的数据长度大于8,就会发生栈缓冲区溢出。这里涉及的知识点有栈桢、数组。注意在linux下使用gcc来编译时要禁用gcc的堆栈保护才会stackoverflow,使用-fno-stack-protector编译选项。作者在twitter上也提到了几个stack overflow的bug,是iOS和MacOS的。看来栈缓冲区溢出这个bug太容易犯了,因为字符串操作函数strcpy()和strcat()很容易导致出错。这也是很多hacker热衷于寻找的一类bug。作者讲的第二个例子是solaris内核中内核态和用户态接口的一个bug。作者一直喜欢寻找操作系统内核漏洞,所以就拿solaris来开刀了,为什么不选择linux kernel哪?linux使用的人多,影响又大,而solaris则日薄西山了。对于操作系统而言,内核/用户态接口是最容易产生漏洞的地方。这些接口主要是以下几种:1) ioctl2) syscall3) 文件系统网络协议栈4) 第三方ko注册的钩子作者发现的一个bug是ioctl的bug。作者讲的第三个例子是空指针的一个bug。对于空指针,我想起一些工作上的事。有些新手经常问如何简单的让linux内核panic,我告诉他们访问一个null指针就好了。过了会,他们给我说,访问空指针的结果是segment fault,不是panic。我只好无奈的再解释,要写个ko,在内核态往null地址写数据就panic了,用户态出错,最多进程被杀死,是不会导致系统崩溃的。作者讲的第四个例子是浏览器ActiveX控件的一个bug。我对windows编程不太熟悉,此例不多言。作者讲的第五个例子是windows驱动的bug。用作者自己的话说,他想看看能不能在非开源的系统(比如windows)上找到bug。作者还特意把枪口瞄向了杀毒软件,真是大水冲龙王庙,自家人不认自家人啊。最终作者还真找到了bug,并通知给了杀毒软件厂商,他们及时的做了修复。第六个例子是MacOS的一个bug,看来作者是要通吃所有的操作系统啊。怪不得作者不找linux的麻烦,是嫌降低自己的身份啊!这个MacOS的bug依然是ioctl的bug,看来作者认定了所有os的ioctl都会有bug。最后一个例子是作者寻找iPhoneOS的bug,好吧,你赢了,你是真正的内核hacker。我只是一个内核码农,还只略微懂点linux的。虽然作者针对的是每个os的bug,但是这些bug都是最基础的编程问题。一招鲜吃遍天,只要你编程能力强,通吃所有的os只是你愿不愿意的问题。至于这本书的翻译,张伸,他也有twitter账号(@loveisbug),他竟然也是个足球迷。看在他是足球迷的份上,好吧,这本书翻译的挺好的。本来我是打算follow一下这位译者的,后来看到了它的一个推文,就不打算follow他了。他的推文是:“请教,a backtrace of all stack frames是什么意思?backtrace是函数调用栈吗?”。在这里回答译者一下:一个函数调用可以称之为一个栈帧,backtrace就是栈帧的集合,也就是函数调用栈。而缓冲区溢出(stack overflow)利用的的基本原理就是栈帧。使用gdb的bt命令就能够看出当前函数的调用栈。
  •     作者简介Tobias Klein,安全问题研究员,创办NESO安全实验室,NESO是一家位于德国海尔布伦的信息安全咨询、研究公司。身为安全漏洞研究人员,Tobias发现了许多安全漏洞,并帮助修复它们。他也出版了另外两本信息安全领域的著作,由海德堡的出版商dpunkt在德国发行。这本书在亚马逊上有21个评论:★★★★★ 13个★★★★ 8个亚马逊书评1. 切中要害评分:★★★★★有用:10/10作者:Happy Cat这本书短小精悍,阅读体验极佳。它不像其它一些书那样包罗万象,譬如《The Art Of Software Security Assessment》,这一整本《捉虫日记》几乎都是很有价值的内容。每一章,作者完美地展示了如何走查发现漏洞,并且以直接、易懂的方式解释了思考的过程。简要列举了合理的漏洞披露途径,很好地解释了为什么捉虫人会穷尽其能。最后,很高兴能看到作者跟踪补丁包并确定所产生的漏洞。Tobias Klein以简洁的方式全面、详细地介绍了他发现这些漏洞的过程。他准确地切中要害,不断地剖析、研究易受攻击的代码,用合适的条件和数据来触发这些代码。对比每一章里披露漏洞时间线的差异也是一件很有趣的事情。中立地说,开源项目打补丁的速度远快于那些由庞大组织经营的项目。不确定作者是否故意这样安排,但终归是很有趣的。这是一个简短但有趣的阅读体验,适合任何对漏洞分析和漏洞利用程序开发有兴趣的朋友。2. 一本引人入胜的研究书籍评分:★★★★★作者:bobblestiltskin读这本书让我受益匪浅。作者知识面之广、研究之深给我留下深刻印象。每一章都专注在一个不同的操作系统上,介绍一个新的分析技术。作者的写作风格也很吸引人——每当我坐下开始阅读,就很难放手。阅读此书就好像坐在Tobias的肩上,看他明确目标,然后一步步实现,获取对软件的控制。必须加一句免责声明,我是从出版社收到审读副本的。但是我很高兴做出这个选择!3. 优点:很快能读完。缺点:太快就读完。评分:★★★★有用:2/2作者:Tod Beardsley "Security Dork"全面披露:我收到这本书的审校副本。所以本书的重点是它可以很快读完,但令人沮丧的是它太短了。我喜欢作者Tobias和NoStarch出版社对这本书的设计安排——每一章都详细(并不过分)地介绍一个作者独立发现的具体的bug。对话式的行文,井井有条,因此如果你有捉虫和调试方面的背景,不会遇到什么问题。如果你是在寻找一本教你如何通过寻找0day漏洞赚钱的书,这本书不是。如果你是在寻找这样一本书,用实例讲解你在别处读到的漏洞研究技术,选这本书就对了。我的抱怨主要是关于篇幅——实在是太快就读完了。我希望能再增加五、六章,内容涉及封闭源代码的Windows客户端应用程序。4. 发表在Ask Felgall上的书评评分:★★★★有用:5/5作者:Stephen Chapman阅读这本书会永久地改变你对计算机软件的看法。书中所讨论的安全漏洞都是在现实世界中各种平台上极流行软件中发现的,通过几个例子清晰地展示了大多数软件中通常都会有的这些漏洞。要想完全理解这本书的内容,需要掌握相当高水准的编程知识,包括高级编程语言譬如C++和底层汇编语言。当然,这不是必须的,任何知识背景的读者都能从中有所收获。书中非常详细地介绍了每一处代码的更改,没有深厚编程知识背景的读者也能容易理解,如此改变代码会导致特定的结果,并能更好地理解软件有多脆弱。毕竟这都是作者在常用软件里找到的真实漏洞。作者在演示发现并利用漏洞的一些方法的同时,也展示了他是如何帮助软件开发者给漏洞打上补丁的。也许这本书中关于软件安全话题最突出的是一个有经验的捉虫人是多么容易发现一个安全漏洞,其次是修复一个安全漏洞往往只需要修改一小处代码。作者在书的开头介绍了写作本书的目的,他确实做到了。阅读时我注意到作者的一句评论:“一台崭新的MacBook:1,149美元。一台LED影院显示器:899美元。仅用11行代码让Mac OS X系统崩溃:无价”。实际上那段代码有3个空行,而且如果换一种编码风格的话还可以减少几行,在我看来那段代码是6行或者甚至是5行,而不是11行。【from 图灵社区】http://www.ituring.com.cn/article/16342

精彩短评 (总计30条)

  •     意想不到的薄
  •     虽然超过50%以上的内容似懂非懂甚至就直接不懂,对于我这种只会用有界面的ide集成的调试器来调试程序,没接触过什么随随便便上万行代码的源码文件的人来说,看到这本书简直就像遇到了世外高人一样,顶礼摩拜;顺道还入门了解了一下什么是调试,作者附带的网站链接听说十分有价值
  •     这本书讲述了作者寻找软件bug的整个过程,是很好的一本书,向人们展示了思考的一个过程
  •     绝壁一本好书啊 赞 一种格蠹汇编的感觉 感觉比格蠹汇编还赞 就是太短了不够看 小人书的体积里有大智慧
  •     搁置
  •     看着不明觉厉的样子
  •     看来这本书有点震惊,自己以前编的东西真是留了不少坑啊,以后的路上尽自己的力量少留点坑。
  •     这本书 快看晕了,作者真牛
  •     灰常好的一本书,精简精要。
  •     比较有用,比较有用,比较有用
  •     不错,能让你高潮的书
  •     终于读完了,一天两例,逼着自己读完了,大概弄清楚,但是debug tool不会用,没有任何经验积累,只停留在懂的层次
  •     挺有意思的一本书,了解了一些这方面的观点
  •     很有趣的捉虫记录,翻译也非常好。即使你不从事安全领域的工作,你也应该对作者捉到的虫子类型有警醒意识了。
  •     好书,简洁易懂,但是可以想见在这简单的表面之下做了多少艰深的工作。膜拜
  •     给代码安全漏洞检测指明了大方向,也从反面对程序员提供了编写安全代码的警示。
  •     唯一可惜的地方是时间居然是2007年的。。。
  •     讲了8个缓冲区溢出漏洞的故事,从发现BUG,到利用BUG的整个过程。
  •     可能适合通晓底层的人看吧,对我来说是浪费了。
  •     漏洞挖掘的最佳入门读物了吧
  •     这书真的是笔记啊~想学习找bug的人都可以看看学习学习
  •     讲解详尽,不可多得的经验之谈!
  •     读这本书最好有很好的C语言基础和代码阅读能力,否则看起来很吃力
  •     记得十年前刚工作那会儿,会用IIS diag tool分析一下dump,看看哪里是Memory leak或者application crash就已经觉得小牛了,哪想到遇上高手windbg用起来得心应手,各种断点,stack trace,寄存器 watch,耍得风生水起。当一个人就如本书的作者对操作系统和汇编有深厚的基础,那这个人就不是一个programmer而是一个真正的hacker了,里面的故事都非常棒!更棒的“缓冲区溢出”真的是操作系统的噩梦啊T_T
  •     有趣,翻译其实很不错
  •     好书,蛮好的
  •     适合入门。虽是数年前的案例却充满真知灼见。
  •     没太仔细看,但是感觉找漏洞必须要有很强的代码阅读能力。
  •     改bug的书
  •     写得非常好,从手边例子出发去理解程序安全
 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024