病毒如何在图像中存在?

我最近看了一个芬兰互联网安全专家的video。 在第十一分钟左右的时候,他谈到了隐藏在图像中的病毒,并在图像即将显示时执行。

我想知道他们在技术上如何做这样的事情,我的意思是如何执行 病毒 ,什么时候显示图片以及如何使图片不会以某种方式受到损害。 我以为计算机先看扩展名,然后用适当的程序打开它,让程序自行运行(而且我不希望普通的图像查看器能够在自己的内部运行病毒)。 很明显,这不是那样的工作,但没有人问我可以帮助我。

那么,有谁知道他们是如何做到这一点的原则? 非常感谢你。

你的操作系统会select一个程序并要求它打开图像,这是正确的。 操作系统不会要求程序执行图像 – 这将是无稽之谈。

然而,图像是复杂的格式,通常包含元数据和其他部分不直接显示 – 你可以隐藏在那里的东西,而不会影响在屏幕上的图像。 所以潜在的图像文件中可能存在敌意的数据。

此外,程序可能有错误,特别是缓冲区溢出 。 简而言之,病毒可以通过将过大的数据放入元数据部分来利用这一点 – 比解码图像所需的程序要大。 内部缓冲区溢出并具有足够的技能,病毒编写者能够将可执行代码放入内存中的正确位置,以便解码图像的程序将最终执行代码。 这样一个像图片一样无辜和“死”的文件可以托pipe一个漏洞。

它不必显示,必须阅读。

操作系统可能有一个缩略图生成线程,将parsing它find的所有图像。 该代码中的缓冲区溢出将允许代码执行而无需用户干预。

这适用于具有任何forms的自动读取function的任何文件,提取mp3的属性,索引PDF等。

病毒可以信息存储在图像中,并且可以利用图像查看程序中的漏洞。 它不能“感染”一个图像,而是恶意地改变一个图像,使得有可能打开它的程序将被破坏并触发该过程中的一个漏洞。

如果病毒将图像格式不正确的数据用于利用程序X,并且在程序Y中打开图像,则很可能图像不会呈现,因为图像格式太差,或者呈现为无辜或随机的图像那个节目。

所有这些缺陷都不是图像格式,而是图像解码器的实现。