Linux系统安全基 二进制代码安全性分析基础与实践

2025-8-28 256 8/28

Linux系统安全基 二进制代码安全性分析基础与实践

作者:彭双和

页数:536

出版社:电子工业出版社

出版日期:2023

ISBN:9787121459702

高清校对版pdf(带目录)

前往页尾底部查看PDF电子书

内容简介

本书主要通过对二进制代码安全性进行分析来介绍Linux系统安全。本书共分为6章,首先对Linux系统安全和二进制代码安全性分析进行了概述;然后详细地介绍了二进制代码的生成以及二进制代码信息的收集;在此基础上,接着对静态二进制代码分析和二进制代码脆弱性评估进行了深入的探讨;最后详细介绍了二进制代码漏洞利用。为了帮助读者更好地掌握相关的理论知识和技术原理,本书穿插了作者亲自实践过的软件源码,并对源码的关键部分进行了说明。
本书适合具有一定Linux系统知识,以及C语言和汇编语言编程基础的信息安全专业人员阅读。本书可作为高等院校相关专业的教材或教学辅导书,对参与CTF的读者也有一定的参考价值。

作者简介

彭双何,女,副教授。自2008年加入北京交通大学以来,一直从事本科教育与教学工作,多次获评本科生优秀学业导师和优秀班主任。教学上,课堂教学效果好,所在课堂"C语言程序设计”获评第一批校金课。2014年首次获评校优秀主讲教师,该荣誉一直保持到现在。2021年获评计算机学院师德师风先进个人"传道授业”奖。科研上,积极指导本科生参加各种科研活动,2018年以来发表科研论文三篇,其中SCI检索一篇;指导本科生参加大创项目获评国家级三项和北京市级五项,指导本科生参加国家级竞赛获一等奖一项、二等奖一项、三等奖一项;北京市级竞赛获三等奖四项。

目录

第1 章概述................................ ........................................1

1.1 Linux 系统安全........................ .......................................1

1.2 代码安全.........................·..........................................1

1.3 什么是二进制代码安全性分析......................................................2

1.4 二进制代码安全性分析的重要性...................................................2

1.5 二进制代码安全性分析的主要步骤.................................................2

1.6 软件错误、漏洞以及利用...........................................................2

1.6.1 软件错误.....................................................................2

1.6.2 软件漏洞.....................................................................3

1.6.3 漏洞利用.....................................................................3

1.6.4 二进制代码利用.............................................................4

第2 章二进制代码生成...............................................................5

2.1 二进制代码的生成过程.............................................................5

2.1.1 编译预处理阶段.............................................................6

2.1.2 编译阶段.....................................................................6

2.1.3 汇编阶段.....................................................................6

2.1.4 链接阶段.....................................................................8

2.1.5 gcc 的常用选项..............................................................11

2.1.6 ld 的常用选项...............................................................17

2.1.7 gcc 的常用环境变量.........................................................21

2.1.8 二进制代码的生成举例......................................................21

2.2 ELF 文件格式.................·...........................................26

2.2.1 ELF文件的两种视图.......................................................27

2.2.2 ELF 文件的头...............................................................27

2.2.3 可执行文件的主要节........................................................29

2.2.4 位置无关代码................................................................33

2.2.5 ELF 文件的头...............................................................42

2.2.6 ELF 文件的主要段..........................................................43

2.3 程序的装载与调度执行.............................................................47

2.3.1 可执行文件的装载...........................................................47

2.3.2 可执行文件调度运行的过程................................................48

2.3.3 进程的虚拟地址空间及其访问..............................................49

第3 章二进制代码信息的收集.......................................................54

3.1 nm ...........................................................................54

3.2 ldd ..........................·........................................54

3.3 strings ..........................·.............................................55

3.4 ELF 文件分析工具LIEF ...........................................................55

3.4.1 安装..........................................................................55

3.4.2 基于LIEF 对.got.plt 表的攻击举例........................................55

3.4.3 基于LIEF 将可执行文件转变为共享库文件...............................59

3.5 ps ............................. .............................................61

3.6 strace ....................................................................61

3.7 ltrace ....................................................................62

3.8 ROPgadget..........................·..................................62

3.9 objdump...............................................................63

3.10 readelf..............................................................65

3.11 GDB ...................................................................66

3.11.1 GDB 的初始化脚本文件...................................................66

3.11.2 GDB 的常用命令..........................................................66

3.11.3 GDB 的常用命令示例.....................................................67

3.11.4 GDB 命令的运行..........................................................79

3.11.5 GDB 命令的扩充..........................................................82

3.11.6 PEDA 基本使用...........................................................92

3.12 Pwntools ...........................................................97

3.12.1 Pwntools 的安装...........................................................97

3.12.2 通过上下文设置目标平台..................................................98

3.12.3 本地进程对象的创建.......................................................98

3.12.4 远程进程对象的创建.......................................................99

3.12.5 ELF 模块...................................................................99

3.12.6 search 方法................................................................·100

3.12.7 cyclic 命令的功能.........................................................·101

3.12.8 核心文件..................................................................·102

3.12.9 数据转换..................................................................·104

3.12.10 struct 模块...............................................................·105

3.12.11 shellcraft 模块...........................................................·106

3.12.12 ROP 模块................................................................·108

3.12.13 GDB 模块................................................................·112

3.12.14 DynELF 模块............................................................·113

3.12.15 基于标准输入/输出的数据交互.........................................·116

3.12.16 基于命名管道的数据交互...............................................·118

3.12.17 脚本文件和被测目标程序的交互........................................·125

3.12.18 基于Python 脚本文件的Pwntools 应用举例..........................·125

3.13 LibcSearcher ...........................................................·127

第4 章静态二进制代码分析.........................................................·130

4.1 基于IDAPro 的静态分析..........................................................·130

4.1.1 IDC 脚本文件..............................................................·130

4.1.2 IDAPython 脚本文件......................................................·138

4.1.3 IDAPython 脚本文件示例.................................................·140

4.1.4 IDAPro 插件的编写........................................................·142

4.2 基于Radare2 的静态分析.........................................................·148

4.2.1 r2 的常用命令..............................................................·148

4.2.2 r2 常用命令示例...........................................................·150

4.2.3 r2 对JSON 格式数据的处理..............................................·156

4.2.4 基于r2pipe 的脚本文件编写..............................................·159

4.2.5 基于r2pipe 的脚本文件执行..............................................·163

第5 章二进制代码脆弱性评估......................................................·164

5.1 常见二进制代码脆弱性............................................................·164

5.1.1 栈溢出的原理...............................................................·165

5.1.2 堆溢出的原理...............................................................·165

5.2 基于系统工具对代码脆弱性的评估................................................·184

5.2.1 基于Clang Static Analyzer 的安全检测..................................·184
PDF更新中
- THE END -

非特殊说明,本博所有文章均为博主原创。