【工控安全】图解西门子S7 PLC存在无法修复的漏洞

简要描述:

Step7是西门子S7-400进行编程的软件,通信协议是S7协议,通过抓取S7数据包,绕过权限,发送数据包给西门子S7-400.可通过修改数据包字段达到修改西门子S7-400寄存器(比如I区、Q区)的值。

详细说明:

首先用Step7编程软件建立与西门子S7-400建立通信的程序,用wireshark抓包,通过一些攻击方式以及协议格式分析,得出没有认证字段,然后通过下载程序获得其通信流程,通过构造I区、Q区下置数据包,发送数据包给西门子S7-400。

没发送Q区数据包之前:


发送Q区数据包:


没有发送I区数据包:


发送I区数据包:


漏洞证明:

每个程序所编写程序的符号表和监视变量不一致,下面是我所监视的变量表:


西门子厂商回复: 由于S7 400 PLC已经销售了很长时间,装机数量巨大,为保证系统间的兼容性,西门子无法修改S7协议。

因此,西门子建议客户采取如下安全防护措施:建议客户尽可能第采用最新一代的S7 1200(新版本固件)及S7-1500。1200/1500系列PLC采用的是S7+协议通信,新协议在安全上做了针对性的设计,目前的这种重放攻击将无法修改S7 1200/1500 PLC的变量取值。