Patch Guard


WIN10 x64 Patch Guard 学习笔记

0x0 前言

笔记学习会持续更新

0x1 基础理论

绝大部分 PG检测(如果不是全部)基于 context 结构体;

context 包括:一小段自解密代码

​ 要用到的系统API指针

​ 重要的 API 代码 copy

​ INITKDBG 节的copy

​ 要检测的目标地址,大小,chucksum 构成的结构体数组…

context 大部分时间是加密的;

context 的数据源来自于系统初始化时的最初数据

context 的地址,作为系统线程,DPC 等的参数,随着调度被传递;

context 的验证逻辑执行周期约为 2min, 但是每次检测的目标区块随机;

context 采用接力的方式调度,

自解密->检测逻辑->复制自身到新的context->加密新的context->销毁旧的context;

context 检测逻辑的调用源具有随机性,在 PG初始化时决定。

0x2 攻击手法

1.静态补丁 (比较简单 好用)缺点需要重启

  1. VT 实现 读/执行 分离 (前提拥有非常稳定 高权限的VT 需要技术门槛)

  2. 定位所有的context调用源, 针对性 patch

  3. 基于加密算法分析,攻击 context 的内容

    ​ (1) 搜索内存, 粗筛 context;

    ​ (2) 基于加密算法特性, 定位 context;

    ​ (3) 解密context, patch 检测逻辑, 加密写回 context.

  4. 设置 context 页面不可执行, 接管页面异常处理 (容易误伤)

    ​ (1)搜索内存, 粗筛 context;

    ​ (2) hook PageFault, 接管执行保护异常;

    ​ (3) 在异常处理中定位 context, 阻止检测逻辑.


文章作者: Blue
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Blue !
评论
  目录