Windows安全内幕:身份验证、授权与审计(AAA)核心技术详解

978-7-115-70013-1
作者: 詹姆斯·福肖(James Forshaw)
译者: 陈殷孟方明
编辑: 傅道坤
分类: 其他

图书目录:

第 1章 设置PowerShell测试环境 ............ 1

1.1 选择PowerShell版本................... 1

1.2 配置PowerShell ........................... 1

1.3 PowerShell语言概述 ................... 3

1.3.1 理解类型、变量和表达式 ... 3

1.3.2 执行命令 ............................. 6

1.3.3 发现命令并获取帮助 ......... 7

1.3.4 定义函数 ............................. 9

1.3.5 显示和操作对象 ............... 10

1.3.6 过滤、排序和分组对象 ... 13

1.3.7 导出数据 ........................... 15

1.4 总结 ............................................. 16

第 2章 Windows内核 ............................... 17

2.1 Windows内核执行体 ................. 17

2.2 安全参考监视器 ......................... 18

2.3 对象管理器 ................................. 20

2.3.1 对象类型 ........................... 20

2.3.2 对象管理器命名空间 ....... 21

2.3.3 系统调用 ........................... 22

2.3.4 NTSTATUS状态码 .......... 25

2.3.5 对象句柄 ........................... 27

2.3.6 Query和Set信息系统调用 ............................. 33

2.4 输入/输出管理器 ........................ 36

2.5 进程和线程管理器 ..................... 38

2.6 内存管理器 ................................. 39

2.6.1 NtVirtualMemory系列命令 ........................ 40

2.6.2 节对象 ............................... 42

2.7 代码完整性 ................................. 44

2.8 高级本地过程调用 ..................... 45

2.9 配置管理器 ................................. 45

2.10 示例实践 ................................... 46

2.10.1 根据名称查找已打开的句柄 .......................... 46

2.10.2 查找共享对象 ................. 47

2.10.3 修改映射节 ..................... 48

2.10.4 查找可写可执行内存 ..... 49

2.11 总结 ........................................... 50

第3章 用户模式应用程序 ......................... 51

3.1 Win32与用户模式Windows API ........................ 51

3.1.1 加载新库 ........................... 52

3.1.2 查看导入的API ................ 54

3.1.3 搜索DLL .......................... 55

3.2 Win32 GUI .................................. 57

3.2.1 GUI内核资源 ................... 57

3.2.2 窗口消息 ........................... 59

3.2.3 控制台会话 ....................... 60

3.3 比较Win32 API和系统调用 ..... 62

3.4 Win32注册表路径 ..................... 65

3.4.1 打开注册表项 ................... 66

3.4.2 列出注册表的内容 ........... 66

3.5 DOS设备路径 ............................ 67

3.5.1 路径类型 ........................... 69

3.5.2 最大路径长度 ................... 70

3.6 进程创建 ..................................... 71

3.6.1 命令行解析 ....................... 72

3.6.2 Shell API ............................ 73

3.7 系统进程 ..................................... 75

3.7.1 会话管理器 ....................... 75

3.7.2 Windows登录进程 ........... 75

3.7.3 本地安全机构子系统 ....... 76

3.7.4 服务控制管理器 ............... 76

3.8 示例实践 ..................................... 77

3.8.1 查找导入特定API的可执行文件 ..................... 77

3.8.2 查找隐藏的注册表键或值 ........................... 77

3.9 总结 ............................................. 79

第4章 安全访问令牌 ................................. 80

4.1 主令牌 ......................................... 80

4.2 模拟令牌 ..................................... 84

4.2.1 安全服务质量 ................... 84

4.2.2 显式模拟令牌 ................... 86

4.3 令牌类型转换 ............................. 87

4.4 伪令牌句柄 ................................. 88

4.5 令牌组 ......................................... 89

4.5.1 Enabled、EnabledByDefault和Mandatory .................... 89

4.5.2 LogonId ............................. 90

4.5.3 Owner ................................ 90

4.5.4 UseForDenyOnly .............. 90

4.5.5 Integrity与IntegrityEnabled ................ 91

4.5.6 Resource ............................ 92

4.5.7 设备组 ............................... 92

4.6 特权 ............................................. 92

4.7 沙箱令牌 ..................................... 95

4.7.1 受限令牌 ........................... 95

4.7.2 写入受限令牌 ................... 97

4.7.3 AppContainer和LowBox令牌 ........................... 97

4.8 什么是管理员账户 ................... 100

4.9 用户账户控制 ........................... 101

4.9.1 关联令牌和提升类型 ..... 103

4.9.2 UI访问 ............................ 105

4.9.3 虚拟化 ............................. 106

4.10 安全属性 ................................. 106

4.11 创建令牌 ................................. 108

4.12 令牌分配 ................................. 109

4.12.1 分配主令牌 ................... 109

4.12.2 分配模拟令牌 ............... 111

4.13 示例实践 ............................. 113

4.13.1 查找具有UI访问权限的进程 .......................... 113

4.13.2 查找可用于模拟的令牌句柄 ................................ 114

4.13.3 移除管理员特权 ........... 115

4.14 总结 ......................................... 115

第5章 安全描述符 ................................... 117

5.1 安全描述符的结构 ................... 117

5.2 SID的结构 ................................ 119

5.3 绝对和相对安全描述符 ........... 121

5.4 访问控制列表头部和条目 ....... 123

5.4.1 列表头部 ......................... 124

5.4.2 ACE列表 ........................ 125

5.5 构造与操作安全描述符 ........... 127

5.5.1 创建新的安全描述符 ..... 128

5.5.2 排序ACE ........................ 129

5.5.3 格式化安全描述符 ......... 130

5.5.4 相对安全描述符的双向转换 ....................... 133

5.6 安全描述符定义语言 ............... 135

5.7 示例实践 ................................... 142

5.7.1 手动解析二进制SID ..... 142

5.7.2 枚举SID ......................... 143

5.8 总结 ............................. 145

第6章 读取并分配安全描述符 ............... 146

6.1 读取安全描述符 ....................... 146

6.2 分配安全描述符 ....................... 148

6.2.1 在资源创建过程中分配安全描述符 ..................... 149

6.2.2 为已存在的资源分配安全描述符 ............................. 171

6.3 Win32安全API ........................ 174

6.4 服务器安全描述符和复合ACE ........................................... 178

6.5 继承行为总结 ........................... 180

6.6 示例实践 ................................... 181

6.6.1 查找对象管理器资源的所有者 .......................... 181

6.6.2 修改资源的所有权 ......... 183

6.7 总结 ........................................... 184

第7章 访问检查过程 ............................... 185

7.1 执行访问检查 ........................... 185

7.1.1 内核模式访问检查 ......... 185

7.1.2 访问模式 ......................... 186

7.1.3 PowerShell命令Get-NtGrantedAccess ...... 189

7.2 PowerShell中的访问检查过程 ......................................190

7.2.1 定义访问检查函数 ......... 191

7.2.2 执行强制访问检查 ......... 192

7.2.3 执行令牌访问检查 ......... 200

7.2.4 执行自主访问检查 ......... 203

7.3 沙箱机制 ................................... 206

7.3.1 受限令牌 ......................... 206

7.3.2 LowBox令牌 .................. 207

7.4 企业访问检查 ........................... 210

7.4.1 对象类型访问检查 ......... 211

7.4.2 集中访问策略 ................. 216

7.5 示例实践 ................................... 221

7.5.1 使用Get-PSGrantedAccess命令 ..................... 221

7.5.2 计算资源的授予访问权限 ......................... 223

7.6 总结 ........................................... 224

第8章 访问检查的其他应用场景 ........... 225

8.1 遍历检查 ................................... 225

8.1.1 SeChangeNotifyPrivilege特权 ....................... 226

8.1.2 受限检查 ......................... 227

8.2 句柄复制的访问检查 ............... 228

8.3 沙箱令牌检查 ........................... 231

8.4 自动化访问检查 ....................... 233

8.5 示例实践 ................................... 236

8.5.1 简化对象的访问检查 ..... 236

8.5.2 查找可写的Section对象 ................................. 236

8.6 总结 ........................................... 237

第9章 安全审计 ....................................... 238

9.1 安全事件日志 ........................... 238

9.1.1 配置系统审计策略 ......... 239

9.1.2 配置每用户的审计策略 .... 241

9.2 审计策略安全 ........................... 242

9.2.1 配置资源的SACL .......... 244

9.2.2 配置全局SACL .............. 247

9.3 示例实践 ................................... 248

9.3.1 验证审计访问的安全性 ... 248

9.3.2 查找包含审计ACE的资源 ................................. 249

9.4 总结 ........................................... 250

第 10章 Windows身份验证 ................... 251

10.1 域身份验证 ............................. 251

10.1.1 本地身份验证 ............... 252

10.1.2 企业网络域 ................... 252

10.1.3 域林 ............................... 253

10.2 本地域配置 ............................. 255

10.2.1 用户数据库 ................... 256

10.2.2 LSA策略数据库 .......... 259

10.3 远程LSA服务 ....................... 261

10.3.1 SAM远程服务 ............. 262

10.3.2 域策略远程服务 ........... 267

10.4 SAM和SECURITY数据库 ... 272

10.4.1 通过注册表访问SAM数据库 ....................... 273

10.4.2 查看SECURITY数据库 ....................... 281

10.5 示例实践 ................................. 283

10.5.1 RID循环遍历 ............... 283

10.5.2 强制用户更改密码 ....... 284

10.5.3 提取所有本地用户哈希...................... 285

10.6 总结 ......................................... 287

第 11章 活动目录 ..................................... 288

11.1 活动目录简史 ......................... 288

11.2 使用PowerShell探索活动目录域............................ 289

11.2.1 远程服务器管理工具 ... 289

11.2.2 林和域的基本信息 ....... 290

11.2.3 用户 ............................... 291

11.2.4 组 ................................... 292

11.2.5 计算机 ........................... 293

11.3 对象和可分辨名称 ................. 294

11.3.1 枚举目录对象 ............... 295

11.3.2 访问其他域中的对象 ... 297

11.4 架构 ......................................... 298

11.4.1 查看架构 ....................... 299

11.4.2 访问安全属性 ............... 300

11.5 安全描述符 ............................. 302

11.5.1 查询目录对象的安全描述符 ........................ 302

11.5.2 为新目录对象分配安全描述符 ................ 304

11.5.3 为现有对象分配安全描述符 .................... 307

11.5.4 检查安全描述符的继承安全来源 ....................... 309

11.6 访问检查 ................................. 309

11.6.1 创建对象 ....................... 310

11.6.2 删除对象 ....................... 312

11.6.3 列出对象 ....................... 312

11.6.4 读取和写入属性 ........... 313

11.6.5 检查多个属性 ............... 314

11.6.6 分析属性集 ................... 315

11.6.7 检查控制访问权限 ....... 319

11.6.8 分析验证写入访问权限 ........................... 320

11.6.9 访问SELF SID .............. 321

11.6.10 执行额外的安全检查 .... 322

11.7 声明与集中访问策略 ............. 324

11.8 组策略 ..................................... 326

11.9 示例实践 ................................. 328

11.9.1 构建授权上下文 ........... 328

11.9.2 收集对象信息 ............... 331

11.9.3 执行访问检查 ............... 332

11.10 总结 ....................................... 336

第 12章 交互式身份验证 ......................... 337

12.1 创建用户桌面 ......................... 337

12.2 LsaLogonUser API .................. 339

12.2.1 本地身份验证 ............... 340

12.2.2 域身份验证 ................... 341

12.2.3 登录会话和控制台会话 ............................... 343

12.2.4 令牌创建 ....................... 345

12.3 从PowerShell中调用LsaLogonUser API .................. 347

12.4 使用令牌创建新进程 ............. 349

12.5 服务登录类型 ......................... 350

12.6 示例实践 ................................. 351

12.6.1 测试权限和登录账户权限 ............................... 352

12.6.2 在其他控制台会话中创建进程 ....................... 353

12.6.3 虚拟账户身份验证 ....... 354

12.7 总结 ......................................... 356

第 13章 网络身份验证 ............................ 357

13.1 NTLM网络身份验证 ............. 358

13.1.1 使用PowerShell实现NTLM身份验证 ........... 359

13.1.2 密码学衍生过程 ........... 365

13.1.3 直通身份验证 ............... 367

13.1.4 本地环回身份验证 ....... 368

13.1.5 替代客户端凭据 ........... 370

13.2 NTLM中继攻击 ..................... 371

13.2.1 攻击概述 ....................... 372

13.2.2 活动服务器质询 ........... 373

13.2.3 签名和密封 ................... 373

13.2.4 目标名称 ....................... 375

13.2.5 通道绑定 ....................... 376

13.3 示例实践 ................................. 377

13.3.1 概述 ............................... 377

13.3.2 代码模块 ....................... 378

13.3.3 服务器实现 ................... 381

13.3.4 客户端实现 ................... 383

13.3.5 NTLM身份验证测试 ... 385

13.4 总结 ........................................ 386

第 14章 Kerberos .................................... 387

14.1 使用Kerberos进行交互式身份验证 ........................... 387

14.1.1 初始用户身份验证 ....... 388

14.1.2 网络服务身份验证 ....... 392

14.2 在PowerShell中执行Kerberos身份验证 .................... 394

14.3 解密AP-REQ消息 ................. 397

14.4 解密AP-REP消息 ................. 403

14.5 跨域身份验证 ......................... 405

14.6 Kerberos委派 ......................... 406

14.6.1 无约束委派 ................... 407

14.6.2 约束委派 ....................... 411

14.7 用户对用户Kerberos身份验证 ................................ 416

14.8 示例实践 ................................. 419

14.8.1 查询Kerberos票据缓存 ............................... 419

14.8.2 简单的Kerberoasting攻击 ......................... 420

14.9 总结 ......................................... 422

第 15章 协商身份验证与其他安全包 ..... 423

15.1 安全缓冲区 ............................. 423

15.1.1 在身份验证上下文中使用缓冲区 ................... 424

15.1.2 在签名与密封中使用缓冲区 ........................... 425

15.2 协商协议 ................................. 426

15.3 不常见的安全包 ..................... 428

15.3.1 安全通道 ....................... 428

15.3.2 CredSSP ......................... 432

15.4 远程凭据防护与受限管理员模式 ........................ 434

15.5 凭证管理器 ............................. 435

15.6 额外的请求属性标志 ............. 438

15.6.1 匿名会话 ....................... 438

15.6.2 身份令牌 ....................... 439

15.7 LowBox令牌下网络身份验证 .............................. 440

15.7.1 使用企业身份验证功能进行身份验证 .............. 441

15.7.2 对已知Web代理进行身份验证 ............................ 441

15.7.3 使用显式凭据进行身份验证 ....................... 442

15.8 身份验证审计事件日志 ......... 444

15.9 示例实践 ................................. 447

15.9.1 确定身份验证失败的原因 ....................... 447

15.9.2 使用安全通道提取服务器的TLS证书 .................. 450

15.10 总结 ....................................... 452

15.11 最后的思考 ........................... 452

附录A 搭建供测试使用的Windows域网络............................ 453

附录B SDDL SID别名映射 .................... 462

详情

Windows是全球应用广泛的操作系统,安全机制随技术发展持续迭代升级。由于系统闭源且采用面向API的架构,其底层安全原理的探究门槛较高,长期是行业内的研究难点。如今Windows安全体系日趋复杂,也成为网络攻击的主要目标,深入掌握其安全机制对网络安全防护至关重要。 本书共分为3部分,第1部分从编程视角梳理Windows操作系统基础,为后续安全知识学习搭建框架;第2部分聚焦Windows内核核心安全组件——安全参考监视器,详解访问控制全流程相关原理与实现;第3部分深入剖析Windows身份验证体系,涵盖身份验证结构、各类验证协议及安全包等关键内容,并配套PowerShell实操示例助力理解。此外,本书还有两个附录,提供了Windows安全相关的配置细节和扩展学习资源。 本书面向所有从事Windows安全相关工作的专业人员,包括希望保障产品安全性的Windows软件开发人员、负责企业级Windows安全防护的系统管理员,以及致力于挖掘操作系统安全漏洞的安全研究人员,是学习Windows安全内核知识、开展相关研究与实践的实用参考资料。

图书摘要

相关图书

Agent设计模式 图解可复用智能体架构
Agent设计模式 图解可复用智能体架构
AI科研绘图:Nano Banana极速实战指南
AI科研绘图:Nano Banana极速实战指南
Skills+OpenClaw:从零打造个性化AI助理
Skills+OpenClaw:从零打造个性化AI助理
AI Agent 开发实战:MCP+A2A+LangGraph 驱动的智能体全流程开发
AI Agent 开发实战:MCP+A2A+LangGraph 驱动的智能体全流程开发
Coze入门:7天玩转扣子智能体
Coze入门:7天玩转扣子智能体
十倍速开发:AI时代的Cursor编程手记
十倍速开发:AI时代的Cursor编程手记

相关文章

相关课程