你真的能在图像文件中获得木马吗?如果有的话,它将如何执行?

Chr*_*isF 11 windows trojan images

我刚刚将几张 LP 数字化,需要一些封面艺术。我的扫描仪不够大,无法扫描相册,所以我从网上搜索并下载了图片。

当我这样做时,Avast 报告其中一个包含“Win32:Hupigon-ONX”木马并立即将其隔离。不想冒险,我下载了一个报告为干净的不同副本。

现在这只是来自 Avast 的误报还是 jpg 中真的有木马?

如果有,它将如何执行?

我必须承认,木马和病毒这方面一直让我感到困惑。作为软件开发人员,我总是检查数组的长度等。所以我不明白为什么会发生缓冲区溢出之类的事情。我知道人们确实会偷工减料并犯错误,如果软件足够复杂,这些错误可能会漏掉。

Dav*_*ett 11

图像文件中的漏洞利用了操作系统图像处理代码中的缓冲区溢出缺陷。几年前在 Windows 的 GDI 层中发现了几个重大的此类缺陷 - 补丁很久以前就发布了,但漏洞利用图像仍然存在,要么只是因为它们留下来,要么希望它们击中了尚未打补丁的机器.

这种安全漏洞的常见原因是在调用堆栈上的函数之间传递图像数据,并且没有正确检查数据的最大长度。这可以被巧妙构造的数据所利用,这些数据的大小和排列方式使其最终覆盖堆栈帧中的下一个代码(用其他代码覆盖它)或覆盖指向将用于调用其他函数的代码的指针或者当被调用函数返回到调用者时(覆盖这样的指针以使其指向漏洞利用代码),或者以导致另一个漏洞暴露的方式覆盖数据。确切的方法取决于所讨论的安全漏洞。

如果代码支持,现代 CPU 具有阻止大多数此类漏洞的保护措施。这是通过程序/库明确标记其页面中的哪些是数据哪些是代码来工作的 - 如果应该是数据(例如图像数据)中的任何内容尝试作为代码执行,那么 CPU 将引发异常。IIRC Vista 及更高版本和最新版本的 .Net 已重新调整其所有库以支持此保护,并且其他操作系统也支持它,但这并不能阻止所有此类漏洞,并且仅在明确打开时才有效(否则许多旧代码会中断)。


sle*_*ske 9

我必须承认,木马和病毒这方面一直让我感到困惑。作为软件开发人员,我总是检查数组的长度等。所以我不明白为什么会发生缓冲区溢出之类的事情。

好吧,欢迎来到现实世界;-)。缓冲区溢出 &c。可以在许多语言中发生(特别是在那些像 C 那样手动内存管理的语言中),并且当开发人员犯错误时,它们确实会发生。

虽然通常缓冲区溢出只会使程序崩溃(违反分段或类似),但它可能允许攻击者执行代码 -> 特洛伊木马激活。

例如:

http://www.microsoft.com/technet/security/bulletin/MS04-028.mspx

http://secunia.com/advisories/35216/

并解释这如何允许代码执行:

/sf/ask/32236361/