内容简介
第Ⅰ部分 速成课:备战
第1章 道德黑客和法律制度
1.1理解敌方策略的意义
1.2正义黑客过程
1.2.1渗透测试过程
1.2.2不道德黑客的做法
1.3网络法的兴起
1.3.1了解各种网络法
1.3.2关于“黑客”工具的争论
1.4漏洞披露
1.4.1各方看待问题的不同角度
1.4.2个中缘由
1.4.3 CERT目前采取的工作流程
1.4.4 Internet安全组织
1.4.5争议仍将存在
1.4.6再没有免费的bug了
1.4.7 bug赏金计划
1.5本章小结
1.6参考文献
1.7扩展阅读
第2章 编程技能
2.1 C编程语言
2.1.1 C语言基本结构
2.1.2程序范例
2.1.3使用gcc进行编译
2.2计算机内存
2.2.1随机存取存储器(RM)
2.2.2字节序
2.2.3内存分段
2.2.4内存中的程序
2.2.5缓冲区
2.2.6内存中的字符串
2.2.7指针
2.2.8内存知识小结
2.3 Intel处理器
2.4汇编语言基础
2.4.1机器指令、汇编语言与C语言
2.4.2 AT&T与NASM
2.4.3寻址模式
2.4.4汇编文件结构
2.4.5汇编过程
2.5使用gdb进行调试
2.5.1 gdb基础
2.5.2使用gdb进行反汇编
2.6 Python编程技能
2.6.1获取Python
2.6.2 Python的Hello World程序
2.6.3 Python对象
2.6.4字符串
2.6.5数字
2.6.6列表
2.6.7字典
2.6.8 Python文件操作
2.6.9 Python套接字编程
2.7本章小结
2.8参考文献
2.9扩展阅读
第3章 静态分析
3.1道德的逆向工程
3.2使用逆向工程的原因
3.3源代码分析
3.3.1源代码审计工具
3.3.2源代码审计工具的实用性
3.3.3手工源代码审计
3.3.4自动化源代码分析
3.4二进制分析
3.4.1二进制代码的手工审计
3.4.2自动化的二进制分析工具
3.5本章 小结
3.6扩展阅读
第4章 使用IDA Pro进行高级分析
4.1静态分析难点
4.1.1剥离的二进制文件
4.1.2静态链接程序和FLAIR
4.1.3数据结构分析
4.1.4己编译的C++代码的怪异之处
4.2扩展IDA Pro
4.2.1 1DAPython脚本
4.2.2执行Python代码
4.3本章 小结
4.4扩展阅读
第5章 模糊测试的世界
5.1模糊测试简介
5.2选择目标
5.2.1输入类型
5.2.2易于自动化
5.2.3复杂性
5.3模糊器的类型
5.3.1变异模糊器
5.3.2生成模糊器
5.4开始
5.4.1寻找模糊测试模板
5.4.2实验5-1:从互联网档案馆获取样本
5.4.3利用代码覆盖率选取最优模板集
5.4.4实验5-2:为模糊测试选取最优样本
5.5 Peach模糊测试框架
5.5.1 Peach模糊测试策略
5.5.2速度的重要性
5.5.3崩溃分析
5.5.4实验5-3: Peach变异模糊测试
5.5.5其他变异模糊器
5.6生成模糊器
5.7本章小结
5.8扩展阅读
第6章 shellcode策略
6.1用户空间shellcode
6.1.1系统调用
6.1.2基本shellcode
6.1.3端口绑定shellcode
6.1.4反向shellcode
6.1.5查找套接字shellcode
6.1.6命令执行代码
6.1.7文件传输代码
6.1.8多级shellcode
6.1.9系统调用代理shellcode
6.1.10进程注入shellcode
6.2其他shellcode考虑因素
6.2.1 shellcode编码
6.2.2自我破坏shellcode
6.2.3反汇编shellcode
6.3内核空间shellcode
6.4本章小结
6.5参考文献
6.6扩展阅读
第7章 编写Linux shellcode
7.1基本的Linux shellcode
7.1.1系统调用
7.1.2使用C进行系统调用
7.1.3使用汇编语言进行系统调用
7.1.4 exit系统调用
7.1.5 setreuid系统调用
7.1.6利用execve实现创建shell的shellcode
7.2实现端口绑定shellcode
7.2.1 Linux套接字编程
7.2.2用汇编程序创建套接字
7.2.3测试shellcode
7.3实现反向连接shellcode
7.3.1反向连接的C代码
7.3.2反向连接的汇编程序
7.4 shellcode编码
7.4.1简单的异或编码
7.4.2编码后shellcode的结构
7.4.3 JMP/CALL XOR解码器示例
7.4.4 FNSTENV XOR示例
7.4.5将代码整合起来
7.5利用Metasploit自动生成shellcode
7.5.1利用Metasploit生成 shellcode
7.5.2利用Metasploit对 shellcode进行编码
7.6本章小结
7.7扩展阅读
第Ⅱ部分 漏洞攻击
第8章 基于欺骗的攻击
8.1什么是欺骗
8.2 ARP欺骗
8.2.1实验8-1:使用Ettercap的ARP欺骗
8.2.2查看网络流量
8.2.3修改网络流量
8.3 DNS欺骗
8.3.1实验8-2:使用Ettercap进行DNS欺骗
8.3.2执行攻击
8.4 NetBIOS名称欺骗和LLMNR欺骗
8.4.1实验8-3:使用Responder攻击NetBIOS和LLMNR
8.4.2破解NTLMvl和NTLMv2哈希
8.5本章小结
8.6扩展阅读
第9章 攻击Cisco路由器
9.1攻击团体字符串和密码
9.1.1实验9-1:使用Ncrack和Metasploit来猜测凭据
9.1.2实验9-2:使用onesixtyone和Metasploit猜测团体字符串
9.2 SNMP和TFTP
9.2.1实验9-3:使用Metasploit下载配置文件
9.2.2实验9-4:使用SNMP和TFTP修改配置
9.3攻击Cisco密码
9.3.1攻击CiscoType 7密码
9.3.2实验9-5:使用Cain破解Type 7密码
9.3.3实验9-6:使用Metasploit解密Type 7密码
9.3.4攻击CiscoType 5密码
9.3.5实验9-7:使用John the Ripper攻击CiscoType 5密码
9.4使用隧道中转流量
9.4.1实验9-8:建立GRE隧道
9.4.2实验9-9:在GRE隧道上路由流量
9.5漏洞攻击和其他攻击
9.5.1 Cisco漏洞攻击
9.5.2保持对Cisco设备的访问
9.6本章小结
9.7扩展阅读
第10章 基本的Linux漏洞攻击
10.1栈操作
10.2缓冲区溢出
10.2.1实验10-1:meet.c溢出
10.2.2缓冲区溢出的后果
10.3本地缓冲区溢出漏洞攻击
10.3.1实验10-2:漏洞攻击的组件
10.3.2实验10-3:在命令行上进行栈溢出漏洞攻击
10.3.3实验10-4:使用通用漏洞攻击代码进行栈溢出漏洞攻击
10.3.4实验10-5:对小缓冲区进行漏洞攻击
10.4漏洞攻击的开发过程
10.4.1实验10-6:构建定制漏洞攻击
10.4.2确定偏移
10.4.3确定攻击向量
10.4.4生成shellcode
10.4.5验证漏洞攻击
10.5本章小结
10.6扩展阅读
第11章 高级Linux漏洞攻击
11.1格式化字符串漏洞攻击
11.1.1问题描述
11.1.2实验11-1:从任意内存读取
11.1.3实验11-2:写入任意内存
11.1.4实验11-3:改变程序执行
11.2内存保护机制
11.2.1编译器的改进
11.2.2实验11-4:绕过堆栈保护
11.2.3内核补丁和脚本
11.2.4实验11-5:“Return to libc”漏洞攻击
11.2.5实验11-6:使用ret2libc保持权限
11.2.6结论
11.3本章小结
11.4参考文献
11.5扩展阅读
第12章 Windows漏洞攻击
12.1 Windows程序编译与调试
12.1.1实验12-1:在Windows 上编译程序
12.1.2在Windows上使用Immunity Debugger 进行调试
12.1.3实验12-2:程序崩溃
12.2编写Windows漏洞攻击程序
12.2.1漏洞攻击程序开发过程回顾
12.2.2实验12-3:攻击ProSSHD服务器
12.3理解结构化异常处理(SEH)
12.4本章小结
12.5参考文献
12.6扩展阅读
第13章 绕过Windows内存保护
13.1理解Windows内存保护(XP SP3、 Vista、 Windows 7/8、Server 2008和Server 2012)
13.1.1基于栈的缓冲区溢出检测(/GS)
13.1.2 SafeSEH
13.1.3 SEHOP
13.1.4堆保护
13.1.5 DEP
13.1.6 ASLR
13.1.7 EMET
13.2绕过Windows内存保护
13.2.1绕过/GS
13.2.2绕过SafeSEH
13.2.3绕过ASLR
13.2.4绕过DEP
13.2.5绕过EMET
13.2.6绕过SEHOP
13.3本章小结
13.4参考文献
13.5扩展阅读
第14章 攻击Windows访问控制模型
14.1为何黑客要攻击访问控制机制
14.1.1多数人并不理解访问控制机制
14.1.2访问控制漏洞易于攻击
14.1.3访问控制漏洞的数量巨大
14.2 Windows访问控制的工作机制
14.2.1安全标识符
14.2.2访问令牌
14.2.3安全描述符
14.2.4访问检查
14.3访问控制配置的分析工具
14.3.1转储进程令牌
14.3.2转储SD
14.4特殊SID、特殊访问权限和“禁止访问”
14.4.1特殊的SID
14.4.2特殊访问权限
14.4.3剖析“禁止访问”
14.5分析访问控制引起的提权漏洞
14.6各种关注的对象类型的攻击模式
14.6.1针对服务的攻击
14.6.2针对Windows注册表DACL的攻击
14.6.3针对目录DACL的攻击
14.6.4针对文件DACL的攻击
14.7其他对象类型的枚举方法
14.7.1枚举共享内存段
14.7.2枚举命名管道
14.7.3枚举进程
14.7.4枚举其他命名的内核对象(信号量、互斥锁、事件、设备)
14.8本章小结
14.9扩展阅读
第15章 攻击Web应用程序
15.1概述十大Web漏洞
15.2 MD5哈希注入
15.2.1实验15-1:注入哈希
15.3多字节编码注入
15.3.1理解漏洞
15.3.2实验15-2:利用多字节编码
15.4搜捕跨站脚本攻击(XSS)
15.4.1实验15-3: JavaScript块中的基本xSS注入
15.5 Unicode规范化形式攻击
15.5.1实验15-4:利用Unicode规范化
15.5.2 Unicode规范化简介
15.5.3规范化形式
15.5.4准备好测试的环境
15.5.5通过x5s插件执行xss 测试
15.5.6手动发起攻击
15.5.7添加自己的测试用例
15.6本章小结
15.7参考文献
15.8扩展阅读
第16章 攻击IE:堆溢出攻击
16.1设置环境
16.1.1 WinDbg配置
16.1.2将浏览器附加到WinDbg
16.2堆喷射简介
16.3使用HTML5喷射
16.3.1实验16-1:使用HTML5执行堆喷射
16.4 DOM元素属性喷射(DEPS)
16.4.1实验16-2:使用DEPS技术的堆喷射
16.5 HeapLib2技术
16.5.1通过耗尽缓存块来强制执行新的分配
16.5.2实验16-3: HeapLib2喷射
16.6使用字节数组的Flash喷射
16.6.1实验16-4:使用Flash执行基本的堆喷射
16.7使用整数向量的Flash喷射
16.7.1实验16-5:使用Flash向量的堆喷射
16.8利用低碎片堆(LFH)
16.9本章小结
16.10参考文献
16.11扩展阅读
第17章 攻击IE:释放后重用技术
17.1释放后重用概述
17.2分析释放后重用攻击(UAF)
17.3利用UAF漏洞
17.4本章小结
17.5参考文献
17.6扩展阅读
第18章 使用BeEF进行高级客户端攻击
18.1 BeEF基础
18.1.1实验18-1:设置BeEF
18.1.2实验18-2:使用BeEF控制台
18.2挂钩浏览器
18.2.1实验18-3:基本的XSS挂钩
18.2.2实验18-4:使用网站欺骗挂钩浏览器
18.2.3实验18-5:使用shank自动注入挂钩
18.3使用BeEF获得指纹
18.3.1实验18-6:使用BeEF获得浏览器指纹
18.3.2实验18-7:使用BeEF获得用户指纹
18.3.3实验18-8:使用BeEF获得计算机指纹
18.4攻击浏览器
18.4.1实验18-9:使用BeEF和Java来攻击浏览器
18.4.2使用BeEF和Metasploit攻击浏览器
18.5自动化攻击
18.6本章小结
18.7扩展阅读
第19章 基于补丁比较的1-day漏洞开发
19.1有关二进制比较的介绍
19.1.1应用程序比较
19.1.2补丁比较
19.2二进制比较工具
19.2.1 BinDiff
19.2.2 turbodiff
19.2.3实验19-1:首次文件比较
19.3补丁管理流程
19.3.1微软周二补丁
19.3.2实验19-2:获得并提取微软补丁
19.3.3检查补丁
19.3.4实验19-3:使用turbodi比较MS14-006
19.3.5内核调试
19.3.6实验19-4:内核调试 MS14-006
19.4本章小结
19.5参考文献
19.6扩展阅读
第Ⅲ部分 高级恶意软件分析
第20章 剖析Android恶意软件
20.1 Android平台简介
20.1.1 Android应用程序包
20.1.2应用程序清单
20.1.3分析DEX
20.1.4 Java反编译
20.1.5 DEX反编译
20.1.6 DEX反汇编
20.1.7练习20-1:在模拟器中运行APK
20.2恶意软件分析
20.2.1恶意软件分析入门
20.2.2练习20-2:运用Droidbox进行黑盒APK监控
20.3本章小结
20.4扩展阅读
第21章 剖析勒索软件
21.1勒索软件的历史
21.2赎金支付选项
21.3剖析Ransomlock
20.2.1实验21-1:动态分析
20.2.2实验21-2:静态分析
21.4 CryptoLocker
21.5本章小结
21.6扩展阅读
第22章 分析64位恶意软件
22.1 AMD64架构概述
22.2解密C&C服务器
22.3本章小结
22.4扩展阅读
第23章 下一代逆向工程
23.1著名的IDA插件
23.1.1 IDAscope
23.1.2 IDAToolbag
23.1.3协作
23.2基于TrapX的蜜罐和沙箱技术
23.2.1免费的动态分析工具
23.2.2商业替代品:TrapX Malware Trap
23.3本章小结
23.4参考文献
23.5扩展阅读