图书目录

目    录

第I 部分 MFA 简介

第1 章 登录问题             3

1.1 外部环境十分糟糕      3

1.2 口令问题            4

1.3 口令基础知识         8

1.3.1 身份              9

1.3.2 口令              9

1.3.3 口令注册          10

1.3.4 口令的复杂度       10

1.3.5 口令存储          11

1.3.6 口令身份验证       12

1.3.7 口令策略          13

1.3.8 口令会在现实世界持续一段时间         16

1.4 口令问题和攻击       16

1.4.1 口令猜测          16

1.4.2 破解口令哈希       20

1.4.3 口令窃取          23

1.4.4 显而易见的口令     24

1.4.5 自讨苦吃          26

1.4.6 口令破解防御之道   26

1.5 MFA 驰马来援?       27

1.6 小结               27

第2 章 身份验证基础         29

2.1 身份验证生命周期      30

2.1.1 身份             30

2.1.2 身份验证          40

2.1.3 授权             47

2.1.4 核算/审计         47

2.1.5 标准             48

2.2 身份法则            48

2.3 真实世界中的身份验证问题              49

2.4 小结               50

第3 章 身份验证类型         51

3.1 个人识别            51

3.2 基于知识的身份验证    52

3.2.1 口令             52

3.2.2 PIN             53

3.2.3 解决难题          55

3.3 口令管理器          58

3.4 单点登录和代理       61

3.5 密码术             62

3.5.1 加密             62

3.5.2 公钥基础架构       65

3.5.3 哈希             68

3.6 硬件令牌            69

3.6.1 一次性口令设备     69

3.6.2 物理连接设备       71

3.6.3 无线             73

3.7 基于手机            75

3.7.1 语音身份验证      75

3.7.2 手机应用程序      75

3.7.3 SMS            77

3.8 生物识别技术         78

3.9 FIDO              78

3.10 联合身份和API       79

3.10.1 OAuth         80

3.10.2 API            81

3.11 上下文/自适应       81

3.12 不太流行的方法      82

3.12.1 无线电         82

3.12.2 基于纸张       83

3.13 小结              83

第4 章 易用性与安全性       85

4.1 易用性意味着什么?    85

4.2 人们不是真的想要最高等级的安全性        86

4.3 安全性通常是折中的方案              88

4.4 过度安全            89

4.4.1 七因素身份验证    89

4.4.2 移动ATM 键盘号码  91

4.5 不像人们想的那样担心攻击方攻击          92

4.6 “无法破解”的谬论    93

4.6.1 “牢不可破”的Oracle            95

4.6.2 djb             96

4.6.3 “不可破解”的量子密码术          96

4.7 我们是反应灵敏的“羊”              97

4.8 安全剧院            98

4.9 隐蔽式安全性         99

4.10 大多数MFA 解决方案降低了实现和运营的速度            100

4.11 MFA 会导致停机    100

4.12 不存在支持所有场景的

MFA 解决方案      100

4.13 小结            101

第II 部分 MFA 攻击

第5 章 攻击MFA 的常见方法 105

5.1 MFA 依赖组件      106

5.1.1 注册            107

5.1.2 用户            109

5.1.3 设备/硬件        109

5.1.4 软件            110

5.1.5 API            110

5.1.6 身份验证因素      110

5.1.7 身份验证机密库    110

5.1.8 密码术          111

5.1.9 技术            111

5.1.10 传输/网络通道    112

5.1.11 命名空间        112

5.1.12 配套基础架构    112

5.1.13 依赖方         113

5.1.14 联盟/代理       113

5.1.15 备用身份验证方法/恢复          113

5.1.16 迁移          113

5.1.17 撤销配置       114

5.1.18 MFA 组成部分的总结          114

5.2 主要攻击方法       115

5.2.1 技术攻击        115

5.2.2 人为因素        115

5.2.3 物理因素        117

5.2.4 使用两种或两种以上的攻击方法        117

5.2.5 “你没有破解MFA!”         117

5.3 如何发现MFA 漏洞   118

5.3.1 威胁建模        118

5.3.2 代码审查        118

5.3.3 模糊测试        119

5.3.4 渗透测试        119

5.3.5 漏洞扫描        119

5.3.6 手工测试        119

5.3.7 事故           120

5.4 小结             120

第6 章 访问控制令牌的技巧   121

6.1 访问令牌基础       121

6.2 针对访问控制令牌的常见攻击             122

6.2.1 令牌复制/猜测     122

6.2.2 令牌盗窃        124

6.3 复制令牌攻击示例    125

6.4 网络会话劫持技术及实例             127

6.4.1 Firesheep         128

6.4.2 MitM 攻击       128

6.5 防御访问控制令牌攻击             134

6.5.1 生成随机的、不可猜测的会话ID        135

6.5.2 使用业内公认的密码术和密钥大小      135

6.5.3 研发团队应该遵循安全编码实践        136

6.5.4 使用安全传输通道  136

6.5.5 使用超时保护     136

6.5.6 将令牌绑定到特定设备或站点          136

6.6 小结             138

第7 章 终端攻击           139

7.1 终端攻击风险       139

7.2 常见的终端攻击      140

7.2.1 编程攻击        140

7.2.2 物理访问攻击     141

7.2.3 终端攻击方可做什么?          142

7.3 特定终端攻击示例    144

7.3.1 Bancos 特洛伊木马  144

7.3.2 交易攻击        146

7.3.3 移动攻击        146

7.3.4 泄露的MFA 密钥   147

7.4 终端攻击防御       148

7.4.1 MFA 研发团队防御           148

7.4.2 终端用户防御     150

7.5 小结             152

第8 章 SMS 攻击           153

8.1 SMS 简介          153

8.1.1 SS7            156

8.1.2 SMS 最大的弱点    156

8.2 SMS 攻击示例       158

8.2.1 SIM 卡交换攻击    158

8.2.2 SMS 模拟        160

8.2.3 SMS 缓冲区溢出   163

8.2.4 手机用户账户劫持  164

8.2.5 对底层支持基础架构的攻击           165

8.2.6 其他基于SMS 的攻击           165

8.2.7 SIM/SMS 攻击方法概述           166

8.2.8 NIST 数字身份指南警告           166

8.3 防御基于SMS 的MFA攻击             167

8.3.1 研发团队防御     167

8.3.2 用户防御        169

8.3.3 RCS 是来保存移动消息的吗?       170

8.3.4 基于SMS 的MFA 比口令好吗?       171

8.4 小结             171

第9 章 一次性口令攻击      173

9.1 一次性口令简介      173

9.1.1 基于种子值的OTP   176

9.1.2 基于HMAC 的OTP 177

9.1.3 基于事件的OTP    179

9.1.4 基于时间的一次性口令           180

9.2 OTP 攻击示例       183

9.2.1 OTP 代码网络钓鱼  183

9.2.2 创建的OTP 欠佳   184

9.2.3 盗窃、重新创建和重用OTP           185

9.2.4 种子数据库遭窃   186

9.3 防御OTP 攻击      188

9.3.1 研发团队防御     188

9.3.2 使用可靠的、可信的和经过测试的OTP算法           188

9.3.3 OTP 设置代码必须有过期时间        188

9.3.4 OTP 结果代码必须有过期时间        189

9.3.5 阻止OTP 重放    189

9.3.6 确保用户的RNG 经过NIST 认证或者是QRNG           189

9.3.7 通过要求OTP 代码以外的输入来提高安全性          189

9.3.8 阻止暴力破解攻击  190

9.3.9 安全的种子值数据库          190

9.3.10 用户防御       190

9.4 小结             191

第10 章 主体劫持攻击       193

10.1 主体劫持攻击简介   193

10.2 攻击示例         193

10.2.1 Active Directory 和智能卡        194

10.2.2 模拟演示环境   196

10.2.3 主体劫持攻击演示         200

10.2.4 更广泛的问题   204

10.2.5 动态访问控制示例         205

10.2.6 ADFS MFA 旁路 206

10.3 组件攻击防御      206

10.3.1 威胁模型依赖性滥用场景         206

10.3.2 保护关键依赖项  207

10.3.3 有关依赖性滥用的培训         207

10.3.4 防止一对多映射  208

10.3.5 监测关键依赖项  208

10.4 小结            208

第11 章 虚假身份验证攻击   209

11.1 通过UAC 学习虚假身份验证             209

11.2 虚假身份验证攻击示例           214

11.2.1 外观相似的网站  214

11.2.2 伪造Office 365登录         215

11.2.3 使用与MFA 不兼容的服务或协议   216

11.3 防御虚假身份验证攻击             217

11.3.1 研发团队防御   217

11.3.2 用户防御      218

11.4 小结             219

第12 章 社交工程攻击       221

12.1 社交工程攻击简介    221

12.2 社交工程共性       223

12.2.1 未经身份验证的通信         223

12.2.2 非物理方式     224

12.2.3 通常涉及知名组织         224

12.2.4 通常基于重要时事且令人感兴趣     225

12.2.5 紧张性刺激     226

12.2.6 高级:假冒     226

12.2.7 利用可信的第三方实施网络钓鱼   227

12.3 针对MFA 的社交工程攻击示例          228

12.3.1 伪造银行警告   228

12.3.2 哭闹的婴儿     228

12.3.3 窃取大楼门禁卡  229

12.4 对MFA 社交工程攻击的防御             230

12.4.1 研发团队对MFA 的防御         230

12.4.2 用户对社交工程攻击的防御     232

12.5 小结             233

第13 章 降级/恢复攻击      235

13.1 降级/恢复攻击简介   235

13.2 降级/恢复攻击示例   235

13.2.1 备用电子邮件地址恢复         236

13.2.2 滥用主代码     239

13.2.3 猜测个人知识问题         240

13.3 防御降级/恢复攻击   244

13.3.1 研发团队防御降级/恢复攻击      244

13.3.2 用户防御降级/恢复攻击      247

13.4 小结             249

第14 章 暴力破解攻击       251

14.1 暴力破解攻击简介    251

14.1.1 生日攻击法     252

14.1.2 暴力破解攻击方法         253

14.2 暴力破解攻击示例    253

14.2.1 OTP 旁路暴力破解试验         253

14.2.2 Instagram MFA 暴力破解         254

14.2.3 Slack MFA 暴力破解旁路         255

14.2.4 UAA MFA 暴力破解漏洞         255

14.2.5 Grab Android MFA暴力破解      255

14.2.6 无限生物识别技术暴力破解      255

14.3 防御暴力破解攻击   256

14.3.1 研发团队抵御暴力破解攻击       256

14.3.2 用户防御暴力破解攻击         260

14.4 小结            260

第15 章 软件漏洞          261

15.1 软件漏洞简介      261

15.1.1 常见的漏洞类型  262

15.1.2 漏洞结果      268

15.2 漏洞攻击示例      269

15.2.1 优步MFA 漏洞  270

15.2.2 Google 身份验证器漏洞         270

15.2.3 YubiKey 漏洞   270

15.2.4 多个RSA 漏洞   271

15.2.5 SafeNet 漏洞    271

15.2.6 Login.gov      271

15.2.7 ROCA 漏洞     272

15.3 防御漏洞攻击      272

15.3.1 研发团队防御漏洞攻击         272

15.3.2 用户防御漏洞攻击         273

15.4 小结            274

第16 章 对生物识别技术的攻击              275

16.1 简介            275

16.2 生物识别技术      276

16.2.1 常见的基于生物特征的身份验证因素  277

16.2.2 生物识别是如何工作的        284

16.3 基于生物特征的身份验证的问题           287

16.3.1 错误率高      287

16.3.2 隐私问题      291

16.3.3 传播疾病      291

16.4 生物识别技术攻击示例            292

16.4.1 指纹攻击      292

16.4.2 手静脉攻击     293

16.4.3 眼睛生物识别技术欺骗攻击      293

16.4.4 人脸识别攻击   294

16.5 防御生物识别技术攻击            296

16.5.1 研发团队防御攻击         296

16.5.2 用户/管理员防御攻击         298

16.6 小结            299

第17 章 物理攻击          301

17.1 物理攻击简介      301

17.2 物理攻击示例      305

17.2.1 智能卡侧信道攻击         305

17.2.2 电子显微镜攻击  307

17.2.3 冷启动攻击     307

17.2.4 嗅探支持RFID 的信用卡        310

17.2.5 EMV 信用卡技巧        312

17.3 防御物理攻击      312

17.3.1 研发团队防御物理攻击         312

17.3.2 用户防御物理攻击         314

17.4 小结            316

第18 章 DNS 劫持          317

18.1 DNS 劫持简介      317

18.1.1 DNS          318

18.1.2 DNS 记录类型   321

18.1.3 常见DNS 攻击  322

18.2 命名空间劫持攻击示例            326

18.2.1 DNS 劫持攻击   326

18.2.2 MX 记录劫持   327

18.2.3 Dangling CDN的劫持         327

18.2.4 注册商接管     328

18.2.5 DNS 字符集技巧 328

18.2.6 ASN.1 技巧     329

18.2.7 BGP 劫持      330

18.3 防御命名空间劫持攻击            331

18.3.1 研发团队防御   331

18.3.2 用户防御      332

18.4 小结            333

第19 章 API 滥用           335

19.1 API 滥用简介       335

19.1.1 涉及API 的通用身份验证标准和协议  338

19.1.2 其他常见API 标准和组件         345

19.2 API 滥用示例  348

19.2.1 API 密钥泄露   348

19.2.2 使用API 绕过PayPal 2FA          349

19.2.3 Auth0 MFA 旁路  350

19.2.4 Authy API 格式注入         350

19.2.5 Duo API 的MFA旁路         351

19.2.6 Microsoft 的OAuth攻击         352

19.2.7 使用Apple MFA 绕过登录         353

19.2.8 TOTP BLOB 未来攻击         353

19.3 预防API 滥用      354

19.3.1 研发团队防御API滥用         354

19.3.2 用户防御API滥用         355

19.4 小结            356

第20 章 其他MFA 攻击      357

20.1 Amazon 诡异的设备MFA 旁路         357

20.2 获取旧电话号码     358

20.3 自动绕过MFA 登录  358

20.4 口令重置绕过MFA   359

20.5 隐藏摄像头        359

20.6 键盘声窃听        359

20.7 口令提示         360

20.8 HP MFA 攻击      360

20.9 攻击方把MFA 变成用户的对手            361

20.10 小结            361

第21 章 测试:如何发现漏洞  363

21.1 MFA 解决方案的威胁建模            363

21.1.1 记录组件并绘制图表         363

21.1.2 集体讨论潜在的攻击         364

21.1.3 预估风险和潜在损失         365

21.1.4 创建和测试缓解措施         367

21.1.5 开展安全审查   367

21.2 介绍Bloomberg MFA设备            368

21.2.1 Bloomberg 终端  368

21.2.2 B-Unit 新用户的注册和使用     369

21.3 Bloomberg MFA 设备的威胁建模         370

21.3.1 一般示例中的B-Unit威胁建模      371

21.3.2 可能的具体攻击  372

21.4 多因素身份验证安全评估工具         379

21.5 小结            380

第Ⅲ部分 展望未来

第22 章 设计安全的解决方案  383

22.1 简介            383

22.2 练习:安全的远程在线电子投票         384

22.2.1 用例场景      384

22.2.2 威胁建模      385

22.2.3 SDL 设计      387

22.2.4 物理设计和防御  388

22.2.5 配置/注册      389

22.2.6 身份验证和运营  390

22.2.7 可确认/可审计的投票          392

22.2.8 通信         393

22.2.9 后端交易账本   393

22.2.10 迁移和撤销配置        395

22.2.11 API         395

22.2.12 操作培训     395

22.2.13 安全意识培训  396

22.2.14 其他        396

22.3 小结            397

第23 章 选择正确的MFA 解决方案              399

23.1 简介            399

23.2 选择正确MFA 解决方案的流程        402

23.2.1 创建项目团队   402

23.2.2 创建项目计划   403

23.2.3 培训         404

23.2.4 确定需要保护的内容         405

23.2.5 选择所需和期望的功能         405

23.2.6 研究/选择供应商解决方案      412

23.2.7 开展试点项目   414

23.2.8 选出赢家      414

23.2.9 部署到生产环境  414

23.3 小结            415

第24 章 展望身份验证的未来  417

24.1 网络犯罪一直存在   417

24.2 未来的攻击        418

24.2.1 自动化程度日益提高         419

24.2.2 基于云的威胁   420

24.2.3 自动攻击MFA   420

24.3 可能留下什么      421

24.3.1 口令         421

24.3.2 主动式警告     421

24.3.3 站点和设备的预注册         423

24.3.4 手机作为MFA设备         423

24.3.5 无线         423

24.3.6 变化的标准     423

24.4 未来            424

24.4.1 零信任        424

24.4.2 持续的、自适应的和基于风险的     425

24.4.3 对抗量子攻击的密码术        428

24.5 有趣的新身份验证思想            428

24.6 小结            428

第25 章 经验总结           429

25.1 一般性教训        429

25.1.1 MFA 工程      429

25.1.2 MFA 并非不可破解         430

25.1.3 培训是关键     430

25.1.4 安全不是一切   431

25.1.5 每种MFA 解决方案都有取舍      431

25.1.6 身份验证不存在于真空中        431

25.1.7 不存在适用于所有人的最佳MFA 解决方案         434

25.1.8 有更好的MFA 解决方案         434

25.2 MFA 防御回顾      435

25.2.1 研发团队防御总结         435

25.2.2 用户防御总结   437

※ 以下内容可扫封底二维码下载 ※

附录 MFA 供应商名单