攻破物理隔离网的无线方法(6)– 物体表面振动侧信道:控制机箱风扇转速,利用桌子的微弱震动隐蔽通信

  这项工作同样是以色列本古里安大学Mordechai Guri教授提出的一种攻击物理隔离网的黑客方法AiR-ViBeR,是在2020年发表的。这项工作的亮点是通过控制计算机机箱里的风扇转速,使得风扇产生特定频率的机械振动,这种机械振动通过桌子来给安装了恶意软件的智能手机隐蔽地传递消息,控制振动的理由是:振动频率=风扇转速/60。它发送信息的速率非常慢,大约是0.5bps,只能传输例如密钥等简短信息。同时,这项工作是一项探索工作,对于不同材质的桌子、不同型号的机箱、风扇等都会有不同的特性。对于真正去部署这样的实验时,则需要去测试实际使用的桌子、机箱、风扇等设备的情况,才能更好地传输数据。当然,这个攻击方式的实际部署难度极大,传输信息的速度也非常慢,但是是一种人类感官无法察觉到的侧信道,并且利用的是手机的加速度计来感知这种微弱振动,而获取手机的加速度计信息是不需要用户提供权限的,提供了一种新侧信道攻击的思路。
这个东西复现起来好难,复现成本也好高,简单的测试也没法做,我尝试了几天实在搞不来,放弃0.0
文章pdf
演示视频

散热风扇背景:转速与机械振动




  计算机在工作时,CPU、GPU、内存、硬盘等都会产生热量,这些部件需要保持在稳定的温度区间里才能够正常工作。下面是常见的几种风扇:
(1) 电源风扇:这个风扇通常被生产商集成在电源模块后部,用做排除电源模块产生的热量。这种类型的风扇通常无法通过软件来监控或是控制。
(2)机箱风扇:这种风扇通常是安装在机箱的侧面、背面,或者有的直接安装在机箱底部。将冷空气吸入,从机箱的顶部或者后部排出。
(3)CPU风扇:一般安装在CPU顶部,为CPU的散热器散热用。
(4)GPU风扇:与CPU风扇同理。有些GPU不止一个风扇。
(5)其他风扇:在机箱里也有可能存在其他类型的风扇,例如对硬盘、内存等部件的散热风扇,这些在常见的计算机机箱里不一定有安装。
  在AiR-ViBeR的设计中,只通过控制机箱风扇的转速来控制机箱的振动情况。在上图中,A是一个CPU风扇,B是一个机箱风扇。

质量不平衡引起的振动

  ”如果转子的中心惯性主轴偏离其旋转轴线,则转动过程中,在离心力的作用下转子将振动,这就是质量不平衡。”
不平衡定义为质量绕轴不均匀分布,导致质量轴与轴承轴不同。当物体旋转时,不相等的质量和径向加速度会产生离心力。这导致在轴承上的力量,导致轴承振动。对于机箱风扇,就存在着这样的质量不平衡。
例如上图右图,这个示意图是一个质量不平衡的风扇,它的重量W是0.1盎司,半径是2英寸,转速RPM是2600转/分钟,因此它在工作时产生的离心力是:

F = 质量W * 速度V^2 / 半径R (这里搬出来一堆中学物理公式-.-)

V = 2 * pi * 半径R / 时间t

时间t = 1 / 转速RPM

这么一通中学物理分析得到了离心力结果-.-这部分分析没啥用,就是帮助理解:由于质量分布的不平衡,然后风扇在转动的时候会有向心力引起的机械振动这么一个可能不是所有计算机人都了解的一个概念…

控制风扇转速来引发特定频率的机械振动

  有了前面的理论基础,那么就可以设想如果能够控制风扇的转速,就可能做到带动机箱发生特定频率的机械振动。在AiR-ViBeR中,Guri使用了一个树莓派放置进机箱中,通过树莓派直接控制风扇的转速(这一点我个人觉得有点牵强了,毕竟实际中怎么做到把树莓派接入到目标电脑的机箱里呢?)




当控制风扇转速为3000转/分钟时,在桌子上距离机箱70cm处用智能手机的加速度计测试其振动情况:原始信号和经过45Hz到65Hz的带通滤波信号,以及功率谱密度



下图是上面的原始信号的FFT,可以看出在50Hz处最强烈,说明3000 / 60 = 50Hz的公式是成立的:



  有了这样的实验基础,我们就得到了控制方法,进而我们就可以控制机械的频率了。

调制振动频率

  在Air-ViBeR中给出了频移键控FSK和幅移键控ASK两种方式。首先介绍BFSK的方式。

BFSK调制

  首先Air-ViBeR选定了两种风扇转速,分别是RPM0=1300转/分钟和RPM1=2600转/分钟,用来表示’0‘和’1‘,另外额外设置了一个base转速。在实际的调制过程中,控制着风扇的转速在高速和低速之间转换,但在每一个比特之间要将转速回归到base转速,Guri将其称为“归零”技术。(或许是为了方便抽样判决?)下面是Guri给出的伪代码:




代码还是比较容易读懂的,但是复现起来难度颇大….我不会也没有财力更不会用树莓派接入到机箱的风扇还控制它….



上图是Guri给出的用上述方法传输‘10101010’信息的示意图,可以看到存在微弱的信号在两个不同频率上出现,并且有归零到base频率的演示。

BASK调制

  下面是用BASK调制的方式,通过控制振动的幅度来标识‘0‘和’1‘,但是如何去控制振动的幅度是个问题。Guri给出的方式是控制风扇的转速从2000转/分钟到2600转/分钟不断增加,然后观察振幅变化。由于随着转速的增加,振动频率逐渐增加(类比啁啾信号),当振动频率接近整个机箱的固有频率(自振频率?文章中的用词是self resonant frequency)时,会有较强类似共振的现象(这里具体叫共振还是叫自振我不是很清楚),就会存在高振幅的时刻。那么实质上控制着风扇的转速变化就可以使得振幅在‘0’或是‘1’的级别。(这里略难理解的地方是高振幅出现的时候不是确定的某个转速,而是由风扇转速从低到高的某个时刻接近了这个风扇的自振频率从而引起了更大幅度的振动…我理解了好久大概认为Guri是这样写的…我也没有办法来复现测试,只能姑且相信Guri的说法。。。)




上图是距离机箱10厘米处和100厘米处得到的振幅测试,可以看到微弱振幅是有高低变化的。

这便是Air-ViBeR的秘密所在,也是攻破物理隔离网的关键。

实验测试

  Guri给出了测试的场景和使用的设备。一台PC(实验中测试了三种不同的工作站)放在桌子上,一台三星 Galaxy S10手机作为接收设备,关于桌子的尺寸等信息在下图中有展示:




实验中设置了风扇的转速为2580转/分钟,理论振动频率应为2580/60=43Hz。在上图标注的9个位置上进行了测试,其中在8个位置上测到了振动信息。其信噪比信息在上图的下方。
对于距离的影响,下图为不同距离下的信噪比测试,Guri使用了两台不同的工作站进行了测试:


另外,Guri还测试了不同距离下使用FSK调制发送信息的误码率情况,测试的参数设置是base频率为3030转/分钟,持续时间为1.5秒;‘1’对应3260转/分钟,’0‘对应2600转/分钟,持续时间均为0.5秒:




可以看到,极限距离大约可以达到120cm到150cm之间做到误码率接近0%。

我的想法

  这项工作为我们提供了一个新的攻破物理隔离网的思路,也说明了计算机在工作时一些部件产生的机械振动也有可能是一种泄露信息的侧信道。
当然,Air-ViBeR这项工作更多的展示的是一种探索,Guri能够实现这样的攻击事实上是高度依赖所使用的设备,如果想要复现则是新的探索,原因包括使用的桌子材质、机箱风扇型号、机箱整体状态等等非常多的变量。甚至说桌子上如果铺上布,桌前坐一个人在工作,都有很大可能影响侧信道的效果,甚至掩盖了这样的侧信道。想要做到完美控制这些变量是非常困难的。
但不能否认这是一项非常吸引人眼球的工作,是一项很有趣味的工作~

Add a Comment

邮箱地址不会被公开。 必填项已用*标注