大疆Spark无人机劫持分析
字数 2241 2025-08-22 12:22:24
DJI Spark无人机劫持分析教学文档
1. 无人机概述
DJI Spark是2017年发布的一款消费级无人机,核心配置如下:
- 处理器:Leadcore LC1860C ARMv7
- 操作系统:Android 4.4
- 固件更新:使用.sig扩展名的文件,采用RSA-SHA256签名,部分文件使用AES加密
- 价格:499美元(相对Phantom 4和Mavic更便宜)
2. 外部接口分析
DJI Spark提供以下外部接口:
- USB接口(连接PC)
- Flash连接器(用于内存扩展)
- 2.4 GHz Wi-Fi(通过DJI GO 4智能手机应用控制)
- 2.412-2.462 GHz无线连接(远程控制和管理)
3. DJI Assistant 2应用分析
DJI Assistant 2是桌面端操作无人机的应用程序,主要功能:
- 通过USB连接设备
- 更新固件
- 修改Wi-Fi网络设置
- 提供两个接口:
- 图像UI
- web-socket接口(研究重点)
4. Web-socket服务器分析
4.1 服务器特性
- 运行在ws://victim:19870/general
- 需要授权但使用硬编码密钥
- 从1.1.6版本开始通信加密(早期版本为明文)
4.2 加密机制逆向
-
加密特征:
- 每次应用重新运行时加密文本相同
- 无人机重启不影响加密
- 跨平台一致(Mac和Windows相同)
-
加密算法:
- 使用AES-CBC模式
- 两个32字节的硬编码密钥:
- 一个用于向服务器发出请求
- 一个用于服务器响应
-
密钥位置:
- 存储在DJIWebSocketServer.dll库中
- 通过反编译和Github开源代码比对确认
5. Web-socket接口功能
通过/general接口可获取以下服务URL列表(所有URL包含相同hash值1d9776fab950ec3f441909deafe56b1226ca5889):
| 服务路径 | 功能描述 |
|---|---|
| /adsb/log/... | 从ADS-B模块导出数据 |
| /controller/appreciation/... | 许可证信息 |
| /controller/config/user/... | 广泛设置(包括最大飞行高度) |
| /controller/flight_record/... | 飞行信息 |
| /controller/module_activate/... | 硬件模块操作(如智能飞行电池) |
| /controller/nfz_upgrade/... | 禁飞区更新 |
| /controller/p4_ext/... | Phantom 4无人机服务 |
| /controller/simulator/... | 管理内置模拟器 |
| /controller/upgrade/... | 固件更新 |
| /controller/user_feedback/... | 用户反馈给DJI公司 |
| /controller/vision_calibration/... | 相机校准 |
| /controller/vison_simulator/... | 模拟器管理 |
| /controller/wifi/... | 管理Wi-Fi热点 |
| /controller/zenmuse_debug_data/... | 处理Zenmuse相机调试信息 |
6. 攻击方法详解
6.1 攻击前提
- 感染受害者系统
- 或远程监控USB连接/DJI Assistant 2应用连接时刻
- 通过检测19870端口开启确定攻击时机
6.2 Wi-Fi劫持步骤
- 连接到web-socket服务器:ws://victim:19870/general
- 从服务器响应中获取文件hash值
- 发送以下命令修改Wi-Fi密码:
{"SEQ":"12345","CMD":"SetPasswordEx","VALUE":"12345678"} - 重启Wi-Fi模块使更改生效
- 使用智能手机连接无人机(原用户断开连接后)
6.3 攻击特点
- 支持所有操作系统
- 绕过默认防火墙设置
- 可在有线和公共无线网络上执行
- 影响所有使用DJI Assistant 2应用适配的Wi-Fi管理无人机
7. 安全漏洞总结
-
网络监听范围过大:
- Web-socket服务器监听所有网络接口
-
弱加密机制:
- 使用硬编码密钥进行通信加密
-
缺乏授权机制:
- Web-socket接口没有实施有效的授权验证
-
敏感信息保护不足:
- 关键操作和机密信息没有额外的保护层
8. 防御建议
-
网络隔离:
- 限制web-socket服务器只监听必要的网络接口
-
加密改进:
- 采用会话密钥替代硬编码密钥
- 实现更强大的密钥交换机制
-
授权增强:
- 添加基于设备的认证机制
- 实施操作权限分级
-
敏感操作保护:
- 对关键操作添加二次确认
- 实现操作日志和异常检测
9. 研究工具与资源
-
分析工具:
- wsdump.py(Web-socket通信工具)
- 修改版dji_wsdump.py(含解密功能)
-
开源资料:
-
POC代码:
10. 扩展思考
-
潜在攻击场景:
- 固件篡改
- 飞行限制解除
- 敏感数据窃取
- 无人机物理劫持
-
物联网设备安全启示:
- 默认配置安全性
- 硬件接口暴露风险
- 远程管理协议安全性
- 固件更新机制安全性