新闻资讯

施耐德PLC以太网模块固件后门引发的血案

2015-09-09 Ever 325


1483673823671228.jpg

先放上施耐德官网上高端大气的网站首页: 

1483673822804177.jpg

全球能效管理专家施耐德电气为100多个国家的能源及基础设施、工业、数据中心及网络、楼宇和住宅市场提供整体解决方案, 其中在能源与基础设施、工业过程控制、楼宇自动化和数据中心与网络等市场处于世界领先地位,在住宅应用领域也拥有强大的市场能力。致力于为客户提供安全、可靠、高效、经济以及环保的能源,施耐德电气2013年的销售额为250亿欧元,拥有超过160,000名员工。施耐德电气助您――善用其效,尽享其能!

 


的确如它所说,施耐德电子在国内工业自动化行业赫赫有名,施耐德Modicon(莫迪康)系列PLC(可编程逻辑控制器)广泛部署在我国能源、电力、化工等行业工业控制网络中,作为SCADA系统(数据采集与监控系统)的核心控制设备。

其中,Modicon Quantum 系列PLC作为高端PLC参与着我国核心能源调度网络系统,如西气东输区域子段SCADA系统。

图片关键词

无可厚非,施耐德、西门子公司旗下的工控设备不论是功能还是性能绝对令国内同类产品望尘莫及,然而在安全威胁日益加剧的今天,这些部署在国内核心工控网络中的设备安全性到底怎样?

我们来看2011年的CVE-2011-4859,这个漏洞涉及施耐德多款PLC设备,包含CPU模块和以太网模块。漏洞描述如下:

The Schneider Electric Quantum Ethernet Module, as used in the Quantum 140NOE771* and 140CPU65* modules, the Premium TSXETY* and TSXP57* modules, the M340 BMXNOE01* and BMXP3420* modules, and the STB DIO STBNIC2212 and STBNIP2* modules, uses hardcoded passwords for the (1) AUTCSE, (2) AUT_CSE, (3) fdrusers, (4) ftpuser, (5) loader, (6) nic2212, (7) nimrohs2212, (8) nip2212, (9) noe77111_v500, (10) ntpupdate, (11) pcfactory, (12) sysdiag, (13) target, (14) test, (15) USER, and (16) webserver accounts, which makes it easier for remote attackers to obtain access via the (a) TELNET, (b) Windriver Debug, or (c) FTP port.

不折不扣的固件后门,而且可供选择如此多,是在是对黑客们爱的的福利。通过默认账号,可以远程登录访问设备Telnet、Windriver或FTP服务,登录后可获取设备实时数据、掌握设备权限、甚至破坏网络,直接威胁到设备甚至设备所在网络的安全。

然而,整整过了两年!两年!两年!如此高危的漏洞官方才通过升级设备固件进行了修复。这就是官方所谓的为客户提供安全、可靠的服务。

那么,目前这个漏洞的修复情况怎样,各位随我来看。


首先,Shodan\Zoomeye开始搜索暴漏在公网上的受害设备。以Quantum NOE771*以太网模块为例,直接搜“NOE 771”

1483673823860867.jpg

因为毕竟是高端PLC模块,部署的工控网络也相对核心,安全管理也会较为严格,所以暴漏数量不是很多。

获取到公网IP后再筛选开放FTP服务的IP。推荐根据Shodan提供的Python API写脚本自动化测试,从获取IP到FTP后门账户可以一气呵成。如果通过脚本不妨测试所有漏洞涉及设备。以下是脚本本返回的测试数据:

1483673825153091.jpg

不到一个小时,程序跑完。暴漏在公网上的漏洞涉及设备任能远程利用的数量约为总设备的1/5,这个数据还是相当惊人的。

 

很多人会想,为什么设备中会存在这么多不一而同的默认登录账户?是有意为之还是另有用途?

我们来看施耐德PLC设备的上位机编程软件Unity Pro,答案都在这里: )


Unity Pro 是施耐德官方出品的编程软件,该软件集合编程、控制、数据采集为一体。能通过此软件编出程序控制PLC是工程师必备的技能。我在Kcon会议上对该软件通信协议的不安全性已经做了展示,这里我们还要再提下这个“神器”。

Unity Pro套件中包含一个更新固件的小程序Unity OS Loader。
工程师可以通过这个软件远程连接PLC上传官方网站发布的更新固件对设备进行远程更新。软件不但支持FTP方式还支持Modbus或USB方式进行数据传输,可以说是非常便捷、易用又人性化。

如果你真觉得这个出自施耐德公司的小软件不会有什么安全隐患,那你真的错了。我们来尝试远程来接,同时Wareshark抓包分析。

图片关键词

数据包说明一切。对的,你没有看错,尝试固件默认FTP账户密码登录设备FTP服务。真的不想吐槽这个奇葩至极的固件升级方式。访问自己的设备还是通过暴力跑字典的方式,还真是在为用户提供省心的服务。这么一来所有可能的固件默认后门就尽收眼底了。

 

Z-one的博客对这个漏洞也做了相关分析,这里就不再多说了:

http://plcscan.org/blog/2014/06/schneider-electric-quantum-ethernet-module-hard-coded-credentials/


当然我们还需手工进行远程登录验证。

通过程序记录的IP地址与默认固件账户地址远程登录:

1483673826642165.jpg

漏洞利用结果不尽如人意,虽然利用固件账户登录了FTP服务器,然而可能是更新了固件导致账户不具备访问权限。在测试记录的IP中尝试登录的IP基本都没有访问权限。难道这个漏洞真的被修复了?施耐德集团对于黑客们爱的福利到此结束了?

 

NO!

想到Z-One曾经利用漏洞下载到的以太网固件,我们可以尝试通过固件发现问题。

图片关键词

大概浏览了一下NOE 77101以太网模块FTP服务下的文件,除了二进制可执行固件文件/FLASH0/wwwroot/conf/exec/NOE77101.bin(这个下篇会详细说)和一些配置文件以外,引起我注意的是这几个Jar文件:

 

FLASH0/wwwroot/classes/jvmver.jar
FLASH0/wwwroot/classes/RDE.jar
FLASH0/wwwroot/classes/SAComm.jar
FLASH0/wwwroot/classes/SysDiag.jar
FLASH0/wwwroot/classes/webcfg.jar
FLASH0/wwwroot/classes/webdiag.jar
FLASH0/wwwroot/classes/XMLParser.jar

FLASH0/wwwroot/classes/xmlrpc-1.1.jar

随手JD-GUI反编译,源码清晰可读,无任何混淆加壳特技。简单分析后得知,这些Java代码是加载在设备Web管理界面中提供配置管理功能。直奔主题,源码搜关键字我们最关心的“password”。 

图片关键词

发现了Sysdiag对应的默认密码:factorycast@schnerder,一个很健壮的密码,长度超过16位还包含特殊字符!

 

由于CVE公布的漏洞描述只有账户,所以测试程序账户对应的密码我只是重复了用户名。这一对固件密码没有在我的测试程序中。

果断找个IP测试,这次不一样了:

图片关键词

登录后进入了固件根目录,能对所有文件进行上传下载,能获取到可执行固件NOE77101.bin,还可以修改固件注入恶意代码上传至远程设备。下载了所有文件以供后续分析,另外查看二进制文件发现该固件是2014年11月14日的固件,版本为6.40,也就是官方声明漏洞已经修复后的固件版本!


图片关键词


另外在施耐德官网上发现官方对于这个漏洞给出的建议除了关闭FTP等相关服务还有强烈推荐部署多分诺工业防火墙。实在让人无力吐槽。

 

下篇预告图,我们来撸固件!

 

图片关键词


图片关键词

 

以太网固件文件会在Github上公布,大家一起来分析:

https://github.com/ameng929/NOE77101_Firmware


【声明】本文来自网络转载,转载目的在于传递更多信息,并不代表本公司赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本公司联系, 我们将在第一时间删除内容!本公司文章版权归原作者所有,内容为作者个人观点,本公司只提供参考并不构成任何建议。本公司拥有对此声明的最终解释权。