利用开源工具 TempestSDR 实现屏显内容远程窃取

你可能还不了解“TEMPEST”,它是用来窃取远程视频信息的一种基于软件定义的无线电平台技术,可被当做间谍工具包使用,用来针对某些目标电子设备的射频信号(声音和振动)进行分析,从而实现对目标电子设备的屏显内容窃取。由于所有电子设备都会向外发射一些无意的射频信号,通过对这些信号的捕捉分析,可以将其中的数据进行恢复显示,如可以捕捉电脑显示屏发出的射频信号,进而恢复显示出当前电脑屏幕的显示内容。(这里,要感谢RTL-SDR.com读者 ‘flatflyfish’向我们提供的如何在Windows系统上实现TempestSDR的安装运行指导)。

支持Windows系统的TempestSDR介绍

TempestSDR是一个开源工具,允许使用任何SDR软件,支持ExtIO(如RTL-SDR、Airspy、SDRplay、HackRF)接收捕获目标电子设备的无意射频信号,从而将目标设备的屏显实时图像进行复原;如果外加一个高增益信号的定向天线,甚至可以在几米之外成功窃取到屏显内容。

利用开源工具 TempestSDR 实现屏显内容远程窃取

尽管TempestSDR工具在多年前就已经公布,但却一直不能在Windows系统上用ExtIO接口正常运行, 在flatflyfish给我们的电邮中,他向我们展示了一个通过编译可正常运行于Windows系统的TempestSDR新版本。编译过程大概包含以下几个步骤:

1. 由于ExtIO接口只支持32位JRE,所以需要安装32位版本的JRE运行环境和JDK;

2. 需要安装Mingw32和MSYS,并把它们的bin文件夹添加到windows PATH的环境变量中;

3. 编译时,如果出现CC命令的未知错误,可以在所有makefiles文件顶部添加“CC=gcc”,当然,我也会从JavaGUI makefile中删除Mirics编译线,因为我们不使用其软件定义无线电sdr;

4. 原本JDK文件夹位于Program Files目录下,但makefile不支持文件夹中的空格格式且会出现错误,所以把其移动到另一个名字中没有空格的文件夹后,能成功编译运行;

5. 在编译之前,需要指定ARCHNAME为x86模式,例如:“make all JAVA_HOME=F:/Java/jdk1.7.0_45 ARCHNAME=X86”

按照以上步骤进行编译后,会得到一个可运行的JAR文件。当ExtIO接口和HDSDR能正常配合运行后,我就能用RTL-SDR连接显示器接收到一些目标屏幕的显示图像。

TempestSDR程序运行和实验效果

经过测试编译,我们形成了一个可运行程序,为了其他人的研究之便,我们把它上传到了github开源项目中,其中包含了makefile和一个不需要编译即可fhru使用的TempestSDR ZIP版本软件。请注意,如果要使用预编译的JAR包,仍然需要安装MingW32,且要将MingW / bin和msys /1.0/bin文件夹添加到Windows PATH的环境变量中。除此之外,还需安装32位JRE。另外,在至少一台Win 10主机系统上,我们还手动把“Prefs”文件夹添加到了注册表中的Java路径中。

我们使用了RTL-SDRs的ExtIO接口对该ZIP版本软件进行了测试,确认其能有效运行,能成功收到集成了DVI接口的老DELL显示器上的模糊图像内容。在尝试使用Airspy或SDRplay器件后,由于其带宽较大,大大提高了最终接收到的图像质量,其清晰度足可以在屏幕上显示出大量文字信息。Airspy式的ExtIO接口dll文件可从此下载获得,而SDRplay相应的ExtIO接口dll文件可从其官网下载。但注意,SDRplay最大频率为6 MHz,而RTL-SDR则为2.8 MHz,由于会存在采样丢失的情况,所以任何高于此两频率的SDR信号都不能有效接收到目标屏显内容。

要使用该软件,你还应该了解目标显示器的分辨率和刷新率。但是如果你没有方便检测分辨率和帧速率的自相关图,只需点击波峰即可。另外,你还需知道显示器的无意发射频率。如果这些你都不确定,则可以浏览SDR#寻找决定屏幕图像显示变化的干扰峰值,例如下图中,我们展示了具体的干扰情形。提高图像质量的一种方法是放大“Lpass”选项,并观察自动FPS搜索不会偏离你的期望帧速率太远。如果太过偏离,则需重新选择屏幕分辨率进行重置。

利用开源工具 TempestSDR 实现屏显内容远程窃取

我们测试的最理想效果是,利用Airspy窃侦到的有DVI连接的19英寸老式DELL显示器。另外一个是通过HDMI连接的一个新式的Phillips 1080p显示器,虽然其信号非常弱但仍然能得到较好的恢复图像,第三个为AOC 1080p的显示器,我们没有找到任何可利用的辐射信号。

当目标显示器和天线处于同一房间时,可能窃侦到清晰的目标显示器图像;而相隔邻近房间进行试验时,DELL显示器上的图像仍然可被接收到,只是比较模糊,如果换成高增益的定向天线,效果可能会好点。

利用开源工具 TempestSDR 实现屏显内容远程窃取

PoC视频

http://v.youku.com/v_show/id_XMzIwNTU0Mjk0OA==.html

如果你想了解更多关于TEMPEST和TempestSDR的信息,请参考Martin Marinovs的论文

*参考来源:rtl-sdr,freebuf小编clouds编译