攻防有道:SchneiderTM221 PLC攻击实验

工控安全 10个月前 admin
321 0 0
攻防有道:SchneiderTM221 PLC攻击实验

PLC是一种数字运算操作的电子系统,专为在工业环境下应用而设计。它采用可编程序的存储器,用来在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,并通过数字式、模拟式的输入和输出,控制各种类型的机械或生产过程,作为工业控制系统的核心组件,PLC的安全是工控安全的重中之重。


TM221CE24R是施耐德公司的一款产品,本次实验着重研究对此款PLC的攻击实验,进行资产确认、功能枚举、DOS攻击、重放攻击、FUZZ测试、ARP欺骗等试验。通过这些试验,对挖掘PLC的漏洞提供一些思路。之后对攻击成功的流量重新做实验,在PLC之前串联珞安科技工业防火墙,测试防火墙的防护能力。


攻防有道:SchneiderTM221 PLC攻击实验

1-SchneiderTM221 PLC


具体实验组网拓扑图如下,其中工业防火墙串联PLC,实验首先将工业防火墙设为调试模式进行攻击实验,即防火墙对流量不拦截,测试防火墙防护能力时将防火墙设为工作模式,防火墙对攻击流量进行拦截。


攻防有道:SchneiderTM221 PLC攻击实验

2-实验箱组网逻辑拓扑图



一、资产确认:



1.1 通过plcscan工具,能够确认该PLC具体型号为TM221CE24R,使用modbus协议


攻防有道:SchneiderTM221 PLC攻击实验

图3-Plcscan确认PLC具体型号


使用防火墙的防护效果:防火墙的黑名单事件已识别此次扫描并进行拦截


攻防有道:SchneiderTM221 PLC攻击实验

图4-开启防火墙后plcscan扫描防护墙的日志


plcscan扫描后无法识别modbus


攻防有道:SchneiderTM221 PLC攻击实验

图5-开启防火墙后plcscan扫描失败


1.2 通过nmapmodicon-info脚本扫描502端口,也可以列出PLC的具体信息,服务为modbus


攻防有道:SchneiderTM221 PLC攻击实验

图6-Nmap脚本确认PLC具体型号


使用防火墙的防护效果:使用珞安科技工业防火墙,自带黑名单,重新使用nmap扫描,从防火墙端的黑名单事件可以看出,匹配到探测流量后将流量抛弃。


攻防有道:SchneiderTM221 PLC攻击实验

图7-开启防火墙后nmap扫描防火墙的日志


Nmap扫描后已无法识别modbus


攻防有道:SchneiderTM221 PLC攻击实验

图8-开启防火墙后nmap识别modbus失败



二、smod框架测试



既然使用了modbus协议,首先考虑使用smod进行渗透测试。Smod是一个模块化的Modbus渗透测试框架,可以用来测试Modbus协议所需的各种诊断和攻击功能。这是一个使用Python和Scapy的完整的Modbus协议实现。这个软件可以在python 2.7.x下的Linux / OSX上运行。Smod安装后有如下modules:


攻防有道:SchneiderTM221 PLC攻击实验

图9-Smod主要功能


2.1 暴力破解PLC的UID及枚举功能


通过smod框架首先爆破出UID,再通过UID枚举出PLC的功能。同时爆破出的UID还可以进行读取线圈、读取保持寄存器等操作。


攻防有道:SchneiderTM221 PLC攻击实验

图10-Smod枚举UID


Modbus PLC的功能进行枚举(/modbus/scanner/getfunc),携带上UID


攻防有道:SchneiderTM221 PLC攻击实验

图11-Smod枚举功能码


使用防火墙的防护效果:防火墙对爆破的流量进行了识别且丢弃,黑名单事件如下:


攻防有道:SchneiderTM221 PLC攻击实验

图12-开启防火墙后,smod枚举时防火墙记录的日志


攻防有道:SchneiderTM221 PLC攻击实验

图13-防火墙记录的黑名单信息


在防护墙防护后,爆破UID的速度变得很慢,在枚举功能时smod框架直接报错。


攻防有道:SchneiderTM221 PLC攻击实验

图14-防火墙开启后smod框架枚举失败


2.2 读取线圈


攻防有道:SchneiderTM221 PLC攻击实验

图15-Smod读取线圈


2.3 保持寄存器进行读取(/modbus/function/readHoldingRegister)


攻防有道:SchneiderTM221 PLC攻击实验

图16-Smod读取保持寄存器


此为PLC的正常功能,防火墙默认并未做限制,未识别到安全事件。



三、DOS攻击



3.1 Synflood攻击


SYN攻击利用TCP建立连接时3次握手,通过原始套接字发送源地址虚假的SYN报文,使目标主机永远无法完成3次握手,占满了系统的协议栈队列,资源得不到释放,进而拒绝服务。使用如下命令进行Synflood dos攻击:


攻防有道:SchneiderTM221 PLC攻击实验

图17-Hping3进行synflood攻击


可以看到dos攻击产生效果,PLC无响应,wireshark抓包发现发送了大量TCP的包


攻防有道:SchneiderTM221 PLC攻击实验

图18-Hping3进行synflood攻击流量


攻防有道:SchneiderTM221 PLC攻击实验

图19Hping3进行synflood攻击后HMI与PLC已无法通信


使用防火墙的防护效果:

防火墙对synflood攻击进行了识别且丢弃,在攻击防护事件中有如下记录:


攻防有道:SchneiderTM221 PLC攻击实验

图20-synflood攻击防火墙日志记录


防火墙开启后流量峰值明显下降


攻防有道:SchneiderTM221 PLC攻击实验

图21-synflood攻击开启防火墙峰值下降



四、重放攻击



重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。以下为重放攻击的步骤:


1.攻击机接入交换机,PLC串联防火墙后接入交换机。

2.使用MachineExpert-Basic配置选择TM221CE24R后,选择试运行,添加正确IP后点登录。

3.点击控制器到PLC(上传),即将PLC的程序下载到本地电脑。

攻防有道:SchneiderTM221 PLC攻击实验

图22-通过MachineExpert-Basic连接PLC并上传程序到本地


4.点击停止控制器,启动控制器,分别抓包,从大量包中分析出停止及启动PLC的程序。

启动PLC发包为hex: 589600000006015a2540ff00

停止PLC发包为hex: 1a7b00000006015a2741ff00

5.点击编程,主任务中存在编程后的程序,可以通过手动改变M点位和I点位的开关来达到调试PLC的目的,如开启LED灯,开启电机,关闭电机等。


攻防有道:SchneiderTM221 PLC攻击实验

图23-通过MachineExpert-Basic连接PLC并调试程序


6.通过wireshark抓包得到改变各个状态的数据,从大量包中获取数据编写脚本。得到modbus_exploit3.py

7.运行modbus_exploit3.py 对应命令,可通过重放攻击改变实验箱状态,如PLC启动、PLC停止、流水灯启动、流水灯停止、电机开启、电机关闭等


攻防有道:SchneiderTM221 PLC攻击实验

图24-重放攻击脚本


攻防有道:SchneiderTM221 PLC攻击实验

图25-重放攻击实验


重放攻击的流量属于正常的业务流量,防火墙识别了协议,但并未拦截,需单独配置规则拦截。


攻防有道:SchneiderTM221 PLC攻击实验

图26-防火墙协议分析抓取到了流量



五、FUZZ测试



使用peach进行FUZZ测试,抓取写单个寄存器(0x06)的流量编写peach的xml文件,未能发现问题,且peach的用例运行较慢。


攻防有道:SchneiderTM221 PLC攻击实验

图27-peach fuzz写单个寄存器的配置文件


攻防有道:SchneiderTM221 PLC攻击实验

图28-peach运行截图及fuzz结果


更改peach配置,改为fuzz功能码90,且monitor使用WindowsDebugger,速度变快,在fuzz过程中,出现实验箱灯光闪烁、电机转动等现象,FUZZ两天未能发现漏洞。


攻防有道:SchneiderTM221 PLC攻击实验

图29-peach fuzz 90功能码且改变monitor的配置文件


使用防火墙的防护效果:开启防火墙后,FUZZ时产生大量规约告警事件,防火墙对无效的流量进行了告警


攻防有道:SchneiderTM221 PLC攻击实验

图30-防火墙对无效的fuzz流量进行告警


且对部分fuzz流量进行了丢弃


攻防有道:SchneiderTM221 PLC攻击实验

图31-防火墙对部分黑名单流量进行丢弃


六、ARP欺骗



具体测试步骤如下:

1.设定kali的ip为192.168.2.32

2.在主机192.168.2.30上执行arp –a

可以查看接口192.168.2.30下面25和32的物理地址

3.在kali上执行右侧命令。

4.重新执行arp –a,可以看到192.168.2.25的物理地址已经修改为和192.168.2.32一样了。


攻防有道:SchneiderTM221 PLC攻击实验

图32-kali进行arp欺骗实验


攻防有道:SchneiderTM221 PLC攻击实验

 图33-Arp欺骗成功,PLC的物理地址已修改

通过上述实验,可以发现施耐德TM221CE24R型号PLC使用modbus协议,因工控协议缺乏安全验证机制,可以很轻易的实现攻击,如UID的爆破、功能码的枚举、重放攻击等。另外DOS攻击也是针对PLC攻击的有效手段。FUZZ是发现工控协议漏洞的一种手段,但效率有待提高。可以成功对PLC的地址进行ARP欺骗,混淆网络设备。


但也发现,通过珞安科技工业防火墙可以对上述攻击进行有效防护,在默认规则情况下,能防护住nmap、plcscan的探测,也能阻止功能码的枚举。对于DOS攻击也能进行一定的消减,丢弃大量攻击流量。对于FUZZ过程中的异常流量,能够有效识别并给出告警。但对于正常的读取线圈、读取保持寄存器或者正常功能的重放攻击不能拦截,需写入对应规则。综合来看,防护效果明显。


珞安科技工业防火墙通过对主流工业协议进行解析,综合运用工控威胁特征识别技术、机器自学习与可信白名单技术,提供传统防火墙的网络层控制和状态监控能力的同时,能够有效抵御各类针对工控系统的网络攻击和恶意破坏,为生产控制系统的稳定运行提供安全保障。



 珞 安 科 技  简 介 


北京珞安科技有限责任公司(简称:珞安科技)成立于2016年,是专注工业网络空间安全的创新型高科技企业和国家级专精特新“小巨人”企业。

拥有业内顶尖工控安全专家团队、工业网络空间安全研究实验室和四大研发中心,坚持自主研发和技术创新,以零信任理念和体系化思想为指导,打造“实战化、易部署、易维护”工控网络安全产品体系,覆盖工控安全、业务安全和工业互联网安全,构建了全方位的工业网络空间安全防护体系。

依托强大的技术原厂商实力,积极开展安全服务和安全运营,业务遍布20多个行业的2000余家工业企业。在全国设有20+分子公司及办事处,提供7*24h安全应急服务响应,保障国家关键信息基础设施安全稳定运行。





合作洽谈


商务合作:齐女士 17601692364


推荐阅读

 

攻防有道:SchneiderTM221 PLC攻击实验

攻防有道:SchneiderTM221 PLC攻击实验

攻防有道:SchneiderTM221 PLC攻击实验

攻防有道:SchneiderTM221 PLC攻击实验

攻防有道:SchneiderTM221 PLC攻击实验

攻防有道:SchneiderTM221 PLC攻击实验

攻防有道:SchneiderTM221 PLC攻击实验


原文始发于微信公众号(珞安科技):攻防有道:SchneiderTM221 PLC攻击实验

版权声明:admin 发表于 2023年5月17日 下午5:52。
转载请注明:攻防有道:SchneiderTM221 PLC攻击实验 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...