作者: [美]艾伦·哈珀(Allen Harper),丹尼尔·里加拉多(Daniel Regalado),赖安·林(Ryan Linn) 等著;栾浩,毛小飞,姚凯 等译
出版社: 清华大学出版社
出版年: 2019年06月
ISBN: 9787302527688
~~滚到底部有网盘下载链接~~
内容简介
目录
第Ⅰ部分 备 战
第1章 灰帽黑客—— 道德和法律 3
1.1 了解敌人 3
1.1.1 当前的安全状况 3
1.1.2 识别攻击 5
1.2 灰帽黑客之道 5
1.2.1 模拟攻击 6
1.2.2 测试频率及关注点 9
1.3 网络安全相关法律的演变 10
1.4 本章小结 13
第2章 编程技能 15
2.1 C编程语言 15
2.1.1 C语言程序的基本结构 15
2.1.2 程序示例 22
2.1.3 使用gcc进行编译 23
2.2 计算机内存 24
2.2.1 随机存取存储器 24
2.2.2 字节序 25
2.2.3 内存分段 25
2.2.4 内存中的程序 25
2.2.5 缓冲区 27
2.2.6 内存中的字符串 27
2.2.7 指针 27
2.2.8 内存知识小结 28
2.3 Intel处理器 29
2.4 汇编语言基础 30
2.4.1 机器语言、汇编语言与C语言 30
2.4.2 AT&T与NASM 30
2.4.3 寻址模式 33
2.4.4 汇编文件结构 34
2.4.5 汇编过程 35
2.5 使用gdb进行调试 35
2.5.1 gdb基础 35
2.5.2 使用gdb进行反汇编 37
2.6 Python编程技能 38
2.6.1 获取Python 39
2.6.2 Python的“Hello world”程序 39
2.6.3 Python对象 39
2.6.4 字符串 40
2.6.5 数值 41
2.6.6 列表 42
2.6.7 字典 44
2.6.8 Python文件操作 44
2.6.9 Python套接字编程 46
2.7 本章小结 47
第3章 下一代模糊测试 49
3.1 模糊测试简介 49
3.2 模糊测试器的类型 50
3.2.1 数据变异模糊测试器 50
3.2.2 数据生成模糊测试器 50
3.2.3 遗传模糊测试 50
3.3 Peach数据变异模糊测试 51
3.4 Peach数据生成模糊测试 56
3.5 AFL遗传或进化模糊测试 64
3.6 本章小结 68
第4章 下一代逆向工程 69
4.1 代码标注 69
4.1.1 使用IDAscope的IDB标注 69
4.1.2 C 代码分析 75
4.2 协作分析 79
4.2.1 利用FIRST协作知识 80
4.2.2 使用BinNavi进行协作 82
4.3 动态分析 84
4.3.1 使用Cuckoo沙箱自动执行动态分析 84
4.3.2 使用Labeless填补静态工具与动态工具之间的空隙 85
4.3.3 实验4-1:将IDA标注应用于x64dbg调试器 86
4.3.4 实验4-2:将调试器内存区域导入IDA 87
4.4 本章小结 88
第5章 软件定义的无线电 89
5.1 SDR入门 89
5.1.1 从何处购买 89
5.1.2 了解管理规则 91
5.2 示例 91
5.2.1 搜索 91
5.2.2 捕获 92
5.2.3 重放 94
5.2.4 分析 96
5.2.5 预览 102
5.2.6 执行 104
5.3 本章小结 105
第Ⅱ部分 从业务角度分析黑客攻击
第6章 成为一名渗透测试人员 109
6.1 从新手成长为专家的历程 109
6.1.1 渗透测试精神 110
6.1.2 渗透测试分类 110
6.1.3 未来的黑客攻击 110
6.1.4 了解技术 111
6.1.5 知道什么是“良好”的 111
6.1.6 渗透测试培训 112
6.1.7 实践 112
6.1.8 学位课程 115
6.1.9 知识传播 115
6.2 渗透测试人员和职业技能 116
6.2.1 个人责任 116
6.2.2 成为一名值得信赖的顾问 117
6.2.3 管理渗透测试 119
6.3 本章小结 122
第7章 红队的行动 123
7.1 红队的基本行动 124
7.1.1 策略、行动和战术重点 124
7.1.2 评估比较 125
7.2 红队的目标 126
7.3 常见问题 127
7.3.1 范围受限 127
7.3.2 时间受限 127
7.3.3 参与者受限 127
7.3.4 克服条件的限制 127
7.4 沟通 128
7.4.1 规划会议 128
7.4.2 确定可衡量的事件 129
7.5 理解威胁 129
7.6 攻击框架 130
7.7 测试环境 131
7.8 自适应测试 132
7.8.1 外部评估 132
7.8.2 物理安全评估 133
7.8.3 社交工程攻击 133
7.8.4 内部评估 134
7.9 吸取的教训 135
7.10 本章小结 136
第8章 紫队的行动 137
8.1 紫队简介 137
8.2 蓝队的基本行动 138
8.2.1 了解敌人 139
8.2.2 了解自己 139
8.2.3 安全程序 140
8.2.4 事故响应程序 140
8.2.5 常见的蓝队挑战 142
8.3 紫队的基本行动 143
8.3.1 决策框架 143
8.3.2 破坏杀伤链 144
8.3.3 杀伤链对策框架 146
8.3.4 沟通 146
8.4 紫队的优化和自动化 147
8.5 本章小结 148
第9章 漏洞赏金计划 149
9.1 漏洞披露的历史 149
9.1.1 完全向供应商披露 150
9.1.2 完全向公众披露 151
9.1.3 负责任的披露方式 152
9.1.4 再没有免费的Bug 152
9.2 漏洞赏金计划 153
9.2.1 漏洞赏金计划的类型 153
9.2.2 激励措施 155
9.2.3 围绕漏洞赏金计划的争议 155
9.2.4 主流的漏洞赏金计划促进者 155
9.3 Bugcrowd详解 156
9.3.1 程序所有者Web界面 156
9.3.2 程序所有者API示例 161
9.3.3 研究人员Web界面 162
9.4 通过发现漏洞谋生 163
9.4.1 选择一个目标 163
9.4.2 如有必要,进行注册 163
9.4.3 理解游戏规则 164
9.4.4 发现漏洞 164
9.4.5 报告漏洞 164
9.4.6 领取赏金 165
9.5 事故响应 165
9.5.1 沟通 165
9.5.2 鉴别和分级 165
9.5.3 修复 166
9.5.4 向用户披露 166
9.5.5 公关 166
9.6 本章小结 167
第Ⅲ部分 漏 洞 攻 击
第10章 不使用漏洞获取权限 171
10.1 捕获口令哈希 171
10.1.1 理解LLMNR和NBNS 171
10.1.2 理解Windows NTLMv1和NTLMv2身份认证 172
10.1.3 使用Responder 173
10.1.4 实验10-1:使用Responder获取口令 175
10.2 使用Winexe 178
10.2.1 实验10-2:使用Winexe访问远程系统 178
10.2.2 实验10-3:使用Winexe提升权限 179
10.3 使用WMI 180
10.3.1 实验10-4:使用WMI查询系统信息 180
10.3.2 实验10-5:使用WMI执行命令 182
10.4 利用WinRM 185
10.4.1 实验10-6:使用WinRM执行命令 185
10.4.2 实验10-7:使用WinRM远程运行PowerShell 186
10.5 本章小结 188
第11章 基本的Linux漏洞攻击 189
11.1 堆栈操作和函数调用过程 189
11.2 缓冲区溢出 191
11.2.1 实验11-1:meet.c溢出 192
11.2.2 缓冲区溢出的后果 196
11.3 本地缓冲区溢出漏洞攻击 197
11.3.1 实验11-2:漏洞攻击的组件 197
11.3.2 实验11-3:在命令行上进行堆栈溢出漏洞攻击 200
11.3.3 实验11-4:使用通用漏洞攻击代码进行堆栈溢出漏洞攻击 203
11.3.4 实验11-5:对小缓冲区进行漏洞攻击 205
11.4 漏洞攻击的开发过程 208
11.5 本章小结 215
第12章 高级的Linux漏洞攻击 217
12.1 格式化字符串漏洞攻击 217
12.1.1 格式化字符串 217
12.1.2 实验12-1:从任意内存读取 222
12.1.3 实验12-2:写入任意内存 224
12.1.4 实验12-3:改变程序执行 226
12.2 内存保护机制 229
12.2.1 编译器的改进 229
12.2.2 实验12-4:绕过栈保护 231
12.2.3 内核补丁和脚本 234
12.2.4 实验12-5:Return to Libc漏洞攻击 235
12.2.5 实验12-6:使用ret2libc保持权限 240
12.2.6 结论 244
12.3 本章小结 245
第13章 基本的Windows漏洞攻击 247
13.1 编译和调试Windows程序 247
13.1.1 实验13-1:在Windows上编译程序 248
13.1.2 Windows编译选项 249
13.1.3 在Windows上使用Immunity Debugger进行调试 250
13.1.4 实验13-2:程序崩溃 253
13.2 编写Windows漏洞攻击程序 256
13.2.1 回顾漏洞攻击程序的开发过程 256
13.2.2 实验13-3:攻击ProSSHD服务器 256
13.3 理解SEH 267
13.4 理解和绕过Windows内存保护 269
13.4.1 SafeSEH 269
13.4.2 绕过SafeSEH 270
13.4.3 SEHOP 271
13.4.4 绕过SEHOP 271
13.4.5 基于堆栈的缓冲区溢出检测(/GS) 278
13.4.6 绕过/GS 280
13.4.7 堆保护 280
13.5 本章小结 281
第14章 高级的Windows漏洞攻击 283
14.1 DEP 283
14.2 ASLR 284
14.3 EMET和Windows Defender Exploit Guard 285
14.4 绕过ASLR 285
14.5 绕过DEP和ASLR 287
14.5.1 VirtualProtect函数 287
14.5.2 ROP 287
14.5.3 指令片段 288
14.5.4 构建ROP链 289
14.6 通过内存泄漏突破ASLR 293
14.6.1 触发缺陷 294
14.6.2 跟踪内存泄漏 297
14.6.3 内存泄漏武器化 308
14.6.4 构建RVA ROP链 311
14.7 本章小结 315
第15章 PowerShell漏洞攻击 317
15.1 为什么使用PowerShell 317
15.1.1 利用现有资源 317
15.1.2 PowerShell日志记录 318
15.1.3 PowerShell的可移植性 319
15.2 加载PowerShell脚本 319
15.2.1 实验15-1:攻击条件 319
15.2.2 实验15-2:在命令行上传递命令 321
15.2.3 实验15-3:编码的命令 322
15.2.4 实验15-4:通过Web启动 323
15.3 使用PowerSploit进行漏洞攻击和后漏洞攻击 325
15.3.1 实验15-5:设置PowerSploit 325
15.3.2 实验15-6:通过PowerShell运行Mimikatz 327
15.3.3 实验15-7:使用PowerSploit创建持续访问 330
15.4 使用Empire实现命令和控制 333
15.4.1 实验15-8:设置Empire 333
15.4.2 实验15-9:使用Empire执行命令和控制 333
15.4.3 实验15-10:使用Empire攻克系统 334
15.5 本章小结 337
第16章 下一代Web应用程序漏洞攻击 339
16.1 XSS演化史 339
16.1.1 设置环境 340
16.1.2 实验16-1:温习XSS 341
16.1.3 实验16-2:XSS规避Internet防线 344
16.1.4 实验16-3:使用XSS更改应用程序逻辑 346
16.1.5 实验16-4:为XSS使用DOM 348
16.2 框架漏洞 351
16.2.1 设置环境 352
16.2.2 实验16-5:CVE-2017-5638漏洞攻击 352
16.2.3 实验16-6:CVE-2017-9805漏洞攻击 354
16.3 Padding Oracle Attack 357
16.4 本章小结 360
第17章 下一代补丁漏洞攻击 361
17.1 有关二进制比较的介绍 361
17.1.1 应用程序比较 361
17.1.2 补丁比较 362
17.2 二进制比较工具 363
17.2.1 BinDiff 364
17.2.2 turbodiff 365
17.2.3 实验17-1:首次文件比较 367
17.3 补丁管理流程 369
17.3.1 微软星期二补丁 370
17.3.2 获得并提取微软补丁 371
17.3.3 实验17-2:比较MS17-010 372
17.4 通过比较补丁进行漏洞攻击 375
17.4.1 DLL旁路漏洞 375
17.4.2 实验17-3:比较MS16-009 377
17.5 本章小结 382
第Ⅳ部分 高级恶意软件分析
第18章 剖析移动平台恶意软件 385
18.1 Android平台简介 385
18.1.1 Android应用程序包 385
18.1.2 应用程序清单 387
18.1.3 分析DEX 389
18.1.4 Java反编译 391
18.1.5 DEX反编译 392
18.1.6 DEX反汇编 394
18.1.7 示例18-1:在模拟器中运行APK 395
18.1.8 恶意软件分析 397
18.1.9 示例18-2:运用Droidbox进行黑盒APK监控 401
18.2 iOS平台 403
18.2.1 iOS安全 403
18.2.2 iOS应用程序 405
18.2.3 实验18-1:分析二进制属性列表文件 405
18.2.4 实验18-2:iPhone 4S越狱 406
18.2.5 实验18-3:解密Apple商店应用程序 407
18.3 本章小结 409
第19章 剖析勒索软件 411
19.1 勒索软件的历史 411
19.2 赎金支付选项 412
19.3 剖析Ransomlock 413
19.3.1 示例19-1:动态分析 413
19.3.2 示例19-2:静态分析 415
19.4 Wannacry 428
19.5 本章小结 434
第20章 ATM恶意软件 435
20.1 ATM概览 435
20.2 XFS概览 437
20.2.1 XFS体系结构 438
20.2.2 XFS管理器 439
20.3 分析ATM恶意软件 443
20.3.1 ATM恶意软件的类型 443
20.3.2 攻击者是如何在ATM上安装恶意软件的 444
20.3.3 剖析恶意软件 446
20.3.4 针对ATM恶意软件的对策 453
20.4 本章小结 454
第21章 欺骗:下一代蜜罐 455
21.1 欺骗简史 455
21.1.1 作为欺骗形式的蜜罐 456
21.1.2 部署时的考虑事项 458
21.1.3 设置虚拟机 458
21.2 开源蜜罐 459
21.2.1 实验21-1:Dionaea 459
21.2.2 实验21-2:ConPot 462
21.2.3 实验21-3:Cowrie 463
21.2.4 实验21-4:T-Pot 466
21.3 可选的商业化产品:TrapX 471
21.4 本章小结 480
第Ⅴ部分 物 联 网
第22章 攻击目标:物联网 483
22.1 IoT 483
22.1.1 连接设备的类型 483
22.1.2 无线协议 484
22.1.3 通信协议 485
22.1.4 安全方面的考虑事项 485
22.2 Shodan IoT搜索引擎 486
22.2.1 Web界面 486
22.2.2 实验22-1:使用Shodan命令行工具 488
22.2.3 Shodan API 489
22.2.4 实验22-2:测试Shodan API 489
22.2.5 实验22-3:使用MQTT 491
22.2.6 未经身份认证访问MQTT带来的启示 492
22.3 IoT蠕虫:只是时间问题 493
22.3.1 实验22-4:Mirai依然存在 493
22.3.2 预防措施 494
22.4 本章小结 494
第23章 剖析嵌入式设备 495
23.1 CPU 495
23.1.1 微处理器 495
23.1.2 微控制器 496
23.1.3 SoC 496
23.1.4 常见的处理器架构 496
23.2 串行接口 497
23.2.1 UART 497
23.2.2 SPI 502
23.2.3 I2C 503
23.3 调试接口 503
23.3.1 JTAG 503
23.3.2 SWD 505
23.4 软件 506
23.4.1 启动加载程序 507
23.4.2 无操作系统 508
23.4.3 实时操作系统 508
23.4.4 通用操作系统 509
23.5 本章小结 509
第24章 攻击嵌入式设备 511
24.1 对嵌入式设备中的漏洞进行静态分析 511
24.1.1 实验24-1:分析更新包 511
24.1.2 实验24-2:执行漏洞分析 515
24.2 使用硬件执行动态分析 518
24.2.1 设置测试环境 518
24.2.2 Ettercap 519
24.3 使用模拟器执行动态分析 523
24.3.1 FIRMADYNE工具 523
24.3.2 实验24-3:设置FIRMADYNE 523
24.3.3 实验24-4:模拟固件 525
24.3.4 实验24-5:攻击固件 528
24.4 本章小结 529
第25章 反制物联网恶意软件 531
25.1 对物联网设备的物理访问 531
25.1.1 RS-232概述 532
25.1.2 RS-232引脚排列 532
25.1.3 练习25-1:排除医疗设备的RS-232端口故障 533
25.2 建立威胁实验室 539
25.2.1 ARM和MIPS概述 540
25.2.2 实验25-1:使用QEMU设置系统 541
25.3 动态分析物联网恶意软件 544
25.3.1 实验25-2:动态分析恶意软件 544
25.3.2 PANDA 545
25.3.3 BeagleBone Black开发板 546
25.4 物联网恶意软件的逆向工程 546
25.4.1 ARM/MIPS指令集速成 546
25.4.2 实验25-3:IDA Pro远程调试和逆向工程 549
25.4.3 练习物联网恶意软件逆向工程 553
25.5 本章小结 555
显示部分信息