早在两年前CVE-2011-4859等多个施耐德PLC硬编码漏洞,随着Basecamp的研究项目而曝光,硬编码问题存在于现运行的多个型号以太网模块中以及产品更新固件中。究其原因这还得得益于施耐德PLC以太网奇葩的升级模式。
Unity Pro是施耐德系列PLC的编程软件,Unity Pro 附带的 OSLoader软件可以完成PLC的操作系统固件升级。
工具可以使用如图中MODBUS,Uni‐Telway以及FTP协议与PLC交互完成固件升级,前两种非以太网模式。
选择FTP协议后,固件可以选择ftp以太网的方式下载,针对现已运行的低版本固件,输入IP后不需要验证(部分新版本以太网模块需要输入MAC地址确认),这里我们可以使用Wireshark截获传输的明文密码和通信数据,从图中不难看出OSloader会尝试多个默认口令,该默认登录的用户名和密码一般是按照不同的系列和型号区分。
根据抓包OSLoader按顺序尝试如下fwupgrade/upgradefw,qbf771/fcsdfcsd,qbf77101/fcsdfcsd,qbf77111/fcsdfcsd,qbf77121/fcsdfcsd,fwupgrade/fwetzedus,fwupgrade/fwetzedus2,fwupgrade/00000000几组用户名和密码。根据CVE披露的受影响范围,不难看出77101,77111,77121为施耐德以太网模块的几个型号,如NOE 771 01等。
OSLoader登录设备后会尝试远程读取文件系统,这样即可实现远程上传下载,攻击者可以通过替换固件的方式轻松让PLC宕机。
通过SHODAN等搜索引擎对设备特征的查找,将会让攻击者实现自动化攻击变得更加轻松,而厂商也只是在两年之后才发布了修正补丁。
以BMX P34 2020为例默认开放端口如图
施耐德PLC其他型号以太网模块存在的默认口令集如下
Telnet 23
VxWorks login:ntpupdate
Password: ntpupdate
HTTP 80
Schneider Web
username:USER
Password:USER