构建一个新的快照模糊器 & 模糊化 IDA

主要观点:作者在 2020 年 1 月为自己设定目标,开发自定义模糊测试工具,最终实现了针对 IDA 的快照式模糊测试工具wtf,并在 IDA 的多个组件中发现了大量漏洞。
关键信息

  • 开发目标:开发能模糊测试任何 Windows 目标的工具,选择 IDA 作为目标,因其复杂且有漏洞赏金。
  • 工具架构:包括提取物理内存和 CPU 状态、选择执行环境(如 bochscpu 或 KVM)、基本功能(如内存访问、执行流控制等)。
  • 针对 IDA 的挑战及解决方法:如处理 IDA 的懒加载、预加载 DLL、处理页交换内存、手动插入页错误等问题。
  • 不同后端比较:whv 后端在性能上有提升,但仍有改进空间;KVM 后端在某些方面表现更好,如通过共享内存获取 GPR、按需分页等。
  • 成果与感谢:在 IDA 的多个组件中发现多种漏洞,涵盖 null-dereference 等,感谢 IDA 团队及相关人员。
    重要细节
  • bochscpu 中通过bochscpu_mem_missing_page回调加载物理内存,bochscpu_cpu_new创建虚拟 CPU 等。
  • 在 IDA 模糊测试中,通过各种方法解决文件 I/O、内存管理等问题,如文件系统钩子、锁定内存等。
  • whv 后端在代码覆盖、脏内存跟踪等方面的实现及优化,如使用一次性软件断点、模拟[WHvQueryGpaRangeDirtyBitmap]等。
  • KVM 后端通过 userfaultfd 实现按需分页,利用 Performance Monitoring Unit 进行超时处理等。
  • 工具架构中各模块的功能及相互作用,如内存访问设施、执行流控制、崩溃检测等。
阅读 18
0 条评论