攻防速写|越狱的宇树机器狗

admin 2025年4月2日22:45:52评论2 views字数 4160阅读13分52秒阅读模式
攻防速写|越狱的宇树机器狗
人类驯化灰狼的历程,是一部跨越四万年的文明契约——我们用火把与耐心褪去它们眼中的野性,让獠牙化为守护家园的忠诚。
当美国的波士顿动力和中国的宇树科技创造的各式机器狗在聚光灯下灵巧翻跃时,这种古老的共生关系似乎被赋予了赛博时代的注解:曾经需要上万年基因筛选达成的信任,如今仅凭一行代码就能让钢铁之躯俯首听命。
多年来持续通过 GEEKCON/GeekPwn 关注机器人/狗安全问题的 DARKNAVY 很好奇:当我们把缰绳从血肉换成数据线,那些蛰伏在算法深处的“漏洞野性”是否正在重演进化史?被黑客劫持的机器狗会不会突然撕开温顺表皮,瞳孔里闪烁的不再是0与1的秩序,而是越狱机械狼的幽蓝冷光?
攻防速写|越狱的宇树机器狗

GeekPwn 2022 比赛现场,选手通过利用 UWB 模块

数据包校验设计缺陷,实现对宇树机器狗 GO1 劫持控制

2022年极棒我们曾验证宇树机器狗存在可以被远程劫持的安全漏洞,联络宇树进行负责任披露(但未收到回复)。2023 年 7 月,宇树发布了新一代机器狗 GO2,其具备更先进的处理器、传感器以及 AI 能力。新版机器狗在安全性上是否有更好的表现?

在本篇攻防速写中,DARKNAVY 团队将分享对宇树机器狗 GO2 的初步安全和越狱探索。

GO2攻击面概览

GO2 机器狗在运行过程中,主要涉及与 Mobile APP 和 Cloud Service 的交互。同时,设备内部的各个模块、服务之间,也会通过数据分发服务中间件进行协作。

攻防速写|越狱的宇树机器狗

GO2系统架构图 [1]

GO2 与移动端交互的功能接口最为丰富,是重要攻击面之一。机器狗和 Mobile APP 之间有两种连接模式:
  • AP 模式:手机直接连接机器狗自带的热点。
  • Wi-Fi 模式:手机辅助机器狗配网,连接至已有的 Wi-Fi。
无论采用哪种模式,APP 和 GO2 设备都会建立一个 WebRTC 连接进行通信,该连接用于传输音视频数据、设备状态信息、以及一些控制指令。值得注意的是,任一客户端只要与 GO2 位于同一网络下,就可以在不需要用户特定凭证的情况下,与设备直接建立起 WebRTC 连接。只有在通过云端中继服务器进行远程连接时,才需要提供用户名和密码。
除此之外,其他一些攻击面同样值得关注:GO2 的 OTA 模块基于 Paho MQTT 实现,主要用于从云端的 MQTT 服务器获取系统更新推送,该过程可能存在认证问题以及后门风险;GO2 在与 APP 进行前期通信和配网操作时使用蓝牙协议,这与许多 IoT 设备类似,可能存在蓝牙认证与解析问题。
对 GO2 的端口进行扫描后,我们发现在默认状态下仅有 9991 端口开放,其用于在 WebRTC 连接建立初期接收客户端的信令消息。
攻防速写|越狱的宇树机器狗
GO2 Pro 端口扫描
为了理解用户与机器狗的交互逻辑,我们基于网上公开的 1.0.24 版本历史固件,对 GO2 使用的 WebRTC 协议和 DDS 协议做了进一步分析。
01
WebRTC协议
WebRTC 是 Web 实时通信(Real-Time Communication)的缩写,协议规定了两个 WebRTC Agent 如何协商并进行双向安全实时通信。WebRTC 本身主要强调的是端到端(Peer-to-Peer,P2P)通信,中心服务器并不是必须的,但在实际使用过程中也常会使用信令服务器(Signaling Server)、中继服务器(TURN Server)等。除了进行音频视频等媒体传输,WebRTC 也支持建立 DataChannel 进行数据传输。
GO2 的 WebRTC 客户端实现位于固件中 webrtc_bridge 模块的 /unitree/module/webrtc_bridge/bin/unitreeWebRTCClientMaster文件内。该服务像一个"中转站",其注册了一系列 DDS Topics,在接收到APP发送的消息后,可通过 DDS DataWriter 将用户请求进一步转发给其他模块进行处理,在使用 DDS DataReader 获取到其他模块处理结果后,再通过 WebRTC 信道将各类数据传回APP。
我们在PC上使用开源的 go2_webrtc_connect 工具[2],可以在局域网下成功与 GO2 机器狗建立连接(此时 APP 会连接失败)。在此基础上,研究人员可以模拟 APP 与 GO2 设备的交互行为,从而对相关功能接口进行测试。
攻防速写|越狱的宇树机器狗
局域网下与 GO2 机器狗成功建立 WebRTC 连接
02
DDS协议

DDS 是数据分发服务(Data Distribution Service)的缩写,这是一种以数据为中心的发布-订阅通信协议,采用分布式的架构,通常没有中心服务器。机器人操作系统 ROS 2.0 引入了 DDS 中间件,用于替换原本 ROS 1.0 自研的发布-订阅机制。

在 DDS 协议中,Publisher 负责发布数据,其通过创建不同的 DataWriter 来向不同 Topics 发布特定类型的数据;Subscriber 负责订阅并接收数据,其通过创建不同的 DataReader 来订阅不同的数据类型。其中,Topic 由唯一的名称、数据类型、服务质量(QoS)策略集合来标识。

攻防速写|越狱的宇树机器狗

DDS 发布-订阅机制示意图

GO2 采用 CycloneDDS 协议,这是 ROS 2.0 的默认 DDS 实现之一。GO2 的各个服务之间通过 DDS 进行数据交互,其状态可以通过Mobile APP的相关界面查看(如下图)。此外,宇树官方提供的 SDK 工具[3]也允许用户直接与这些服务创建的 DDS Topics 进行交互,从而支持更深入的研究测试和二次开发。

攻防速写|越狱的宇树机器狗
Unitree GO APP 服务状态列表
历史越狱分析

事实上,已有开发研究者社区致力于 GO2 机器狗的越狱等研究[4]。用户在机器狗越狱后可以获取 root 权限 shell,使得基础版本的机器狗能够解锁更高级别 EDU 版本的一些特性,从而拥有更大的二次开发自由度。

攻防速写|越狱的宇树机器狗

GO2 Pro 机器狗

DARKNAVY 对已失效的第三方越狱工具 PawRoot 进行了技术分析,完整还原了其攻击链实现逻辑:
  1. 建立连接
    通过用户指定的 GO2 设备 IP 地址建立 WebRTC 连接,为后续指令传输创建通信通道。
  2. 检测版本
    向 GO2 的 WebRTC 客户端发送消息(type="req"topic="rt/api/bashrunner/request"),触发 bash_runner 模块,执行内置的 get_whole_packet_version.sh 脚本,以验证设备固件版本是否在越狱工具支持范围内。
  3. 替换脚本
    发送 type="rtc_inner_req" 的控制消息,并在 data 字段中指定 req_type="push_static_file",实现文件上传并覆盖设备内置脚本 test_success.sh
  4. 获取SSH权限
    再次触发 bash_runner 模块,执行被替换的 test_success.sh 脚本:对 root 用户密码进行重置,并修改 /etc/ssh/sshd_config 配置文件允许 root 登录。
  5. 还原文件
    完成上述越狱操作后,自动还原所篡改的脚本文件。
攻防速写|越狱的宇树机器狗
PawRoot 涉及组件
其中,第 2、4 步利用的是 GO2 中 bash_runner 模块本身的特性,该模块可以执行特定目录下预设的一些功能脚本并返回结果。越狱的关键在于第 3 步,漏洞为可通过 WebRTC 向 GO2 文件系统上传文件,覆盖设备内的 bash_runner 脚本。完成越狱并重启设备后,即可通过 SSH 以 root 身份登录 GO2 系统。
攻防速写|越狱的宇树机器狗
越狱后 SSH 登录效果图
在 1.1.2 及更新的版本中,第 3 步所用的 push_static_file 操作接口已被官方移除,该越狱方案也就不再有效。但我们仍能从这一案例的分析中看到 WebRTC 及其相关模块安全设计与实现的重要性。
安全启动

GO2 机器狗采用 RK3588S 芯片,其原本的 U-Boot 程序会限制固件读取的地址范围(小于32MB),超过该范围的内容在读取时都会被替换为0xCC。
但对于较早发行的 GO2 机器狗(购买时的固件版本在 1.1.1 及之前),用户仍有办法通过改写 U-Boot 绕过上述限制,并使用 USB-Type-C 接口对设备固件进行提取和刷写操作。
具体来说,首先使用 USB 数据线将 GO2 机器狗与电脑连接,并在开机的同时长按左侧三个按钮中最右边的按钮,使其进入 Loader Mode,此时机器狗开机后不会站起。
攻防速写|越狱的宇树机器狗

GO2 Pro 主板

然后,在使用 rkdeveloptool[5]工具备份原本的 U-Boot 镜像后,将经过补丁修改的 U-Boot 镜像刷入设备,从而允许读取任意长度的固件内容。重启设备并再次进入 Loader Mode 后,即可读出所有固件分区。
攻防速写|越狱的宇树机器狗rkdeveloptool 显示固件分区信息
然而,对于较新发售的 GO2 机器狗,宇树官方为设备开启了安全启动(SecureBoot)特性。安全启动用于对系统中重要镜像文件进行完整性校验,从而防止相关镜像被篡改或替换。因此,上述基于 U-Boot 镜像打补丁的固件读取方法不再有效。从这一变化过程中也可看到厂商对设备安全的逐步重视。
结语

随着人工智能技术的飞速发展,智能机器人深度融入大众生活的未来已不再遥远。相比于传统的物联网嵌入式设备,这类智能机器人拥有更大的行为自由度,并且能够与周围的环境和人群进行更加复杂、多样的交互。历史经验表明,任何一个科技生态兴起的过程中,都必然伴随着新兴安全风险的涌现。
作为最早关注与实现 iOS、 Android 和鸿蒙越狱的团队和社区,DARKNAVY & GEEKCON 的初步探索发现,智能机器人和低空无人机领域类似,各类产品普遍的网络安全防御水平仍处在非常初期的阶段,我们愿持续站在模拟的攻击者视角,协助智能领域尽可能多、尽可能早的发现和消灭潜在失控的风险。
参  考:

[1] https://support.unitree.com/home/en/developer/Architecture Description

[2] https://github.com/legion1581/go2_webrtc_connect

[3] https://github.com/unitreerobotics/unitree_ros2

[4] https://wiki.theroboverse.com/

[5] https://github.com/rockchip-linux/rkdeveloptool

攻防速写|越狱的宇树机器狗

原文始发于微信公众号(DARKNAVY):攻防速写|越狱的宇树机器狗

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月2日22:45:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   攻防速写|越狱的宇树机器狗https://cn-sec.com/archives/3893948.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息