Mousejack测试指南
0x00 前言
近日,Bastille的研究团队发现了一种针对蓝牙键盘鼠标的攻击,攻击者可以利用漏洞控制电脑操作,他们将此攻击命名为MouseJack。 攻击者仅需要在亚马逊上以60美元购买设备,改造之后即可对百米范围内存在漏洞的蓝牙无线键鼠进行劫持,向受害计算机输入任意指令。相信对此感兴趣的人有很多,所以我根据其公布的信息购买了相应设备来进行测试,现将测试经验分享给大家。

0x01 简介
软件工程师马克纽林说:“利用假冒的无线电脑鼠标和键盘可以从100米的距离利用便携式外围设备入侵笔记本电脑,这些设备来自至少七家大厂商,包括罗技、微软、亚马逊”。 Bastille研究团队发现了针对13种鼠标和键盘的攻击并向各厂商报告了漏洞,其中有些厂商已经发布了补丁。
攻击原理:
由于没有身份验证机制,所以适配器无法识别出数据包是由鼠标发送的还是由攻击者发送的。
因此,攻击者可以伪装成一个鼠标发送自己的数据或者点击数据包以欺骗适配器
0x02 测试设备
相信好多小伙伴已经在着手购买设备了,但是去国外的亚马逊以60美元购买设备有点不现实,所以我提前给大家探了路,在国内就可以用不到200元的价格购入设备,避免多花冤枉钱
测试设备:
1、Crazyradio 2.4Ghz nRF24LU1+ USB radio dongle(<¥200)

2、DELL KM714 无线键盘鼠标套装(<¥400)

注:
以下链接展示了存在漏洞的设备:
https://www.bastille.net/affected-devices
3、我的测试设备

0x03 实际测试
测试环境:
本机系统: Win7
虚拟机系统: Kali 1.0
测试流程:
1、Kali下搭建软件环境
sudo apt-get install sdcc binutils python python-pip
sudo pip install -U pip
sudo pip install -U -I pyusb
sudo pip install -U platformio

2、插上U盘
下载代码https://github.com/RFStorm/mousejack,执行:
cd mousejack-master/
make
如图

执行:
make install
如图,操作失败

3、查找解决方法
在此处获得提示,需要更新Crazyradio 固件:
https://github.com/RFStorm/mousejack/issues/2
更新方法可参照:
https://wiki.bitcraze.io/projects:crazyradio:programming
4、更新Crazyradio 固件
下载代码https://github.com/bitcraze/crazyradio-firmware,执行:
cd crazyradio-firmware
python usbtools/launchBootloader.py
如图

到https://github.com/bitcraze/crazyradio-firmware/releases
下载cradio-pa-0.53.bin,放在crazyradio-firmware文件下,执行:
python usbtools/nrfbootload.py flash cradio-pa-0.53.bin
如图,成功更新Crazyradio 固件

5、再次make install
执行
cd mousejack-master/
make install
如图,发现依然失败

接着执行:
lsusb -d : -v | grep bcdDevice
此时也无法查看固件版本

6、再次查找原因
原来需要把U盘拔下来重新插进去
再次执行代码查看固件版本
lsusb -d : -v | grep bcdDevice
如图成功

再次执行
make install
成功,如图

7、再次拔掉重新插
根据上面更新固件成功的代码提示"Please unplug your dongle or breakout board and plug it back in",再次拔掉重新插入U盘


如图,此时本机的Windows系统无法识别U盘,这就导致虚拟机系统也无法加载U盘,无法进行后续的测试
8、查找解决方法
原来需要在Windows上安装Crazyradio固件的驱动
(1)参考https://wiki.bitcraze.io/doc:crazyradio:install_win7
手动下载驱动包,在设备管理器中找到未识别的设备,手动更新驱动,但是依然无法识别
(2)参考https://wiki.bitcraze.io/doc:crazyradio:install_windows_zadig
下载zadig来识别U盘进行更新驱动
但发现zadig也无法识别U盘,因此这种方法也失效

9、分析问题
此时Windows无法识别U盘,有如下两种假设:
(1)Windows系统下的Crazyradio固件驱动存在问题,所以无法识别,因此导致虚拟机系统无法加载U盘(但是已经用了2种更新驱动的方法还是无法识别,会不会是刷坏了呢)
(2)U盘被刷坏(存在这种可能,固件更新的说明里有提到,不是100%安全),有询问研究过crazyradio file的小伙伴,也倾向于U盘被刷坏

10、解决问题
为了测试能够继续进行,改变了思路决定更换测试环境,在其他系统上也许能够绕过这个难题。
(1)ubuntu
感兴趣的小伙伴可以深入测试
(2)osx
使用osx系统测试,也许能够成功识别U盘,这也就是为什么最终采用了osx系统测试
测试发现osx系统能够成功识别,如图

依然是在虚拟机里面接着测试,这次虚拟机中的系统使用的是kali2.0,顺便也就研究了如果成功刷好U盘,在其他系统上使用需要哪些环境.
经测试得出初步结论:
如果刷好U盘,只需要在新系统上下载Github代码,即可进行接下来的测试
简单的测试图如下

11、更多测试
连接上设备Dell KM714,对比给出的硬件id

右图为购买的Dell KM714显示的硬件id
(1)scanner
执行
cd mousejack-master/
./nrf24-scanner.py -c {..}
运行后,会捕获附近所有设备的数据包
这时我们对KM714鼠标和键盘操作,命令行会立即回显捕获到的数据包

可找到Dell KM714的地址为 08:D0:4F:28:02
(2)sniffer
确定了Dell KM714的地址,就可以对其进行定向捕获 执行
./nrf24-sniffer.py -a :D0:4F::

(3)network mapper(Denial of Service)
执行
./nrf24-network-mapper.py -a :D0:4F::
可拦截地址为08:D0:4F:28:02的设备发出的数据包,并对最后一位做修改,此操作可使设备失效,无法对电脑发送控制指令

如图,执行完脚本后,此时Dell KM714的鼠标键盘失去响应,无法对电脑进行控制,只有重新插拔接收器才能恢复正常。
注:
- 每次Ctrl+c结束脚本后需要重新插拔Usb才能继续测试,否则会提示超时,脚本执行失败
- 购买的Crazyradio 2.4Ghz nRF24LU1+ USB radio dongle开发板 原厂会刷入Crazyradio固件(如果没有店家一般也会帮忙刷入),发光管显示绿光代表功能正常,但对其固件进行升级后,发光管会显示红灯,看似功能故障,但其实只要命令行输出为Verification succeded!即代表升级成功,发光管会显示红灯的原因在于对固件进行升级操作后,并未对发光管进行设置,因此显示红色。 板子上的灯虽然是红色,但不影响功能。
0x04 小结
以上分享了我对mousejack的测试心得,记录的比较完整,希望对你的测试研究有所帮助。
当然,本文仅仅是对其公布的github代码进行初步测试,更多深入测试也在进行当中。如果需要实现劫持鼠标键盘,发送键盘消息,可以尝试修改github中的python代码。
如果你有更好的想法或是遇到了新的问题,欢迎和我交流:)
Mousejack测试指南的更多相关文章
- 《大话移动APP测试:Android与iOS应用测试指南》
<大话移动app测试:android与ios应用测试指南> 基本信息 作者: 陈晔 出版社:清华大学出版社 ISBN:9787302368793 上架时间:2014-7-7 出版日期:20 ...
- 推荐——Monkey《大话 app 测试——Android、iOS 应用测试指南》
<大话移动——Android与iOS应用测试指南> 京东可以预购啦!http://item.jd.com/11495028.html 当当网:http://product.dangdang ...
- OWASP固件安全性测试指南
OWASP固件安全性测试指南 固件安全评估,英文名称 firmware security testing methodology 简称 FSTM.该指导方法主要是为了安全研究人员.软件开发人员.顾问. ...
- Web安全测试指南--文件系统
上传: 编号 Web_FileSys_01 用例名称 上传功能测试 用例描述 测试上传功能是否对上传的文件类型做限制. 严重级别 高 前置条件 1. 目标web应用可访问,业务正常运行. 2. 目 ...
- Web安全测试指南--认证
认证: 5.1.1.敏感数据传输: 编号 Web_Authen_01_01 用例名称 敏感数据传输保密性测试 用例描述 测试敏感数据是否通过加密通道进行传输以防止信息泄漏. 严重级别 高 前置条件 1 ...
- 读书笔记——商广明《Nmap渗透测试指南》
一 Nmap基础学习 1.简介及安装 Nmap是一款由C语言编写的.开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具.软件名字Nmap是Ne ...
- 测试指南(适用于Feature/promotion/bug)
1.提前了解需求,在需求的业务基础和开发的架构基础上分析测试关键点,给出测试策略,甚至需要准备测试数据: 2.分析需求时不要受开发影响,要有自己的分析和判断,包括测试范围,测试时间: 3.在开始测试之 ...
- 微信小程序测试指南
[本文出自天外归云的博客园] 微信小程序本地部署测试方法 下载微信开发者工具 让小程序管理员将测试人员的微信号添加开发者权限 本地设置hosts为测试环境hosts 打开微信web开发者工具并扫码登录 ...
- metasploit渗透测试指南概要整理
一.名词解释 exploit 测试者利用它来攻击一个系统,程序,或服务,以获得开发者意料之外的结果.常见的 有内存溢出,网站程序漏洞利用,配置错误exploit. payload 我们想让被攻击系统执 ...
随机推荐
- python 练习 4
#!/usr/bin/python # -*- coding: utf-8 -*- from math import sqrt import random def daoxu(n): d=n s=0 ...
- robotframework笔记27
文档格式 可以使用简单的HTML格式 测试套件 , 测试用例 和 用户关键字 文档和 免费测试套件 元数据 在测试数据,以及当 记录测试 库 . 格式类似于大多数使用的风格 维基百科,它被设计成可以理 ...
- robotframework笔记6
测试文件结构 *** Settings *** Library OperatingSystem Library BuiltIn Resource ressources.py *** Variables ...
- Java GC系列(2):Java垃圾回收是如何工作的?
本文由 ImportNew - 伍翀 翻译自 javapapers. 目录 垃圾回收介绍 垃圾回收是如何工作的? 垃圾回收的类别 垃圾回收监视和分析 本教程是为了理解基本的Java垃圾回收以及它是如何 ...
- Scrum 项目5.0
1.团队成员完成自己认领的任务. 2.燃尽图:理解.设计并画出本次Sprint的燃尽图的理想线.参考图6. 3.每日立会更新任务板上任务完成情况.燃尽图的实际线,分析项目进度是否在正轨. 每天的 ...
- 看懂UML图
看懂UML类图和时序图 这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系: 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同时,我们应该能将类图 ...
- SDWebImage源码刨根问底
前言: SDWebImage是iOS中一款处理图片的框架, 使用它提供的方法, 一句话就能让UIImageView,自动去加载并显示网络图片,将图片缓存到内存或磁盘缓存,正好有阅读开源项目的计划,于是 ...
- 转 SQL Union和SQL Union All两者用法区别效率以及与order by 和 group by配合问题
SQL Union和SQL Union All两者用法区别效率以及与order by 和 group by配合问题 SQL Union和SQL Union All用法 SQL UNION 操作符 UN ...
- springMvc配置编码过滤器
在web.xml中配置 <!-- 编码过滤器 --> <filter> <filter-name>characterEncodingFilter</filte ...
- 9. shell环境
• printenv –打印部分或所有的环境变量 • set –设置 shell 选项 • export —导出环境变量,让随后执行的程序知道. • alias –创建命令别名 1.shell环境:s ...