CHANGMEN的个人博客,专注于网络安全领域。
WFP_Callout_深度研究
最近更新:2026-05-01   |   字数总计:7.9k   |   阅读估时:33分钟   |   阅读量:
  1. 目录
  2. 一、WFP 基础概念
    1. 1.1 什么是 WFP
    2. 1.2 核心术语
  3. 二、Callout 注册机制(公开视角)
    1. 2.1 注册流程
    2. 2.2 用户态枚举 API
  4. 三、内核内部实现(逆向视角)
    1. 3.1 逆向方法论
    2. 3.2 追调用链
    3. 3.3 核心数据结构:gWfpGlobal
    4. 3.4 CalloutEntry 结构体布局
    5. 3.5 数组的组织方式
  5. 四、跨版本差异与通用方法论
    1. 4.1 已知版本差异
    2. 4.2 通用适配方法:永远从汇编读偏移
    3. 4.3 在驱动代码中动态适配
  6. 五、实战:WinDbg 枚举所有 Callout
    1. 5.1 准备工作
    2. 5.2 Step-by-Step 完整流程
    3. 5.3 实际输出示例
    4. 5.4 常见陷阱
  7. 六、编程实现枚举(驱动层)
    1. 6.1 架构设计
    2. 6.2 内核驱动核心代码框架
    3. 6.3 版本适配策略
  8. 七、延伸:Callout 的安全含义
    1. 7.1 为什么要枚举 Callout
    2. 7.2 Callout 的引用计数机制
    3. 7.3 Callout 的 Flag 含义
  9. 八、研究案例:NetworkKernelBypass 分析
    1. 8.1 项目在整个知识体系中的位置
    2. 8.2 核心思路:classifyFn 替换
    3. 8.3 为什么选择 FeDefaultClassifyCallback
    4. 8.4 FeDefaultClassifyCallback 的定位方式
    5. 8.5 完整替换流程(思路层面)
    6. 8.6 这个项目解决的工程问题
  10. 九、WinDbg 调试实验:观察 Entry 状态变化
    1. 9.1 实验环境搭建
    2. 9.2 实验一:观察 Callout 注册过程
    3. 9.3 实验二:快照替换前后的 Entry 状态
    4. 9.4 实验三:在 classifyFn 被调用处观察行为
    5. 9.5 实验四:用条件断点观察 WFP 写锁
    6. 9.6 调试时的注意事项
  11. 十、防御检测:蓝队视角的完整性校验
    1. 10.1 核心检测原理
    2. 10.2 检测驱动的核心逻辑
    3. 10.3 检测的完整覆盖面
    4. 10.4 WinDbg 手动验证(快速检测)
    5. 10.5 更难检测的变体:filter 结构篡改
    6. 10.6 防御总结
  12. 附录 A:关键 WinDbg 命令速查
  13. 附录 B:调用链速查表
  14. 附录 C:gWfpGlobal 已知偏移汇总
  15. 附录 D:CalloutEntry 偏移汇总(多版本对照)
  16. 附录 E:研究项目参考