原创 | KUKA机器人安全分析实战
KUKA是世界领先的机器人制造商之一,该公司生产的KUKA机器人在国内外的工业控制领域有着广泛的应用。本篇文章从实战出发,介绍如何对机器人这类设备进行快速的安全测试和漏洞挖掘。
测试目标
结构梳理
控制柜相当于一个PC机,插上鼠标,键盘和显示器就可以直接对其进行操作,为了方便分析,将主要程序(文件夹C:/KRC)从控制柜通过U盘拷贝出来。下面就是该文件夹的内容。
( 1 ) SmartHMI就是手操器显示的界面程序,直接和操作员打交道,从文件名(如下图所示)可以看出,该程序主要是由C#编写的,分析时应该使用dnspy进行反编译分析。
( 2 ) VxWin是一个让非实时的windows系统运行高实时性系统Vxworks的解决方案,由于机器人控制需要实时性,windows显然满足不了要求,所以通过VxWin可以让windows系统运行Vxworks虚拟机,执行机器人控制任务。下图摘自百度百科:
( 3 ) ROBOTER文件夹存放着Vxworks内核/驱动模块/配置信息,是控制器核心中的核心,通过Vxworks系统来直接控制外围的机械系统。这部分可以使用IDA进行相关的逆向分析,指令集和宿主机的一致(X86架构)。
( 4 ) smartPAD文件夹存放着手操器一部分的固件文件(如下图),初略地浏览下,发现是WinCE的固件(这里是ARM架构的),说明手操器运行的是wince系统(微软发布的嵌入式系统)。
在kcpui_app.exe发现了手操器是通过rdp与控制柜进行通信的,也就是说手操器应该是连接控制柜的内部网口:
可以看到有个用户kukauser,密码是“68kuka1secpw59”,该用户和密码已经在网上被披露,严格来说,这是存在安全风险的。(该用户和密码不能随便改变,这会导致机器人无法正常工作)。
漏洞挖掘
对于windows系统的安全测试,无非是信息搜集,对暴露的端口进行探测,再对相应的服务进行突破,从下面结果来看,远程桌面(3389)并没有暴露出来。
telnet服务
直接通过telnet连接,可以看到Vxworks login信息,说明这是windows里的Vxworks虚拟机暴露出的端口。
先上弱口令爆破工具,直接跑了很久也没跑出来,后来直接放弃,从Vxworks固件入手,使用IDA对Vxworks符号表进行恢复后,很清楚地找到了一个隐藏的硬编码用户:
通过发现的账号密码,可以直接登陆Vxworks,获得一个Vxworks Shell,由于Vxworks是核心系统,该漏洞危害不言自明。
SMB服务
说到SMB服务,首先考虑使用MSF检测是否存在永恒之蓝漏洞,但是遗憾的是MSF提示目标可能已经打上了补丁。
直接进入系统查看,发现SMB共享了文件夹(C:/KRC/ROBOTER),但是只能被target用户访问,也就是前面说的kukauser没法使用。起初以为该target用户使用了和kakauser一样的密码,发现并不对,接着尝试从该系统中导出target用户的NTLM hash,通过cmd5查找原始密码,仍然没有成功,猜测该用户应该使用了和kukauser一样的高强度密码。
柳暗花明又一村,搜索关键字“target”,在某个exe找到了直接target用户的账号和密码,如下:
通过该用户密码,成功登陆了SMB服务,获取了对ROBOTER文件夹的完全控制权,由于该文件存放着Vxworks内核/系统模块/配置等,所以对其修改删除将会导致严重的生产事故。
经过了对KUKA机器的快速测试,在半天时间内,发现了两个非常严重的硬编码凭证漏洞。在官方没有披露用户密码情况下,通过逆向工程的手段,找到了潜在的硬编码用户,这说明了漏洞发掘工作不仅需要耐心,还要需要一定的技巧。本文是为数不多的对机器人安全性测试文章,希望带来技术性的启发,同时呼吁机器人生产厂家关注自身产品安全问题,提升产品质量与可靠性。