攻破物理隔离网的无线方法(5)– 巧用视觉的局限:显示器光学侧信道隐蔽通信

  这项工作是Guri于2016年发表的VisiSploit项目。相比前面分享的工作,这项工作并不是利用电路中的意外泄露,而是利用了人眼对能看见的内容存在局限性但可以通过摄像机等设备来观察到的方法。例如,快速闪烁的图像里包含一些隐蔽的信息,人眼基本无法分辨出,但是可以通过高速摄像机等设备来捕捉到从而在一个使用计算机的人面前隐蔽地传输了某些信息。
Guri这篇文章的干货不算非常多,后面我夹带一点我的发现:)

视觉的极限 — 闪烁和嵌入相近色背景

  对于人眼,当观察快速闪烁的图像时,如果在其中插入几帧带有隐蔽信息的图像,人眼几乎无法分辨出来。
显示器的工作原理在前面的TEMPEST攻击一文中有过说明,这里再提一下刷新率的概念:刷新率是屏幕一秒钟绘制所显示图像的次数。通常使用的显示器为60Hz,一些比较新的显示器刷新率可以设置为120Hz,144Hz等。
当每秒钟只显示几帧包含秘密信息的特定图像,能够做到人眼难以察觉的快速闪烁图像。当秘密图像的持续时间低于一定的阈值时,人类的视觉系统是无法观测到秘密图像的。

  另外,如果一副带有秘密信息的图像被嵌入在另外一副图像中,并且两幅图像的颜色十分接近,也很难让人眼发觉。
液晶显示器的每个像素点至少可以表示16777216种颜色,用RGB表示就是000000到FFFFFF这么多种颜色种类。在纯色背景中,例如在白色或者黑色的背景中嵌入相近颜色的图案,人眼几乎无法区分出来,下面是Guri给出的示例图:

在上面的黑色和白色图案中,各存在9个圆圈,圆圈的色彩强度逐渐变化,右侧的容易观察到,而左侧的难以辨认,最左侧的圆圈色彩强度和背景是一样的,所以无法区分。

隐藏秘密信息的步骤

  Guri设计的恶意软件VisiSploit中有三个主要步骤:
(1)定位一个明亮或者暗的位置成为亮区和暗区,来选定嵌入秘密图像的位置;
(2)将秘密图像做二值化处理;
(3)将二值化处理后秘密图像嵌入在选定的位置。
VisiSploit是在应用层和图形设备接口GDI之间工作的。GDI本身和设备的驱动程序交互,并处理图形计算,例如绘制图像、文本、填充形状等等。在这个恶意程序工作时,通过拦截和修改Windows OS GDI的函数,将要隐藏的秘密图像注入到显示内容中,并且定位到亮区或者暗区。




上图为VisiSploit的图像隐藏模块流程图。

将秘密图像二值化

为了能够在显示器屏幕上闪过秘密信息,Guri的方案是将秘密信息以二维码、文本或是图案的形式来传递的,并将这些图像做二值化,让其能够更好的在亮区或暗区嵌入。

上图为三种示例,分别是本古里安大学的一栋办公楼的平面图纸,英文字母文本,和一个二维码。

上图为一个二维码嵌入在屏幕内容上,是类似淡淡的水印效果。配合快速闪烁几帧这样的画面,达到人眼无法分辨的效果。
对于如何将秘密信息二值化的算法,Guri采用的叫做Otsu’s algorithm的算法,是一种cv算法,这里不多展开,在opencv里已经集成了相关函数threshold(gray, dst, 0, 255, CV_THRESH_OTSU),在matlab里对应的函数叫graythresh,可以直接调用。相关原理在这里Otsu算法

总结

这篇工作的主要内容就到这里,个人认为Guri的这篇文章的内容不是很多,文章也比较短,我也没有找到他们的演示视频等,或许这只是他们开发的恶意软件的一小部分内容放出来而已。这种将秘密信息隐藏在“众目睽睽”之下来隐蔽地传递信息的思路,据我了解一些做cv、云桌面、摄像头的公司有类似的功能,来做到防窃拍、反向追踪信息泄露源等目的,只不过是用水印等方式来实现的。
这里夹带一点我的私货。挺久之前发现了一个小小的可以做隐写的点,查了查也没见人发过文章或是做技术分享(大概率是我真的没找到,这个小点我觉得没可能是我第一个发现的吧…),我也不确定是否是个重复发现的过程。大概想法是利用不同的色阶差异来使得秘密信息在不同的情况下隐藏或者显示,下面贴个效果图:




上图,是通过调整色彩空间来实现的,在图像的下方,有一行文字:这段话在通过某类数据线后,不被显示。可能这样放上来很难看得清楚,我用手机拍一下就能看出来差异所在:



原理是由于VGA数据线和HDMI数据线采用的色阶方案不同所导致的,VGA对应的色阶是0~255,HDMI是16~255,存在16位颜色空间的差距,如果能够生成只由这16位颜色空间绘制的图像,就可以使得信息在一些显示器上看见,而在另外一些显示器上看不见。感觉没啥用…做隐写或是隐蔽通信都不太可控。。。。。。只能当作一个略有趣的东西分享一下。

实际上我发现在Guri的那个黑白亮区和暗区的示意图中也存在这样的现象:



可以看到,在我的笔记本电脑上和用HDMI线连接的显示器上,这个亮区暗区示意图看到的是不一样的。

小小的有趣的发现分享~

Add a Comment

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