30

Modbus PLC攻击分析:Smod渗透框架研究

 3 years ago
source link: https://www.freebuf.com/articles/ics-articles/235047.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前言:

Modbus 是由Modicon公司1979年发行的,已经被广泛应用于工业控制现场的应用层协议,如Modbus协议已被广泛应用于在监控和控制现场设备。Modbus协议最初是通过串行数据进行通信的,也就是Modbus Serial协议。随着工业现代化的发展,产生了Modbus TCP协议,即通过与TCP协议相结合来发送和接收Modbus Serial数据。Modbus的出现是为了使工业现场设备实时地接收和发送相关命令和数据,然后最重要的安全措施在Modbus的设计之初并没有被考虑进去。

通过前一篇对 Moubus模拟器的使用和基础知识的理解 ,本文主要深入研究Modbus专属的渗透框架Smod,以及一些对Modbus PLC设备的扫描和漏洞利用脚本。

安全环境介绍:

自1979年以来,作为业界系列上的标准,Modbus已经使数百万自动化设备能够进行通信。这些设备在全世界分布着,下图是SHODAN搜集协议使用分布区域的动态立体图。大家可以看一下,链接: https://ics-radar.shodan.io/

vaQNB3q.jpg!web

然而广泛的使用也必然引起黑客们的注意,随之而来的是爆出各种各样的安全问题,包括拒绝服务、远程代码执行和堆栈缓冲区溢出等漏洞,下方是部分关于Modbus协议和Schneider设备的漏洞:

mQNjA3I.jpg!web

Smod介绍:

Smod是一个模块化的Modbus渗透测试框架,可以用来测试Modbus协议所需的各种诊断和攻击功能。这是一个使用Python和Scapy的完整的Modbus协议实现。这个软件可以在python 2.7.x下的Linux / OSX上运行。

近年来,SummerySCADA(过程控制网络)系统已经从专有封闭网络转向开源解决方案和支持TCP / IP的网络。这使他们容易受到我们传统计算机网络面临的相同安全漏洞的影响。由于Modbus/TCP协议简单且容易实现,而且广泛应用于电力、水力等工业系统。所以Smod框架均使用Modbus/TCP协议。而且Smod框架可以用来评估一个Modbus协议系统的漏洞。下图是启动Smod:

下载链接: https://download.csdn.net/download/weixin_43977912/12366214

2uENZ3n.jpg!web

扫描PLC:

在对PLC设备进行一系列渗透测试操作之前,我们先对网段PLC设备进行一次扫描,了解有哪些设备。虽然Smod框架里面也有扫描脚本,但并没有Nmap里面的Scripts脚本效率高,当然也可以用PLCScan(通过先检测端口TCP/502,若开放会调用其他函数来进行更深层次的扫描检测的工具)。这里我选择Nmap里的三个模块:

 modbus-discover.nse(nmap自带)识别并发现Modbus PLCS设备及版本
 modicon-info.nse(需添加)识别并列举Schneider Electric Modicon PLC
 modbus-enum.nse (需添加)识别并枚举使用Modbus的设备

检测脚本下载地址: https://download.csdn.net/download/weixin_43977912/12369553

3qieAvA.jpg!web

使用modbus-discover.nse脚本,发现了一系列Schneider Electric的设备及版本号,还有开启的502端口和sid(设备ID)。

z2yeMvU.jpg!web

使用modicon-info.nse脚本获取更详细的信息:

 BMX P34 2020:BMX P34 高性能CPU,内置USB口,Modbus,Ethernet TCP/IP
 Fireware:固件版本v3.2      
 Memory Card:BMXRMS008MP 内存卡8MB

J7VJRr2.jpg!web

Smod渗透:

接下来我们来使用Smod,看看它有哪些厉害的功能:

 1、 暴力破解PLC的UID
 2、 网络嗅探进行ARP地址欺骗
 3、 枚举Modbus PLC的功能
 4、 模糊读写单一或多个线圈功能
 5、 模糊读写单一或多个输入寄存器功能
 6、 测试读写单一或多个保持寄存器功能
 7、 测试单个PLC 所有功能
 8、 对单个或多个线圈写值进行Dos攻击
 9、 对单个或多个寄存器写值进行Dos攻击
10、对ARP地址欺骗进行Dos攻击

ZBZ3AnB.jpg!web

首先我们暴力破解PLC的UID,因为接下来的操作,例如读写线圈和寄存器或者Dos攻击,都需要带上UID,所以我们先使用/modbus/scanner/uid这个模块。如下图所示,我们填写好RHOSTS IP后直接exploit,获取到的UID为1。

bu67bq2.jpg!web

接着我们对Modbus PLC的功能进行枚举(/modbus/scanner/getfunc),携带上UID,查看我们可以针对其PLC做哪些渗透工作,如下图所示,发现基本常用的功能码(Function Code)都支持,那接下来就好办了。

RJB3iei.jpg!web

知道了该PLC支持的功能,我们先选择读取线圈看一下是否成功(/modbus/function/readCoils),发现读取成功了Coils给了回应,如下图所示:

eUJbEjy.jpg!web

接下来我们主要对保持寄存器进行读取(/modbus/function/readHoldingRegister),需要设置的参数如下:

RHOSTS:xx.xx.xx.xx(IP)

Quantity:0×0010(为读取寄存器连续个数,默认为10个,对应组态软件的通道数量,这里我们读取16个,所以换成16进制是0010)

StartAddr:0×0064(为寄存器起始地址,默认从0开始,这里我们从100开始,所以换成16进制是0064)

UID:1

如下图所示,读取到了registerval(寄存器的值):

EFbUbaU.jpg!web

Dos这块的攻击我就不演示了,把我一群PLC设备弄挂了我上哪哭去……篇幅原因,我再演示对单个寄存器的写值功能,其他模块的功能大同小异,大家有空可以一一尝试哈,如果有不理解的地方,可以直接评论或者私信俺。如下图所示,设置好了寄存器的数据存放地址和值,成功写入。

quui6zJ.jpg!web

总结:

使用了Smod渗透框架才知道,我们在一个PLC的网络里,居然可以做这么多坏事!读写线圈和寄存器,还有Dos攻击,这些对PLC都是致命的,所以一个Modbus协议系统里需要多层次的安全防御手段,例如流量异常行为检测,只有可信任的设备,才能接入工控系统网络,且需要进行身份认证,确保登陆者也是可信任者。对Modbus 系统进行日志记录和安全审计功能,记录操作的时间、地点、操作者和操作行为等关键信息从而提供安全事件爆发后的追查能力。

当然,之前讲述了很多Modbus协议和PLC设备被爆出的漏洞,所以企业也要定期对工控系统进行漏洞扫描,即时修补漏洞更新软硬件。后续将与大家一起更深入研究Modbus协议,通过Python的modbus_tk模块进行读写PLC并进行详细的流量分析。

*本文作者:黄一113530,转载请注明来自FreeBuf.COM


Recommend

  • 47

    使用Python的modbus_tk模块包来连接Modubs Slave

  • 49
    • 微信 mp.weixin.qq.com 4 years ago
    • Cache

    Modbus 调试助手的使用(一)

    点击上方蓝字可直接关注呦~ 记得当时还百度来着,然鹅并没有找到自己想要的东西,鉴于此,写一个对初学者友好的教程。 上一篇文章提到 Modbus 协议包括 ASCII、RTU、TCP...

  • 24

    前言 工业控制已从单机控制走向集中监控、集散控制,如今已进入网络时代,工业控制器连网也为网络管理提供了方便。Modbus 就是工业控制器的网络协议中的一种。在2004年,中国国家标准委员会正式把Modbus作为了...

  • 15

    前言: 如今工业控制系统设计的领域包括交通运输、能源行业、装备制造、机械制造等多个国家关键基础领域。工业控制系统的信息安全问题关系到国家安全和社会稳定。Modbus 协议是一种典型的工...

  • 25
    • www.freebuf.com 3 years ago
    • Cache

    Modbus安全:M340停启和流量分析

    前言 随着施耐德(Schneider)新款的Modicon M340可编程控制器集各种强劲功能和创新设计于一身,为复杂设备制造商和中小型项目提供各种自动化功能的最佳技术和高效、灵活、经济性的解决方案。且Modicon M340充...

  • 14

    ``` docker pull microsoft-azureiotedge-modbus ``` # Featured Tags `docker pull mcr.microsoft.com/azureiotedge/modbus:1.0` + 1.0 [comment]: (# Featured Repos) [comment]: (Please, provide the information for this section and un...

  • 11

    Raspberry Pi CM4 carrier delivers isolated Modbus, 1-Wire, and CAN Mar 5, 2021 — by Eric Brown — 8943 views

  • 4
    • blog.51cto.com 2 years ago
    • Cache

    Modbus协议详解#yyds干货盘点#

    Modbus协议详解 ?作者介绍:中国DBA联盟(ACDU)成员。目前从事工业自动化软件开发工作。擅长C#、Java、机器视觉、底层算法等语言。2019年成立柒月软件工作室,2021年注册苏州凯捷智能科技有限公司 ?如果文章对你有帮助,欢迎关注、点赞、...

  • 6

    Modbus Slave缓冲区溢出漏洞CVE-2022-1068分析与复现 精选 原创 盛邦安全 2023-01...

  • 1
    • www.cnblogs.com 11 months ago
    • Cache

    Python modbus_tk 库源码分析 - .Hanabi

    modbus_tk 源代码分析 modbus_tcp 协议是工业项目中常见的一种基于 TCP/IP 协议的设备数据交互协议。 作为 TCP/IP 协议的上层协议,modbus_tcp 协议涉及到两个概念:client 和 server。但更标准的叫法应该是 master 和 s...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK