专栏名称: 看雪学苑
致力于移动与安全研究的开发者社区,看雪学院(kanxue.com)官方微信公众帐号。
目录
相关文章推荐
国资小新  ·  印记|无惧无畏 高压线上的电力巾帼 ·  22 小时前  
国资小新  ·  印记|无惧无畏 高压线上的电力巾帼 ·  22 小时前  
天天IC  ·  PC巨头,研发部门首次裁员! ·  2 天前  
天天IC  ·  PC巨头,研发部门首次裁员! ·  2 天前  
JRS玩机社  ·  AMD更新24.9.1驱动:集成AFMF ... ·  5 天前  
JRS玩机社  ·  AMD更新24.9.1驱动:集成AFMF ... ·  5 天前  
山东高速信息集团有限公司  ·  信息集团参建的济南绕城高速机场段、京台高速台 ... ·  1 周前  
山东高速信息集团有限公司  ·  信息集团参建的济南绕城高速机场段、京台高速台 ... ·  1 周前  
51好读  ›  专栏  ›  看雪学苑

硬盘 LED 灯中泄露的数据 (一)

看雪学苑  · 公众号  · 互联网安全  · 2017-06-22 18:03

正文


摘要

在本文中,我们将会展示一种如何从气隙系统(无外网连接) 的电脑中偷偷将数据泄露给攻击者的方法。我们的方式是利用目前大多数电脑(台式机、笔记本、服务器)中的硬盘 LED 灯来传输数据,通过使用恶意软件来间接控制硬盘的 LED 灯, 快速地对其进行开关操作(每秒闪烁 5800 次——一个超过正常人肉眼可辨的速度), 从而将敏感信息通过 LED 灯的信号来加密发送,并由远程的摄像头或光传感器来接收信息。

与传统的 LED 灯发送信息相比,我们的方法由于它的隐秘性而更为特殊, 硬盘的 LED灯本身会不停地闪烁,因此用户不会对其闪烁频率的变化产生怀疑。 我们通过讨论攻击的场景并介绍攻击的必要技术和背景知识, 展示了多种获取数据的方法和无需内核组件的恶意软件。在我们的评测中测试了不同物理特性(红、蓝、白三色)的硬盘 LED灯和多种信号接收器(远程摄像头、高清摄像头、安全摄像头、手机摄像头、无人机摄像头、光学传感器灯) 。

最后,我们探究了如何应对此类攻击的硬件与软件防护方法。我们的实验表明在气隙系统的电脑上,根据接收器以及信号传输的距离,硬盘 LED灯最高可以达到每秒 4000 比特的敏感数据传输速度。值得注意的是,这已经是十倍于现有光学泄露信息渠道的速度了。这个速度允许快速地发送加密密钥,键盘使用记录,文本和二进制文件。


I. 简介

在当今信息时代,网络攻击者已经证明了他们可以通过社会工程学、 0Day 漏洞来
渗透进入许多被认为绝对安全的组织机构的网络,并绕过例如 IDS/IPS(入侵防御检测系统)、 防火墙、 杀毒软件等防御措施。因此涉及敏感信息的计算机会采用气隙系统的组成来避免被攻击。气隙系统指的是计算机内部网络从物理和逻辑层面与外界如英特网之类的网络相隔离,一般军事防御系统、重要基础设施、银行和金融区域以及其他工业设施[1][2]采用这一系统。

尽管处于高度隔离状态,气隙系统的电脑仍有可能遭到入侵。在近几年里已经有
关于气隙系统的内网被入侵的研究公布。攻击者采用混合的攻击方式(例如供应链攻
击、恶意内部人员和社工等方法)来入侵这些系统,最著名的例子有 Stuxnet[3]和
agent btz[4],还有被公开的其他攻击案例[5][6][3][7][8]

A. 从气隙系统的电脑中盗取数据

尽管近年来多次出现了渗透气隙系统的电脑的案例, 但是从没有网络或物理接口
的电脑中渗漏数据仍被认为是具有挑战性的工作。过去的几年里提出了多种无需网络
的从气隙系统的电脑中发送数据的隐秘渠道:例如已经被广泛研究过的电脑元件散发
的电磁辐射——恶意软件通过控制不同电脑元件的电磁辐射(包括显示器、电线、处
理器和其他外围设备[9][10][11][12][13]) 。同样还有通过超声波[14][15]和温度
[16]来发送数据的研究。

同样还有一些已被介绍的光学泄露方法。总的来说,已经存在通过植入控制硬件
LED 灯、键盘 LED 灯的恶意软件, 但这些方法由于容易被人注意到不正常的 LED 灯闪烁而不够隐匿。 正因为 LED 灯的光学信号被认为不够隐秘,使得他们还没有被众多研究人员注意到。

B. 我们的成果

在本文中我们展示了一种可以通过恶意软件操作当下绝大多数台式机与笔记本上
硬盘的 LED 灯来泄露气隙系统中数据的方法。 也就是一个能够通过操作硬盘 I/O 进程(例如读取与写入数据) 从而操控硬盘 LED 灯闪烁周期与速度的恶意软件,我们证明了任意数据都可以通过设定光学信号来发送出去。

与现有方法相比,我们的方法有着下列五种特点:

  • 隐秘性。直到目前为止, 考虑到键盘和屏幕电源的 LED 灯无规律变化的特性容易引起人的关注,还没有人研究过使用 LED 灯来泄露数据。与其相比,我们采用的硬盘LED 灯有着不同于键盘、显示器 LED 灯变化规律的特点,因此操控闪烁时间、速度不会引起多少人的关注。

  • 高速度。在我们的测试中,硬盘 LED 灯的速度可以调到一个较为快的速度(超过
    4000HZ) 。 因此我们能够用一个超过其他 LED 灯发送数据的方式来实现数据的传输。根据接收装置的能力,这个速度允许在几分钟(甚至几秒钟内)发送 4096 位的加密密钥。

  • 可视性。当硬盘 LED 灯在短时间内闪烁时,人的肉眼很难察觉到它的异常[17]更重
    要的是,肉眼无法看见高速(超过 400Hz)闪烁的 LED 灯,这使得它更为隐秘。

  • 通用性。我们只使用了可以在目前大多数台式机、笔记本和服务器中都具备的硬
    盘 LED 灯,无需任何特殊的硬件。

  • 权限等级。任意普通用户的权限都可以操作硬盘 LED 灯,无需操作系统内核的
    特殊组件。

本文其余部分的内容结构如下:第二部分中我们将会展示相关工作,第三部分介
绍常见的攻击方式,第四部分介绍技术的背景知识,第五部分讲述信号传输的内容原
理,第六部分展示测试内容与结果,第七部分阐述对应的防范措施,第八部分讲述我
们的结论。


II. 相关工作

在过去的 20 年间,已经有多种从隐秘的渠道发送气隙系统中的数据的研究。这些
方式可以归纳为电磁辐射、音频信号、热能信号和光学信号。在电磁辐射的情境中,
攻击者使用多种电脑元件来生成电磁辐射信号来发送数据。

A. 电磁信号

早在 1998 年, Kuhn 和 Anderson[10]就介绍了一种通过隐藏的显示器电磁信号发
送数据的‘软件风暴’攻击方式。 AirHopper[9]在 2014 年又展示了一种通过从显卡发
送 FM 信号给附近手机的恶意软件攻击方式。 2015 年出现的 GSMem 恶意软件[13]允许电脑内存产生电磁信号来发送数据。近段时间,研究者展示了 USBee 和 Funthenna[18]利用 USB 和 GPIO 产生的电磁信号来发送数据。 Matyunin et al 使用移动设备的磁场传感器来作为接收器[19]其他电磁信号的传输方式则在[20]中有所提及。

B. 声波/超声波

学术界已经讨论了多种使用超声波从气隙系统的电脑中发送数据的方法。
Hanspach 和 Goetz[21]展示了一种使用笔记本音响和麦克风,接近超声波的秘密发送方式。这种使用人耳无法听到声音的方法也被 Lee et al[22]在多种笔记本、手机的场景[23]中测试过, Guri et al 展示了 Fansmitter[24]和 Disfiltration[25]——一种新的,无需音响或音频设备,即可通过音频信息渗漏数据的方法。这种方法使用了电脑风扇和硬件驱动来制造特定的音频信号。

C. 热能

BitWhisper[26]是一个通过控制电脑的热能释放和主板内置的温度传感器,允许气
隙系统内多台电脑发送信息的攻击软件。

D. 光学信号

在光学领域, Loughry 和 Umphress[27]以及 Sepetnitsky 和 Guri[28]讨论了由键
盘以及屏幕 LED 光学信息泄露数据的潜在风向。他们通过植入恶意软件来控制键盘以及显示器的 LED 灯来发送数据给远程摄像头。这些方法的主要问题是键盘和显示器的LED 灯不频繁闪烁,因此不够隐匿。用户很容易就会发现这些通讯信号。 Shamir et al 展示了如何使用恶意软件利用闪烁激光和一体式打印机来从气隙系统发送数据[29]然而这个方法的成功行和隐匿性取决于用户的疏忽大意。最近 Lopes 和 Arana[30]展示了一种使用恶意存储设备来利用红外 LED 灯,从而盗取气隙系统数据的方法,在这个方法中,攻击者可以以 15bit/s 的速度获取存储设备中的敏感信息(例如个人信息、加密算法密钥)攻击者可以不通过恶意软件来感染目标电脑,但必须插入具备红外 LED灯的存储设备。 Brasspup[31]展示了如何利用特制的 LED 显示屏来偷偷获取信息,他的方法需要移除显示器的极化滤波器,在实际攻击场景中几乎不可行。 VisiSploit[32]则使用称作‘隐形图像’的远程摄像头来获取显示屏中的信息,在这个方法中,需要有一个对着显示屏重新生成不可见条形码的摄像头。

表 1 总结了目前不同的气隙系统中发送数据的攻击方式,以及他们使用的信号带
宽和有效距离。

表 1 不同从气隙系统发送数据的方法和他们的有效距离

相比其他 LED 灯的方法,本文具有下述两种主要的优点:隐秘性和传输速度。

盘和 LED 灯的确会周期性的变化,但发送信号的变化容易引起他人的注意,而硬盘 LED灯周期性的变化(由于操作系统频繁的读写)和传输过程的频率变化(闪烁频率的变化)不容易引起他人的关注。我们测试的最大速度高达 4000bit/s,远远高于现有的方法。


III. 对手的攻击方式

攻击模式包括两个阶段:( 1)使用恶意软件感染目标电脑( 2)接受并解密该电脑硬盘 LED 灯发送的数据。

感染:就如这几年展示的各种感染安全网络中的计算机方法一样,攻击者可能通过供应链攻击、社会工程学技巧、预置恶意软件的硬件等方法来感染目标机器[34][35] [36]。恶意软件会收集用户电脑中的敏感信息(如按键记录、密码、加密密钥或文档等)最终它会使用特定的加密方式,通过闪烁的硬盘 LED 灯来发送二进制数据。

接收与解码: 攻击者常常需要一个电子摄像头或光学传感器来获取目标电脑面板的视野。我们列举了两类相关的攻击场景:( 1)内部恶意人员(又名邪恶女仆)攻击,攻击者携带隐藏的摄像头拍摄目标电脑和( 2)一个对着目标电脑监控的遥控摄像头或传感器[39]。

这里列举了各种在攻击中能够作为接收装置的相关设备。

  • 隐藏摄像头。一个能够看见电脑面板前侧的屋内隐藏摄像头。

  • 高清摄像头。一个位于室外,能够看见电脑面板前侧的高清摄像头(或者其他光学传感器)

  • 无人机摄像头。一个安装在通用无人机上,能够飞行在特定位置(例如窗外)看见电脑面板前侧的摄像头。 这类接收器也可直接获取少量信息(例如获取加密密钥)

  • 由内部人员携带的摄像机。一个站在电脑旁,能够看到目标电脑前面板,携带手机或其他可携带式录像设备(如隐藏相机)的人。

  • 被控制的安全监控。一个能够看到目标电脑面板前方的安全监控,在[39]中详细分析了这类威胁和针对视频监控、闭路电视和 IP 相机系统的攻击分析。

  • 光学传感器。一个能够感应硬盘 LED 灯的光学传感器,这类传感器一般为VLC( 可见光通信)和 LED 通讯器[40]值得注意的是,光学传感器比起传统的摄像头,能够以更快的速度获取目标 LED 灯信号。

图 1 攻击的样例。

一个隐藏在 8 米外的摄像头获取硬盘 LED 灯(图中红色 LED 灯)的信息

如图 1 所示,这是一个通过硬盘 LED 灯隐秘发送加密过的二进制信号的案例。一个隐藏的摄像头拍摄着包括 LED 信号在内的房间信息,然后攻击者将信号解密并重构成目标数据。


IV. 技术背景

LED 灯是一种发光二极管,即电流通过时发出亮光。 LED 灯被广泛用于众多电气设
备的状态指示灯,同时不同颜色、大小的 LED 灯也被用于广告装饰、家庭照明、汽车业以及交通信号灯等场合。它的波长(也就是颜色)由制作 LED 的半导体材料所决定。

通常来说, 磷化铟镓铝( AIGaInP)被用于制造红色、橙色和黄色的 LED 灯, 氮化铟镓( InGaN)则用于制造绿色、蓝色和白色的 LED 灯。LED 指示灯被广泛用于台式机和笔记本电脑以及他们的硬件中。电脑 LED 灯包括了电源、键盘的 LED 灯。许多主板都有内置的电源 LED 灯来监测是否存在硬件错误。

A. 硬件驱动的 LED 灯

硬盘 LED 指示灯在硬盘活动时(包括读和写操作)闪烁,图 2 是常见硬盘 LED 灯电路原理图,从技术角度来说台式机和笔记本的内置硬盘通过 SATA/IDDE 或其他接口(图 2-1)连接到主板上。主板的硬盘控制器通过标准的 2 孔硬盘 LED 灯延长线(图 2-2)来发送无论硬盘是在进行读还是写操作的活动时控制电脑前面板上的硬盘 LED 灯闪烁的信号。在一些大型的电脑(例如服务器电脑)上有着多个硬盘 LED 灯来分别表示不同的硬盘情况。通常外置硬盘和闪存也会有一个内置在闪存控制器上的LED 指示灯。

图 2 硬盘 LED 灯的电路原理图

在台式机中,硬盘 LED 灯位于前侧面板上。在笔记本中,则往往位于控制板的前方(键盘上方)或笔记本前侧。外置硬盘的 LED 灯则位于盒子的上方。 LED 灯可以是任何颜色,但大多为白色、红色、绿色、黄色或是蓝色。

B. 电路上的硬盘 LED 灯

硬盘 LED 灯通过 2 孔延长线连接到主板的电路中。通过两个条件来打开这一零件:
根据 LED 灯的种类,正向电压至少 2V,正向电流至少 20-130mA。数字输出口无法提供足够亮起 LED 灯的电流,因此需要一个叫做 LED 驱动的额外电路来满足运行需求。图 3列举了主板上常用的两种驱动电路。图 3(a)是基于连接到发射器设置上 NPN 传输器的电路,图 3(b)是基于一个放大器的电路。两个电路都能提供足够打开 LED 灯的电流。

图 3 两种常见的主板 LED 灯电路( a)一个常见的自偏压实现电路( b)可放大实现电路

图 3( a)的电路成本低于图 3( b)并且能够放大一定程度的电流(150-550)。图 3( b)的放大电路能够循环放大到 10^6,允许更高速度的输入信号。同时它只有两个输出电压( 5V 和 0V)这个电路能更好地处理信号干扰。


V. 数据传输

在这部分中,我们将会通过讨论信号的生成和不同的传输格式,以及包含的信息来展示信号传输的过程。

A. 信号的生成

我们通过操作硬盘 LED 灯的开关来发送数据。从技术角度来说,硬盘 LED 灯是由主板直接控制的,我们发现没有通用 API 接口来允许软件请求主板打开硬盘 LED 指示灯。因此我们采用对硬盘进行读写操作来间接控制硬盘 LED 灯。这些操作使得主板在特定时间内根据对存储设备进行读写的数据量来打开或关闭硬盘 LED 灯。表2列举了系统操作和对应的 LED 灯开关状态,可以看见进行 S 大小的操作量可以引起 LED 灯对应的打开时间 Ton,睡眠时间 Toff 对应硬盘 LED 灯关闭的时间 Toff。

表 2 信号时间

B. 数据加密

过去十年里已经研究了多种可见光信号传输的方法, 包括针对 LED—LED 通讯中不同的调整与编码[40][41][42]在我们的研究中采用了能够通过硬盘 LED 灯发送二进制数据的三种基础加密格式(1)振幅键控(OOK)(2)曼彻斯特编码(3)二进制频移键控(BFSK)

  • 1. 振幅键控(OOK)

    这是常见的幅移键控中最常用的方式。将信号的持续时间转换为逻辑值 1,空缺的
    时间转换为逻辑值 0。在我们的案例中, LED 亮的时间 Ton 为 1,暗的时间 Toffee 为 0,在最简单的例子中 Ton=Toff。

  • 2. 曼彻斯特编码

    在曼彻斯特编码中每一个逻辑位都使用了两个物理比特位,其中 01 序列( LED灯暗—亮)为 0, 10 序列( LED 亮—暗)为 1。曼彻斯特编码通过发送相同数量 1 和 0 组成的序列解决了 LED 灯频闪的问题。曼彻斯特编码由于每一个逻辑位使用了两个物理位,因此传输速度是振幅键控的一半,但其由于传输的多余度而保证了信号的传输稳定性,因此在通讯中最为常用。

  • 3. 二进制频移键控(B-FSK)

    在这种加密格式中打开 LED 代表了逻辑位 1 和 0, LED 亮着的持续时间 Ton(S1)表示 1,而 LED 亮着的持续时间 Ton(S0)表示 0,每一个逻辑位的传输间都有一个固定的关闭 LED 时间 Toff。

C. 位框架

我们通过下列框架传输二进制数据。框架具有两种功能:(1)提供周期性的同步信号发送给接收者(2)提供简单的数据包错误检查机制。

我们采用了两种编码格式:(1)固定长度(2)可变长度

表 3 固定长度框架


表 4 可变长度框架

在固定长度框架(表 3)中,二进制数据通过小型固定大小的数据包进行传输。每一个包都由一个头文(8 位)一个内容(256 位)和一个校验块(16 位)组成。头文包含一个可变的八位序列(‘10101010’)用于接收者判断传输时间(Ton 和 Toff)的周期。同时头文还允许接收者判断信息的开头第一个包和其他因素,例如传输 LED 灯的颜色的=和传输速度。内容包含了一个 256 位的数据块,我们采用 16 位 CRC( 循环冗余校验)来避免数据错误, CRC 通过内容进行计算并添加在框架最后,接收者通过计算接收内容的CRC 与接收到的 CRC 进行对比,一旦 CRC 无法匹配则表明内容出现错误。在可变长度框架(表 4)中二进制数据通过可变长度的数据包进行船速,头文由 16 位组成来决定内容包的大小,每一个包中的数据大小可能都有所不同,最后添加 16 位的 CRC 校验块。

注意固定长度框架更加适合小规模固定大小的数据(例如加密密钥和密码)。而大量数据(如文件)的传输时则适合可变长度框架,因为它可以在几个包内发送整个传输过程的数据量,从而节约大量重复的框架头文。然而在特定情况下更大的报文意味着更大的浪费,因为一个字节的错误就可能影响到整个数据的内容。

D. 成果

我们创建了一个在 Linux 操作系统上的发送程序原型。由于读取操作不会留下任何文件系统的记录,因此使用读取操作来打开硬盘的 LED 指示灯。我们执行了一个执行寻址的 C 语言程序并使用了 fseek()fopen()和 fread()函数[43][44]我们还编写了一个使用 Linux 下 dd 指令集的 shell 脚本来执行一系列的硬盘文件操作(例如读取、复制)算法 1 展示了一种振幅键控信号的伪代码。

整个硬盘 LED 传输需要三个条件:获取决定传输时间 Toff(T0)的传输数据流大小以及决定传输时间 Ton(S)的读取操作量。首先是清除缓存区(第 2 行)接下来我们讲打开需要读取的硬盘(第 3 行)由于操作系统在读取硬盘时时以小的文件块来读取的,因此我们必须确保连续进行两个对硬盘不同块读取的指令,否则因为这个块已经位于缓存中,第二个读取操作将不能访问硬盘( LED 灯的活动)对于数据流中的每一个比特位,0 意味着不进行操作的时间 T0(第 8-9 行)而 1 意味着进行读取操作,并进入下一个块(第 11-13 行)

E. 缓存机制

为了最有效的规范 LED 信号数据,我们需要精确控制读取操作的持续时间。也就是说,我们需要在设定的时间内没有延时地执行读取操作。现代操作系统在内核或驱动中采用了硬盘和文件的输入输出缓存机制来解决这一问题,这个机制能够捕捉导致LED 灯信号延时或无法连续的异常情况。为了能够高速无错的生成信号,我们必须避免任何导致读取过程异常的错误,因此我们采用/proc/sys/vm/drop_caches 来在发送信号前关闭硬盘的缓存,从而令内核清空页面缓存、元数据信息灯内容。同样我们还使用 hdparm 指令工具[46]来关闭硬盘的写入备份缓存机制。 在 shell 脚本中,我们使用具有 direct flag(直接操作数据输入输出)和 sync flag(同步数据输入输出) 的 dd 工具集。

本文由 看雪翻译小组 xycxmz 编译,来源 Cyber Security Research Center


如果你喜欢的话,不要忘记点个赞哦!


热门阅读文章:



更多优秀文章,长按下方二维码,“关注看雪学院公众号”查看!

看雪论坛:http://bbs.pediy.com/

微信公众号 ID:ikanxue

微博:看雪安全

投稿、合作:www.kanxue.com

推荐文章
国资小新  ·  印记|无惧无畏 高压线上的电力巾帼
22 小时前
国资小新  ·  印记|无惧无畏 高压线上的电力巾帼
22 小时前
天天IC  ·  PC巨头,研发部门首次裁员!
2 天前
天天IC  ·  PC巨头,研发部门首次裁员!
2 天前
全球局势战略纵横  ·  为何东风41引发新闻热炒?揭老美隐瞒的秘密
7 年前