关闭

无线键鼠监听与劫持

标签: 硬件攻防无线监听
1246人阅读 评论(0) 收藏 举报
分类:

引言:键盘是生活中最常见的硬件之一,无线键鼠由于其方便美观受到很多人的青睐,那么它的安全性如何呢?面对攻击我们又如何防护呢? 
本文选自《硬件安全攻防大揭秘》。

1.无线键鼠的兴起

  键盘连接到计算机有多种方式,有线键盘鼠标在生活中最常见,适用范围也很广泛,但有线连接不仅对操作距离有限制,而且给携带造成了不便。不仅如此,繁杂的线缆还很容易把桌面弄得凌乱不堪。无线键鼠非常好地解决了上述问题。无线键鼠又分为蓝牙类型和2.4GHz 类型,文中所指的无线鼠标一般指2.4GHz 类型。值得注意的是,虽然蓝牙键鼠的工作频段也是2.4GHz 频段,使用的却是蓝牙通信协议,符合蓝牙标准。而2.4GHz 类型的键鼠主要指利用专属无线协议开发的无线产品。2.4GHz 类型的无线键鼠,一般在计算机的USB 接口处插上一个适配器,鼠标和键盘通过电池供电。

2.无线键鼠的基本原理

  无线键鼠与有线键鼠的主要区别在于信号传输方式。有线键鼠利用导线传输信息,而无线键盘利用无线电传输信息。早期的无线键盘使用27MHz 的频段,当时的无线接收器相对现在的集成芯片来说要大得多。目前大多数产品都工作在2.4GHz 的ISM(工业、科学、医疗)频段。下面我们大致介绍无线键盘的工作原理。当按下键盘时,键盘内部的单片机利用矩阵扫描的原理检测到是哪个按键按下了,相应按键有相应的编码;单片机利用无线收发模块把按键信息通过无线电传播出去;电脑端插在USB 接口上的适配器收到相应的数据后会通过USB 向电脑操作系统传输按键的输入信息。这样就完成了一次按键信息的传送,下面将详细介绍无线通信的硬件部分和通信数据部分。

3.硬件部分

  如果想真正了解键盘的构造、基本原理等信息,拆解是非常直接有效的方法。 
图片描述
  上图为某无线键盘的拆解图。右下部分是一个电池槽,红色的线是一根电源线,为单片机和无线模块供电。目前市场上最常见的就是这种薄膜式键盘。薄膜式键盘取代机械键盘的原因并非机械键盘的品质不够好、手感不佳。机械键盘的手感、使用寿命都要优于薄膜键盘,只是因为成本过高而逐渐退出市场。最近因更追求产品的品质,机械键盘又逐渐流行起来。 
  薄膜式键盘内部共分三层,实现了无机械磨损,其特点是低价格、低噪音和低成本,已占领市场绝大部分份额。我们现在经常使用的就是薄膜键盘。薄膜式键盘架构很简单,除了上下盖、键帽之外,拆开键盘之后,还会看到橡胶帽(但事实上现在都是用硅胶制成)、三片薄膜、电路板,以及电路板上的IC。再检视薄膜的话,还可以看到导电的印刷涂料。薄膜式键盘的原理相当简单,三片薄膜中,最上方为正极电路,最下方为负极电路,中间为不导电的塑料片。 
【图4】
  接着,在上方放按压模块(通常包括键帽、键帽下方活动模块,以及橡胶帽),当手指从键帽压下时,上方与下方薄膜就会接触通电,完成导通。 
  然而,我们更关注的是它的射频部分。也就是它采用了哪款芯片,完成对数据的传输。这样我们才能更方便地找对方向进行研究。 
【图5】
  上图为无线键盘的射频部分,用的是Nordic 公司设计的nRF24L01 芯片。黑色方块即为该芯片,周围是该芯片正常工作所需的外围器件,例如电容、电阻等器件。左边黄色蛇形的图案是PCB 天线。它是利用印制电路板上的导线作为天线的一种方式。这种天线的好处是相对于外置天线体积更小,而且更廉价,但缺点是距离较短,适用于对距离没有严格要求的地方。这款无线收发芯片是了解无线键鼠通信基本原理的关键部分,有助于我们对无线键盘的研究,下面将介绍该芯片的一些基本情况。 
  nRF24L01 是Nordic 公司设计的一个具备协议解析功能的单芯片无线收发器,适合低功耗的无线应用场景。nRF24L01 工作在全球开放ISM 频段(工业、科学和医用频段),频率范围内2.400GHz~2.4835GHz。因为nRF24L01 仅仅是一个无线收发器,没有集成单片机,所以在使用时需要配合单片机和少量的外围器件工作。我们可以通过SPI 接口对nRF24L01 进行操作和配置。通过SPI 接口可以读写nRF24L01 内部的寄存器,完成对其的配置和其他所有的操作。 
  该无线设备采用GFSK 调制方式。用户可以修改无线设备的信道、输出功率和数据速率。nRF24L01 支持三种速率250kbit/s、1Mbit/s 和2Mbit/s。目前应用广泛的是2Mbit/s 的数据传输速率。 
  下图所示为Nordic 公司官方给出的电路参考设计原理图。大多数公司都是据此进行开发的,除非一些公司对某些方面有特殊的需求才会对该原理图调整。许多厂家会据此进行二次开发,生产出该芯片的模块。 
【图6】
  下图为该芯片的成品模块 
【图7】
  该模块只引出了必要的电源及控制接口,其他外围电路都已经集成在模块上。这样的好处是使用更方便,不需要关心芯片的外围电路和天线部分。天线的设计是电路设计上的难点,细小的失误都可能对通信距离产生较大的影响。所以很多厂商都采用设计成熟的模块,而不是自己重新设计这一部分。 
【图8】
  上图为该模块的引脚顺序图,可以与单片机进行连接。相应的引脚功能如下。 
【图9】
  模块保留了用户需要用到的8 个接口。其中1 号和2 号引脚为电源接口,为该模块供电。3 号引脚为芯片使能接口,用于设置芯片是工作在接收模式还是发送模式。4 号至7 号引脚是用于SPI 通信的四条连线。CSN 用于片选芯片,也就是芯片的SPI 通信使能。SCK 是单片机为SPI 通信提供的通信时钟。MOSI 是单片机向模块发送数据的数据接口,MISO 是模块向单片机发送数据的数据接口。8 号引脚IRQ 在接收到数据时通过电平跳变来通知单片机模块已经收到了数据。这种方式的好处在于单片机在没有收到数据时可以完成其他任务,不需要一直查询该模块是否收到数据。当然,这个接口也可以不用,不过如上所述,需要一直查询是否收到了数据,这种方式是非常低效的。采用这种方式带来的另外一个缺点是一直使单片机处于工作状态,不利于休眠,会造成功耗大幅度提高。 
  通过上述物理接口就可以达到配置和操作nRF24L01 的目的。了解硬件是不够的,对通信的数据的学习仍然是一门必修课。

4.通信数据部分

  nRF24L01 支持数据包的自动装配,自动发送确认包和重发数据包。它支持1 至32 字节的负载长度。能把收到的包自动分解,得到需要的负载部分。nRF24L01 拥有6 个通信信道,最多支持1 对6 的星形网络。 
【图10】
  上图为nRF24L01 的数据包格式,其中包括了1 个字节的前导码、3 至5 字节的地址、9 个比特的包控制段、0 至32 字节的负载段及CRC 校验码。数据包内各个部分在整个通信中扮演着不同的角色,有着不同的作用,下面将对它们做详细介绍。 
  前导码用于让接收端的解调器和输入的比特流同步。这里的前导码的长度是一个字节,序列是01010101 或者10101010。至于具体是哪种前导码,与紧接在前导码后面地址的第一个比特有关。如果地址的第一个比特是1,则前导码被自动设置为10101010。如果地址的第一个比特是0,则前导码被自动设置为01010101。这些措施用于保证有足够的过度时间来稳定接收器。简单地说,前导码的存在主要是为了让后续的数据流接收更加稳定。 
  这里的地址是发射器发送给接收器的。地址用于该数据包被正确的接收器侦测和接收,而不是被其他设备错误地接收到。当我们在接收器中写入地址后,可以方便地过滤掉不是发送给自己的数据包,保证接收到的数据包至少地址是正确的。我们可以通过设置名为AW 的寄存器,调整地址的宽度到3 个、4 个或者5 个字节。 
【图11】
  上图为数据包中的包控制字段(Packet Control Field),它涉及对数据包的控制工作,主要包括负载长度字段(Payload Length)、包识别字段(PID)和自动应答的非确认标志(NO_ACK)。包控制字段包含6 比特的负载长度字段。当该器件作为接收端设定为动态负载长度时,该负载长度字段用于指示负载有多长,以便于快速读取负载。当设定为静态负载长度时,就用不到该字段了,因为每次的负载长度都是固定的。 
  两个比特的包识别字段用于检测接收到的包是新的还是重传的。包识别字段是为了防止同样的负载被多次送到单片机中重复处理。当发送端每次发送新的数据包的时候,包识别字段的值都会增长。在接收端的器件会根据包识别字段和循环校验码(CRC)决定该数据包是重传的还是新的。当多个数据包丢失后,这次的包识别码就可能和上次的一样,如果这样的话,nRF24L01 会比较两次的循环校验码。如果两次的循环校验码相同,最新接收的数据包就会被认为是上次接收数据包的备份而被丢弃。 
  可选的自动应答特性控制着非确认标志(NO_ACK)。当自动应答这个特性被利用时,这个标志才有效。设置这个标志为1,告诉接收器这个包是不需要被自动应答的。 
  负载(Payload)是用户定义的数据内容。它的长度可以是0 至32 字节。用户可以把需要传输的数据放在负载字段里传输。循环冗余校验码用于数据包的错误检测。在数据发送前,发射器会根据发送的数据产生循环冗余校验码。当接收器接收到数据时,也会根据接收到的数据产生循环冗余校验码。最后,接收器会计算接收到的数据校验码,并和直接接收到的校验码进行比对,如果相同则认为数据在传输过程中没有出错,如果不相同就认为出错了,需要采取重传或者其他措施。该字段可以被设定为1 个或者2 个字节,并且从地址开始计算,也包括了包控制字段和负载。

5 如何防御

  有线键盘记录器在有些单位或者某些场景,作为按键日志记录设备是必须使用的。请不要随意取下,以免引起不必要的误会。 
  对于个人而言,有线键盘记录器这种攻击手段要防御说容易不容易,说难也不难。说容易是因为这种外接设备肉眼可见,说难是因为要用软件检测非常难,几个简单的防御方法如下。 
  首先,提高防范意识。使用台式机前检查一下,看看后面是不是被装了“小尾巴”。当然,每次都看太麻烦,可以选择将机箱放在肉眼可见的桌上,没事瞅一眼。使用笔记本电脑的话,随时看下就好。 
其次,不熟悉的人送的键盘,不要随意接受!或者发现自己的键盘有被拆卸过的痕迹,也需要注意!也许,键盘里面,就藏着一块电路板,在你不经意时,窃取了你的账号和密码,继而以此为突破口窃取更多的机密。当然,还是自己去市面上买的键盘相对放心。 
  再就是,输入关键信息时,用软键盘输入比较好,前提是电脑本身的软件安全要做好,如果中了木马被录屏就没办法了。 
对于无线键盘监听的防御,很简单,不使用无线键鼠就行!特别是在办公室用台式机或者笔记本电脑时,完全没必要使用无线键盘,手机和iPad 用屏幕键盘就可以。如果必须要用无线键盘,可以考虑自己做一个转换的硬件,将USB 有线键盘转换成蓝牙或者无线键盘,至于方法,与无线键盘记录器是一个原理。 
  最后,安全没有绝对,但也不要被谣言所恐吓,保持良好心态,小心谨慎,定期更换强密码很重要。 
  特别是对于掌握公司或者机关单位重要账号密码的工作人员,请提高自我安全防范意识。

警告:非法窃取他人信息是违法行为,本节内容仅供学习参考!切勿犯错!

  我们将在明天的推送中向您介绍一个无线键鼠的监听与劫持的经典案例《MouseJack》:MouseJack能利用无线鼠标和键盘存在的一些问题,达到伪装成键盘并实现任意按键的效果。 
  本文选自《硬件安全攻防大揭秘》,点此链接可在博文视点官网查看。 

图片描述

  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
                         图片描述

0
0
查看评论

解决雷柏无线键鼠突然失效的问题

今天把电脑休眠掉,唤醒来之后雷柏的无线键鼠套装突不能使用。换电池,重装系统均无效。找到淘宝卖家,卖家说可能是丢失程序码,给我发过来一个雷柏的键鼠对码程序(下载地址在后面),安装,重启。 1、选择鼠标对码,鼠标取电池提示出来后,装电池,鼠标贴近接收器,同时按住左键、滚轮、右键不放  2、...
  • DecKen_H
  • DecKen_H
  • 2012-12-25 00:03
  • 1156

无线键鼠接收器丢了怎么办

去年,我在网上新买了无线键鼠套装(e元素的,2.4G接收器),刚用了一个多月,由于我的疏忽,把接收器弄丢了。我咨询卖家,他说接收器丢了键盘鼠标就废了,去过几家卖电脑配件的都说没办法。我也就不报希望了,可是。。。 今天我无意中发现了一个方法,就是重新找一个2.4G接收器,重新对码即可,具体步骤如下: ...
  • Syes_lei
  • Syes_lei
  • 2016-03-10 12:58
  • 1942

Android-无线鼠键

大学生活的好处就在于让我们有太多的时间去思考去实践我们的想法了,最近又闲了, 想做点什么来着,当冬天你窝在被窝里欣赏电脑上的影片,但又没有无线鼠标,这时候就可以拿起你的智能手机来充当鼠标,轻松控制电脑,不想看了直接关机睡觉;如果你是一位老师上课时演示PPT,有了这个功能就不用站在电脑旁,可...
  • weiyirong
  • weiyirong
  • 2012-05-16 01:51
  • 7396

树莓派和普通PC共享键盘鼠标

手头有一个树莓派3代,一直放在角落里吃灰,今天心想把它做成一个服务器吧,也算是发挥点光和热。无奈树莓派不能使用机械键盘~~~~ 突然想起在ZEALER上看过一个晒桌面的,他说他的2台pc共用一套键鼠,所有又翻出这篇文章看了一下。原来有一款软件就是共享键鼠的,名字叫做synergy,支持常用各...
  • u013958709
  • u013958709
  • 2016-08-14 18:39
  • 2576

android键盘钩子 android按键劫持

实现按键钩子,一般可以在框架,linux内核等上面进行,这次主要是在应用层实现的。 方案为: 获取android sdk提供的com_example_android_softkeyboard例子程序,然后,修改OnPress() 函数就可以实现了。如果把这个恶意的软键盘
  • winsunxu
  • winsunxu
  • 2011-09-05 11:04
  • 7642

【高效程序员系列】3 别碰鼠标——让键盘飞起来

一、闪电启动软件的秘密 正如很多魔术,外行人苦思冥想也无法得知其中的奥秘,一旦揭穿则会让人大呼:原来是这样,太简单了。其实这里闪电启动软件业没有什么高深的方法,只不过是调用了运行而已。作为软件开发人员,我们经常会使用到“运行”,输入cmd就可以调用命令行,输入regedit则是编辑注册表。如果...
  • qq_34231193
  • qq_34231193
  • 2016-09-05 21:23
  • 2528

Synergy 一套键鼠同时控制多台电脑的神器

现在很多人都拥有多台电脑,譬如台式机+笔记本,很多时候我们都会同时打开它们工作。可是你有没发现,如果桌子上摆放着多台电脑多套键盘鼠标,不停来回切换使用是否很累呢?如果说现在可以只用一套键鼠,就能同时控制你全部的电脑,你会否兴奋?以前我们都是用通过远程控制来完成,这样屏幕另一台机器的屏幕没有利用起来。...
  • c123728529
  • c123728529
  • 2016-03-08 10:41
  • 4250

jQuery鼠标键盘表单事件大全

<!DOCTYPE html> <html> <head> <title>jquery事件监听</title> <script src="http://apps.bdimg.com/libs/jquery/2...
  • qq_24448899
  • qq_24448899
  • 2017-08-18 10:52
  • 101

Android App监听软键盘按键的三种方式 以及 输入法删除退格键的冲突问题解决

案例的恢复 import android.app.Activity; import android.view.KeyEvent; import android.view.View; import android.view.View.OnK...
  • wuqilianga
  • wuqilianga
  • 2016-01-29 10:58
  • 8375

求助:无线键鼠套装无法使用

为了在家里添置一台HTPC电脑放在客厅,把旧电脑除了机箱之外的东东都用来做HTPC了,为了更好地操作HTPC,在电脑城买了雷柏8300无线键鼠套装,但奇怪的是:8300在新电脑上能用,在笔记本电脑上也能用,唯有在HTPC机上不能用。与雷柏客服联系了,说是系统问题,但三个系统都是用同一张碟安装的WIN...
  • sliven
  • sliven
  • 2012-07-30 22:19
  • 758
    个人资料
    • 访问:3921031次
    • 积分:56473
    • 等级:
    • 排名:第57名
    • 原创:1462篇
    • 转载:83篇
    • 译文:1篇
    • 评论:3786条
    博客专栏
    文章存档
    最新评论