0day安全:软件漏洞分析技术(第2版)
基本信息
编辑推荐
系统、全面地介绍了windows平台缓冲区溢出漏洞的分析、检测与防护
带领您一步一步地完成调试的每一步,并在这个过程中逐步解释漏洞分析思路。
可作为网络安全从业人员、黑客技术发烧友的参考指南
推荐阅读
内容简介回到顶部↑
《0day安全:软件漏洞分析技术(第2版)》分为5篇33章,系统、全面地介绍了windows平台缓冲区溢出漏洞的分析、检测与防护。第一篇为漏洞exploit的基础理论和初级技术,可以引领读者迅速入门;第二篇在第一篇的基础上,结合国内外相关研究者的前沿成果,对漏洞技术从攻、防两个方面进行总结;第三篇站在安全测试者的角度,讨论了几类常用软件的漏洞挖掘方法与思路;第四篇则填补了本类书籍在windows内核安全及相关攻防知识这个神秘领域的技术空白;第五篇以大量的0 day案例分析,来帮助读者理解前四篇的各类思想方法。
《0day安全:软件漏洞分析技术(第2版)》可作为网络安全从业人员、黑客技术发烧友的参考指南,也可作为网络安全专业的研究生或本科生的指导用书。
《0day安全:软件漏洞分析技术(第2版)》可作为网络安全从业人员、黑客技术发烧友的参考指南,也可作为网络安全专业的研究生或本科生的指导用书。
目录回到顶部↑
《0day安全:软件漏洞分析技术(第2版)》
第1篇 漏洞利用原理(初级)
第1章 基础知识 2
1.1 漏洞概述 2
1.1.1 bug与漏洞 2
1.1.2 几个令人困惑的安全问题 2
1.1.3 漏洞挖掘、漏洞分析、漏洞利用 3
1.1.4 漏洞的公布与0 day响应 5
1.2 二进制文件概述 5
1.2.1 pe文件格式 5
1.2.2 虚拟内存 6
1.2.3 pe文件与虚拟内存之间的映射 7
1.3 必备工具 11
1.3.1 ollydbg简介 11
1.3.2 softice简介 11
1.3.3 windbg简介 16
1.3.4 ida pro简介 18
1.3.5 二进制编辑器 20
1.3.6 vmware简介 21
1.3.7 python编程环境 28
第1篇 漏洞利用原理(初级)
第1章 基础知识 2
1.1 漏洞概述 2
1.1.1 bug与漏洞 2
1.1.2 几个令人困惑的安全问题 2
1.1.3 漏洞挖掘、漏洞分析、漏洞利用 3
1.1.4 漏洞的公布与0 day响应 5
1.2 二进制文件概述 5
1.2.1 pe文件格式 5
1.2.2 虚拟内存 6
1.2.3 pe文件与虚拟内存之间的映射 7
1.3 必备工具 11
1.3.1 ollydbg简介 11
1.3.2 softice简介 11
1.3.3 windbg简介 16
1.3.4 ida pro简介 18
1.3.5 二进制编辑器 20
1.3.6 vmware简介 21
1.3.7 python编程环境 28
前言回到顶部↑
关于安全技术人才
国内外对网络安全技术人才的需求量很大,精通缓冲区溢出攻击的安全专家可以在大型软件公司轻易地获得高薪的安全咨询职位。
信息安全技术是一个对技术性要求极高的领域,除了扎实的计算机理论基础外,更重要的是优秀的动手实践能力。在我看来,不懂二进制数据就无从谈起安全技术。
国内近年来对网络安全的重视程度正在逐渐增加,许多高校相继成立了“信息安全学院”或者设立“网络安全专业”。科班出身的学生往往具有扎实的理论基础,他们通晓密码学知识、知道PKI体系架构,但要谈到如何真刀实枪地分析病毒样本、如何拿掉PE上复杂的保护壳、如何在二进制文件中定位漏洞、如何对软件实施有效的攻击测试……能够做到的人并不多。
虽然每年有大量的网络安全技术人才从高校涌入人力市场,真正能够满足用人单位需求的却寥寥无几。捧着书本去做应急响应和风险评估是滥竽充数的作法,社会需要的是能够为客户切实解决安全风险的技术精英,而不是满腹教条的阔论者。
我所认识的很多资深安全专家都并非科班出身,他们有的学医、有的学文、有的根本没有学历和文凭,但他们却技术精湛,充满自信。
这个行业属于有兴趣、够执著的人,属于为了梦想能够不懈努力的意志坚定者。
关于“Impossible”与“I’m possible”
从拼写上看,“Impossible”与“I’m possible”仅仅相差一个用于缩写的撇号(apostrophe)。学完《0day安全:软件漏洞分析技术(第2版)》之后,您会发现将“不可能(Impossible)”变为“可能(I’m possible)”的“关键(key point)”往往就是那么简单的几个字节,《0day安全:软件漏洞分析技术(第2版)》将要讨论的就是在什么位置画上这一撇!
从语法上看,“Impossible”是一个单词,属于数据的范畴;“I’m possible”是一个句子,含有动词(算符),可以看成是代码的范畴。学完《0day安全:软件漏洞分析技术(第2版)》之后,您会明白现代攻击技术的精髓就是混淆数据和代码的界限,让系统错误地把数据当作代码去执行。
从意义上看,To be the apostrophe which changed “Impossible” into “I’m possible” 代表着人类挑战自我的精神,代表着对理想执著的追求,代表着对事业全情的投入,代表着敢于直面惨淡人生的豪情……而这一切正好是黑客精神的完美诠释——还记得在电影《Sword Fish(剑鱼行动)》中,Stan在那台酷毙的计算机前坚定地说:“Nothing is impossible”,然后开始在使用Vernam加密算法和512位密钥加密的网络上,挑战蠕虫的经典镜头吗?
于是我在以前所发表过的所有文章和代码中都加入了这个句子。尽管我的英语老师和不少外国朋友提醒我,说这个句子带有强烈的“Chinglish”味道,甚至会引起Native Speaker的误解,然而我最终还是决定把它写进书里。
虽然我不是莎士比亚那样的文豪,可以创造语言,发明修辞,用文字撞击人们的心灵,但这句“Chinglish”的确能把我所要表达的含义精确地传递给中国人,这已足够。
关于《0day安全:软件漏洞分析技术(第2版)》
通常情况下,利用缓冲区溢出漏洞需要深入了解计算机系统,精通汇编语言乃至二进制的机器代码,这足以使大多数技术爱好者望而却步。
随着时间的推移,缓冲区溢出攻击在漏洞的挖掘、分析、调试、利用等环节上已经形成了一套完整的体系。伴随着调试技术和逆向工程的发展,Windows平台下涌现出的众多功能强大的debug工具和反汇编分析软件逐渐让二进制世界和操作系统变得不再神秘,这有力地推动了Windows平台下缓冲区溢出的研究。除此以外,近年来甚至出现了基于架构(Frame Work)的漏洞利用程序开发平台,让这项技术的进入门槛大大降低,使得原本高不可攀的黑客技术变得不再遥不可及。
遗憾的是,与国外飞速发展的高级黑客技术相比,目前国内还没有系统介绍Windows平台下缓冲区溢出漏洞利用技术的专业书籍,而且相关的中文文献资料也非常匮乏。
《0day安全:软件漏洞分析技术(第2版)》将系统全面地介绍Windows平台软件缓冲区溢出漏洞的发现、检测、分析和利用等方面的知识。
为了保证这些技术能够被读者轻松理解并掌握,《0day安全:软件漏洞分析技术(第2版)》在叙述中尽量避免枯燥乏味的大段理论阐述和代码粘贴。概念只有在实践中运用后才能真正被掌握,这是我多年来求学生涯的深刻体会。书中所有概念和方法都会在紧随其后的调试实验中被再次解释,实验和案例是《0day安全:软件漏洞分析技术(第2版)》的精髓所在。从为了阐述概念而精心自制的漏洞程序调试实验到现实中已经造成很大影响的著名漏洞分析,每一个调试实验都有着不同的技术侧重点,每一个漏洞利用都有自己的独到之处。
我将带领您一步一步地完成调试的每一步,并在这个过程中逐步解释漏洞分析思路。不管您是网络安全从业人员、黑客技术发烧友、网络安全专业的研究生或本科生,如果您能够完成这些分析实验,相信您的软件调试技术、对操作系统底层的理解等计算机能力一定会得到一次质的飞跃,并能够对安全技术有一个比较深入的认识。
国内外对网络安全技术人才的需求量很大,精通缓冲区溢出攻击的安全专家可以在大型软件公司轻易地获得高薪的安全咨询职位。
信息安全技术是一个对技术性要求极高的领域,除了扎实的计算机理论基础外,更重要的是优秀的动手实践能力。在我看来,不懂二进制数据就无从谈起安全技术。
国内近年来对网络安全的重视程度正在逐渐增加,许多高校相继成立了“信息安全学院”或者设立“网络安全专业”。科班出身的学生往往具有扎实的理论基础,他们通晓密码学知识、知道PKI体系架构,但要谈到如何真刀实枪地分析病毒样本、如何拿掉PE上复杂的保护壳、如何在二进制文件中定位漏洞、如何对软件实施有效的攻击测试……能够做到的人并不多。
虽然每年有大量的网络安全技术人才从高校涌入人力市场,真正能够满足用人单位需求的却寥寥无几。捧着书本去做应急响应和风险评估是滥竽充数的作法,社会需要的是能够为客户切实解决安全风险的技术精英,而不是满腹教条的阔论者。
我所认识的很多资深安全专家都并非科班出身,他们有的学医、有的学文、有的根本没有学历和文凭,但他们却技术精湛,充满自信。
这个行业属于有兴趣、够执著的人,属于为了梦想能够不懈努力的意志坚定者。
关于“Impossible”与“I’m possible”
从拼写上看,“Impossible”与“I’m possible”仅仅相差一个用于缩写的撇号(apostrophe)。学完《0day安全:软件漏洞分析技术(第2版)》之后,您会发现将“不可能(Impossible)”变为“可能(I’m possible)”的“关键(key point)”往往就是那么简单的几个字节,《0day安全:软件漏洞分析技术(第2版)》将要讨论的就是在什么位置画上这一撇!
从语法上看,“Impossible”是一个单词,属于数据的范畴;“I’m possible”是一个句子,含有动词(算符),可以看成是代码的范畴。学完《0day安全:软件漏洞分析技术(第2版)》之后,您会明白现代攻击技术的精髓就是混淆数据和代码的界限,让系统错误地把数据当作代码去执行。
从意义上看,To be the apostrophe which changed “Impossible” into “I’m possible” 代表着人类挑战自我的精神,代表着对理想执著的追求,代表着对事业全情的投入,代表着敢于直面惨淡人生的豪情……而这一切正好是黑客精神的完美诠释——还记得在电影《Sword Fish(剑鱼行动)》中,Stan在那台酷毙的计算机前坚定地说:“Nothing is impossible”,然后开始在使用Vernam加密算法和512位密钥加密的网络上,挑战蠕虫的经典镜头吗?
于是我在以前所发表过的所有文章和代码中都加入了这个句子。尽管我的英语老师和不少外国朋友提醒我,说这个句子带有强烈的“Chinglish”味道,甚至会引起Native Speaker的误解,然而我最终还是决定把它写进书里。
虽然我不是莎士比亚那样的文豪,可以创造语言,发明修辞,用文字撞击人们的心灵,但这句“Chinglish”的确能把我所要表达的含义精确地传递给中国人,这已足够。
关于《0day安全:软件漏洞分析技术(第2版)》
通常情况下,利用缓冲区溢出漏洞需要深入了解计算机系统,精通汇编语言乃至二进制的机器代码,这足以使大多数技术爱好者望而却步。
随着时间的推移,缓冲区溢出攻击在漏洞的挖掘、分析、调试、利用等环节上已经形成了一套完整的体系。伴随着调试技术和逆向工程的发展,Windows平台下涌现出的众多功能强大的debug工具和反汇编分析软件逐渐让二进制世界和操作系统变得不再神秘,这有力地推动了Windows平台下缓冲区溢出的研究。除此以外,近年来甚至出现了基于架构(Frame Work)的漏洞利用程序开发平台,让这项技术的进入门槛大大降低,使得原本高不可攀的黑客技术变得不再遥不可及。
遗憾的是,与国外飞速发展的高级黑客技术相比,目前国内还没有系统介绍Windows平台下缓冲区溢出漏洞利用技术的专业书籍,而且相关的中文文献资料也非常匮乏。
《0day安全:软件漏洞分析技术(第2版)》将系统全面地介绍Windows平台软件缓冲区溢出漏洞的发现、检测、分析和利用等方面的知识。
为了保证这些技术能够被读者轻松理解并掌握,《0day安全:软件漏洞分析技术(第2版)》在叙述中尽量避免枯燥乏味的大段理论阐述和代码粘贴。概念只有在实践中运用后才能真正被掌握,这是我多年来求学生涯的深刻体会。书中所有概念和方法都会在紧随其后的调试实验中被再次解释,实验和案例是《0day安全:软件漏洞分析技术(第2版)》的精髓所在。从为了阐述概念而精心自制的漏洞程序调试实验到现实中已经造成很大影响的著名漏洞分析,每一个调试实验都有着不同的技术侧重点,每一个漏洞利用都有自己的独到之处。
我将带领您一步一步地完成调试的每一步,并在这个过程中逐步解释漏洞分析思路。不管您是网络安全从业人员、黑客技术发烧友、网络安全专业的研究生或本科生,如果您能够完成这些分析实验,相信您的软件调试技术、对操作系统底层的理解等计算机能力一定会得到一次质的飞跃,并能够对安全技术有一个比较深入的认识。
序言回到顶部↑
自 序
虽然事隔多年,我仍然清晰记得自己被“冲击波”愚弄的场景——2003年夏的那个晚上,自己像往常一样打开实验室的计算机,一边嘲笑着旁边同学因为不装防火墙而被提示系统将在一分钟内关机,一边非常讽刺地在自己的计算机上发现了同样的提示对话框。正是这个闻名世界的“框框”坚定了我投身网络安全研究的信念,而漏洞分析与利用正是这个领域的灵魂所在。
漏洞分析与利用的过程是充满艺术感的。想象一下,剥掉Windows中那些经过层层封装的神秘的对话框“外衣”,面对着浩如烟海的二进制机器码,跋涉于内存中不知所云的海量数据,在没有任何技术文档可以参考的情况下,进行反汇编并调试,把握函数调用和参数传递的细节,猜测程序的设计思路,设置巧妙的断点并精确定位到几行有逻辑缺陷的代码,分析研究怎么去触发这个逻辑漏洞,最后编写出天才的渗透代码,从而得到系统的控制权……这些分析过程的每一个环节无不散发着充满智慧的艺术美感!这种技术不同于其他计算机技术,它的进入门槛很高,需要拥有丰富的计算机底层知识、精湛的软件调试技术、非凡的逻辑分析能力,还要加上一点点创造性的思维和可遇而不可求的运气。
在无数个钻研这些技术的夜里,我深深地感觉到国内的漏洞分析资料和文献是多么匮乏。为了真正搞清楚蠕虫病毒是怎样利用Windows漏洞精确淹没EIP寄存器并获得进程控制权,我仍然记得自己不得不游走于各种论坛收集高手们零散手稿时的情形。那时的我多么希望能有一本教材式的书籍,让我读了之后比较全面、系统地了解这个领域。
我想,在同样漆黑的夜里,肯定还有无数朋友和我从前一样,满腔热情地想学习这门技术而又困惑于无从下手。正是这种“请缨无处,剑吼西风”的感觉,激励着我把自己钻研的心血凝结成一本教程,希望这样一本教程可以帮助喜欢网络安全的朋友们在学习时绕开我曾走过的弯路。
再版序
距离《0day安全:软件漏洞分析技术》的出版已有3年,接到再版约稿的时候我着实有一番感慨,也有着太多的内容想与大家分享。在这3年里,我经历了从一个初出象牙塔的少年到安全分析员的演变。期间我参加了若干次安全事件的应急响应、在若干个安全峰会上做过漏洞技术的演讲、完成了无数次的渗透测试、也有幸见证了先行者们在Windows平台上进行的最为精彩的几场较量……
为了在再版中更加完美地总结这精彩的几年,我特意邀请了几位和我意气相投的兄弟加入编写团队,他们是:
熟悉Windows内核机制的张东辉(Shineast,负责编写内核安全部分);
精通Windows各类保护机制的周浩(Zihan,负责编写高级溢出部分);
黑客防线的知名撰稿人、漏洞挖掘专家王继刚(爱无言,负责编写漏洞挖掘部分);
文件格式解析专家赵双(Dflower,负责编写文件型漏洞测试部分);
资深病毒分析员蔡山枫(Beanniecai,编写样本分析和案例分析的部分章节)。
团队的力量大大增强了再版内容的广度和深度。再版中新增了大量前沿知识和案例分析,囊括了Windows平台高级溢出技巧、手机平台的溢出基础、内核攻防、漏洞挖掘与安全测试、大量的0day分析案例等。此外我们还对Windows平台中高级防护技巧和部分经典案例的分析等内容进行了修订和勘误。第一版中关于基础溢出的知识也得以保留,在经过重新编排和浓缩后,放置在再版的第一篇供入门者学习。
在计算机工业向模块化、封装化、架构化发展的过程中,人们更加倾向于把时间和精力用于那些敏捷开发的高级工具上。走进大学的计算机系你可以发现J2EE与.NET的书籍随处可见,但是却没有几个学生能在二进制级别把计算机体系结构讲清。甚至在某些网络安全学院里,能把蠕虫入侵的原理刨根问底彻底、弄清的也是凤毛麟角,非好奇心不盛也,乃道之不传也久矣。在信息安全这条道路上行走,需要“男儿何不带吴钩,收取关山五十州”的豪情,需要“臣心一片磁针石,不指南方不肯休”的毅力,需要“壁立千仞,无欲则刚”的情怀……我等立书只为布道交友,最大的收益莫过于帮助还在彷徨如何入门的朋友迈过那条门槛,通过此书结交更多的同道中人。
虽然事隔多年,我仍然清晰记得自己被“冲击波”愚弄的场景——2003年夏的那个晚上,自己像往常一样打开实验室的计算机,一边嘲笑着旁边同学因为不装防火墙而被提示系统将在一分钟内关机,一边非常讽刺地在自己的计算机上发现了同样的提示对话框。正是这个闻名世界的“框框”坚定了我投身网络安全研究的信念,而漏洞分析与利用正是这个领域的灵魂所在。
漏洞分析与利用的过程是充满艺术感的。想象一下,剥掉Windows中那些经过层层封装的神秘的对话框“外衣”,面对着浩如烟海的二进制机器码,跋涉于内存中不知所云的海量数据,在没有任何技术文档可以参考的情况下,进行反汇编并调试,把握函数调用和参数传递的细节,猜测程序的设计思路,设置巧妙的断点并精确定位到几行有逻辑缺陷的代码,分析研究怎么去触发这个逻辑漏洞,最后编写出天才的渗透代码,从而得到系统的控制权……这些分析过程的每一个环节无不散发着充满智慧的艺术美感!这种技术不同于其他计算机技术,它的进入门槛很高,需要拥有丰富的计算机底层知识、精湛的软件调试技术、非凡的逻辑分析能力,还要加上一点点创造性的思维和可遇而不可求的运气。
在无数个钻研这些技术的夜里,我深深地感觉到国内的漏洞分析资料和文献是多么匮乏。为了真正搞清楚蠕虫病毒是怎样利用Windows漏洞精确淹没EIP寄存器并获得进程控制权,我仍然记得自己不得不游走于各种论坛收集高手们零散手稿时的情形。那时的我多么希望能有一本教材式的书籍,让我读了之后比较全面、系统地了解这个领域。
我想,在同样漆黑的夜里,肯定还有无数朋友和我从前一样,满腔热情地想学习这门技术而又困惑于无从下手。正是这种“请缨无处,剑吼西风”的感觉,激励着我把自己钻研的心血凝结成一本教程,希望这样一本教程可以帮助喜欢网络安全的朋友们在学习时绕开我曾走过的弯路。
再版序
距离《0day安全:软件漏洞分析技术》的出版已有3年,接到再版约稿的时候我着实有一番感慨,也有着太多的内容想与大家分享。在这3年里,我经历了从一个初出象牙塔的少年到安全分析员的演变。期间我参加了若干次安全事件的应急响应、在若干个安全峰会上做过漏洞技术的演讲、完成了无数次的渗透测试、也有幸见证了先行者们在Windows平台上进行的最为精彩的几场较量……
为了在再版中更加完美地总结这精彩的几年,我特意邀请了几位和我意气相投的兄弟加入编写团队,他们是:
熟悉Windows内核机制的张东辉(Shineast,负责编写内核安全部分);
精通Windows各类保护机制的周浩(Zihan,负责编写高级溢出部分);
黑客防线的知名撰稿人、漏洞挖掘专家王继刚(爱无言,负责编写漏洞挖掘部分);
文件格式解析专家赵双(Dflower,负责编写文件型漏洞测试部分);
资深病毒分析员蔡山枫(Beanniecai,编写样本分析和案例分析的部分章节)。
团队的力量大大增强了再版内容的广度和深度。再版中新增了大量前沿知识和案例分析,囊括了Windows平台高级溢出技巧、手机平台的溢出基础、内核攻防、漏洞挖掘与安全测试、大量的0day分析案例等。此外我们还对Windows平台中高级防护技巧和部分经典案例的分析等内容进行了修订和勘误。第一版中关于基础溢出的知识也得以保留,在经过重新编排和浓缩后,放置在再版的第一篇供入门者学习。
在计算机工业向模块化、封装化、架构化发展的过程中,人们更加倾向于把时间和精力用于那些敏捷开发的高级工具上。走进大学的计算机系你可以发现J2EE与.NET的书籍随处可见,但是却没有几个学生能在二进制级别把计算机体系结构讲清。甚至在某些网络安全学院里,能把蠕虫入侵的原理刨根问底彻底、弄清的也是凤毛麟角,非好奇心不盛也,乃道之不传也久矣。在信息安全这条道路上行走,需要“男儿何不带吴钩,收取关山五十州”的豪情,需要“臣心一片磁针石,不指南方不肯休”的毅力,需要“壁立千仞,无欲则刚”的情怀……我等立书只为布道交友,最大的收益莫过于帮助还在彷徨如何入门的朋友迈过那条门槛,通过此书结交更多的同道中人。








点击看大图






加载中...

