我想知道是否通常可以将可执行代码注入到 PDF 或 JPEG 等文件中,或者应用程序中是否存在某种安全漏洞?
如果是这样,人们将如何做到这一点?
我经常听到人们通过打开包含恶意代码的 PDF 被感染,这就是我问的原因。
我想知道是否通常可以将可执行代码注入到 PDF 或 JPEG 等文件中,或者应用程序中是否存在某种安全漏洞?
如果是这样,人们将如何做到这一点?
我经常听到人们通过打开包含恶意代码的 PDF 被感染,这就是我问的原因。
应用程序中一定存在一些安全漏洞。
像任何非常简单和常见的 .txt 文件一样思考:如果您使用十六进制查看器或精心设计的文本编辑器打开它,它应该只显示文件内容,没问题。
然后考虑以某种方式处理文件,而不仅仅是显示内容。例如,读取文件并解释它的值。如果没有正确完成,这可能会导致执行文件内的字节。
例如:如果你设计你的应用程序来加载整个文件并显示它,但不知何故你的程序中有一个变量,它只保存 256 字节。这可能使您读取(和写入内存)的字节数比您的应用程序预期的要多。并且,想象一下,在您的应用程序中,将有任何命令跳转到内存中的位置 NNNN 并执行那里的内容,但是由于该内存位置是用您的程序没有预料到的数据写入的,那么您将执行一些应该执行的代码'不在那里,并且是从你的文件中加载的......
那是缓冲区溢出攻击。
如果应用程序未正确加载数据,pdf、jpg、mp3 等也会发生同样的情况。
另一种可能性:出于任何其他原因,应用程序(或它加载以读取数据的某些 DLL)执行数据的某些部分,而不是读取它。如果您知道触发此行为的命令(或数据)是什么,您可以将这些命令放入数据文件(如 pdf 文件)中,以便应用程序执行它。
PDF 病毒:阅读此站点: http: //lwn.net/2001/0809/a/adobe-pdf-vul.php3以了解使用 PDF 文件传播的一种病毒。
一段代码的执行有两种方式:有意和无意。
故意执行是指应用程序读取文件并且应用程序根据文件内容执行某些操作。读取文件称为解析文件。
无意执行是指解析器读取了它不应该读取的内容,而不是中断,而是继续执行。这种无意的执行是一个漏洞,因为如果我可以让解析器执行某些东西,我可能会让它执行一些恶意的东西。
要回答您的问题:
一般可以吗?这完全取决于文件格式和读取它的应用程序。有些文件旨在允许可执行的内容,有些则不允许。有些应用程序允许执行代码,有些则不允许。如果应用程序不支持它,则必须存在要执行的漏洞。
这完全取决于文件格式,但通常是通过查找文件解析器逻辑中的缺陷来实现的。
pdf、Word 文档等的关键问题是当前标准允许宏和可执行代码。(在我看来这是一个致命的缺陷,但我喜欢电子邮件只是文本......)
宏执行阶段通常是攻击的目标,因为它提供了一种运行代码的方式。攻击者只需要弄清楚如何绕过现有的控制,这可能是缓冲区溢出或其他攻击机制。
我不同意“应用程序中一定存在一些安全漏洞”的答案
一般是不正确的。大多数违规行为源于访问文件(不仅仅是提供/拥有它们)并暗示人们相信他们访问的东西与他们的真实情况不同,例如,更大的图像,而它是可执行代码或与一个链接(已知和可信) ) 网站描述,而它链接到另一个,具有恶意意图等。
我建议阅读: