Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
UniPwn — 针对 Unitree 机器人的 BLE 漏洞利用框架:通过硬编码 AES 密钥实施命令注入,可实现远程接管、载荷注入及蠕虫式传播。 | Kitploit
工具/GitHubGitHub/bin4ry/unipwn
蓝牙安全漏洞利用框架漏洞分析漏洞利用逆向工程硬件与物联网安全Payload 开发
GitHubbin4ry/unipwn

UniPwn

针对 Unitree 机器人的 BLE 漏洞利用框架:通过硬编码 AES 密钥实施命令注入,可实现远程接管、载荷注入及蠕虫式传播。

查看仓库
398721511个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Unitree 机器人 BLE 服务命令注入分析

Meme

作者: Bin4ry 又名 Andreas Makris [[email protected]]
合著者: h0stile 又名 Kevin Finisterre
贡献者: legion1581 又名 Konstantin Severov,来自 theroboverse,帮助修复了注入的 payload,并通过一个完整可用的 PoC 证明了这一点 🙂 谢谢老兄,这是一项至关重要的贡献,非常感谢!

日期: 2025 年 9 月 20 日

CVE 列表

CVE-2025-35027
CVE-2025-60017
CVE-2025-60250
CVE-2025-60251

论文

本仓库的研究成果已整合到一篇论文中,该论文对 Unitree G1 进行了系统性的安全评估。然而,研究影响并不仅限于 G1,而是涵盖从 Go2 系列开始的整个 Unitree 产品线。较新的 Unitree 机器人上的代码似乎是 Go2 代码库的一个分支,正是这一点使得 Go1 系列及其他 Go2 之前的 Unitree 机器人不易受影响。不过,目前所有现代版本均受到影响。Unitree 尚未发布安全公告来澄清整个产品线的确切影响范围。

论文链接: https://arxiv.org/abs/2509.14139
标题: Cybersecurity AI: Humanoid Robots as Attack Vectors
作者: Víctor Mayoral-Vilches, Andreas Makris, Kevin Finisterre```bibtex @misc{mayoralvilches2025cybersecurityaihumanoidrobots, title={Cybersecurity AI: Humanoid Robots as Attack Vectors}, author={Víctor Mayoral-Vilches and Andreas Makris and Kevin Finisterre}, year={2025}, eprint={2509.14139}, archivePrefix={arXiv}, primaryClass={cs.CR}, url={https://arxiv.org/abs/2509.14139}, }

目录
=================

* [宇树机器人 BLE 服务命令注入分析](#unitree-robot-ble-service-command-injection-analysis)
   * [概述](#overview)
   * [BLE 服务发现](#ble-service-discovery)
   * [协议逆向工程](#reverse-engineering-the-protocol)
   * [指令 1:“安全”握手](#instruction-1-the-secure-handshake)
   * [指令 2:获取序列号](#instruction-2-get-serial-number)
   * [指令 3:初始化 WiFi 模式](#instruction-3-initialize-wifi-mode)
   * [指令 4:设置 SSID](#instruction-4-set-ssid)
   * [指令 5:设置密码](#instruction-5-set-password)
   * [指令 6:设置国家/地区代码(触发点!)](#instruction-6-set-country-code-the-trigger)
   * [WiFi 设置线程](#the-wifi-setting-thread)
   * [存在漏洞的函数:命令注入](#the-vulnerable-function-command-injection)
   * [攻击流程总结](#attack-flow-summary)
   * [蠕虫式威胁](#the-wormable-threat)
   * [概念验证](#proof-of-concept)
   * [实际部署与影响](#real-world-deployment--impact)
      * [当前部署](#current-deployments)
      * [影响评估](#impact-assessment)
      * [执法与军事影响](#law-enforcement--military-impact)
      * [企业环境](#corporate-environments)
      * [消费者影响](#consumer-impact)
      * [蠕虫式传播](#wormable-propagation)
   * [技术细节](#technical-details)
      * [BLE 服务架构](#ble-service-architecture)
      * [加密参数](#cryptographic-parameters)
      * [数据包结构](#packet-structure)
   * [经验教训](#lessons-learned)
   * [披露时间线](#disclosure-timeline)
      * [首次也是最后一次尝试报告贵方旗舰产品 G1、Go2 及其他机器人中的另一个安全问题](#first-and-last-attempt-to-report-another-security-issue-in-your-flagship-g1-and-go2-and-other-bots)
   * [免责声明](#disclaimer)
   * [安全问题的规律](#a-pattern-of-security-issues)
   * [结论](#conclusion)
   * [法律声明](#legal-notice)
   * [贡献](#contributing)
   * [许可以及这些文件的访问权限](#licensing-and-access-to-these-files)


---

## 概述

在对宇树机器人平台进行安全研究期间,我们在低功耗蓝牙(BLE)Wi-Fi 配置接口中发现了一个严重漏洞。该漏洞影响多款宇树机器人型号,包括 Go2、G1、H1 和 B2 系列机器人,涵盖截至今日 [2025 年 9 月 20 日] 的最新固件。

**🎯 这是首个公开披露的针对人形机器人的漏洞利用!**

该漏洞结合了多个安全问题:硬编码加密密钥、极易实现的认证绕过,以及未经过滤的命令注入。尤其令人担忧的是,它具有完全的**蠕虫式传播**能力——被感染的机器人可以自动攻击 BLE 范围内的其他机器人。该漏洞允许攻击者完全接管设备。

我们于 7 月公布了加密密钥[推文链接](https://x.com/Bin4ryDigit/status/1950566849072005304),但宇树并未在意。

让我们深入了解我们如何发现并利用这一漏洞的技术细节。

## BLE 服务发现

第一步是识别机器人暴露的 BLE 服务。所有受影响的宇树型号都暴露了一个用于 Wi-Fi 配置的自定义 BLE 服务:```
Service UUID: 0000ffe0-0000-1000-8000-00805f9b34fb
Write Characteristic: 0000ffe2-0000-1000-8000-00805f9b34fb  
Notify Characteristic: 0000ffe1-0000-1000-8000-00805f9b34fb

逆向工程协议

通过逆向工程,我们发现该机器人实现了一个接收管理器,用于处理加密的 BLE 数据包。以下是我们发现的内容:

数据包解密

接收管理器首先使用硬编码的 AES 参数解密传入的数据包:```python AES_KEY = "df98b715d5c6ed2b25817b6f2554124a" AES_IV = "2841ae97419c2973296a0d4bdfe19a4f" Mode: AES-CFB128

![Receive manager](https://assets.kitploit.com/production/public/readmes/49064/6f3e6d08a4d69e657e9d8d17f957dbaedf979c3629a109846390030c9fa783d2.png)

解密后,数据包根据指令代码在 switch-case 结构中处理。让我们逐一检查每条指令:

## 指令 1:“安全”握手

![Handshake instruction](https://assets.kitploit.com/production/public/readmes/49064/0edbe2419cb07586658a3811f515ab09e09dc9c5f204d557bfe6e1ee3f5243d5.png)

这个握手“认证”简直可笑:

![Handshake implementation](https://assets.kitploit.com/production/public/readmes/49064/7a0d0de452924790859fcf34ab81b103d531d8c9ffc970674ae6b5317448ce3e.png)

![Authentication flag](https://assets.kitploit.com/production/public/readmes/49064/88bb3cc9c24ac7b81d9c610b48755e677d4c026abd6b80f6ea2f585e576a94a2.png)

基本上,机器人只检查解密后的数据包是否包含字符串 `"unitree"` 作为握手密钥,然后将 `valid_incoming_user` 标志设为 1。这就是整个“认证”机制!

## 指令 2:获取序列号

![Get serial number](https://assets.kitploit.com/production/public/readmes/49064/0eb1d8510ee261c31014befe56f453dbbbeefdef7c154021cf2a15697146a6bc.png)

该指令会检查用户是否已“认证”(即该标志是否已设置),然后读取序列号文件并返回。这进一步确认了我们可以访问系统。

## 指令 3:初始化 WiFi 模式

该指令用于初始化 WiFi 设置。用户可以在 AP 模式(子命令 = 1)或 STA 模式(子命令 = 2)之间选择:

![WiFi mode initialization](https://assets.kitploit.com/production/public/readmes/49064/774940d74f07bf14ad7168261b143ee4bd619388a7bed90e1ec4b2081bb876a2.png)

## 指令 4:设置 SSID

该指令用于存储 WiFi SSID。这是我们的第一个注入点:

![Set SSID](https://assets.kitploit.com/production/public/readmes/49064/ed93fccd5c5f255d940911ca1f4e37fb93ca15a41fbfbdc1bcda8135feb091a9.png)

## 指令 5:设置密码

与 SSID 指令类似,该指令用于存储 WiFi 密码。这是另一个注入点:

![Set password](https://assets.kitploit.com/production/public/readmes/49064/18363e90f73974cd259ca2feb44c4241f7f1c7cbd375c5a8c6d14d89578d2a50.png)

## 指令 6:设置国家代码(触发点!)

该指令用于设置 WiFi 国家代码,并且关键的是,它会触发 `WifiSettingThreadFunction`:

![Set country code](https://assets.kitploit.com/production/public/readmes/49064/01b5ea5104d45aa2ed8f3aec8f76c58ee45d55d09bd93b0a025c4fec169db46e.png)

当指令 6 被执行时,它会启动 WiFi 配置线程,从而将我们引向存在漏洞的函数。

## WiFi 配置线程

WiFi 配置线程根据模式调用 `restart_wifi_ap` 或 `restart_wifi_sta`:

![WiFi setting thread](https://assets.kitploit.com/production/public/readmes/49064/d2955ec5a5489cd5550768a02be5b4c7110e3317ea72af67a8e479d810c3d7b5.png)

## 漏洞函数:命令注入

`restart_wifi_ap`(`hostapd_restart.sh`)和 `restart_wifi_sta`(`wpa_supplicant_restart.sh`)这两个函数都遵循相同的易受攻击模式。  
以下是确凿证据(以 `restart_wifi_ap` 函数为例):

![Vulnerable function](https://assets.kitploit.com/production/public/readmes/49064/67dbffbba6799ed151b97d74c725e8abf33c527a44614446a8637b01a2acb3d2.png)

该函数构造了如下命令:```bash
sudo sh /unitree/module/network_manager/upper_bluetooth/hostapd_restart.sh "wifi_ssid wifi_pass"

该命令会直接传递给 system(),而不进行任何输入验证或清理!

如果我们控制了 wifi_ssid 或 wifi_pass,就可以注入我们自己的命令。一个简单的载荷如下:```bash ";$(reboot -f);#

只需重启机器人就够了。但我们还能做更多……

## 攻击流程摘要

以下是我们需要执行的完整攻击序列:

1. 将 AES 加密的有效载荷 `"unitree"` 作为指令 1 的数据发送
2. 发送 `get_sn` 命令并解密响应以验证访问权限
3. 发送 `init_wifi`,子命令为 1(AP)或 2(STA)
4. 将 `wifi_ssid` 设置为我们的注入载荷,例如 `";$(reboot -f);#`
5. 将 `wifi_pass` 设置为任意值
6. 设置 WiFi 国家代码以触发易受攻击的线程

如果一切正常,机器人应以 root 权限执行我们注入的命令。

## 蠕虫式传播的威胁

这个漏洞之所以特别危险,在于其**可蠕虫传播**的特性。借助这种方法,我们可以:

- 以 root 权限运行任意命令
- 通过载荷注入传输并执行恶意软件
- 强制机器人连接到攻击者控制的 WiFi 网络
- 创建可在附近机器人之间传播的自我扩散型机器人恶意软件

被感染的机器人只需扫描 BLE 范围内的其他 Unitree 机器人并自动入侵它们,就能创建一个无需用户干预即可自行传播的机器人僵尸网络。

## 概念验证

我们开发了一套完整的概念验证漏洞利用框架,证实了该漏洞的存在。该利用框架包括:

- 基于 Python 的 BLE 扫描器与漏洞利用框架
- Android APK(此前于 2025 年 9 月 5 日在 Slack 频道中通过受 PWD 保护的 zip 分享给测试人员)
- 多种预置载荷(启用 SSH、系统重启、自定义命令)
- 支持所有受影响机型(Go2、G1、H1、B2……)

我们可用漏洞利用的关键组件:```python
AES_KEY = bytes.fromhex("df98b715d5c6ed2b25817b6f2554124a")
AES_IV = bytes.fromhex("2841ae97419c2973296a0d4bdfe19a4f")
HANDSHAKE_CONTENT = "unitree"

def build_pwn(cmd):
    return f'";$({cmd});#'

Android App

请注意,发送命令后,机器人完全重启可能需要 10-15 秒 ;)

实际部署与影响

下载工具