更多精彩内容请关注我们
施耐德1836年由施耐德兄弟创立。主要业务包括电力,工业自动化,基础设施,节能增效,能源,楼宇自动化与安防电子,数据中心和智能生活空间等业务领域,其在PLC领域占比较高,且漏洞等级较高危害较大。
中国PLC供应商市场份额
关于硬编码漏洞的描述:
The Schneider Electric Quantum Ethernet Module, asused in the Quantum 140NOE771* and 140CPU65* modules, the Premium TSXETY* andTSXP57* modules, the M340 BMXNOE01* and BMXP3420* modules, and the STB DIOSTBNIC2212 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. 我们来分析一下这个漏洞的成因 该漏洞属于施耐德PLC硬编码漏洞,存在于多个型号以太网模块中以及产品更新固件中。通过默认账号,可以远程登录访问设备Telnet、Windriver 或FTP服务,登陆后可以实时获取数据、掌握设备权限、甚至破坏网络。 首先:获取模块固件后查看二进制可执行固件,发现模块的固件信息(红色框)。接下来:对固件包(zlib形式)解压查看符号表、代码地址、操作系统等。
因为通常vxworks编译时会设置代码段偏移地址(不固定由厂商定制),故要先分析此偏移地址,再,最后使用反编译分析工具静态分析。代码段偏移地址常用值(0x10000)如下图。
然后我们继续:通过固件的函数对应表对函数进行修复 打开函数列表发现系统随机生成的值需要恢复。在 vxworks调试shell中输入lkup strcat命令,返回函数内存地址。 用编辑器打开固件,函数对应表在最后。以 16个字节为一组数据,前四个是字符串内存地址,后四个是函数内存地址。以另四个特征字节数据与四个字节0x00结尾。编写脚本对函数名修复:
之后找到加密函数源码并解出后门密码找到加密函数 loginDefaultEncrypt后比对 vxworks5.5源代码(已公开)中的加密源码并更改源码。
把加密函数单独取出作为独立可运行程序,随机生成字符串碰撞Hash值,最后解出后门账户的密码。
总结:
基于固件逆向分析的漏洞挖掘方法可以发现隐藏较深的软件后门漏洞,在工业控制领域,存在着数量庞大的嵌入式系统,大多固件只压缩未加密,多数固件采用VxWorks 系统,故以上分析方法具有普遍性和通用性。下一篇:勒索病毒行为分析