|
1 |
| -# linux exploit 开发入门 |
| 1 | +# Linux exploit 开发入门 |
2 | 2 |
|
3 | 3 | ## 这是什么?
|
4 | 4 |
|
5 |
| -这是面向新手的 linux exploit 开发指南. |
| 5 | +这是面向新手的 Linux exploit 开发指南。 |
6 | 6 |
|
7 |
| -发现 Linux 下二进制学习曲线陡峭,而套路零散,于是整理编著这篇文章,来帮助感兴趣的人学习,还想结识更多对 Linux 二进制感兴趣的人. |
| 7 | +发现 Linux 下二进制学习曲线陡峭,而套路零散,于是整理编著这篇文章,来帮助感兴趣的人学习,还想结识更多对 Linux 二进制感兴趣的人。 |
8 | 8 |
|
9 |
| -万事开头难,首先要感谢本文原来的的作者 sploitfun,他开始做了这件事并写出了思路,我在他的基础上进行了补充和翻译. |
| 9 | +万事开头难,首先要感谢本文原来的的作者 sploitfun,他开始做了这件事并写出了思路,我在他的基础上进行了补充和翻译。 |
10 | 10 |
|
11 |
| -还要要感谢 phrack,乌云知识库,各种 wiki 上面文章的作者,这些作者和安全研究人员讲解了很多关于 exploit 相关技术,是大家的无私分享使很多东西变的可能,我也想把这样的分享精神学习来. |
| 11 | +还要要感谢 phrack,乌云知识库,各种 wiki 上面文章的作者,这些作者和安全研究人员讲解了很多关于 exploit 相关技术,是大家的无私分享使很多东西变的可能,我也想学习这样的分享精神。 |
12 | 12 |
|
13 |
| -为了防止文档过于臃肿,我们讲分享讨论的话题尽量限制在 Linux,x86,ipv4 范围内,我们假设读者能正常使用 Linux,熟悉 C 语言,了解汇编语言,认识计算机专业词汇,基本体系结构知识(栈,堆,内存之类的).如果不能因为知识储备不够,推荐 0day 安全以补充背景知识. |
| 13 | +为了防止文档过于臃肿,我们讲分享讨论的话题尽量限制在 Linux, x86, ipv4 范围内,我们假设读者能正常使用 Linux,熟悉 C 语言,了解汇编语言,认识计算机专业词汇,基本体系结构知识(栈,堆,内存之类的)。如果不能因为知识储备不够,推荐 0day 安全以补充背景知识。 |
14 | 14 |
|
15 |
| -测试机器是 ubuntu 14.04 的默认安装. |
| 15 | +测试机器是 Ubuntu 14.04 的默认安装。 |
16 | 16 |
|
17 | 17 | ## 目录
|
18 | 18 |
|
19 | 19 | ### 第一章节: [基础知识](./chapter1)
|
20 | 20 |
|
21 |
| -基础部分知识比如: 栈与堆分别是什么? c 语言如何转换成汇编? 内存布局是什么样的? ... |
| 21 | +基础部分知识比如: 栈与堆分别是什么? C 语言如何转换成汇编? 内存布局是什么样的? ... |
22 | 22 |
|
23 |
| -基础的安全知识如: 什么是堆栈溢出? 堆分配器是如何工作的?... |
| 23 | +基础的安全知识如: 什么是堆栈溢出? 堆分配器是如何工作的? ... |
24 | 24 |
|
25 |
| -这个阶段还要介绍基本的漏洞类型和安全机制,然后关闭全部的安全保护机制,学习如何在 Linux 下面编写最基本的 exp. |
| 25 | +这个阶段还要介绍基本的漏洞类型和安全机制,然后关闭全部的安全保护机制,学习如何在 Linux 下面编写最基本的 exploit。 |
26 | 26 |
|
27 | 27 | ### 第二章节: [栈的安全](./chapter2)
|
28 | 28 |
|
29 |
| -主要关注在现代 linux 上栈的安全防护机制及其绕过的常规套路. |
| 29 | +主要关注在现代 Linux 上栈的安全防护机制及其绕过的常规套路. |
30 | 30 |
|
31 |
| -分为两大类:编译相关(elf 加固),部分编译选项控制着生成更安全的代码(损失部分性能或者空间),还有就说运行时的安全(ASLR),都是为增加了漏洞利用的难度,不能从本质上去除软件的漏洞. |
| 31 | +分为两大类:编译相关(ELF 加固),部分编译选项控制着生成更安全的代码(损失部分性能或者空间),还有就说运行时的安全(ASLR),都是为增加了漏洞利用的难度,不能从本质上去除软件的漏洞。 |
32 | 32 |
|
33 | 33 | ### 第三章节: [堆的安全](./chapter3)
|
34 | 34 |
|
35 |
| -主要关注在现代 linux 上 glibc 下堆的安全防护机制及其绕过的常规套路. |
| 35 | +主要关注在现代 Linux 上 glibc 下堆的安全防护机制及其绕过的常规套路。 |
36 | 36 |
|
37 | 37 | ### 第四章节: [内核的安全](./chapter4)
|
38 | 38 |
|
39 |
| -这个阶段学习现代 linux (2.6.32)及其以后版本 kernel 安全相关的文档(安全保护,利用). |
| 39 | +这个阶段学习现代 Linux (2.6.32)及其以后版本 Kernel 安全相关的文档(安全保护,利用)。 |
40 | 40 |
|
41 |
| -在早期 kernel 可以随意访问用户态代码,ret2usr 技术可以让内核执行用户态的代码,不过随着 Linux 的发展 SMAP(禁止 kernel 随意访问用户态,RFLAGE.AC 标志位置位可以),SMEP 禁止 kernel 态直接执行用户态代码,kaslr 也提升了漏洞利用的难度。 |
| 41 | +在早期 Kernel 可以随意访问用户态代码, ret2usr 技术可以让内核执行用户态的代码,不过随着 Linux 的发展 SMAP(禁止 Kernel 随意访问用户态,RFLAGE.AC 标志位置位可以),SMEP 禁止 Kernel 态直接执行用户态代码,KASLR 也提升了漏洞利用的难度。 |
42 | 42 |
|
43 | 43 | ### 第五章节: [漏洞发现](./chapter5)
|
44 | 44 |
|
45 |
| -漏洞挖掘的重要性不言而喻,打个比喻上面写的如何吃肉,漏洞挖掘就是肉在哪里. |
| 45 | +漏洞挖掘的重要性不言而喻,打个比喻上面写的如何吃肉,漏洞挖掘就是肉在哪里。 |
46 | 46 |
|
47 |
| -这个章节对我来说目前也是一个新领域,在这个章节里面主要关注 fuzz 与 代码审计。 |
| 47 | +这个章节对我来说目前也是一个新领域,在这个章节里面主要关注 fuzz 与代码审计。 |
48 | 48 |
|
49 |
| -## 如何修改和更新 ? |
| 49 | +## 如何修改和更新? |
50 | 50 |
|
51 | 51 | ```shell
|
52 | 52 | git clone [email protected]:hardenedlinux/linux_exploit_development_tutorial.git
|
53 | 53 | cd linux_exploit_development_tutorial
|
54 | 54 | make # preview
|
55 | 55 | ```
|
56 | 56 |
|
57 |
| -## 如何实践文档代码 ? |
| 57 | +## 如何实践文档代码? |
58 | 58 |
|
59 | 59 | (WIP)
|
60 | 60 |
|
61 |
| -源代码会陆续放到`lab-code`目录中,其实更倾向于提供一个虚拟机镜像供下载. |
| 61 | +源代码会陆续放到`lab-code`目录中,其实更倾向于提供一个虚拟机镜像供下载。 |
62 | 62 | ...
|
63 | 63 |
|
64 | 64 | ## 版权
|
65 | 65 |
|
66 |
| -这个项目是以 <a href="http://creativecommons.org/licenses/by-sa/3.0/" target="_blank">知识共享署名-相同方式共享 3.0</a> 许可协议授权. |
| 66 | +这个项目是以 <a href="http://creativecommons.org/licenses/by-sa/3.0/" target="_blank">知识共享署名-相同方式共享 3.0</a> 许可协议授权。 |
0 commit comments