格物实验室:KUKA 机器人安全分析实战

KUKA是世界领先的机器人制造商之一,该公司生产的KUKA机器人在国内外的工业控制领域有着广泛的应用。本篇文章从实战出发,介绍如何对机器人这类设备进行快速的安全测试和漏洞挖掘。

一、测试目标

本次测试目标为KUKA KR C4机器人,他主要由3个部分组成:手操器,控制器,机械臂。下面简单介绍这三个部分:

  1. 手操器:实际上就是工业系统的HMI,KUKA称之为SmartPAD,通过接受操作人员的操作指令,对控制器下达相关指令。同时也可以读取机器人的状态等相关信息并呈现出来。下图就是KUKA KR C4配套的手操器,该手操器通过一个“特殊”的数据线连接控制器,这个数据线具体是什么从外观上没法看出来。
  1. 控制柜:机器人的大脑,它不仅能够运行已经组态好的程序,同时也能执行手操器下达的指令,从而控制比如说机器臂等外部设备。由于它是机器人的核心,所以是安全测试的主要目标。从官方资料显示,里面运行的windows 7系统,实际就是一个简化版的PC机。下图就是不同型号控制柜的样子:
  1. 机械臂:机器人的外围机械系统,接受控制器指令改变姿态执行动作,由于机器臂不是测试的重点目标,本身也具有一定的危险性,所以在测试之前应该先将其与控制器的连接断开,防止测试时候出现安全事故。下图就是一个机械臂的示意图:

总体的架构示意图如下所示:

二、结构梳理

控制柜相当于一个PC机,插上鼠标,键盘和显示器就可以直接对其进行操作,为了方便分析,将主要程序(文件夹C:/KRC)从控制柜通过U盘拷贝出来。下面就是该文件夹的内容。

  1. SmartHMI就是手操器显示的界面程序,直接和操作员打交道,从文件名(如下图所示)可以看出,该程序主要是由C#编写的,分析时应该使用dnspy进行反编译分析。
  1. VxWin是一个让非实时的windows系统运行高实时性系统Vxworks的解决方案,由于机器人控制需要实时性,windows显然满足不了要求,所以通过VxWin可以让windows系统运行Vxworks虚拟机,执行机器人控制任务。下图摘自百度百科:
  1. ROBOTER文件夹存放着Vxworks内核/驱动模块/配置信息,是控制器核心中的核心,通过Vxworks系统来直接控制外围的机械系统。这部分可以使用IDA进行相关的逆向分析,指令集和宿主机的一致(X86架构)。
  1. smartPAD文件夹存放着手操器一部分的固件文件(如下图),初略地浏览下,发现是WinCE的固件(这里是ARM架构的),说明手操器运行的是wince系统(微软发布的嵌入式系统)。

在kcpui_app.exe发现了手操器是通过rdp与控制柜进行通信的,也就是说手操器应该是连接控制柜的内部网口:

可以看到有个用户kukauser,密码是“68kuka1secpw59”,该用户和密码已经在网上被披露,严格来说,这是存在安全风险的。(该用户和密码不能随便改变,这会导致机器人无法正常工作)。

三、漏洞挖掘

对于windows系统的安全测试,无非是信息搜集,对暴露的端口进行探测,再对相应的服务进行突破,从下面结果来看,远程桌面(3389)并没有暴露出来。

其中49001~49010是提供WorkVisual(KUKA机器人的组态软件)进行连接使用的,下图就是相关服务定义,数据交互使用的是.NET的WCF(TCP)框架,这里可能存在一些未授权引发的安全问题,但是需要大量的逆向工作,所以跳过这部分(可以留作后面研究),选择最熟悉的服务telnet(23)和SMB(445)。

3.1 telnet服务

直接通过telnet连接,可以看到Vxworks login信息,说明这是windows里的Vxworks虚拟机暴露出的端口。

先上弱口令爆破工具,直接跑了很久也没跑出来,后来直接放弃,从Vxworks固件入手,使用IDA对Vxworks符号表进行恢复后,很清楚地找到了一个隐藏的硬编码用户:

通过发现的账号密码,可以直接登陆Vxworks,获得一个Vxworks Shell,由于Vxworks是核心系统,该漏洞危害不言自明。

3.2 SMB服务

说到SMB服务,首先考虑使用MSF检测是否存在永恒之蓝漏洞,但是遗憾的是MSF提示目标可能已经打上了补丁。

直接进入系统查看,发现SMB共享了文件夹(C:/KRC/ROBOTER),但是只能被target用户访问,也就是前面说的kukauser没法使用。起初以为该target用户使用了和kakauser一样的密码,发现并不对,接着尝试从该系统中导出target用户的NTLM hash,通过cmd5查找原始密码,仍然没有成功,猜测该用户应该使用了和kukauser一样的高强度密码。

柳暗花明又一村,搜索关键字“target”,在某个exe找到了直接target用户的账号和密码,如下:

通过该用户密码,成功登陆了SMB服务,获取了对ROBOTER文件夹的完全控制权,由于该文件存放着Vxworks内核/系统模块/配置等,所以对其修改删除将会导致严重的生产事故。

四、总结

经过了对KUKA机器的快速测试,在半天时间内,发现了两个非常严重的硬编码凭证漏洞。在官方没有披露用户密码情况下,通过逆向工程的手段,找到了潜在的硬编码用户,这说明了漏洞发掘工作不仅需要耐心,还要需要一定的技巧。本文是为数不多的对机器人安全性测试文章,希望带来技术性的启发,同时呼吁机器人生产厂家关注自身产品安全问题,提升产品质量与可靠性。

Spread the word. Share this post!

Meet The Author

工业物联网安全实验室

Leave Comment