7.Peach 监听模块【工业控制系列】
前言
前面讲解的课程主要针对Modbus
协议的攻击进行Fuzz
测试。但是由于是对设备进行的测试过程中我们无法实时的监测设备状态,本章中我们将学习引入监听模块, 对被测试设备进行主动监听,更好的确定设备存在的异常。
监听模块
Peach
中默认可以进行socket
、ping
监听两种状态。
这里我们使用Ping
监听设备状态,在代码中新建agent,Monitor
类型为Ping
;设置主机为192.168.43.245
。
<!--监听配置信息-->
<Agent name="Local">
<Monitor class="Ping">
<Param name="Host" value="192.168.43.245" />
</Monitor>
在发送中引入Agent
。名称为刚才配置的Agent name
字段。
<!--设置发送IP与端口-->
<Test name="Default">
<Agent ref="Local" /><!--在发送中进行ping检测-->
<StateModel ref="TheState" />
<Publisher class="tcp.Tcp">
<Param name="Host" value="192.168.43.245" />
<Param name="Port" value="502" />
</Publisher>
</Test>
修改完成的XML
为:
<?xml version="1.0" encoding="utf-8"?>
<Peach xmlns="http://peachfuzzer.com/2012/Peach" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://peachfuzzer.com/2012/Peach ../peach.xsd">
<!--生成发送数据-->
<DataModel name="send_data">
<Block name="mod">
<!-- Modbus生成数据 34 00 00 00 00 06 01 01 00 00 00 64-->
<Number name="01" size="16" value="34 00" valueType="hex" signed="false" mutable="false" />
<Number name="02" size="16" value="00 00" valueType="hex" signed="false" mutable="false" />
<Number name="03" size="24" value="00 06 01" valueType="hex" signed="false" mutable="false" />
<Number name="04" size="8" value="01" valueType="hex" signed="false" />
<Number name="05" size="16" value="00 00" valueType="hex" signed="false" mutable="false" />
<Number name="06" size="16" value="00 64" valueType="hex" signed="false" mutable="false" />
</Block>
</DataModel>
<!--发送函数-->
<StateModel name="TheState" initialState="initialState">
<State name="initialState">
<Action type="output">
<DataModel ref="send_data" />
</Action>
</State>
</StateModel>
<!--监听配置信息-->
<Agent name="Local">
<Monitor class="Ping">
<Param name="Host" value="192.168.43.245" />
</Monitor>
</Agent>
<!--设置发送IP与端口-->
<Test name="Default">
<Agent ref="Local" /><!--在发送中进行ping检测-->
<StateModel ref="TheState" />
<Publisher class="tcp.Tcp">
<Param name="Host" value="192.168.43.245" />
<Param name="Port" value="502" />
</Publisher>
</Test>
</Peach>
运行测试
再次运行时候,使用Wireshark
进行过滤Modbus or icmp
已经出现了相关结果。
运行命令为:peach.exe XML --debug
这里因为是使用的虚拟机,将虚拟机链接网络的网卡进行断开链接,进行模拟一下服务端设备无法ping
通情况。
Socket 监听测试
Socket
是更为精准的进行级别监听,查看端口是否存在;但是同样也存在弊区,因为使用socket
会导致Fuzz
测试速度变慢。
<!--socket监听方式-->
<Monitor Class="Socket">
<Param name="Host" value="192.168.43.245" />
<Param name="Socket" value="502" />
</Monitor>