如何正确使用WDK 8.1 Devfund\u IOAttack\u ERT\u模糊化windows驱动程序的基本测试

如何正确使用WDK 8.1 Devfund\u IOAttack\u ERT\u模糊化windows驱动程序的基本测试,windows,driver,wdk,penetration-testing,fuzzing,Windows,Driver,Wdk,Penetration Testing,Fuzzing,我想使用模糊技术测试我的存储驱动程序,我选择了一个名为IoAttack的Microsoft工具,它在WDK 8.1中表示为测试用例,而不是像以前版本的WDK那样的独立应用程序。此工具与IoSpy工具配合使用,该工具收集发送到驱动程序的所有ioctl和WMI命令。IoSpy作为筛选器驱动程序附加到驱动程序堆栈并记录所有流量。问题发生在我成功附加IoSpy、记录所有数据,然后删除IoSpy并运行IoAttack之后。因为IoAttack看不到由存储驱动程序创建的设备,所以我无法模糊我的驱动程序。下面

我想使用模糊技术测试我的存储驱动程序,我选择了一个名为IoAttack的Microsoft工具,它在WDK 8.1中表示为测试用例,而不是像以前版本的WDK那样的独立应用程序。此工具与IoSpy工具配合使用,该工具收集发送到驱动程序的所有ioctl和WMI命令。IoSpy作为筛选器驱动程序附加到驱动程序堆栈并记录所有流量。问题发生在我成功附加IoSpy、记录所有数据,然后删除IoSpy并运行IoAttack之后。因为IoAttack看不到由存储驱动程序创建的设备,所以我无法模糊我的驱动程序。下面是我使用的步骤和配置

欢迎提供任何提示或解决方案:)

[测试机的设置步骤:

  • 安装创建存储设备的驱动程序

  • 安装程序包“WDK测试目标设置”

    • 默认位置:C:\Program Files(x86)\Windows Kits\8.1\Remote\x64
    • 已安装WDK 8.1组件的计算机上的默认位置
    • 安装命令:msiexec/i“WDK测试目标设置x64-x64_en-us.msi”
  • 2.1如果目标计算机正在运行Windows Server,请查找WDK测试目标安装程序MSI刚刚创建的DriverTest文件夹。(示例:c:\DriverTest)。在DriverTest文件夹上单击鼠标右键,然后选择“属性”。在“安全”选项卡上,为“已验证用户”组授予“修改”权限

  • 安装包测试编写和执行框架(TAEF)”

    • 默认位置:C:\Program Files(x86)\Windows Kits\8.1\Testing\Runtimes
    • 已安装WDK 8.1组件的计算机上的默认位置
    • 安装命令:msiexec/i“测试编写和执行框架x64-x64_en-us.msi”
  • 安装程序包“WDTF运行时库”

    • 默认位置:C:\Program Files(x86)\Windows Kits\8.1\Testing\Runtimes
    • 已安装WDK 8.1组件的计算机上的默认位置
    • 安装命令:msiexec/i“Windows驱动程序测试框架(WDTF)运行时库-x64_en-us.msi”
    • 安装验证:
      • 在测试计算机上打开命令提示窗口
      • 运行%WDTFDir%\Tools\CheckWDTFInstall.cmd
        • 默认位置:C:\Program Files(x86)\Windows Kits\8.1\Testing\Runtimes\WDTF
      • 打开日志文件CheckWDTFInstall.log并检查包含所有已安装WDTF组件信息的结果
  • 设置模式“内核调试”

    • 步骤:
      • 以管理员身份打开命令提示窗口。在上输入bcdedit/debug
      • 如果计算机尚未配置为调试传输的目标,请输入bcdedit/dbgsettings local
      • 重新启动计算机
  • [使用IoSpy和IoAttack的测试过程:

  • 使用WDK测试“EnableIoSpy”和应用程序“TAEF”启用IoSpy
    • 命令:
  • Te.exe“%SystemDrive%\Tests\Additional” 测试\DeviceFundamentals\ERT\Basic\Devfund\u IOSpy\u EnableSupport\u ERT\u Basic.wsc“ /选择:“@Name='Devfund::EnableIoSpy'” /p:“DQ=INF::originalinfilename='my\u storage\u driver.INF'” /p:“DFD=%systemdrive%\DriverTest\IoSpy” /重新启动状态文件:%SystemDrive%\DriverTest\Logs\DriverTesterBoot.xml /启用wttloging /wttDeviceString:$LogFile:file=“%SystemDrive%\DriverTest\Logs\Enable_I_O_Spy_(快速)_(可能重新启动)00000.wtl”,writemode=append,encoding=unicode,nofscache=true,EnableLvl=“wexstartest | WexEndTest | WexXml | WexProperty | WexCreateContext | WexCloseContext |” /符文:高架

  • 重新启动操作系统

  • 对公共和私有IOCTL使用IOCTL命令

  • 验证记录通过IOCTL和WMI请求发送给启用模糊测试的设备的驱动程序的数据的IoSpy数据文件是否大于初始1 KB大小(如果不是特定驱动程序的数据获取失败)

    • IoSpy数据文件的默认位置:%SystemDrive%\DriverTest\IoSpy
  • 使用WDK测试“DisableIoSpy”和应用程序“TAEF”禁用IoSpy

    • 命令:
  • te.exe“%SystemDrive%\Tests\Additional” 测试\DeviceFundamentals\ERT\Basic\Devfund\u IOSpy\u DisableSupport\u ERT\u Basic.wsc“ /选择:“@Name='Devfund::DisableIoSpy'” /重新启动状态文件:%systemdrive%\DriverTest\Logs\DriverTesterBoot.xml /启用wttloging /wttDeviceString:$LogFile:file=“%systemdrive%\DriverTest\Logs\Disable_I_O_Spy_(快速)_(可能重新启动)00000.wtl”,writemode=append,encoding=unicode,nofscache=true,EnableLvl=“wexstartedtest | WexEndTest | WexXml | WexProperty | WexCreateContext | WexCloseContext |” /符文:高架

  • 重新启动操作系统

  • 使用WDK测试“RUNIOATCH”和应用程序“TAEF”运行I/O攻击(快速)模糊器

    • 命令:
  • te.exe“%SystemDrive%\DATA\Tests\Additional” 测试\DeviceFundamentals\ERT\Basic\Devfund\u IOAttack\u ERT\u Basic.wsc“ /选择:“@Name='Devfund::RunIoAttack'” /p:“DQ=DeviceID='my\u device\u id''u是由我的存储驱动程序创建的'u' /重新启动状态文件:%SystemDrive%\DriverTest\Logs\DriverTesterBoot.xml /启用wttloging /wttDeviceString:$LogFile:file=“%SystemDrive%\DriverTest\Logs\Run_I_O_Attack_(Quick)_00001.wtl”,writemode=append,encoding=unicode,nofscache=true,EnableLvl=“wexstartest | WexEndTest | WexXml | WexProperty | WexCreateContext | WexCloseContext |*” /符文:高架

    [问题: 作为测试从WDK运行的Microsoft fuzzer IoAttack没有看到my_storage_驱动程序。测试通过,因为没有找到要测试的设备。测试输出:

    *

    StartGroup:Devfund::RunIoAttack属性:TAEF:Description[运行I/O 攻击。]WDTF_目标:-查询(“IsDevice和IoSpy:”)WDTF_测试:否 找到用于测试端组的设备:Devfund::RunIoAttack[已通过] 摘要:总计=1,通过=1,失败=0,阻塞=0,未运行=0,