TA的每日心情 | 开心 2015-12-2 00:40 |
---|
签到天数: 16 天 [LV.4]偶尔看看III
|
内容简介:
本书的目标是帮助培养更多技术精湛的、专注于抵御恶意黑客攻击的安全专家。事实一再证明,对敌方的了解是非常重要的,包括他们的策略、技能、工具和动机。企业和国家所面临的敌手非常专注,而且技艺超群。我们必须携起手来才能理解敌方的行动过程和流程,以确保我们能够正确地挫败敌方具有破坏性的恶意攻击。
本书的作者希望为读者提供他们认为这个行业所需的信息,即对负责任的而且在意图和
物质方面真正合乎道德标准的正义黑客技术的整体性讨论。这也是为什么本书一开始就给出正义黑客的定义的原因所在,社会上对正义黑客的理解是非常模糊的。
本书对前两版中的材料进行了更新,并尝试将最全面、最新的技术、流程和材料汇集起来。因此增加了9 章全新的内容,同时对其他章的内容进行了新新。
目录:
第Ⅰ部分 “合乎道德的揭秘行为”
简介 .................................... 1
第1 章 正义黑客的道德规范 ................ 3
1.1 理解敌方策略的意义 ................. 3
1.2 认识安全领域的灰色区域 ......... 7
1.3 本书与正义黑客类图书
的关系 ........................................ 8
1.3.1 漏洞评估 ................................. 8
1.3.2 渗透测试 ................................. 9
1.4 关于黑客类图书和课程的
争议 .......................................... 12
1.4.1 工具的双重性 ....................... 13
1.4.2 识别攻击 ............................... 14
1.4.3 模拟攻击 ............................... 15
1.5 攻击者最喜欢利用的漏洞 ....... 15
第2 章 合乎道德的正常揭秘行为 ....... 19
2.1 各方看待问题的不同角度 ....... 20
2.2 CERT 目前采取的工作流程 .... 21
2.3 完全揭秘策略—
RainForest Puppy Policy .......... 23
2.4 Internet 安全组织 ..................... 24
2.4.1 发现漏洞 ............................... 25
2.4.2 通知 ....................................... 25
2.4.3 验证 ....................................... 27
2.4.4 解决 ....................................... 29
2.4.5 发布 ....................................... 30
2.5 争议仍将存在 ........................... 30
2.6 案例分析 ................................... 34
2.6.1 正当揭秘过程的优缺点 ....... 35
2.6.2 供应商更加关注 ................... 38
2.7 接下来应该做什么 ................... 38
第Ⅱ部分 渗透测试及工具 .............. 41
第3 章 社会工程攻击 ......................... 43
3.1 社会工程攻击原理 ................... 43
3.2 实施社会工程攻击 ................... 44
3.3 渗透测试中常用到的
攻击手段 .................................. 46
3.3.1 好心人 ................................... 47
3.3.2 会议室 ................................... 51
3.3.3 加入公司 ............................... 53
3.4 准备好进行面对面的攻击 ....... 54
3.5 防御社会工程攻击 ................... 56
第4 章 潜入攻击 ................................ 57
4.1 潜入攻击如此重要的原因 ....... 57
4.2 实施潜入攻击 ........................... 58
4.2.1 侦察 ....................................... 58
4.2.2 思想准备 ............................... 60
4.3 进入目标建筑物的常用方法 ..... 60
4.3.1 吸烟区入口 ........................... 61
4.3.2 人工检查点 ........................... 62
4.3.3 锁住的门 ............................... 64
4.3.4 物理方式开锁 ....................... 66
4.3.5 进入目标之后 ....................... 69
4.4 防御潜入攻击 ........................... 69
第5 章 内部攻击 ................................ 71
5.1 模拟内部攻击的重要性 ........... 71
5.2 实施内部攻击 ........................... 72
5.2.1 工具和准备工作 ................... 72
5.2.2 了解情况 ............................... 72
5.2.3 获得本地管理员权限 ............ 73
5.2.4 禁用防病毒软件 ................... 76
5.2.5 使用Cain ............................... 77
5.3 防御内部攻击 ........................... 83
第6 章 使用BackTrack Linux 发行 ..... 85
6.1 BackTrack 简介 ........................ 85
6.2 将BackTrack 安装到DVD
或优盘 ...................................... 86
6.3 直接在虚拟机中使用Back
Track ISO 映像文件 ................. 87
6.3.1 使用VirtualBox 创建
BackTrack 虚拟机 ............... 88
6.3.2 引导BackTrack LiveDVD
系统 ....................................... 88
6.3.3 探索BackTrack X 窗口
环境 ...................................... 89
6.3.4 启动网络服务 ....................... 90
6.4 永久性更改BackTrack............. 90
6.4.1 将BackTrack 完整地安装
在硬盘或者优盘中 ................ 91
6.4.2 新建一个包含永久性更改
信息的ISO 文件 ................... 92
6.4.3 使用自定义文件自动保存
和恢复更改 ........................... 94
6.5 研究BackTrack 引导菜单........ 95
6.6 更新BackTrack ........................ 97
第7 章 使用Metasploit ...................... 99
7.1 Metasploit 简介 ......................... 99
7.2 获取Metasploit ......................... 99
7.3 使用Metasploit 控制台加载
攻击工具 ................................. 100
7.4 使用Metasploit 攻击客户端
漏洞 ........................................ 105
7.5 使用Metasploit Meterpreter
进行渗透测试 ......................... 107
7.5.1 使用Meterpreter 进行
键盘记录 ............................ 110
7.5.2 使用Meterpreter 以不同的已
登录用户身份运行代码 ...... 110
7.5.3 使用Meterpreter 的hashdump
命令和Metasploit 的psexec 命令
以及共享口令登录 .............. 112
7.6 Metasploit 的自动化
与脚本化 ................................ 113
7.7 更进一步探讨Metasploit ....... 115
第8 章 渗透测试管理 ....................... 117
8.1 制定渗透测试计划 ................. 117
8.1.1 渗透测试的类型 ................. 117
8.1.2 渗透测试的范围 ................. 118
8.1.3 渗透测试的位置 ................. 118
8.1.4 渗透测试小组成员构成 ...... 118
8.1.5 方法和标准 ......................... 118
8.1.6 渗透测试的各个阶段 .......... 119
8.1.7 渗透测试计划 ..................... 120
8.2 签署渗透测试协议 ................. 121
8.2.1 工作声明 ............................. 121
8.2.2 “保释信” ......................... 121
8.3 实施渗透测试 ......................... 122
8.3.1 测试启动会议 ..................... 122
8.3.2 渗透测试中的资源访问 ...... 122
8.3.3 测试预期值管理 ................. 123
8.3.4 测试问题管理 ..................... 123
8.3.5 欲速则不达 ......................... 123
8.3.6 外部和内部协同 ................. 123
8.4 在渗透测试中进行信息共享 ...... 124
8.5 生成渗透测试结果报告 ......... 128
8.5.1 报告格式 ............................. 128
8.5.2 报告摘要 ............................. 128
第Ⅲ部分 漏洞攻击 ........................ 129
第 9 章 编程技能 ............................ 131
9.1 C 编程语言 ............................. 131
9.1.1 C 语言基本结构 .................. 131
9.1.2 程序范例 ............................. 135
9.1.3 使用gcc 进行编译 .............. 136
9.2 计算机内存 ............................. 137
9.2.1 随机存取存储器(RAM) ...... 137
9.2.2 字节序 ................................. 137
9.2.3 内存分段 ............................. 138
9.2.4 内存中的程序 ..................... 138
9.2.5. 缓冲区 .................................. 139
9.2.6. 内存中的字符串 .................. 139
9.2.7 指针 ..................................... 139
9.2.8 内存知识小结 ....................... 140
9.3 Intel 处理器 ............................. 141
9.3.1 寄存器 ................................. 141
9.4 汇编语言基础 ......................... 142
9.4.1 机器指令、汇编语言与
C 语言 ................................. 142
9.4.2 AT&T 与NASM ................. 142
9.4.3 寻址模式 ............................. 144
9.4.4 汇编文件结构 ..................... 145
9.4.5 汇编过程 ............................. 146
9.5 使用gdb 进行调试 ................. 146
9.5.1 gdb 基础 .............................. 146
9.5.2 使用gdb 进行反汇编 ......... 148
9.6 Python 编程技能 ..................... 149
9.6.1 获取Python ......................... 149
9.6.2 Python 中的Hello World
程序 ..................................... 149
9.6.3 Python 对象 ......................... 150
9.6.4 字符串 ................................. 150
9.6.5 数字 ..................................... 151
9.6.6 列表 ..................................... 152
9.6.7 字典 ..................................... 153
9.6.8 Python 文件操作 ................. 154
9.6.9 Python 套接字编程 ............. 155
第10 章 基本的Linux 漏洞攻击 ....... 157
10.1 栈操作 ................................... 157
10.1.1 函数调用过程 ................. 158
10.2 缓冲区溢出 ........................... 159
10.2.1 meet.c 溢出 ..................... 160
10.2.2 缓冲区溢出的后果 ......... 163
10.3 本地缓冲区溢出漏洞攻击 ..... 164
10.3.1 漏洞攻击组成部分 ......... 165
10.3.2 在命令行上进行栈溢出
漏洞攻击 ........................ 167
10.3.3 使用通用漏洞攻击代码
进行栈溢出漏洞攻击 ..... 168
10.3.4 对小缓冲区进行
漏洞攻击 ......................... 170
10.4 漏洞攻击开发过程 ............... 173
10.4.1 控制eip ........................... 173
10.4.2 确定偏移 ......................... 173
10.4.3 确定攻击途径 ................. 176
10.4.4 构建漏洞攻击三明治 ..... 176
10.4.5 测试漏洞攻击 ................. 177
第11 章 高级Linux 漏洞攻击 ........... 179
11.1 格式化字符串漏洞攻击 ....... 179
11.1.1 问题描述 ......................... 179
11.1.2 从任意内存读取 ............. 183
11.1.3 写入任意内存 ................. 184
11.1.4 利用.dtors 获得根
特权级 ............................ 186
11.2 内存保护机制 ....................... 189
11.2.1 编译器改进 ..................... 190
11.2.2 内核补丁和脚本 ............. 193
11.2.3. “返回到libc”漏洞
攻击 ................................ 194
11.2.4 综合比较 ......................... 202
第12 章 Shellcode 策略 ................... 203
12.1 用户空间shellcode ............... 203
12.1.1 系统调用 ......................... 203
12.1.2 基本shellcode ................. 204
12.1.3 端口绑定shellcode ......... 205
12.1.4 反向shellcode ................. 206
12.1.5 查找套接字shellcode ..... 207
12.1.6 命令执行代码 ................. 208
12.1.7 文件传输代码 ................. 208
12.1.8 多级shellcode ................. 209
12.1.9 系统调用代理
shellcode ......................... 209
12.1.10 进程注入shellcode ....... 210
12.2 其他shellcode 考虑因素 ...... 211
12.2.1 shellcode 编码 ................. 211
12.2.2 自我破坏shellcode ......... 212
12.2.3 反汇编shellcode ............. 213
12.3 内核空间shellcode ............... 214
12.3.1 内核空间考虑因素 ......... 214
第13 章 编写Linux shellcode .......... 217
13.1 基本的Linux shellcode ........ 217
13.1.1 系统调用 ......................... 217
13.1.2 使用C 进行系统调用 .... 218
13.1.3 使用汇编语言进行
系统调用 ........................ 219
13.1.4 系统调用exit .................. 219
13.1.5 系统调用setreuid ........... 221
13.1.6 利用execve 实现创建
shell 的shellcode ............ 222
13.2 实现端口绑定shellcode ....... 226
13.2.1 Linux 套接字编程........... 226
13.2.2 采用汇编语言编程建立
一个套接字 ..................... 228
13.2.3 测试shellcode ................. 231
13.3 实现反向连接shellcode ....... 234
13.3.1 反向连接C 语言编程 ...... 234
13.3.2 反向连接汇编程序 ......... 235
13.4 shellcode 编码 ....................... 237
13.4.1 简单的XOR 编码 ........... 237
13.4.2 编码后shellcode 的
结构 ................................. 238
13.4.3 JMP/CALL XOR 解码
器示例 ............................. 238
13.4.4 FNSTENV XOR 示例 ..... 239
13.4.5 将代码组合起来 ............. 241
13.5 利用Metasploit 自动生成
shellcode ............................... 244
13.5.1 利用Metasploit 生成
shellcode ......................... 244
13.5.2 利用Metasploit 对
shellcode 进行编码 ........ 245
第14 章 Windows 漏洞攻击 ............. 247
14.1 Windows 程序编译与调试 .... 247
14.1.1 在Windows 上进行
编译 ................................. 247
14.1.2 在Windows 上用
OllyDbg 进行调试 ......... 249
14.2 编写Windows 漏洞攻击
程序 ...................................... 253
14.2.1 漏洞攻击程序开发
过程回顾 ........................ 254
14.2.2 ProSSHD 服务器 ............ 254
14.2.3 控制eip ........................... 255
14.2.4 确定偏移 ......................... 257
14.2.5 确定攻击途径 ................. 258
14.2.6 构建攻击三明治 ............. 261
14.2.7 根据需要调试漏洞
攻击程序 ......................... 262
14.3 理解SEH .............................. 264
14.3.1 SEH 的实现 ..................... 264
14.4 理解Windows 内存保护
(XP SP3、Vista、7 和
Server 2008) .......................... 266
14.4.1 基于栈的缓冲区溢出
检测(/GS) ....................... 266
14.4.2 SafeSEH .......................... 268
14.4.3 SEHOP ............................ 268
14.4.4 堆保护 ............................. 268
14.4.5 DEP ................................. 268
14.4.6 ASLR ............................... 269
14.5 绕开Windows 内存保护 ...... 270
14.5.1 绕开/GS ........................... 270
14.5.2 绕开SafeSEH ................. 271
14.5.3 绕开ASLR ...................... 272
14.2.4 绕开DEP......................... 272
14.5.5 绕开SEHOP ................... 278
14.5.6 内存保护绕开方法小结 .... 285
第15 章 Content-Type 攻击原理
与检测 ................................ 287
15.1 Content-Type 攻击原理 ........ 287
15.2 现今可被攻击的文件格式 ..... 289
15.3 PDF 文件格式简介 ............... 290
15.4 恶意PDF 漏洞攻击分析 ...... 293
15.5 恶意PDF 文件检测工具 ...... 296
15.5.1 PDFiD .............................. 296
15.5.2 Pdf-parser.py .................... 300
15.6 Content-Type 攻击防御
测试工具 .............................. 303
15.7 Content-Type 攻击防御
方法 ...................................... 304
15.7.1 安装所有的安全更新 ..... 304
15.7.2 在Adobe Reader
中禁用JavaScript ........... 305
15.7.3 针对微软Office 应用
程序和Adobe Reader
启用DEP ......................... 305
第16 章 WEB 应用程序安全漏洞....... 307
16.1 最流行的Web 应用程序
安全漏洞概述 ...................... 307
16.1.1 注入漏洞 ......................... 307
16.1.2 跨站脚本漏洞 ................. 308
16.1.3 OWASP 十大隐患中
的其他内容 ..................... 308
16.2 SQL 注入漏洞攻击 .............. 308
16.2.1 SQL 数据库与语句......... 310
16.2.2 测试Web 应用程序,
搜寻SQL 注入漏洞 ........ 312
16.3 跨站脚本漏洞攻击 ............... 317
16.3.1 “脚本”的含义 ............. 317
16.3.2 跨站脚本的含义 ............. 318
第17 章 oIP 攻击 ............................. 323
17.1 VoIP 的含义 .......................... 323
17.2 VoIP 使用的协议 .................. 324
17.2.1 SIP ................................... 324
17.2.2 Megaco H.248 ................. 325
17.2.3 H.323 ............................... 325
17.2.4 TLS 和DTLS .................. 326
17.2.5 SRTP ................................ 327
17.2.6 ZRTP ............................... 327
17.3 VoIP 攻击类型 ...................... 327
17.3.1 枚举 ................................. 328
17.3.2 SIP 口令破解 .................. 328
17.3.3 窃听与分组捕获 ............. 329
17.3.4 拒绝服务 ......................... 329
17.4 如何防范VoIP 攻击 ............. 335
第18 章 SCADA 攻击 ...................... 337
18.1 SCADA 的含义 .................... 337
18.2 SCADA 使用的协议 ............ 338
18.2.1 OPC ................................. 338
18.2.2 ICCP ................................ 338
18.2.3 Modbus ............................ 338
18.2.4 DNP3 ............................... 339
18.3 SCADA fuzzing 测试 ............ 340
18.3.1 使用Autodafé进行SCADA
fuzzing 测试 ................... 340
18.3.2 使用TFTP Daemon
Fuzzer 进行SCADA
fuzzing 测试 ................... 346
18.4 Stuxnet 恶意软件(网络恐怖
主义新浪潮) ......................... 349
18.5 防范SCADA 攻击 ............... 349
第Ⅳ部分 漏洞分析 ........................ 351
第19 章 被动分析 ............................ 353
19.1 道德的逆向工程 ................... 353
19.2 使用逆向工程的原因 ........... 354
19.2.1 逆向工程注意事项 ......... 354
19.3 源代码分析 ........................... 355
19.3.1 源代码审计工具 ............. 355
19.3.2 源代码审计工具的
实用性 ............................. 357
19.3.3 手工源代码审计 ............. 359
19.3.4 自动化源代码分析 ......... 363
19.4 二进制分析 ........................... 365
19.4.1 二进制代码的手工审计 .... 365
19.4.2 自动化的二进制
分析工具 ........................ 376
第20 章 使用IDA Pro 进行高级
静态分析 ........................... 381
20.1 静态分析难点 ....................... 381
20.1.1 剥离的二进制文件 ......... 381
20.1.2 静态链接程序和
FLAIR ............................. 383
20.1.3 数据结构分析 ................. 389
20.1.4 已编译的C++代码
的诡异之处 ..................... 393
20.2 扩展IDA Pro ........................ 396
20.2.1 IDC 脚本编程 ................. 396
20.2.2 IDA Pro 插件模块
及IDA Pro SDK .............. 398
20.2.3 构建IDA Pro 插件 .......... 400
20.2.4 IDA Pro 加载器及
处理器模块 ..................... 402
第21 章 高级逆向工程技术 .............. 405
21.1 软件攻击的目的 ................... 405
21.2 软件开发过程概述 ............... 406
21.3 检测工具 ............................... 407
21.3.1 调试器 ............................. 407
21.3.2 代码覆盖分析工具 ......... 409
21.3.3 统计分析工具 ................. 410
21.3.4 流程分析工具 ................. 410
21.3.5 内存使用监视工具 ......... 412
21.4 模糊测试 ............................... 416
21.5 定制的模糊测试工具
和技术 .................................. 417
21.5.1 一个简单的URL 模糊
测试工具 ......................... 417
21.5.2 对未知协议进行模糊
测试 ................................. 420
21.5.3 SPIKE .............................. 421
21.5.4 SPIKE 静态内容原语 ..... 421
21.5.5 SPIKE Proxy ................... 424
21.5.6 Sharefuzz ......................... 424
第22 章 客户端浏览器的漏洞攻击 .... 427
22.1 客户端软件漏洞的
重要性 ................................... 427
22.1.1 客户端漏洞可以规避
防火墙保护 ..................... 427
22.1.2 客户端应用程序经常
在管理权限下运行 ......... 428
22.1.3 客户端漏洞易于针对
特定人群或机构目标 .... 428
22.2 Internet Explorer 的安全
概念 ...................................... 429
22.2.1 ActiveX 控件 ................... 429
22.2.2 Internet Explorer
安全区域 ........................ 430
22.3 客户端漏洞攻击的历史
与发展趋势 .......................... 431
22.3.1 客户端漏洞的流行 ......... 431
22.3.2 历史上针对客户端
攻击的著名漏洞............. 431
22.4 挖掘基于浏览器的新漏洞 ..... 437
22.4.1 mangleme ........................ 437
22.4.2 Mozilla 安全团队的
模糊测试工具 ................. 440
22.4.3 AxEnum ........................... 441
22.4.4 AxFuzz ............................ 446
22.4.5 AxMan ............................. 446
22.5 可利用的堆喷射技术 ........... 451
22.5.1 InternetExploiter .............. 451
22.6 防范客户端漏洞攻击 ........... 452
22.6.1 同步更新安全补丁 ......... 452
22.6.2 获取最新信息 ................. 453
22.6.3 在缩减权限下运行
Internet 应用 ................... 453
第23 章 攻击Windows 访问控制
模型 ................................... 455
23.1 攻击访问控制机制的
理由 ...................................... 455
23.1.1 多数人不理解访问
控制机制 ......................... 455
23.1.2 访问控制漏洞易于
攻击 ................................ 456
23.1.3 访问控制漏洞数量
巨大 ................................ 456
23.2 Windows 访问控制的
工作机制 .............................. 456
23.2.1 安全标识符 ..................... 456
23.2.2 访问令牌 ......................... 457
23.2.3 安全描述符 ..................... 460
23.2.4 访问检查 ......................... 463
23.3 访问控制配置分析工具 ....... 465
23.3.1 转储进程令牌 ................. 466
23.3.2 转储安全描述符 ............. 468
23.4 特殊SID、特殊访问权限和
“禁止访问”问题 ................ 469
23.4.1 特殊的SID...................... 469
23.4.2 特殊访问权限 ................. 471
23.4.3 “禁止访问”的原理 ..... 472
23.5 访问控制引起的提权漏洞 ..... 477
23.6 各种对象类型的攻击模式 ..... 478
23.6.1 服务攻击 ......................... 478
23.6.2 Windows 注册表DACL
攻击 ................................ 484
23.6.3 目录DACL 攻击 ............ 488
23.6.4 文件DACL 攻击 ............ 493
23.7 其他对象类型的枚举方法 ..... 497
23.7.1 共享内存段 ..................... 497
23.7.2 命名管道 ......................... 498
23.7.3 进程 ................................. 499
23.7.4 其他已命名的内核对象
(信号量、互斥锁、事件、
设备) ............................... 500
第24 章 智能模糊测试框架Sulley .... 503
24.1 协议分析 ............................... 503
24.2 Sulley 模糊测试框架 ............ 504
24.2.1 安装Sulley ...................... 505
24.2.2 强大的模糊测试工具 ..... 505
24.2.3 块结构 ............................. 507
24.2.4 监视进程中的错误 ......... 511
24.2.5 监视网络流量 ................. 512
24.2.6 控制VMware .................. 512
24.2.7 综述 ................................. 513
24.2.8 崩溃事件的事后分析 ..... 515
24.2.9 网络使用分析 ................. 516
24.2.10 进一步研究 ................... 517
第25 章 漏洞的可利用性和漏洞
攻击程序 ............................ 519
25.1 漏洞的可利用性 ................... 519
25.1.1 通过调试分析可利用性 .... 520
25.1.2 初始分析 ......................... 520
25.2 理解漏洞攻击问题 ............... 524
25.2.1 先决条件和后置条件 ..... 524
25.2.2 可重复性 ......................... 525
25.3 构造漏洞攻击程序有效
载荷的有关考虑 .................. 533
25.3.1 漏洞攻击程序有效
载荷的协议元素 ............ 533
25.3.2 缓冲区的方向 ................. 534
25.3.3 自毁式shellcode ............. 534
25.4 对问题进行归档 ................... 535
25.4.1 背景知识 ......................... 535
25.4.2 环境 ................................. 536
25.4.3 研究结果 ......................... 536
技术编辑简介:
Michael Baucom 是北卡罗莱纳州N2NetSecurity, Inc.公司的研发副总裁。他的软件工程
师职业生涯长达15 年,曾经编写过各种软件,既包括采用汇编语言编写的路由转发代码,
也包括Windows 应用程序和服务。除了编写软件之外,他还从事过安全咨询工作,包括培
训、源代码审查以及渗透测试。
作者简介:
Allen Harper,CISSP、PCI QSA,北卡罗莱纳州N2NetSecurity, Inc.公司总裁和所有者。他曾在美国海军陆战队服役20 年并在伊拉克“旅游”之后退役。此外,他还曾经担任美国财政部、国税局计算机安全应急响应中心(IRS CSIRC)的安全分析师。他经常会在像Black Hat 和Techno 这样的会议上发表演讲和授课。
Shon Harris,CISSP,Logical Security 总裁,作家、教育工作者和安全咨询师。曾经担任过美国空军信息战部队的工程师,并且出版过一些有关信息安全领域的不同学科的著作和论文。信息安全杂志(Information Security Magazine)曾经将她评为信息安全领域的25 最杰出的位女性精英之一。
|
|