安全研究

News information

某工控触摸屏安全性分析与0Day漏洞挖掘

<<返回

2019年07月29日 09:38

1.   概述

工业触摸屏,是通过触摸式工业显示器把人和机器连为一体的智能化界面。它是替代传统控制按钮和指示灯的智能化操作显示终端。它可以用来设置参数,显示数据,监控设备状态,以曲线/动画等形式描绘自动化控制过程。更方便、快捷、表现力更强,并可简化为PLC的控制程序,功能强大的触摸屏创造了友好的人机界面。触摸屏作为一种特殊的计算机外设,它是目前最简单、方便、自然的一种人机交互方式。它赋予了多媒体以崭新的面貌,是极富吸引力的全新多媒体交互设备。

工业触摸屏作为工业控制系统的一部分,可以通过串口、USB口、以太网等接入工控网络。触摸屏大都支持modbus、IEC104、BACnet等常用工控协议。

工业触摸屏的安全性关乎整个工控系统的安全,若工业触摸屏存在安全漏洞,可能成为黑客攻击工业控制系统的突破口。本次我们选取国内某厂商某型号触摸屏进行安全研究,该设备通过以太网口进行连接,支持多种工控协议。希望通过本次研究,能给工业控制系统安全防护提供参考。       

image.png

图1 某工业触摸屏

2.   安全研究

2.1    端口扫描

通过Nmap扫描,发现设备房端口如图2,。经过验证21-ftp,80-http是可用的,20248是厂商自定义的一个通讯协议,将在后续章节中介绍。其它端口可能和远程访问有关,该厂商提供一个云平台,其产品可以与云平台互联

image.png

图2 设备开放端口

2.2    下装工具研究

下装工具安装在windows系统上,通过此工具可以扫描网络中的触摸屏设备,可以向触摸屏下装HMI程序,也可以从触摸屏读取工程文件。

image.png

图3 下装工具

2.2.1    设备搜索

image.png

图4 设备搜索过程数据包

整个设备搜索过程就是PC发送UDP广播包,设备UDP应答,PC确认。

包 1  方向 192.168.125.112 -> 192.168.125.11

0000   57 45 49 4e 00 00 00 01 70 7d a8 c0 00 00 c1 29   WEIN....p}.....)

0010   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................

0020   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................

包 6  方向 192.168.125.112 <- 192.168.125.11

0000   57 45 49 4e 00 00 00 12 02 00 20 00 48 4d 49 2d   WEIN...... .HMI-

0010   63 64 62 37 00 00 00 00 00 00 00 00 00 00 00 00   cdb7............

0020   00 00 00 00 00 00 00 00 00 00 00 00 42 71 80 00   ............Bq..

0030   32 e9 36 0a 00 00 00 00 00 d0 2c 40 f8 c9 0f 40   2.6.......,@...@

0040   00 00 00 01                                       ....

包 10  方向 192.168.125.112 -> 192.168.125.11

0000   57 45 49 4e 00 00 00 03 82 e6 a8 c0 00 00 c1 29   WEIN...........)

这个设备搜索过程设计的还是比较正常,既实现了厂商内部产品的相互识别,又避免了暴露过多的设备信息。

2.2.2    从触摸屏读取工程文件

image.png

图5 读取工程文件数据包

上图是获取过程的流量,明显我们发现ftp流量,直接暴露了用户名以及密码。使用ftp工具去连接,发现可以使用,在ftp上我取得了更多的信息。

下图是FTP客户端展示的文件目录结构。

  •     /history/crash_dumps/*/*.dump ,这里面都是错误转储文件

  •     /history/recipe,这里保存的是一种组态工程文件

  •     /mt8000/pub/driver,这个目录保存的是组态工程使用的协议驱动模块,其实就是一个so模块

  •     /mt8000/pub/font,保存字体文件

image.png

图6 触摸屏存储目录结构

再深入研究FTP服务可以发现,upload用户只有下载的权限,没有上传的权限,其实它还有个用户是download,具有上传的权限。工程档的装载就是靠这个用户来实现的,下面会介绍。

2.2.3    向触摸屏下装工程

image.png

图7 下装工程数据包

上面是装载过程的流量,走的仍然是FTP。用户换成了download,但是多了 AUTH过程,认证过程包 54、57、58和61。后续的流量就是ftp的上传操作,涉及的文件与提取的工程档没什么却别。

2.3    组态软件研究

组态软件功能非常多,我们重点研究重要功能。打开组态软件后,可以看到已经有了工程,这个工程就是之前通过组态下装工具读取回来的。

image.png

图8 HMI组态软件

2.3.1    重启HMI功能

通过此功能,可以重启触摸屏。

image.png

图9 重启HMI按钮

重启过程涉及了端口20248和8000,20248端口的流量分为认证、识别版本、清除历史纪录、重启几个过程。

a)认证

认证过程相对复杂,认证过程由设备发起,下面是认证过程的5个报文,认证方式暂时不清楚,猜测过程如下

报文一,设备发送盐给PC

报文二,PC发送盐给设备

报文三,设备确认两方盐收到

报文四,PC发送 加密算法(双方的盐+密钥)的结果给设备

报文五,设备验证成功

不过这都是猜测还需做软件逆向验证。

0000   40 01 00 01 00 40 31 45 37 46 39 35 44 43 46 42   @....@1E7F95DCFB

0010   30 45 33 41 36 32 41 43 38 46 35 41 31 32 44 33   0E3A62AC8F5A12D3

0020   37 36 44 36 36 31 38 31 37 41 42 43 36 41 30 30   76D661817ABC6A00

0030   35 43 39 41 37 38 31 43 39 45 38 30 44 36 34 44   5C9A781C9E80D64D

0040   45 36 38 31 38 35                                 E68185

0000   40 01 00 02 00 40 43 46 46 35 37 44 38 34 39 37   @....@CFF57D8497

0010   35 42 41 32 39 36 41 38 36 33 31 45 31 38 39 46   5BA296A8631E189F

0020   33 41 43 43 33 42 31 30 30 44 46 30 41 41 43 39   3ACC3B100DF0AAC9

0030   43 46 39 30 35 42 36 46 30 43 42 43 42 38 46 33   CF905B6F0CBCB8F3

0040   30 39 46 30 37 35                                 09F075

0000   40 01 00 03 00 00                                 @.....

0000   40 01 00 04 00 32 00 01 30 34 41 31 35 37 46 42   @....2..04A157FB

0010   44 35 34 39 34 30 46 32 41 37 46 36 39 31 43 35   D54940F2A7F691C5

0020   33 44 34 46 45 34 38 37 31 30 41 33 42 42 39 43   3D4FE48710A3BB9C

0030   45 46 35 44 33 33 41 32                           EF5D33A2

0000   40 01 00 03 00 00                                 @.....

b)识别版本

这个过程相对简单。

0000   50 01 00 00 00 11 4f 53 5f 76 65 72 73 69 6f 6e   P.....OS_version

0010   20 30 34 31 30 30 32                               041002

0000   50 01 00 01 00 1d 4d 54 38 78 78 78 28 69 50 29   P.....MT8xxx(iP)

0010   20 4f 53 20 62 75 69 6c 64 20 32 30 31 37 31 30    OS build 201710

0020   32 36 0a                                          26.

c) 清除历史纪录与重启

这两个功能放在一起分析。下面的数据包都是前一个是shell命令,后面一个回复命令结果。其实包结构非常简单,就是简单的打包shell命令,rm命令大量重复就不贴了。

0000   50 01 00 00 00 04 73 74 6f 70           P.....stop

0000   50 01 00 02 ff f0                                 P.....

0000   50 01 00 00 00 21 72 6d 20 2f 6d 74 38 30 30 30   P....!rm /mt8000

0010   2f 65 61 73 79 5f 61 63 63 65 73 73 5f 63 6c 69   /easy_access_cli

0020   65 6e 74 2e 74 6d 70                         ent.tmp

0000   50 01 00 02 ff f0                                 P.....

0000   50 01 00 00 00 1a 72 6d 20 2f 6d 74 38 30 30 30   P.....rm /mt8000

0010   2f 70 75 62 2f 6b 65 79 62 6f 61 72 64 2e 73 6f   /pub/keyboard.so

0000   50 01 00 02 ff f0                                 P.....

0000   50 01 00 00 00 04 72 75 6e 20          P.....run

0000   50 01 00 02 ff f0                                 P.....

2.3.2    组态程序下装

这个功能与下装工具中的“下载”有所不同。

image.png

图10 下装按钮

这里的实现方式与上面重启HMI类似,同样是使用了20248与8000端口。看到下面这图大概也就清楚了,sendfile 后面就是在传送工程文件。整个过程也是先经历认证,版本识别,然后疯狂的下发shell命令。

image.png

图11工程文件数据包

2.4    组态工程文件研究

经过上面流量上的分析我们注意到了几个文件:gui.e30、watchdog、SCHNEIDER_MODBUS_TCPIP.so、keyboard.so、20190105T192519.dump、mt8000。

dump文件分析过后知道它的芯片是am335xevm,系统中存在的so库。

image.pngimage.png

图12工程文件

经过分析前面的四个文件都是从C:\EBpro\firmware、C:\EBpro\driver\emt3000_series两个文件夹获取,然后下装到设备里面去的。其中firmware目录下的文件做了一定的加密混淆措施,而driver下面通讯协议库是没有经过加密的。于是我们有了一个想法,替换这里面的so看它是否能够使用。

image.pngimage.png

image.pngimage.png

图13 so文件篡改

上面的是我对SCHNEIDER_MODBUS_TCPIP.so的修改,使用了lief做了so patch。然后使用官方组态工具装载上去,可以看到组态屏和PLC的通讯断开了,证明我们修改的代码确实被执行了。通过查询NVD、CNNVD等权威官方漏洞平台,发现均未收录此漏洞,更没有此漏洞的修复措施,说明这是一个0 Day漏洞。

最后是mt8000文件,图15是binwalk的结果,文件从0xE79到0x27124E都是位图文件,拆出来可以看到是组态工程里面使用的图片。使用notepad++打开可以发现从 0x2bc950开始都是一些脚本,猜测是VB。如下图可以看到连注释都保留了。

image.png

图14 mt8000文件binwalk

image.png

图15 mt8000文件

3.   总结

此工业触摸屏存在0 Day漏洞,使用时需要做好网络安全防护措施。此工业触摸屏下装工具依靠FTP实现了很多重要功能,存在信息泄露的风险,如果受到中间人攻击,完全可以篡改组态程序。FTP密码111111是默认密码,建议在工程实施中一定要改这个密码。

对于此款触摸屏,可能存在下列被入侵的可能:

a)    中间人攻击,劫持会话能实现组态逻辑的篡改;

b)    修改官方工具,参照Xcode后门事件;

c)     搞清楚认证方式后,可以实现工具化的入侵,由于没办法拆开暂时不太好评估可行性。

安全使用建议:

a)    修改默认密码;

b)    修改默认的组态端口;

c)     边界防火墙禁用相关组态端口。