基本信息
- 商品名:【京联□□】Linux二进制分析瑞安·奥尼尔9787115469□36
- ISBN:9787115469236
- 定价:59
- 出版社:人民邮电出版社
- 作者:[美]瑞安,奥尼尔(Ryan,O'Neill)
参考信息(以实物为准)
- 出版时间:2017-12-01
- 印刷时间:
- 版次:01
- 印次:1
- 包装:平装
- 开本:16开
- 用纸:
- 页数:254
- 字数:
编辑推荐
本书首先讲解了UNIX/Linux中分析目标文件的实用工具和ELF二进制格式的相关内容,随后介绍了进程追踪、各种不同类型的Linux和UNIX病毒,以及如何使用ELF病毒技术进行处理。
本书的后半部分介绍了如何使用Kprobe工具进行内核破解、代码修补和调试,如何检测并处理内核模式的rootkit,以及如何分析静态代码;对复杂的用户级内存感染分析进行了相关讲解。
本书将带领读者探索甚至连一些专家都未曾接触的领域,正式进入计算机黑客世界。
本书读者对象
如果你是一名软件工程师或者逆向工程师,想要学习Linux二进制分析相关的内容,本书实为明智之选。本书提供了在安全、取证和杀毒领域中实施二进制分析的解决方案。本书也适合安全爱好者和系统工程师阅读。为了更好地理解本书内容,读者需要具备一定的C语言编程基础和Linux命令行知识。
本书内容
ELF二进制格式的内部工作原理;
UNIX病毒感染和分析的相关技术;
二进制加固和软件防篡改技术;
修补可执行文件和进程内存;
绕过恶意软件中的反调试;
二进制取证分析技术;
用C语言设计ELF相关的工具;
如何使用ptrace操作内存。
本书源码可通过www.epubit.com.cn/book/details/4696下载。
内容简介
二进制分析属于信息安全业界逆向工程中的一种技术,通过利用可执行的机器代码(二进制)来分析应用程序的控制结构和运行方式,有助于信息安全从业人员更好地分析各种漏洞、病毒以及恶意软件,从而找到相应的解决方案。
《Linux二进制分析》是一本剖析Linux ELF工作机制的图书,共分为9章,其内容涵盖了Linux环境和相关工具、ELF二进制格式、Linu□□程追踪、ELF病毒技术、Linux二进制保护、Linux中的ELF二进制取证分析、进程内存取证分析、扩展核心文件快照技术、Linux/proc/kcore分析等。
《Linux二进制分析》适合具有一定的Linux操作知识,且了解C语言编程技巧的信息安全从业人员阅读。
目录
□□章 Linux环境和相关工具1
1.1 Linux工具1
1.1.1 GDB□
1.1.□ GNU binutils中的objdump□
1.1.3 GNU binutils中的objcopy3
1.1.4 strace3
1.1.5 ltrace4
1.1.6 基本的ltrace命令4
1.1.7 ftrace4
1.1.8 readelf4
1.1.9 ERESI——ELF反编译系统接口5
1.□ 有用的设备和文件6
1.□.1 /proc//maps6
1.□.□ /proc/kcore6
1.□.3 /boot/System.map6
1.□.4 /proc/kallsyms7
1.□.5 /proc/iomem7
1.□.6 ECFS7
1.3 链接器相关环境指针7
1.3.1 LD_PRELOAD环境□量8
1.3.□ LD_SHOW_AUXV环境□量8
1.3.3 链接器脚本9
1.4 总结10
第□章 ELF二进制格式11
□.1 ELF文件类型1□
□.□ ELF程序头14
□.□.1 PT_LOAD14
□.□.□ PT_DYNAMIC——动态段的Phdr15
□.□.3 PT_NOTE17
□.□.4 PT_INTERP17
□.□.5 PT_PHDR17
□.3 ELF节头18
□.3.1 .text节□0
□.3.□ .rodata节□0
□.3.3 .plt节□1
□.3.4 .data节□1
□.3.5 .bss节□1
□.3.6 .got.plt节□1
□.3.7 .dynsym节□1
□.3.8 .dynstr节□□
□.3.9 .rel.*节□□
□.3.10 .hash节□□
□.3.1□ .□ymtab节□□
□.3.1□ .strtab节□3
□.3.13 .shstrtab节□3
□.3.14 .ctors和.dtors节□3
□.4 ELF符号□7
□.4.□ □t_name□8
□.4.□ st_value□8
□.4.3 st_size□8
□.4.4 st_other□8
□.4.5 st_shndx□9
□.4.6 st_info□9
□.5 ELF重定位34
□.6 ELF动态链接43
□.6.1 辅助向量44
□.6.□ 了解PLT/GOT46
□.6.3 重温动态段49
□.7 编码一个ELF解析器5□
□.8 总结55
第3章 Linu□□程追踪57
3.1 ptrace的重要性57
3.□ ptrace请求58
3.3 进程寄存器状态和标记60
3.4 基于ptrace的调试器示例61
3.5 ptrace调试器67
3.6 高级函数追踪软件75
3.7 ptrace和取证分析75
3.8 进程镜像重建77
3.8.1 重建进程到可执行文件的挑战78
3.8.□ 重建可执行文件的挑战78
3.8.3 添加节头表79
3.8.4 重建过程算法79
3.8.5 在3□位测试环境中使用Quenya重建进程81
3.9 使用ptrace进行代码注入83
3.10 简单的例子演示复杂的过程91
3.11 code_inject工具演示9□
3.1□ ptrace反调试技巧9□
3.13 总结94
第4章 ELF病毒技术——Linux/UNIX病毒95
4.1 ELF病毒技术96
4.□ 设计ELF病毒面临的挑战97
4.□.1 寄生代码必须是独立的97
4.□.□ 字符串存储的复杂度99
4.□.3 寻找存放寄生代码的合理空间100
4.□.4 将执行控制流传给寄生代码100
4.3 ELF病毒寄生代码感染方法101
4.3.1 Silvio填充感染101
4.3.□ 逆向text感染106
4.3.3 data段感染108
4.4 PT_NOTE到PT_LOAD转换感染110
4.5 感染控制流11□
4.5.1 直接PLT感染113
4.5.□ 函数蹦床(function trampolines)113
4.5.3 重写.ctors/.dtors函数指针114
4.5.4 GOT感染或PLT/GOT重定向115
4.5.5 感染数据结构115
4.5.6 函数指针重写115
4.6 进程内存病毒和rootkits——远程代码注入技术115
4.6.1 共享库注入116
4.6.□ text段代码注入1□0
4.6.3 可执行文件注入1□0
4.6.4 重定位代码注入——ET_REL注入1□0
4.7 ELF反调试和封装技术1□1
4.7.1 PTRACE_TRACEME技术1□1
4.7.□ SIGTRAP处理技术1□□
4.7.3 /proc/self/status技术1□□
4.7.4 代码混淆技术1□3
4.7.5 字符串表转换技术1□4
4.8 ELF病毒检测和杀毒1□4
4.9 总结1□6
第5章 Linux二进制保护1□7
5.1 ELF二进制加壳器1□7
5.□ 存根机制和用户层执行1□8
5.3 保护器存根的其他用途133
5.4 现存的ELF二进制保护器133
5.4.1 DacryFile——Grugq于□001年发布134
5.4.□ Burneye——Scut于□00□年发布134
5.4.3 Shiva——Neil Mehta和Shawn Clowes于□003年发布135
5.4.4 May's Veil——Ryan O'Neill于□014年发布136
5.5 下载Maya保护的二进制文件14□
5.6 二进制保护中的反调试14□
5.7 防模拟技术143
5.7.1 通过系统调用检测模拟144
5.7.□ 检测模拟的CPU不一致144
5.7.3 检测特定指令之间的时延144
5.8 混淆方法145
5.9 保护控制流完整性145
5.9.1 基于ptrace的攻击145
5.9.□ 基于安全漏洞的攻击146
5.10 其他资源147
5.11 总结147
第6章 Linux下的ELF二进制取证分析149
6.1 检测入口点修改技术150
6.□ 检测其他形式的控制流劫持154
6.□.1 修改.ctors/.init_array节154
6.□.□ 检测PLT/GOT钩子155
6.□.3 检测函数蹦床158
6.3 识别寄生代码特征159
6.4 检查动态段是否被DLL注入161
6.5 识别逆向text填充感染164
6.6 识别text段填充感染166
6.7 识别被保护的二进制文件170
6.8 IDA Pro175
6.9 总结175
第7章 进程内存取证分析177
7.1 进程内存布□178
7.1.1 可执行文件内存映射179
7.1.□ 程序堆179
7.1.3 共享库映射180
7.1.4 栈、VDSO和vsyscall180
7.□ 进程内存感染181
7.□.1 进程感染工具181
7.□.□ 进程感染技术18□
7.3 检测ET_DYN注入184
7.3.1 Azazel:用户级rootkit检测184
7.3.□ 映射出进程的地址空间184
7.3.3 查找栈中的LD_PRELOAD187
7.3.4 检测PLT/GOT钩子188
7.3.5 ET_DYN注入内部原理190
7.3.6 操纵VDSO194
7.3.7 共享目标文件加载195
7.3.8 检测.so注入的启发方法196
7.3.9 检测PLT/GOT钩子的工具197
7.4 Linux ELF核心文件198
7.5 总结□04
第8章 ECFS——扩展核心文件快照技术□05
8.1 历史□05
8.□ ECFS原理□06
8.3 ECFS入门□06
8.3.1 将ECFS嵌入到核心处理器中□07
8.3.□ 在不终止进程的情况下使用ECFS快照□08
8.4 libecfs——解析ECFS文件的库□08
8.5 readecfs工具□09
8.6 使用ECFS检测被感染的进程□10
8.6.1 感染主机进程□10
8.6.□ 捕获并分析ECFS快照□11
8.6.3 使用readecfs提取寄生代码□15
8.6.4 Azazel用户级rootkit分析□16
8.7 ECFS参考指南□□4
8.7.1 ECFS符号表重建□□5
8.7.□ ECFS节头□□6
8.7.3 使用ECFS文件作为常规的核心文件□□9
8.7.4 libecfs API的使用□□9
8.8 使用ECFS恢复中断的进程□30
8.9 了解更多ECFS相关内容□31
8.10 总结□3□
第9章 Linux/proc/kcore分析□33
9.1 Linux内核取证分析和rootkit□33
9.□ 没有符号的备份vmlinux□34
9.3 探索/proc/kcore和GDB□36
9.4 直接修改sys_call_table□37
9.4.1 检测sys_call_table修改□38
9.4.□ 内核函数蹦床□38
9.4.3 函数蹦床示例□39
9.4.4 检测函数蹦床□41
9.4.5 检测中断处理器修复□43
9.5 Kprobe rootkit□43
9.6 调试寄存器rootkit——DRR□44
9.7 VFS层rootkit□44
9.8 其他内核感染技术□45
9.9 vmlinux和.altinstructions修补□45
9.9.1 .altinstructions和.altinstr_re□□□ce□46
9.9.□ arch/x86/include/asm/alternative.h代码片段□46
9.9.3 使用textify验证内核代码完整性□47
9.9.4 使用textify检查sys_call_table□47
9.10 使用taskverse查看隐藏进程□48
9.11 感染的LKM——内核驱动□49
9.11.1 方法一:感染LKM文件——符号劫持□49
9.11.□ 方法二:感染LKM文件——函数劫持□49
9.11.3 检测被感染的LKM□50
9.1□ /dev/kmem和/dev/mem□50
9.1□.1 /dev/mem□51
9.1□.□ FreeBSD /dev/kmem□51
9.13 K-ecfs ——内核ECFS□51
9.14 内核黑客工具□5□
9.14.1 通用的逆向工程和调试□53
9.14.□ 高级内核劫持/调试接口□53
9.14.3 本章提到的论文□53
9.15 总结□54
作者简介
Ryan O'Neill(ELF大师)是一名计算机安全研究员兼软件工程师,具有逆向工程、软件开发、安全防御和取证分析技术方面的背景。他是在计算机黑客亚文化的世界中成长起来的——那个由EFnet、BBS系统以及系统可执行栈上的远程缓冲区溢出组成的世界。他在年轻时就接触了系统安全、开发和病毒编写等领域。他对计算机黑客的极大热情如今已经演□成了对软件开发和专业安全研究的热爱。Ryan在DEFCON和RuxCon等很多计算机安全会议上发表过演讲,还举办了一个为期两天的ELF二进制黑客研讨会。
他的职业生涯非常成功,曾就职于Pikewerks、Leviathan安全集团这样的大公司,□近在Backtrace担任软件工程师。
Ryan还未出版过其他图书,不过他在Phrack和VXHeaven这样的在线期刊上发表的论文让他声名远扬。还有许多其他的作品可以从他的网站(http://www.bitlackeys.org)上找到。