当前位置: 首页 > 科技观察

如何使用CFB对Windows驱动进行模糊测试

时间:2023-03-15 19:15:11 科技观察

关于CFBCFB,全称CanadianFuriousBeaver,是一款功能强大的Windows驱动模糊测试工具,可以帮助研究人员监控Windows驱动处理器中的IRP,分析、复现和模糊Windows驱动漏洞。CFB本质上是一个分布式工具,可以捕获发送到任何Windows驱动程序的IRP。它主要由两部分组成:(1)该工具的“Broker”(代理)结合了一个用户代理和一个可以在目标系统上自行安装的自解压驱动程序(IrpDumper.sys)。运行后,它将公开(取决于编译选项)远程命名管道(可从\\target.ip.address\pipe\cfb访问)或侦听TCP端口TCP/1337。该工具实现的通信协议设计简单,允许任何第三方工具轻松(通过简单的JSON消息)从同一代理转储驱动程序IRP。(2)CFB的GUI是ProcMon风格的Windows10UWP应用程序:它将连接到代理所在的任何地方,并提供方便的GUI来操作代理(驱动程序枚举、挂钩和IRP捕获)。它还提供伪造/重放IRP、自动模糊测试(即对每个捕获的IRP应用特定的模糊测试策略)或提取各种格式的IRP供研究人员进行深入分析。捕获的数据可以以易于解析的格式(*.cfb=SQLite)保存在磁盘上以供进一步分析,或稍后在GUI中重新加载。代理本身可以部署在任何Windows7+主机(x86或x64)上,尽管GUI显然需要在Windows10环境(UWP应用程序)中使用。目标主机必须启用测试签名BCD策??略,因为自解压驱动程序不支持WHQL。机理分析IrpDumper.sys是CFBBrokeragent的驱动部分,启动时会自动解压安装。驱动程序将负责将通过代理传递的IOCTL挂钩请求挂接到驱动程序的IRP主函数表。成功后驱动的IRP表会指向IrpDumper.sys拦截器,我们可以通过调试器或者WinObjEx64等工具方便的查看相关信息。IrpDumper.sys本身可以充当rootkit并代理对目标驱动程序的所有调用。当DeviceIoControl被发送到挂钩的驱动程序时,IrpDumper只是捕获数据(如果有的话),将消息推送到用户代理,然后将执行返回给合法的驱动程序,从而允许预期的代码继续按预期执行。代理会将所有这些数据存储在用户区域中,并等待事件请求它们。工具搭建(一)GUI首先我们需要使用如下命令将项目源码clone到本地:gitclonehttps://github.com/hugsy/CFB.git接下来使用VisualStudio构建CFB.sln代理在项目解决方案的根目录中。此外,我们还可以通过构建GUI(UniversalWindows)项目来构建AppGUI。(2)命令行首先我们需要使用如下命令将项目源码克隆到本地:gitclonehttps://github.com/hugsy/CFB.git然后通过VS命令行终端运行如下命令:C:\cfb\>msbuildCFB.sln/p:Configuration=$Conf其中$Conf可以设置为Releases或Debug。在Windows7+设备上安装和配置工具(推荐Windows10SDKVM),启用BCD测试签名选项(以管理员权限启动cmd.exe):C:\>bcdedit.exe/set{whatever-profile}testsigningon如果是调试模式使用时,IrpDumper.sys将提供更详细的信息。我们可以通过DebugView.exe等工具或者WinDbg等内核调试器查看所有相关信息。此时,我们必须启用内核调试BCD选项(以管理员权限启动cmd.exe):C:\>bcdedit.exe/set{whatever-profile}debugon工具运行截图IRP拦截界面:IRP详情IRP重放:project地址CFB:[GitHub传送门]