使用LimeSDR在TempestSDR上进行TEMPEST攻击窃听屏幕画面实验指南

TEMPEST攻击背景&前言

  1985年,荷兰计算机研究员Wim van Eck首次公开了非保密的窃听电视机画面的技术,仅使用一个能够接收无线信号的电台和一个八木天线,做到了数百米之外采集一台CRT电视机的电磁泄漏信号,并恢复出了电视机上的显示内容。这种攻击被称作TEMPEST攻击,中文译为瞬变电磁脉冲发射监视技术。然而随着显示技术的发展,CRT显示器早已是历史,当年的攻击方式也无法对现代的设备起效。




  2014年,“Remote video eavesdropping using a softwware-defined radio platform”一文提出了使用SDR设备即可还原由VGA或HDMI数据线连接的现代显示器上的画面。这项开源工作叫做TempestSDR。然而,最早发布的版本需要32位java、MinGW和msys等,编译起来比较复杂。2017年有人发布了在win10上无需编译的版本,也不需要额外的环境,可支持HackRF、RTL-SDR、airspy、SDRplay、usrp等设备。
  我在尝试使用TempestSDR的时候走了一些弯路,费了一些不必要的麻烦,最后意外发现LimeSDR虽然没在原作者支持的设备中,但是可以通过载入lime的ExtIO文件让TempestSDR支持使用LimeSDR。在此记录一下最简单的配置使用方法,以方便更多的无线爱好者。
  前排提示:请勿做出任何违反道德、法律的事情,技术应当用到正途

TempestSDR软件

  TempestSDR软件是一个可以通过软件无线电设备收集显示器发出的电磁泄漏,并从电磁泄漏中恢复出显示的画面内容的工具。原项目地址:https://github.com/martinmarinov/TempestSDR。但是现在我们已经无需在自己电脑上重新编译再使用,只需下载有人发布的可执行版本即可,下载地址为:https://github.com/eried/Research/tree/master/HackRF/TempestSDR。这里需要下载TempestSDR_win32_openjdk-14.0.1.zip这个文件:




  下载后解压。发布版本默认的SDR是HackRF,如果您想使用其他SDR请下载对应的ExtIO DLL文件,原作者给了4个dll文件,不过可能下载比较慢,我放到博客上提供下载地址:点这里
里面应该包含LimeSDR、airspy、HackRF、RTL-SDR、SDRplay五种sdr的ExtIO DLL文件。

替换配置文件

  由于我没有HackRF,所以没有办法尝试HackRF的使用。为了能够使用RTL-SDR或LimeSDR,需要替换TempestSDR.exe的配置文件。右键 -> 用WinRAR打开 ,这里只要用电脑上的压缩软件打开即可。




  打开以后可以看到ExtIO_HackRF.dll文件,右键删除,再将文件夹里的ExtIO_RTL2832.dll文件或者ExtIO_LimeSDR_1.07.dll拖进去即可。


运行TempestSDR

  此时我们就可以运行了~
  在进行窃听画面实验之前,先要寻找一下显示器的泄露频率位置。打开HDSDR或是你习惯使用的观察频谱的工具,将天线放在连接显示器的VGA或HDMI线旁边,找到如下图特征的信号:




  这样的梳状噪声就是由显示器视频线发射的,记住梳状噪声的大概中心位置的频率。关于这个频率的寻找方法我没有什么经验,看到其他成功做过这个实验的人分享的频率大概是在410M上下。我这里是445MHz左右。
  下一步关闭HDSDR,否则会因为设备占用不能使用TempestSDR。双击打开TempestSDR.exe,点击左上角 File -> Load ExtIO source



  弹出了熟悉的LimeSDR Device Controller界面。这里有几个点需要我们更改一下设置:
1. Antenna栏,天线换成LNA_L,这是因为显示器的电磁泄漏频率对应LimeSDR板子上的低频段(1.5G以下)
2. 采样带宽。我这里设置成10MHz,效果比较ok。
3. 更改完以后点击Set。

  接下来在TempestSDR的界面上设置:
1. 选择你所进行实验的显示器的分辨率和刷新率配置。我这里用的是1080p分辨率 60Hz刷新率。下面的Width和Height是根据显示电路的时序对应的,对应的标准是CVT标准。
2. Lpass拖到最左边。
3. Gain拖到最右边。
4. Freq设置成前面记住的那个泄露频率

  点击Start,就可以看到效果了~




  so cool~

一些tips

  我手里有的sdr设备包括RTL-SDR和LimeSDR。RTL之所以没有写怎么用,一个是网上已经有针对RTL的相关教程了,我这里主要是提出之前没有人尝试用过LimeSDR做TEMPEST。另外是我尝试用RTL的时候,由于RTL的采样率实在是太低了,即使设置到2.8M,也比泄露的带宽更窄很多,所以我没有做到很成功的结果。

最后再次提醒:请勿做出违反道德、法律的事情!

Add a Comment

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