摘要
信息是现代企业最重要的资产,备受竞争对手的觊觎。在涉及到高度敏感的数据时,一家企业可能会采用物理隔离方法,切断内部网络与外部世界之间的网络连接。近年来,虽然实践(例如Stuxnet)证明入侵采用物理隔离的网络是具有可行性的,但从一个物理隔离网络中攫取数据仍然被认为是高级网络攻击中最具挑战性的阶段之一。
本文提出了一款分支型恶意软件“AirHopper”,该软件可以通过使用FM信号突破独立网络和附近受感染手机之间的物理隔离。众所周知,软件可以在一个视频显示器中有意地创建无线电发射信号,这是手机首次在攻击模式中被作为恶意无线电信号的预期接收器加以考虑。本文对网络的攻击模型及其局限性进行了详细分析,并讨论了实践过程中的相关注意事项(如隐身和调制方法)。最后,本文对AirHopper进行了评估,并展示了手机利用1360Bps(字节/秒)的有效带宽从距离1~7米处的物理隔离计算机上攫取文本和二进制数据的过程。
1. 前言
由于现代企业依赖于计算机网络传送各种信息,因此这种网络是恶意竞争对手赚钱的目标。维护网络的安全是一项十分复杂的任务,涉及主机级防护、网络级防护、网关和路由器级防护等等。然而,只要局域网与外部世界(例如因特网)相连接,则无论采用何种防护级别,不断创新、坚持不懈的攻击者最终将会找到一种攻破网络的方法,从而实现窃听信息以及向外传输敏感数据的目的。
因此,当一个网络被用于提供高度敏感数据,或与存储或处理此类数据的计算机相连时,人们经常会采用所谓的“物理隔离”方法。采用物理隔离的网络与外部世界之间不存在任何物理网络连接(有线或无线),也不会通过另一个安全性较低的网络直接或间接地与外部世界相连。但是,雇员却可能会将他们的手机携带至企业的工作场所周围,也许恰好位于某个物理隔离网络中一台机密计算机的附近。尽管企业拥有合理的安全管理程序,但这种情况还是有可能出现,且并不需要员工怀有恶意企图。
由于现代手机安装 FM 无线电接收器的比例越来越大,这种情况的出现就会变得越来越普遍[1][2][3]。只要拥有适当的软件,一台受感染的计算机就能利用与视频显示适配器(视频显示卡)相关的电磁辐射生成兼容的无线电信号。这种由发射器与广泛使用的移动式接收器构成的组合,可以创造一种无法被一般安全设备监控到的潜在隐蔽通道。
本文展示了如何使用配备FM接收器的手机从一台受感染的计算机中收集散发的、包含敏感信息的无线电信号。虽然攻击模型有些复杂,但并没有超出一个熟练且持久型攻击者的能力。一旦攻击成功,攻击者则可能会从物理隔离网络中收集到有价值的信息。
1.1 手机中的FM接收器
FM无线电接收器于1998 年前后首次引入移动电话,并随着现代智能手机的出现而变得越来越普遍。不同于早期的犹豫不决,现在的大多数主要运营商和制造商都在努力将FM 接收器整合进它们的产品中。微软已表示支持 FM,并宣布将其应用到 Windows Phone 8 的一次更新升级中[4]。在诺基亚于2012 年和 2013 年出售的近7亿部手机中,Lumia 520 和 Lumia 920这两款畅销型手机都已支持 FM 无线电功能。在 Android 市场上,超过 450 款手机支持 FM 收音机功能[1][2]。许多功能型手机(低端手机)和音乐播放器(例如iPod nano)中也集成了FM接收器。此外,美国通过制定相关法律强制要求在手机中集成FM接收器,以备紧急情况下使用[5]。
2. 攻击模型
攻击模型假定恶意代码可以安装并运行在:(a)包括一台或多台计算机的目标网络上;(b)可能位于目标系统附近的移动设备上。随着当前“自带移动设备” (BYOD)的普及,手机经常会进出企业的物理设备周边场所。
此类攻击包含四个主要步骤:(1)将恶意代码插入到目标系统中;(2)利用恶意代码感染手机;(3)利用手机建立一个指挥控制(C&C)通道;(4)检测所发出的信号并将其传送给攻击者(图1)。
图1:AirHopper演示。移动电话(B)接收了目标计算机(A)发射的无线电信号。在该演示中,(A)和(B)之间的距离为4米。
2.1 感染目标计算机
一旦物理隔离屏障被破坏,恶意代码就能够感染目标网络中的系统。正如Stuxnet[6][7]和Agent.btz[8]所展示的,这种破坏行为在某种程度上可以实现。因此,假设大多数类似的情况并未公开发布过是合理的。攻击媒介可能是(a)可移动介质,或(b)外包的软件或硬件组件。一旦恶意代码在目标网络的一个节点上运行,它就可能会进一步传播并感染其他节点。
2.2 感染手机
由于手机可以通过众多接口(如蜂窝网络、蓝牙、Wi-Fi以及与其他设备相连的物理连接)连接外部世界,因此针对手机的攻击媒介范围要比目标计算机广泛得多。最可能发生的情况是,针对目标企业中那些最有可能工作在目标计算机附近的员工,攻击者会试图定位并感染他们的手机。类似于早期阶段的高级持续性威胁(APT),这一步可以利用数据挖掘、社交网络、网络钓鱼和类似的社会工程方法。手机的感染途径可以是通过互联网、访问受感染的网址、携带恶意附件的电子邮件或安装恶意的应用程序。其他的感染途径包括物理访问、SMS、漏洞和干扰信号接口[9][10]。
2.3 建立指挥控制通道
在感染手机后,攻击者应该建立指挥控制通道。这一过程可以通过因特网 (数据或Wi-Fi)或SMS,其中信息的发送和接收可以在不引起用户警惕的情况下完成。如果攻击者所用的合适连接受限或不连续,则在手机上运行的恶意程序可能会先存储所积累的资料,并在所需的连接可用时再将其发送给攻击者。
2.4 无线电监测
手机应监管无线电频道,以检测所发出的信息。当检测到所发出的无线电广播时,设备将对此加以解码。监测可能是:(1)连续的,只要手机处于激活状态;(2)暂时的,须基于使用者的工作时间表;(3)受空间条件限制的,须基于使用者的当前位置(如 GPS、无线网络基站或其它方式所指示的地点);或者(4)需要通过指挥控制通道接收远程命令后启动。
3. 背景
现已有几份工程和技术文件[11][12][13][14]对从视频卡中生成无线电信号进行过讨论。信号发射计算所需的主要参数是像素时钟。像素时钟的单位是MHz,表示的是像素传输至屏幕的频率,例如一个刷新周期内所容纳的全帧像素。像素时钟可以采用简单的乘法加以计算:
其中,Hpixel 和 Vpixel 是垂直和水平分辨率(即1024和768)设置值, Vsync、Hsync 是垂直和水平同步长度(以像素为单位), Rr是刷新率(例如60Hz),PC 是像素时钟。这些参数是由显示标准决定的。一般来说,在模拟标准和数字标准中,像素时钟主要由显示分辨率和刷新频率决定。
考虑到显卡的标准,我们有可能可以构建如下一种图像模式,即在将其发送至显示器的同时生成一种基于数据信号调制的载波。第一种选择是通过改变像素颜色来直接影响信号的电压。对于这种类型的数据传输,振幅调制(AM)是显而易见的选择。针对某个固定的载波,通过逐渐改变像素的深浅,则可以改变载波信号的振幅。以前的研究[15][12][14]表明,使用显示器和显示适配器可以有意地生成调制的无线电信号。本研究的目的在于传输将被手机FM接收器接收并解译的FM信号。通过构建一幅黑白像素交替排列的图像,反映出所需的载波频率调制,即可产生FM信号。在FM调制中,黑白像素用于生成固定的最大振幅,所产生的信号较强。
4. 实践应用
为了测试并评估此类攻击的现实适用性,我们开发了名为“AirHopper”的恶意软件。在本节中,我们描述了该恶意软件的两个组件的实践应用情况:针对个人电脑的发射器组件和针对手机的接收器组件。
在考虑使用手机的FM接收器接收生成的信号时,我们面临着新的挑战和机遇。所面临的主要挑战之一是:手机中的FM接收器芯片首先是采用DSP (数字信号处理)芯片解码FM信号,然后再生成音频信号,这一事实则导致手机的操作系统只能访问生成的音频输出(图2中的第2层),而不能访问载波本身。因此,若要将数字信息发送给接收器,数据必须使用音频音调进行调制图 2中的第3层)。此外,如第4.2节中所述,在选择调制中使用的音频频率时,应考虑FM 接收器的特点和局限性 。
图2:Airhopper调制图层
4.1 FM音频信号的产生
本节描述了AirHopper 用于生成像素模式(图像)的算法,以发射特定的FM音频信号。在音频调制算法中,我们采用 Fc 表示FM接收器为了接收所传输的信号必须调整到的载波频率(例如 90 MHz)。此值限定为至多是像素时钟的两倍[15]。然而,由于显示适配器所产生的信号近乎方块形(“黑色”和“白色”像素之间交替排列),因此信号生成的强谐波可被用于忽略这一限制,并可以在损失一些信号质量的情况下采用高于两倍像素时钟数值的方式进行传输[15]。
Fd 表示的是载波调制的数据频率(音调)。Pc 表示的是前面所述的像素时钟值, HpVp 分别表示的是水平和垂直分辨率参数,再加上前后的时钟脉冲边沿,这是一段没有显示像素数据发送的时间段。CRT显示器可以利用这段时间来将其光束缩回至一帧图像末尾的顶部和一行末尾的左侧。这些都是标准中为了兼容CRT显示技术而留下来的。
该调制过程以“Tempest for Eliza[14]”中的代码为基础,根据下面的算法 (算法 1)加以制定。为了提高所传输信号的质量,实践中采用的是修改过的变体调制过程。
直观地说,上述算法可以通过模拟载波频率的峰值决定对哪个像素加以染色。所产生的图像由交替的横向“条纹”组成,其中包括与载波频率相匹配的黑白像素图案或空的黑色条纹。内部循环可以计算出模拟载波频率 Fc的模式。条纹的宽度以及条纹的数量取决于 Fd的值,应通过外部循环计算得出。简单地说,条纹中的这种周期性变化调节的是音频信号 Fd。
在给定像素图的情况下,可以使用下面的近似计算公式来确定所生成的信号频率。
算法 1:用于信号音 (Fd) 调制的像素图
Y0 和 Yx 是具有相同像素图案的两个连续像素行的垂直像素坐标。该公式通过使用显卡定时参数可以近似计算出数据信号的周期时间。
4.2 AirHopper 发射器——有关音频的数据调制
我们使用如下两种技术来对音频信号进行数字信息调制:音频频移键控(A-FSK) 和双音多频(DTMF) 。我们的评估显示,A-FSK 对干扰的敏感度较低,相比DTMF技术的传输距离更远。而另一方面,就带宽和二进制数据传输而言,DTMF的效率更高。
在这两种技术中,数据通过音频频率加以调制。我们的实验结果表明,低于 600Hz的频率将会遭遇极大的干扰;而大量的接收测试表明,若信号频率大于 11 kHz,接收距离则开始大大减小。我们将在这两种方法中相应地限制传输范围。
4.2.1 A-FSK。
采用这种音频数据调制方法,每个字母或字符都会使用不同的音频频率进行调制。从技术上讲,这种方法实现的原理是:通过在整个屏幕区域上呈现一个单一而独特的信号频率,并且在短时间内保持图像静止。然后,由接收器负责从解调的音频信号中抽样,并对数据加以解码。通过使用少于40种不同的音频频率,我们就能够将简单的文本数据(英文字母和数字)译成电码。这种方法对于传输短文本信息而言非常有效,比如标识符、 key-stroking、keep-alive消息和通知。在我们进行的广泛测试过程中,这种方法被证明具备最强的抗干扰能力、最大的接收范围和最精确的数据恢复率。在得到这些有效结果之后,我们试图使用 256 种不同的音频音调对任意二进制数据进行调制,从而产生了每字符11000/256≈40Hz的频率间隔。我们的测试获得结果是在解码器端出现了更高的错误率和模棱两可的解调情形。其主要原因是FM 接收器中数字信号处理 (DSP) 组件为了提高听觉体验使用的是自适应噪声滤波、均衡以及其他技术。这些方法正在改变相邻的音频频率,以对其加以统一或将其作为噪声加以过滤。由上所述,我们采用DTMF调制完成了对二进制数据的编码。
4.2.2 DTMF(16×16)。
在双音多频模式中,两个音频信号的组合表示为一个字节的数据。这一点类似于使用两个十六进制数字。从一个16 x 16 频率对(包含 256 个不同组合)的表格中选择音调。表中的列处于 600Hz-5000Hz频率范围内,表中的行处于6000Hz-10400Hz 频率范围内。例如,包含数据值为134的一个字节由位于第8行 (⌊134/16⌋= 8)和第6列 (134 mod 16 = 6)的各一个音调同时呈现。两个调制音频信号的传输是通过在逻辑上将屏幕分成两半,并在每一半上传输一幅不同的图像实现的。虽然这导致传输范围和接收质量出现些许损失,但获得了更高的数据传输速率。
4.3 AirHopper接收器—音频信号中的数据解调
移动电话上的恶意代码的一个基本组成部分是FM音频录音、数据解码或录音转发至攻击者的能力。下面的章节中介绍了重要的实践应用细节。
4.3.1 android FM音频信号输出重定向
为了处理FM音频信号,应对其进行记录或保存。 在Android API升级至API18(Android 4.3, Jelly Bean MR2)之前,FM 收音机无法记录录音输出。从Android框架中反汇编MediaRecorder 类文件 (MediaRecorder$AudioSource.smali) ,我们发现了如何通过使用 AudioRecord 对象(audioSource=8 且sampleRateInHz = 44100)启用FM无线电录音的记录功能[16]。
4.3.2 音频采样
现代手机支持的最大音频捕获采样率为44.1KHz 。根据奈奎斯特-香农采样定理,如果采样频率大于被采样信号最高频率的两倍,则有可能实现信号的完美重建。因此,我们能够以20KHz的最大频率来完成采样过程。20KHz是人类在一般情况下可听见的最高频率,因而对于大多数的音频材料来说,44.1KHz只是一种逻辑意义上的选择。使用Android系统的录音 API可以将无线电信号记录并保存在内存缓冲区中,每个样本采用的是16 位的脉冲编码调制(PCM)格式。
4.3.3 信号处理
快速傅里叶变换(FFT)可以将缓冲器从时域转换至频域。由于每个数据块有1024个样本,我们生成一个可以描绘记录信号频谱的离散函数,其中每个指数的幅值表示44100/1024~43Hz的频率范围。根据所采用的调制方法(A-FSK或DTMF),频谱预计将包含一个或两个不同的振幅。在DTMF调制过程中,应有一个频率指数在每侧频谱范围内(600Hz-5000Hz和 6000Hz-10400 Hz)具备明显较高的振幅。然后将频率指数与DTMF频率表相对比,用以恢复所传送的字节。
4.3.4 不使用耳机情况下的要求
一些型号的手机需要用户在连接耳机的情况下才能够打开收音机。由于耳机线被用作FM接收器芯片的天线,因此耳机线必不可少。如果不使用天线,FM接收器的接收质量便会较差。虽然从技术上来说手机在没有天线的情况下仍然有可能可以收到信号,但使用耳机线能够确保获得良好的用户体验。我们发现这种限制是由供应商在软件层实现的,可以采用一定的方法将其绕过。我们使用baksmali反汇编程序对三星 Galaxy S3 框架文件 (/system/framework/framework2.odx)进行了反汇编[17] 。在服务文件(FMRadioService)中,mIsHeadsetPlugged 变量被初始化为“true”,耳机检查方法 (”access$302)被修改返回为“true”。无论现实是否有耳机相连,这种做法可以在应用程序层通过手机的耳机检查程序。
4.4 传输协议
AirHopper 采用两种传输模式:原始模式和结构化模式。在原始模式传输中,数据流取自于字节数组,并按顺序加以传输。如果信号出现损失或中断,接收器无法察觉到这一点。按顺序传输原始数据适用于文本信息(如按键记录和文本文件)或短信号和通知消息。即使缺失某些字符的情况下,这样的信息依然有价值。在二进制数据传输中,当重点是要确定传输错误并知晓实际收到了哪部分文件或数据时,应采用结构化协议。传输标题包括(1)一个初始同步脉冲(2)数据包序列号(3)数据包大小(4)数据本身以及(5)一个校验和。通过搜索同步脉冲,AirHopper 接收器可以很容易地检测出使用的是哪种协议(原始还是结构化)。
发表评论
您还未登录,请先登录。
登录