经典案例之MouseJack
引言:在昨天的文章《无线键鼠监听与劫持》中,我们提到今天会向您介绍一个无线键鼠的监听与劫持的经典案例,《MouseJack》:MouseJack能利用无线鼠标和键盘存在的一些问题,达到伪装成键盘并实现任意按键的效果。
关于无线键鼠的监听与劫持有两个比较有参考价值的案例。其中之一就是MouseJack,它能利用无线鼠标和键盘存在的一些问题,达到伪装成键盘并实现任意按键的效果。造成的危害是可以伪装键盘输入任意命令控制计算机,甚至通过命令脚本下载病毒或者***进行进一步的***。
MouseJack 搜集了无线鼠标键盘的一些安全问题。受影响的厂商多达七家,这些安全问题使***能在100 米远的距离输入任意指令到受害者的计算机,而使用的工具只是价值15 美元的特殊USB 适配器。下为USB 适配器叫作Crazyradio PA。
Crazyradio PA 是一款基于nRF24LE1 的开源硬件。它带有运放芯片,具备信号放大的功能,更高的接收灵敏度,而且使用的天线不是上文nRF24L01+模块中的板载天线,而是外置SMA 接口天线。配备外置天线会大大提升收发效果。这些改进让它的收发距离达到了空旷距离100 米,而不是常见无线键鼠的10 米左右。MouseJack 修改了Crazyradio PA 的固件,使它能够支持嗅探数据包并且能够通过Python 实现注入功能。
当键盘或者鼠标做出一定的动作后,这些信号就会转化成无线传输的数据包给电脑端的适配器。电脑端的适配器接收到鼠标或者键盘发送的数据包后,就能知道键盘或者鼠标相应的动作。为了防止被偷听,大多数厂商都会对无线键盘的通信数据进行加密。电脑端的适配器是知道密钥的,所以它能正确解码出哪些键盘按下了。如果不知道密钥,***就无法解码这些数据,所以他们就没办法知道哪些按键按下了。下图为用户使用无线键盘,当按下字母A 时,这一数据在发送之前就被加密了,适配器接收到后对其解密得到正确的按键值。
一般来说,鼠标传输的数据都是没有经过加密的。这意味着鼠标和适配器直接的通信没有任何证明机制,适配器没办法分辨出哪些数据包是鼠标发送的,哪些是***伪造的。所以***可以伪造一个鼠标,传送他希望的动作给适配器。下图为用户在单击鼠标左键后,通过无线方式传送到电脑端的适配器。
这个过程中的主要问题是,适配器对接收到的数据包的处理机制使***能传送精心伪造的数据包产生按键动作。下图为***可以利用Crazyradio PA 之类的工具,产生伪造的左击的数据包。用户的适配器在接收到这样的数据包后告诉计算机产生左击的动作。
目前,绝大多数受影响的芯片都是来自Nordic 半导体公司生产的nRF24L 系列的收发器。nRF24L 系列的收发器只提供了两个器件之间收发的机制,而具体发送哪些数据代表鼠标点击或者按键按下都是由各个品牌的厂商决定的。目前发现的问题大致可以归纳为以下三类。
1.欺骗鼠标,按键注入
当处理接收到的无线数据包后,一些适配器并不验证数据包的类型是不是该类型的器件发射出的。在正常情况下,鼠标只发送移动和敲击的数据给适配器,键盘只发送按键情况。如果适配器不验证数据包的类型和发送的器件类型是否匹配,就可能让***有机可乘。***使用的是一个伪装的鼠标,但实际上发送给适配器的却是键盘的按键数据包,适配器并没有预料到来自鼠标的数据包其实是被加密过的按键数据包,它会接收这些包含按键信息的数据包,并按照数据包内容实施按键操作,使得***可以向受害者的计算机发送任意指令。
2.欺骗键盘,按键注入
大多数测试的键盘都在无线传输数据到适配器前对数据进行了加密处理,但并不是所有适配器都只接收加密的数据,它们也接收未加密的数据。这使得***可以使用一个伪装的键盘,发送未加密的数据包给适配器。这样就绕过了键盘的加密措施,使得***可以通过键盘向受害者的电脑发送任意指令。
3.强制配对
无线键盘或者鼠标出厂时,都是和适配器配对了的。这意味着键盘或者鼠标已经保存了适配器的无线地址。如果一个无线键盘或者鼠标没有存储适配器的地址,就需要将它们与适配器进行配对。假设用户的无线键盘或者鼠标坏了,或者无线适配器丢了,用户不需要再次购买全套的无线键盘或鼠标,只需购买新的键盘鼠标或者适配器就可以。
为了防止未授权的设备与适配器配对,适配器需要在配对模式的30~60s 内接受新的设备。这使得***可以通过配对模式与新的设备配对而不需要用户介入。用户只有一个鼠标,但当它在连接配对的时候,***就能用伪造的键盘与适配器配对,最终达到向用户计算机发送任意指令的目的。
如果单纯地监听或者控制无线鼠标是没有太大意义的。因为鼠标自身能做的事情太有限了,无非是移动、左击或者右击。在完全不知道用户操作界面的情况下,这些操作几乎毫无意义。移动也不知道移动到了什么位置,点击也不知道效果具体怎么样。所以单纯地对无线鼠标的监听或者控制而没有实际意义。
所以MouseJack 官方的那个Show,也仅仅只是一个Show!
警告:非法窃取他人信息是违法行为,本节内容仅供学习参考!切勿犯错!
本文选自《硬件安全***大揭秘》,点此链接可在博文视点官网查看。
想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
转载于:https://blog.51cto.com/bvbroadview/1893308
经典案例之MouseJack相关推荐
- 想轻松入门Python编程,这10个经典案例你还不知道嘛?
一直以来,Python都是一门很简单的编程语言,其实无论你有没有基础,学起来都不难. 但,必须有方法,而最好的方法其实就是学+练,即:基本常识+这10经典案例. 而同时有着系统的Python基础知识点 ...
- SQL Server中自定义函数和游标应用的经典案例
2019独角兽企业重金招聘Python工程师标准>>> SQL Server中自定义函数和游标应用的经典案例 转载于:https://my.oschina.net/zhddzr/bl ...
- 字典求最小值经典案例 heapq.nsmallest() 与min()
字典求最小值经典案例 from collections import Iterable import heapq as hpq map_10 = load_map('map-10.pickle') # ...
- 11:菜单自动化软件部署经典案例
11企业Shell面试题11:菜单自动化软件部署经典案例 综合实例:打印选择菜单,按照选择一键安装不同的Web服务. 示例菜单: [root@oldboy scripts]# shmenu.sh 1. ...
- 微软经典案例系列课程(视频课程讲师:杨丹)
微软经典案例系列课程(2):用ASP.NET和WCF构建高性能可扩展的企业级应用.zip 讲座内容:这是一个端到端的.NET企业级应用程序的案例.内容包括基于WCF和ASP.NET构建面向服务的应用, ...
- C语言:一个涉及指针函数返回值与printf乱码、内存堆栈的经典案例
C语言:一个涉及指针函数返回值与printf乱码.内存堆栈的经典案例 一个奇怪的C语言问题,涉及到指针.数组.堆栈.以及printf.以下实现: 整数向字符串的转换,返回字符串指针,并在main函数中 ...
- 星型模型 3nf的区别_贵州省遵义市工业模型经典案例展示
随着城市的发展,沙盘模型在城市建设中发展着越来越重要的作用.地产商在开发一个片区时候,都会首先和一些专业的沙盘模型公司联系,用以来构建未来的的展现效果.那平时制作沙盘模型都有哪些方法,都使用了哪些原料 ...
- python经典案例-Python递归的经典案例
目录 : 一.递归的简介 二.递归的经典应用 2.1 递归求阶乘 2.2 递归推斐波那契数列 2.3 二分法找有序列表指定值 2.4 递归解汉诺塔 前言: 当我们碰到诸如需要求阶乘或斐波那契数列的问题 ...
- 《R语言与数据挖掘最佳实践和经典案例》—— 第3章 数 据 探 索
本节书摘来自华章出版社<R语言与数据挖掘最佳实践和经典案例>一 书中的第3章,第3.1节,作者:(澳)Yanchang Zhao,更多章节内容可以访问云栖社区"华章计算机&quo ...
最新文章
- Outlook2013/2016去掉正文中的换行符
- 怎么修改存储路径_Power Query数据位置变了?利用参数轻松解决源文件路径问题...
- 对正在运行的mysql进行监控
- 魅族魅蓝mirror简单打开usb调试模式的步骤
- c保留小数点后三位数没有则为0_C语言中……“计算结果保留三位小数。”怎么表示?...
- Delphi 的绘图功能[5] - 获取 Canvas 对象
- ihttphandler ihttpmodule
- WiFi密码破解详细图文教程
- 知识图谱研究最新综述论文: 表示学习、知识获取与应用
- 对抗Windows Defender的方法和思路
- java-数组_length 字符串_length() 集合_size()的区别
- PR值计算公式带来的思考
- 那些年,我开发过的软件
- 大过 泽风大过 兑上巽下
- 10-JDBC的完整步骤【建议收藏】
- 论文阅读 Glow: Generative Flow with Invertible 1×1 Convolutions
- 安卓5.1自带浏览器主页设置–转载
- android 网易新闻 详情页面实现,Android实现网易新闻客户端首页效果
- 【树形结构】巴基斯坦城市列表 (城市原始数据来自md文件)
- Android Studio 每次运行都会再下载一遍