经典案例之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!
警告:非法窃取他人信息是违法行为,本节内容仅供学习参考!切勿犯错!
本文选自《硬件安全攻防大揭秘》,点此链接可在博文视点官网查看。
想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
经典案例之MouseJack的更多相关文章
- javascript的理解及经典案例
js的简介: JavaScript是一种能让你的网页更加生动活泼的程式语言,也是目前网页中设计中最容易学又最方便的语言. 你可以利用JavaScript轻易的做出亲切的欢迎讯息.漂亮的数字钟.有广告效 ...
- jQuery基础的工厂函数以及定时器的经典案例
1. jQuery的基本信息: 1.1 定义: jQuery是JavaScript的程序库之一,它是JavaScript对象和实用函数的封装, 1.2 作用: 许多使用JavaScript能实现的交 ...
- Linux运维之道(大量经典案例、问题分析,运维案头书,红帽推荐)
Linux运维之道(大量经典案例.问题分析,运维案头书,红帽推荐) 丁明一 编 ISBN 978-7-121-21877-4 2014年1月出版 定价:69.00元 448页 16开 编辑推荐 1 ...
- 经典案例:那些让人赞不绝口的创新 HTML5 网站
在过去的10年里,网页设计师使用 Flash.JavaScript 或其他复杂的软件和技术来创建网站.但现在你可以前所未有的快速.轻松地设计或创造互动的.有趣好看的网站.如何创建?答案是 HTML5 ...
- Altera OpenCL用于计算机领域的13个经典案例(转)
英文出自:Streamcomputing 转自:http://www.csdn.net/article/2013-10-29/2817319-the-application-areas-opencl- ...
- php中foreach()函数与Array数组经典案例讲解
//php中foreach()函数与Array数组经典案例讲解 function getVal($v) { return $v; //可以加任意检查代码,列入要求$v必须是数字,或过滤非法字符串等.} ...
- 阿里云资深DBA专家罗龙九:云数据库十大经典案例分析【转载】
阿里云资深DBA专家罗龙九:云数据库十大经典案例分析 2016-07-21 06:33 本文已获阿里云授权发布,转载具体要求见文末 摘要:本文根据阿里云资深DBA专家罗龙九在首届阿里巴巴在线峰会的&l ...
- HTML5 CSS3 经典案例:无插件拖拽上传图片 (支持预览与批量) (二)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/31513065 上一篇已经实现了这个项目的整体的HTML和CSS: HTML5 C ...
- Wolsey“强整数规划模型”经典案例之一单源固定费用网络流问题
Wolsey“强整数规划模型”经典案例之一单源固定费用网络流问题 阅读本文可以理解什么是“强”整数规划模型. 单源固定费用网络流问题见文献[1]第13.4.1节(p229-231),是"强整 ...
随机推荐
- 【视频编解码·学习笔记】5. NAL Unit 结构分析
在上篇笔记中通过一个小程序,可以提取NAL Unit所包含的的字节数据.H.264码流中的每一个NAL Unit的作用并不是相同的,而是根据不同的类型起不同的作用.下面将对NAL Unit中的数据进行 ...
- KBEngine游戏服务器(一)——引擎环境配置
系统:Win10 版本:Visual Studio 2013(也就是vs120) kbengine:v1.0.0 MySQL:5.7 MySQL Workbench :6.3 一.下载kbengine ...
- Asp.net mvc 下载文件
前言 最近有需求需要下载文件,可能是image的图片,也可能是pdf报告,也可能是微软的word或者excel文件. 这里就整理了asp.net mvc 和asp.net webapi 下载的方法 A ...
- 单元测试系列:Mock工具Jmockit使用介绍
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6760272.html Mock工具Jm ...
- iOS-Runtime的那些事...编辑中....
Runtime-iOS的黑魔法,还是很好玩的,消息机制.方法替换简单记录了一点,持续更新.... 1.方法替换 在类load方法中,替换系统方法 + (void)load{ Method oldCol ...
- java 世界中Annotation
java 世界中Annotation 在github上开始汇总一些自己学习,收集,总结,经验的一些信息,有利于跟踪,修改,提升.如果你感兴趣 可以关注一下,也可以提供自己的内容进来. https:// ...
- Java多线程基础(一)
一个简单的多线程的例子: package multiThread; public class BasicThread implements Runnable{ private int countDow ...
- Java版网络爬虫基础
网络爬虫不仅仅可以爬取网站的网页,图片,甚至可以实现抢票功能,网上抢购,机票查询等.这几天看了点基础,记录下来. 网页的关系可以看做是一张很大的图,图的遍历可以分为深度优先和广度优先.网络爬虫采取的广 ...
- 从细菌GFF文件提取CDS序列并转换为氨基酸序列
最近在上生物信息学原理,打算记录一些课上的作业.第一次作业:如题. 基本思路: 1.从GFF中读取CDS的起始终止位置以及正负链信息.GFF格式见http://blog.sina.com.cn/s/b ...
- iPad Pro 10.5+Apple Pencil之专注文献阅读与笔记效率的App综述
先谈谈我对笔记类App的几点要求--原则是取其精华,略其糟粕,毕竟开发者们还在,App就会不断地被改进: 增删快捷方便:如完美支持Apple Pencil,特定场景下强大的录音功能,单词或短句涂改即可 ...