问题标签 [fuzzing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
483 浏览

windows - 如何正确使用 WDK 8.1 Devfund_IOAttack_ERT_Basic 测试来模糊 Windows 驱动程序

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

任何提示或解决方案都将受到欢迎:)

【测试机设置步骤:】

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

  2. 安装包“WDK 测试目标设置”

    • 默认位置:C:\Program Files (x86)\Windows Kits\8.1\Remote\x64
    • 安装了 WDK 8.1 组件的计算机上的默认位置
    • 安装命令:msiexec /i "WDK Test Target Setup x64-x64_en-us.msi"

2.1 如果您的目标计算机运行的是Windows Server,请找到刚刚由WDK Test Target Setup MSI 创建的DriverTest 文件夹。(例如:c:\DriverTest)。右键单击 DriverTest 文件夹,然后选择属性。在“安全”选项卡上,将“修改”权限授予 Authenticated Users 组。

  1. 安装包测试创作和执行框架(TAEF)”

    • 默认位置:C:\Program Files (x86)\Windows Kits\8.1\Testing\Runtimes
    • 安装了 WDK 8.1 组件的计算机上的默认位置
    • 安装命令:msiexec /i "Test Authoring and Execution Framework x64-x64_en-us.msi"
  2. 安装包“WDTF 运行时库”

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

    • 脚步:
      • 以管理员身份打开命令提示符窗口。输入 bcdedit /debug on
      • 如果计算机尚未配置为调试传输的目标,请输入 bcdedit /dbgsettings local
      • 重新启动计算机。

[使用 IoSpy 和 IoAttack 的测试程序:]

  1. 使用 WDK 测试“EnableIoSpy”和应用程序“TAEF”启用 IoSpy
    • 命令:

Te.exe "%SystemDrive%\Tests\Additional Tests\DeviceFundamentals\ERT\Basic\Devfund_IOSpy_EnableSupport_ERT_Basic.wsc" /select:"@Name='Devfund::EnableIoSpy'" /p:"DQ=INF::OriginalInfFileName='my_storage_driver .inf'" /p:"DFD=%systemdrive%\DriverTest\IoSpy" /rebootStateFile:%SystemDrive%\DriverTest\Logs\DriverTestReboot.xml /enableWttLogging /wttDeviceString:$LogFile:file="%SystemDrive%\DriverTest\Logs \Enable_I_O_Spy_(Quick)_(possible_reboot)_00000.wtl",writemode=append,encoding=unicode,nofscache=true,EnableLvl="WexStartTest|WexEndTest|WexXml|WexProperty|WexCreateContext|WexCloseContext|*" /runas:Elevated

  1. 重启操作系统

  2. 对公共和私有 IOCTL 使用 IOCTL 命令

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

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

    • 命令:

te.exe "%SystemDrive%\Tests\Additional Tests\DeviceFundamentals\ERT\Basic\Devfund_IOSpy_DisableSupport_ERT_Basic.wsc" /select:"@Name='Devfund::DisableIoSpy'" /rebootStateFile:%systemdrive%\DriverTest\Logs\DriverTestReboot. xml /enableWttLogging /wttDeviceString:$LogFile:file="%systemdrive%\DriverTest\Logs\Disable_I_O_Spy_(Quick)_(possible_reboot)_00000.wtl",writemode=append,encoding=unicode,nofscache=true,EnableLvl="WexStartTest| WexEndTest|WexXml|WexProperty|WexCreateContext|WexCloseContext|*" /runas:Elevated

  1. 重启操作系统

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

    • 命令:

te.exe "%SystemDrive%\DATA\Tests\Additional Tests\DeviceFundamentals\ERT\Basic\Devfund_IOAttack_ERT_Basic.wsc" /select:"@Name='Devfund::RunIoAttack'" /p:"DQ=DeviceID='my_device_id_that_was_created_by_my_storage_driver" /rebootStateFile:%SystemDrive%\DriverTest\Logs\DriverTestReboot.xml /enableWttLogging /wttDeviceString:$LogFile:file="%SystemDrive%\DriverTest\Logs\Run_I_O_Attack_(Quick)_00001.wtl",writemode=append,encoding=unicode, nofscache=true,EnableLvl="WexStartTest|WexEndTest|WexXml|WexProperty|WexCreateContext|WexCloseContext|*" /runas:Elevated

[问题:] 从 WDK 作为测试运行的 Microsoft fuzzer IoAttack 看不到 my_storage_driver。测试通过,因为我们没有找到用于测试的设备。测试输出:

*

StartGroup:Devfund::RunIoAttack 属性:TAEF:描述 [运行 I/O 攻击。] WDTF_TARGETS: - Query("IsDevice AND IoSpy::") WDTF_TEST: 未找到用于测试的设备 EndGroup: Devfund::RunIoAttack [通过] 摘要:Total=1, Passed=1, Failed=0, Blocked=0, Not运行=0,跳过=0

*

用于使用 WDK 应用程序“TAEF”(te.exe)运行测试的命令

te.exe "%SystemDrive%\Tests\Additional Tests\DeviceFundamentals\ERT\Basic\Devfund_IOAttack_ERT_Basic.wsc" /select:"@Name='Devfund::RunIoAttack'" /p:"DQ=DeviceID='my_device_id_that_was_created_by_my_storage_driver'" / rebootStateFile:%SystemDrive%\DriverTest\Logs\DriverTestReboot.xml /enableWttLogging /wttDeviceString:$LogFile:file="%SystemDrive%\DriverTest\Logs\Run_I_O_Attack_(Quick)_00001.wtl",writemode=append,encoding=unicode,nofscache =true,EnableLvl="WexStartTest|WexEndTest|WexXml|WexProperty|WexCreateContext|WexCloseContext|*" /runas:Elevated

[附加信息:] 我尝试使用 DQ=DeviceID, DQ=INF::OriginalInfFileName 来解决我的驱动程序/存储设备以进行模糊测试(就像在 IoSpy 情况下一样),但最终不起作用。

IoSpy 和 IoAttack 的使用过程源来自https://msdn.microsoft.com/en-us/library/windows/hardware/ff547271

[测试机器设置:] - Windows Server 2012 R2 Standard Build 9600 (x64)

[软件设置:] - WDK 8.1 安装在 Windows 7 Professional (x64) 上

0 投票
0 回答
112 浏览

buffer-overflow - 使用 Peach Fuzzer 的 SEH 转储

Peach Fuzzer 对测试 SEH 覆盖有多大用处?发生崩溃时,是否有任何选项可以在 Windbg 日志中包含 SEH 转储和 peach?

0 投票
0 回答
23 浏览

security - 当程序进入 QA 阶段时,您将如何管理 Web fuzzing 过程?

  1. 寻找关键参数 - 用户名、密码、信用卡
  2. 上传文件 - 使用文件列表 - 来自 - https://github.com/danielmiessler/SecLists/tree/master/Payloads

我错过了什么?

还有一件事。我在哪里可以找到更多文件(有效负载)?SecLists 的文件数量非常有限。

0 投票
1 回答
151 浏览

security - 为什么模糊测试被认为是 Web 应用程序安全 SDLC 的一部分?

一直认为使用 Jmeter 等工具进行模糊测试只是 QA。为什么模糊测试被认为是安全 SDLC 的一部分?

0 投票
1 回答
184 浏览

testing - 模糊测试工具:在预定义范围内改变整数?

我是模糊测试工具的新手,基本上,我想使用模糊测试工具来测试特定功能。

本质上,这个函数有三个输入参数,每个参数都是一个数字,范围为 0 到0xffff

我想使用一个模糊测试工具来生成随机输入组合,并测试目标函数。但是,我尝试zzuf了,但发现它没有关于变异整数值的特定设置..

所以我正在寻找一个模糊器,它只支持在预定义的范围内改变整数值?有人可以在这个问题上给我一些帮助吗?我够清楚吗?谢谢你。

0 投票
1 回答
222 浏览

python - pcapy.findalldevs() 在 Windows 中没有可以打开的有效接口

在 Linux 中提出了一个类似的问题并已解决: pcapy.findalldevs() No valid interfaces to open

但是当我尝试python network_monitor.py在 Windows 中运行时遇到了这个问题。我需要在 Windows 中获得特殊权限吗?如果是这样,我如何sudo在 Linux 中使用它?

0 投票
2 回答
1263 浏览

c - 使用 C 使用 libFLAC 解码数据

我的目的是为了测试目的解码 flac 数据。我将创建一个小存根,它有一个将数据和大小作为输入参数的函数。无需制作任何类型的输出文件,因为我只会进行解码测试。我已经从 libflac 页面 ( https://xiph.org/flac/api/ ) 阅读了一些示例和 api 文档。

现在这给了我 :ERROR: initializing decoder: (null) 因为 FLAC__stream_decoder_init_stream 已被注释。评论它的原因是我不知道如何正确使用它并进行解码工作。有什么建议和意见可以帮助我进行解码工作吗?

更新:添加回调函数后,我收到此错误:

0 投票
1 回答
1158 浏览

python - Boofuzz 崩溃后不会重新启动进程

我正在学习如何使用 boofuzz 进行模糊测试。我在 Windows 7 VM 上进行了所有设置。目标是 Vulnserver 应用程序。因为我知道TRUN,GMONKSTET命令很容易受到攻击,所以我将这些命令放在一个s_group列表中。我希望vulnserver.exe进程在TRUN命令上崩溃,重新启动,然后继续测试其他命令。下面是我使用的 boofuzz 脚本。

启动后vulnserver.exe,我运行我的 boofuzz 脚本并收到以下错误:

该错误表明 boofuzz 没有重新启动该vulnserver.exe过程。以下是process_monitor.py如果有帮助的输出。

谢谢!

0 投票
1 回答
405 浏览

assembly - 如何知道应用程序已完成处理文件?

我正在尝试使我在应用程序中执行的检测自动化,但问题是我正在处理处理后不会自行退出的应用程序。例如,以任何 pdfviewer/reader 为例,如果我打开一个文件,则会显示该文件,并且我可以看到该应用程序已经处理了该文件。

通过应用程序处理文件,我的意思是该文件已被应用程序成功显示。

应用程序可以是任何用于 ex adobe reader、xpdf、foxitreader 的 GUI pdf 查看器或任何用于 ex gpicview 等的图像查看器。文件格式可以是任何类型,而不是任何特定的文件格式。

另外我没有应用程序的源代码,我正在处理应用程序的二进制文件。

但是在使过程自动化的同时,我想知道应用程序何时处理了文件。我最初能想到的是会有一些基本块,它说在它执行之后它已经完成了文件处理并在特定的基本块执行时退出我的检测。

但这里的问题是如何识别那个基本块?

0 投票
2 回答
113 浏览

c - 如何对 stdarg.h 函数进行模糊测试?

我已经写了一个类似于 printf 的函数在运行中,我想对其进行模糊测试以检查错误。afl-fuzz 给了我一个输入文件,但我正在努力想办法把它变成可变参数输入。

有什么方法可以动态构造 va_list 或以其他方式动态构造参数列表?