Python boofuzz:';PED-RPC>;找不到远程方法重新启动目标';

Python boofuzz:';PED-RPC>;找不到远程方法重新启动目标';,python,fuzzing,Python,Fuzzing,我试图学习模糊未知协议以定位应用程序中漏洞的复杂性。我正在使用一个众所周知的易受攻击的应用程序,Disk Savy Enterprise 10.4.18,其中有一个已知的SEH缓冲区溢出 我目前有一个脚本,我正试图利用进程\u monitor.py脚本,但无法重新启动正在崩溃的服务。我在目标机器上运行了process\u monitor.py,并且正在从我的模糊机器成功连接到它。我的问题是问题标题中的错误——当应用程序崩溃时,它“尝试”重新启动进程,但我得到了错误 PED-RPC>找不到远程方法

我试图学习模糊未知协议以定位应用程序中漏洞的复杂性。我正在使用一个众所周知的易受攻击的应用程序,Disk Savy Enterprise 10.4.18,其中有一个已知的SEH缓冲区溢出

我目前有一个脚本,我正试图利用
进程\u monitor.py
脚本,但无法重新启动正在崩溃的服务。我在目标机器上运行了
process\u monitor.py
,并且正在从我的模糊机器成功连接到它。我的问题是问题标题中的错误——当应用程序崩溃时,它“尝试”重新启动进程,但我得到了错误

PED-RPC>找不到远程方法重新启动\u目标

我的python脚本的相关部分包括:

session = sessions.Session(
    crash_threshold="10000",              # Arbitrary, high crash threshold
    check_data_received_each_request=0,   # Don't check data after every request (slow)
    restart_sleep_time=0.1, 
    sleep_time=0.1,
)
# Define target
target = sessions.Target(
    connection = SocketConnection(dst, dport, proto='tcp')
)
# Define procmon options
target.procmon = pedrpc.Client(dst, 26002)
target.procmon_options = {
    "proc_name" : "disksvs.exe",
    "stop_commands" : ['net stop "Disk Savvy Enterprise"'],
    "start_commands" : ['net start "Disk Savvy Enterprise"']        
}
我正在目标计算机上用以下行启动
process\u monitor.py

python process_monitor.py --port 26002 --crash_bin diskSaavy_Crashes.txt
以下是启动后以及崩溃后的结果输出:

Couldn't import dot_parser, loading of dot files will not be possible.
[03:11.00] Process Monitor PED-RPC server initialized:
[03:11.00]       crash file:  C:\Python27\Lib\site-packages\boofuzz\diskSaavy_Crashes.txt
[03:11.00]       # records:   3
[03:11.00]       proc name:   None
[03:11.00]       log level:   1
[03:11.00] awaiting requests...
[03:23.29] updating target process name to 'disksvs.exe'
[03:23.30] updating stop commands to: ['net stop "Disk Savvy Enterprise"']
[03:23.30] updating start commands to: ['net start "Disk Savvy Enterprise"']
[03:23.30] debugger thread-1523215410 looking for process name: disksvs.exe
[03:23.42] debugger thread-1523215410 found match on pid 2908
[03:23.48] updating target process name to 'disksvs.exe'
[03:23.48] updating stop commands to: ['net stop "Disk Savvy Enterprise"']
[03:23.48] updating start commands to: ['net start "Disk Savvy Enterprise"']
[03:23.49] debugger thread-1523215410 caught access violation: 'libpal.dll:004a9
19f movsx ebp,[eax+ebx] from thread 2424 caused access violation'
[03:23.49] debugger thread-1523215410 exiting
PED-RPC> remote method restart_target cannot be found
这是我的起毛机上boofuzz的输出,用于相同的崩溃:

[2018-04-08 15:23:49,996]   Test Step: Failure summary
[2018-04-08 15:23:49,996]     Info: procmon detected crash on test case #2: libpal.dll:004a919f movsx ebp,[eax+ebx] from thread 2424 caused access violation
[2018-04-08 15:23:49,996]   Test Step: restarting target
[2018-04-08 15:23:49,996]     Info: restarting target process
[2018-04-08 15:23:50,206]     Error!!!! Restarting the target failed, exiting.
Traceback (most recent call last):
  File "./boofuzz-diskSaavy.py", line 72, in <module>
    main()
  File "./boofuzz-diskSaavy.py", line 17, in main
    fuzz(dst, dport)
  File "./boofuzz-diskSaavy.py", line 69, in fuzz
    session.fuzz()
  File "/usr/local/lib/python2.7/dist-packages/boofuzz/sessions.py", line 414, in fuzz
    self._fuzz_current_case(*fuzz_args)
  File "/usr/local/lib/python2.7/dist-packages/boofuzz/sessions.py", line 893, in _fuzz_current_case
    self._process_failures(target=target)
  File "/usr/local/lib/python2.7/dist-packages/boofuzz/sessions.py", line 603, in _process_failures
    self.restart_target(target)
  File "/usr/local/lib/python2.7/dist-packages/boofuzz/sessions.py", line 680, in restart_target
    raise sex.BoofuzzRestartFailedError()
boofuzz.sex.BoofuzzRestartFailedError
[2018-04-08 15:23:49996]测试步骤:故障摘要
[2018-04-08 15:23:49996]信息:procmon检测到测试用例#2:libpal.dll:0024线程中的004a919f movsx ebp[eax+ebx]导致访问冲突
[2018-04-08 15:23:49996]测试步骤:重新启动目标
[2018-04-08 15:23:49996]信息:重新启动目标流程
[2018-04-08 15:23:50206]错误!!!!重新启动目标失败,正在退出。
回溯(最近一次呼叫最后一次):
文件“/boofuzz disksavy.py”,第72行,在
main()
文件“/boofuzz disksavy.py”,第17行,主
模糊(dst、dport)
文件“/boofuzz disksavy.py”,第69行,fuzz格式
session.fuzz()
文件“/usr/local/lib/python2.7/dist packages/boofuzz/sessions.py”,第414行,在fuzz中
self.\u fuzz\u当前情况(*fuzz\u args)
文件“/usr/local/lib/python2.7/dist packages/boofuzz/sessions.py”,第893行,在当前情况下
自身过程失败(目标=目标)
文件“/usr/local/lib/python2.7/dist packages/boofuzz/sessions.py”,第603行,进程内故障
self.restart_目标(target)
文件“/usr/local/lib/python2.7/dist packages/boofuzz/sessions.py”,第680行,在restart_target中
提高性。BoofuzzRestartFailedError()
boofuzz.sex.BoofuzzRestartFailedError
我尝试了我的
start\u命令的不同变体
,不发送
proc\u name
也不发送
stop\u命令
,运行
process\u monitor.py
,并指定它们,执行不同的
start\u命令
,例如包括
net.exe的完整路径和不同的引号转义,等等,围绕服务名称。到目前为止,我试过的都不管用

查看
sessions.py
pedrpc.py
和多个其他文件,我看到
\uuuu getattr\uuuuu
正在用于处理方法调用,但从我看到的情况来看,
restart\u target
存在于
sessions.py
中,因此我不确定为什么pedrpc声明无法找到restart\u target。。。我在拔头发。boofuzz正在做我想让它做的一切,除了重启

如果这还不够的话,我可以提供更多的信息,我将非常感谢能得到的任何帮助


谢谢

TL;DR该方法不存在,因为
process\u monitor.py
已过期;请从下载最新副本,然后重试

感谢您在问题中提供了全面的调试信息。如果process_monitor.py打印堆栈跟踪,包括这也会有所帮助。:)

我在代码库中搜索了“PED-RPC>remote”,并在第2行()的
boofuzz/pedrpc.py
中找到了它:

请注意细微的差别,{1}
的一点点
,在您的输出中不存在。这表明您的process_monitor.py来自boofuzz的旧版本
git Dull
显示此更改发生在,它最初包含在v0.0.8中

下载最新的
process\u monitor.py
就可以了


如果流程监视器公布其版本,这可能会避免;我提交了。

Hi jt,非常感谢您的回复——我希望您能看到这个。这实际上修复了进程的启动,这非常棒,但我现在遇到了
DebugActiveProcess
的一个问题。我没有太多的空间来包含完整的错误/回溯,但这是它的要点:`raise pdx(“DebugActiveProcess(%d)”%pid,True)pdx:[50]DebugActiveProcess(2160):请求不受支持。`这发生在procmon启动或附加进程以及创建模糊会话后不久。从一些快速的研究中,可能归因于64位Win7?老实说,它看起来只是试图附加到一个不正确的PID——我已经在脚本中添加了一个restart_目标选项,但这也没有解决它。。。看起来它每次都试图启动进程,在某些情况下它已经在运行,但它没有连接到正确的PID。。嗯。@plast1K可能最好再发布一个问题,以便进一步讨论。我不能马上说出来。如果它锁定在一个不正确的PID上,你可以检查它锁定在哪个进程名上,看看它是否也匹配你给出的名称。是的,这是一个很好的调用,今晚我回到我的主计算机上后会创建一个,谢谢你的帮助!
sys.stderr.write('PED-RPC> remote method "{0}" of {1} cannot be found\n'.format(method_name, self))