PROFINET是PROFIBUS国际组织推出的新一代基于工业以太网技术的自动化总线标准。对PROFINET协议分析后发现该协议容易遭受中间人攻击,攻击效果类似震网病毒,发起攻击后可向变频器发送错误的频率,并且响应给PLC正常的频率。
PART1.试验环境
PLC:SIMATIC S7-1500
变频器:SIMATIC CU240E-2 PN
PART2.协议分析
发现阶段:
交互流程
1、PLC(MAC地址:ec:1c:5d:02:52:53)发送组播,以在网络中宣告PLC。
2、变频器(MAC地址:00:1c:06:92:04:8c)接收到组播数据后,向PLC发送响应信息,其中包含变频器的一些基础信息和配置请求。
3、PLC向变频器发送IP配置信息。
协商阶段:
PLC(IP地址:192.168.2.22)和变频器(IP地址:192.168.2.23)通过PNIO-CM协议(依赖UDP)进行配置信息协商。
关键字段如下:
第一个PNIO-CM数据包指出了运行阶段中发送控制数据的设备MAC地址。
第二个PNIO-CM数据包指出了运行阶段中发送响应数据的设备MAC地址,以及控制指令标识符(0x8020)和响应指令标识符(0x8000)。
运行阶段:
运行阶段通过PNIO协议进行交互。
1、PLC发送给变频器的控制数据包含停止和运行两种状态,控制数据使用协商的控制指令标识符0x8020(红框)。停止状态的控制数据使用标识0x60(黄框),且控制指令(蓝框)和频率(绿框)均为0。
运行状态的控制数据使用标识0x80,控制指令为0x047f,频率为调节的频率数值。
2、变频器发送给PLC的响应数据只有一种状态,响应数据使用协商的响应指令标识符0x8000(红框)。响应数据中包含标识变频器当前运行状态的指令(蓝框),和变频器的当前转速(绿框)。
PLC发送停止状态命令后的响应:
PLC发送运行状态命令后的响应:
PART3.攻击流程
1、发现阶段伪造ARP请求发送给PLC和变频器,使协商阶段数据流经攻击者机器。
2、协商阶段修改PLC和变频器交互数据中的关键MAC地址,使运行阶段数据流经攻击者机器。
3、修改运行阶段控制数据和响应数据中的频率字段,使PLC接收到正常的频率响应,以及变频器接收到伪造的频率。
PART4.演示视频
https://mp.weixin.qq.com/s?__biz=MzU3ODQ4NjA3Mg==&mid=2247531591&idx=1&sn=41fbf4dfa7234e08a4c342ada9c90150&chksm=fd769610ca011f068ce363eaf1e52b43da091b60269ffbe216254f1da0588a811888d6e93bed&token=251993400&lang=zh_CN#rd
PART5.缓解建议
1、交换机Mac地址绑定。
2、基于流量监控,在发现阶段确认变频器IP与MAC映射,后续可识别出伪造的ARP请求。