Protected Process Light (PPL) Attack
字数 2112 2025-08-07 00:35:01
Protected Process Light (PPL) 攻击技术详解
1. PP/PPL 背景概念
1.1 受保护进程(Protected Process)的演变
- 初始版本:随 Windows Vista/Server 2008 引入,主要目的是保护 DRM 内容而非用户数据
- PPL 引入:Windows 8.1/Server 2012 R2 新增 Protected Process Light (PPL) 概念
- 关键区别:
- 传统 PP:二进制必须由 Microsoft 签名
- PPL:允许第三方签名,但需满足特定条件
1.2 PP/PPL 保护机制
- 进程保护:防止非受信进程访问或修改受保护进程
- 代码完整性:要求所有加载的 DLL/驱动必须正确签名
- 权限限制:即使管理员权限也无法直接操作受保护进程
2. PP/PPL 技术细节
2.1 进程保护级别
Windows 定义了多种保护级别,存储在 EPROCESS 结构的 Protection 成员中:
| 保护级别 | 值 | 描述 |
|---|---|---|
| PsProtectedTypeNone | 0x00 | 无保护 |
| PsProtectedTypeProtectedLight | 0x01 | PPL 保护 |
| PsProtectedTypeProtected | 0x02 | 完全保护 |
2.2 签名者类型
保护级别与签名者类型组合形成完整保护标识:
| 签名者类型 | 值 | 描述 |
|---|---|---|
| PsProtectedSignerNone | 0x00 | 无签名者 |
| PsProtectedSignerAuthenticode | 0x01 | Authenticode 签名 |
| PsProtectedSignerCodeGen | 0x02 | 代码生成 |
| PsProtectedSignerAntimalware | 0x03 | 反恶意软件 |
| PsProtectedSignerLsa | 0x04 | LSA 组件 |
| PsProtectedSignerWindows | 0x05 | Windows 系统 |
| PsProtectedSignerWinTcb | 0x06 | Windows 可信计算基 |
2.3 保护等级规则
- 访问控制:高等级进程可以打开低等级进程,反之则不行
- 完整性检查:所有加载的模块必须满足代码完整性要求
3. PPL 攻击技术
3.1 攻击前提条件
- 需要管理员权限
- 需要能够加载内核驱动或利用漏洞绕过签名验证
3.2 常用攻击方法
3.2.1 内核对象劫持
- 获取 EPROCESS 结构地址
- 修改 Protection 字段降低保护级别
- 常用技术:
- 使用 NtQuerySystemInformation 获取进程信息
- 通过内核驱动直接修改内存
3.2.2 进程注入技术
- 使用特殊 API 如 NtCreateProcessEx 创建进程
- 利用 PROCESS_ALL_ACCESS 权限打开目标进程
- 注入代码前需确保签名验证通过
3.2.3 签名伪造
- 获取合法证书
- 伪造签名信息
- 利用漏洞绕过签名验证
3.3 实际攻击案例
案例1:通过驱动程序降级保护
// 伪代码示例
NTSTATUS LowerProtection(PEPROCESS Process) {
PS_PROTECTION* protection = (PS_PROTECTION*)GetProtectionPointer(Process);
protection->Level = PsProtectedTypeNone;
return STATUS_SUCCESS;
}
案例2:利用内存修改技术
- 使用物理内存映射设备访问内核内存
- 定位 EPROCESS 结构
- 直接修改 Protection 字段
4. 防御与检测
4.1 防御措施
- 启用 HVCI (Hypervisor-Protected Code Integrity)
- 配置 CI 策略:严格代码完整性策略
- 监控异常行为:检测对受保护进程的异常访问尝试
4.2 检测技术
- 内核回调监控:使用 PsSetCreateProcessNotifyRoutineEx
- 完整性检查:定期验证受保护进程的内存和模块
- 日志分析:审计对受保护进程的访问日志
5. 工具与资源
5.1 分析工具
- WinDbg:分析进程保护级别
- Process Explorer:查看进程保护状态
- PowerShell:Get-Process 配合筛选
5.2 测试工具
- PPLKiller:测试 PPL 绕过
- PPLdump:转储受保护进程内存
6. 深入研究方向
- 虚拟化安全:研究 HVCI 对 PPL 的保护增强
- 内核漏洞利用:探索新的内核漏洞用于绕过 PPL
- 硬件辅助安全:研究 TPM 和 SGX 对 PPL 的增强
7. 参考资源
- Microsoft 官方文档:Protected Process Light (PPL) 技术细节
- Windows Internals 第7版:深入解析进程保护机制
- 奇安信攻防社区相关研究文章
8. 总结
PPL 是 Windows 重要的安全机制,但并非绝对安全。理解其工作原理和攻击技术对于安全研究和防御都至关重要。随着 Windows 安全机制的不断演进,攻击和防御技术也将持续发展。