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代码。

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

时间: 2024-09-26 05:27:57

Mousejack测试指南的相关文章

NSA DanderSpiritz测试指南——木马生成与测试

本文讲的是NSA DanderSpiritz测试指南--木马生成与测试, 0x00 前言 DanderSpritz是NSA的一款界面化的远控工具,基于FuzzBunch框架,执行Start.jar即可启动. 在实际测试过程中,由于缺少说明文档,遇到的问题有很多,同时一些细节也值得深入研究.所以本文将要帮助大家答疑解惑,分享测试心得,结合木马特点分析防御思路. 0x01 简介 本文将要介绍以下内容: 执行pc_prep无法获得回显的原因及解决方法 Pc同Pc2.2的区别 level3和level4

渗透测试指南之域用户组的范围

本文讲的是渗透测试指南之域用户组的范围,一直以来,我对Active Directory组的范围总是有点搞不清楚.对于任何从事过AD系统管理员背景的人来说,这个话题可能并不是很难,但是直到我阅读了SS64的这篇文章后,关于AD组范围的所有东西我都搞明白了.我想记录一些关于这个话题的相关说明(我所知道的),以防其他任何人都有同样的困惑.我还将介绍这些组范围如何与林全局目录和域信任进行交互,并在此过程中加入新的PowerView功能. Active Directory组 Active Director

《Nmap渗透测试指南》目录—导读

内容提要 Nmap渗透测试指南 本书专门介绍Nmap渗透测试的有关内容,全书共分12章,从最基础的Nmap下载.安装开始介绍,由浅入深地对Nmap的功能作了完整详细的说明.同时书中还包括了大量的实践案例,更有利于读者对Nmap使用的理解.本书主要内容包括:Nmap基础.Nmap工作原理.扫描指定段.Nmap主机发现.TCP ACK Ping扫描.ARP Ping扫描.路由跟踪.探索网络.从Nmap识别端口状态.隐蔽扫描.指纹识别与探测.重量级扫描.调整探测报文的并行度.防火墙/IDS逃逸.源端口

《Nmap渗透测试指南》—第1章1.1节Nmap介绍

第1章 Nmap基础学习 Nmap渗透测试指南 本章知识点 Nmap介绍 Windows下安装Nmap Linux/Unix源码编译安装Nmap Linux通过RPM软件包安装Nmap Mac OS安装Nmap Nmap语法 Nmap全面扫描 Nmap扫描指定段 本章节将介绍在几大主流平台中如何安装Nmap,并介绍多种安装方式,通过对每一步的演示进行解说,让初学者可以很快地掌握安装Nmap技巧,以及如何简单地使用Nmap扫描一个目标地址.一个IP段,从而迈入Nmap渗透测试的大门. 本章选项 1

《Nmap渗透测试指南》—第9章9.节审计HTTP身份验证

第9章 渗透测试 Nmap渗透测试指南 本章知识点 审计HTTP身份验证 审计FTP服务器 审计Wordpress程序 审计Joomla程序 审计邮件服务器 审计SMB口令 审计VNC服务器 审计SMTP服务器 检测Stuxnet蠕虫 SnMP安全审计 本章节将介绍Nmap脚本对主流CMS程序.网络服务.网络病毒的检测,本章更是引入了对工控系统病毒Stuxnet检测技术.切勿将本章内容用于非法用途,请遵守相应的道德标准. 本章脚本 表9.1所示为本章节所需Nmap命令表,为方便读者查阅,笔者特此

当研究PCI渗透测试指南时,你应该注意这六个方面

尽管PCI DSS 3.0版本已经全面推出,但仍然有很多关于企业难以遵守11.3章节中列出的PCI渗透测试要求的讨论. 为了帮助企业充分了解PCI DSS 3.0要求,PCI安全标准委员会在2015年3月发布了PCI DSS补充信息:渗透测试指南.该文档详细介绍了渗透测试过程的一般方法,从范围界定到测试不同的网络层,再到测试后续步骤(例如报告)等. PCI渗透测试文档以及PCI DSS合规所要求的方法的优点是,并没有什么新东西.除了提到云计算环境.网络钓鱼以及缩小持卡人数据环境范围等新概念外,这

《Nmap渗透测试指南》—第10章10.1节Zenmap应用

第10章 Zenmap应用Nmap渗透测试指南本章知识点 Zenmap介绍Zenmap基本配置Zenmap扫描模板Ports/Hosts标签Topology标签Host Details标签Scans标签编辑扫描模板新建扫描模板本章节将介绍Zenmap的使用.作为Nmap初学者最好的帮助工具,Zenmap以其强大的操控界面可以完成很多在Shell终端下复杂的命令.Zenmap包含了不同的模板,我们可以对这些模板进行自定义设置,让它更加灵活易用. 10.1 Zenmap介绍Zenmap是经典安全扫描

《Nmap渗透测试指南》—第7章7.1节信息搜集

第7章 信息搜集Nmap渗透测试指南本章知识点 信息搜集IP信息搜集WHOIS查询搜集E-mail信息IP反查DNS信息搜集检索系统信息后台打印机服务漏洞系统漏洞扫描扫描Web漏洞通过Snmp列举Windows服务/账户枚举DNS服务器的主机名HTTP信息搜集枚举SSL密钥SSH服务密钥信息探测本章节将介绍Nmap的NES脚本,脚本是用Lua程序创作的,目前已有好几百种.lua的易用性也让更多的用户加入脚本的创作当中来,本章节通过对Nmap信息搜集脚本的使用让大家了解Nmap的高级技法. 本章脚

《Nmap渗透测试指南》—第2章2.1节一次简单的扫描

第2章 Nmap主机发现Nmap渗透测试指南本章知识点 一次简单的扫描使用Zenmap进行扫描Ping扫描无Ping扫描TCP SYN Ping扫描TCP ACK Ping扫描UDP Ping扫描ICMP Ping Types扫描ARP Ping扫描扫描列表禁止反向域名解析反向域名解析使用系统域名解析器扫描一个IPv6地址路由跟踪本章节将介绍Nmap的基本用法,以及认识Nmap可视化平台Zenmap.本章节讲到的几种扫描方式是Nmap扫描的基础,我们通过对基础的学习来更加牢靠地掌握Nmap扫描方