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 1915:7777 -v | grep bcdDevice

此时也无法查看固件版本

6、再次查找原因

原来需要把U盘拔下来重新插进去

再次执行代码查看固件版本

lsusb -d 1915:7777 -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 {1..5}

运行后,会捕获附近所有设备的数据包

这时我们对KM714鼠标和键盘操作,命令行会立即回显捕获到的数据包

可找到Dell KM714的地址为 08:D0:4F:28:02

(2)sniffer

确定了Dell KM714的地址,就可以对其进行定向捕获 执行

./nrf24-sniffer.py -a 08:D0:4F:28:02

(3)network mapper(Denial of Service)

执行

./nrf24-network-mapper.py -a 08:D0:4F:28:02

可拦截地址为08:D0:4F:28:02的设备发出的数据包,并对最后一位做修改,此操作可使设备失效,无法对电脑发送控制指令

如图,执行完脚本后,此时Dell KM714的鼠标键盘失去响应,无法对电脑进行控制,只有重新插拔接收器才能恢复正常。

注:

  1. 每次Ctrl+c结束脚本后需要重新插拔Usb才能继续测试,否则会提示超时,脚本执行失败
  2. 购买的Crazyradio 2.4Ghz nRF24LU1+ USB radio dongle开发板 原厂会刷入Crazyradio固件(如果没有店家一般也会帮忙刷入),发光管显示绿光代表功能正常,但对其固件进行升级后,发光管会显示红灯,看似功能故障,但其实只要命令行输出为Verification succeded!即代表升级成功,发光管会显示红灯的原因在于对固件进行升级操作后,并未对发光管进行设置,因此显示红色。 板子上的灯虽然是红色,但不影响功能。

0x04 小结

以上分享了我对mousejack的测试心得,记录的比较完整,希望对你的测试研究有所帮助。

当然,本文仅仅是对其公布的github代码进行初步测试,更多深入测试也在进行当中。如果需要实现劫持鼠标键盘,发送键盘消息,可以尝试修改github中的python代码。

如果你有更好的想法或是遇到了新的问题,欢迎和我交流:)

 

本文转自 K1two2 博客园博客,原文链接:http://www.cnblogs.com/k1two2/p/5253920.html   ,如需转载请自行联系原作者
相关文章
|
8天前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
8天前
|
存储 测试技术 数据库
接口测试工具攻略:轻松掌握测试技巧
在互联网快速发展的今天,软件系统的复杂性不断增加,接口测试工具成为确保系统稳定性的关键。它如同“翻译官”,模拟请求、解析响应、验证结果、测试性能并支持自动化测试,确保不同系统间信息传递的准确性和完整性。通过Apifox等工具,设计和执行测试用例更加便捷高效。接口测试是保障系统稳定运行的第一道防线。
|
8天前
|
Web App开发 JSON 测试技术
API测试工具集合:让接口测试更简单高效
在当今软件开发领域,接口测试工具如Postman、Apifox、Swagger等成为确保API正确性、性能和可靠性的关键。Postman全球闻名但高级功能需付费,Apifox则集成了API文档、调试、Mock与自动化测试,简化工作流并提高团队协作效率,特别适合国内用户。Swagger自动生成文档,YApi开源但功能逐渐落后,Insomnia界面简洁却缺乏团队协作支持,Paw仅限Mac系统。综合来看,Apifox是国内用户的理想选择,提供中文界面和免费高效的功能。
|
1月前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
108 11
|
2月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
83 3
|
3月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
98 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
4月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
297 7
Jmeter实现WebSocket协议的接口测试方法
|
4月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
311 3
快速上手|HTTP 接口功能自动化测试
|
4月前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
67 5
|
3月前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
57 0

热门文章

最新文章