|
想要查看内容赶紧注册登陆吧!
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
王清主编的《Oday安全:软件漏洞分析技术(第2版)》将系统全面地介绍Windows平台软件缓冲区溢出漏洞的发现、检测、分析和利用等方面的知识。 为了保证这些技术能够被读者轻松理解并掌握,本书在叙述中尽量避免枯燥乏味的大段理论阐述和代码粘贴。书中所有概念和方法都会在紧随其后的调试实验中被再次解释,实验和案例是本书的精髓所在。从为了阐述概念而精心自制的漏洞程序调试实验到现实中已经造成很大影响的著名漏洞分析,每一个调试实验都有着不同的技术侧重点,每一个漏洞利用都有自己的独到之处。 我将带领您一步一步地完成调试的每一步,并在这个过程中逐步解释漏洞分析思路。不管您是网络安全从业人员、黑客技术发烧友、网络安全专业的研究生或本科生,如果您能够完成这些分析实验,相信您的软件调试技术、对操作系统底层的理解等计算机能力一定会得到一次质的飞跃,并能够对安全技术有一个比较深入的认识。
目 录
第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.4 Crack小实验 29
第2章 栈溢出原理与实践 38
2.1 系统栈的工作原理 38
2.1.1 内存的不同用途 38
2.1.2 栈与系统栈 39
2.1.3 函数调用时发生了什么 40
2.1.4 寄存器与函数栈帧 43
2.1.5 函数调用约定与相关指令 44
2.2 修改邻接变量 47
2.2.1 修改邻接变量的原理 47
2.2.2 突破密码验证程序 49
2.3 修改函数返回地址 53
2.3.1 返回地址与程序流程 53
2.3.2 控制程序的执行流程 57
2.4 代码植入 62
2.4.1 代码植入的原理 62
2.4.2 向进程中植入代码 62
第3章 开发shellcode的艺术 71
3.1 shellcode概述 71
3.1.1 shellcode与exploit 71
3.1.2 shellcode需要解决的问题 72
3.2 定位shellcode 73
3.2.1 栈帧移位与jmp esp 73
3.2.2 获取“跳板”的地址 76
3.2.3 使用“跳板”定位的exploit 78
3.3 缓冲区的组织 81
3.3.1 缓冲区的组成 81
3.3.2 抬高栈顶保护shellcode 83
3.3.3 使用其他跳转指令 83
3.3.4 不使用跳转指令 84
3.3.5 函数返回地址移位 85
3.4 开发通用的shellcode 87
3.4.1 定位API的原理 87
3.4.2 shellcode的加载与调试 88
3.4.3 动态定位API地址的shellcode 89
3.5 shellcode编码技术 98
3.5.1 为什么要对shellcode编码 98
3.5.2 会“变形”的shellcode 99
3.6 为shellcode“减肥” 103
3.6.1 shellcode瘦身大法 103
3.6.2 选择恰当的hash算法 105
3.6.3 191个字节的bindshell 107
第4章 用MetaSploit开发Exploit 119
4.1 漏洞测试平台MSF 简介 119
4.2 入侵Windows系统 121
4.2.1 漏洞简介 121
4.2.2 图形界面的漏洞测试 121
4.2.3 console界面的漏洞测试 125
4.3 利用MSF制作shellcode 126
4.4 用MSF扫描“跳板” 128
4.5 Ruby语言简介 129
4.6 “傻瓜式”Exploit开发 134
4.7 用MSF发布POC 140
第5章 堆溢出利用 144
5.1 堆的工作原理 144
5.1.1 Windows堆的历史 144
5.1.2 堆与栈的区别 145
5.1.3 堆的数据结构与管理策略 146
5.2 在堆中漫游 151
5.2.1 堆分配函数之间的调用关系 151
5.2.2 堆的调试方法 152
5.2.3 识别堆表 155
5.2.4 堆块的分配 158
5.2.5 堆块的释放 159
5.2.6 堆块的合并 159
5.2.7 快表的使用 161
5.3 堆溢出利用(上)——DWORD SHOOT 163
5.3.1 链表“拆卸”中的问题 163
5.3.2 在调试中体会“DWORD SHOOT” 165
5.4 堆溢出利用(下)——代码植入 169
5.4.1 DWORD SHOOT的利用方法 169
5.4.2 狙击P.E.B中RtlEnterCritical-Section()的函数指针 170
5.4.3 堆溢出利用的注意事项 175
|
|