查看: 2364|回复: 16
收起左侧

[一般话题] MMPC病毒播报:集成了UPX壳的恶意软件

[复制链接]
飞霜流华
发表于 2011-6-30 14:34:23 | 显示全部楼层 |阅读模式
本帖最后由 wy1091727248 于 2011-6-30 16:19 编辑

昨天去看了MMPC的blog,看看那些最新病毒报告,想到这些报告反应了近阶段MMPC的重点所在,突然想和大家一起分享一下,今天第一次,以后这件事不出意外,我会做下去,想兴趣的也可以来帮我
好了,现在开始吧,翻译在原文后面~~
Malware packer integrates with UPX
Recently while I was analyzing a bunch of samples packed by custom packers, one of them struck me as a bit different than any others I saw before. At first glance, the outer layer of packing is a UPX stub, which is commonly used in malware. Especially when combined with a custom packer, UPX can provide an excellent compression ratio.
Since it's packed by UPX, I first unpacked it with a static unpacker and examined the dump. The heavily obfuscated code at the entry point easily leads me to think there is another layer of packing, so let's trace a bit to see what happens. The inner packing eventually ends up with a dead loop, which is calling Kernel32!GetUserDefaultLCID in each iteration.

From the above figure, it's very clear that this is a closed loop without an exit condition and the code is mainly useless. But the blackbox analysis shows it's actually doing something. Going backwards to the entry point, I carefully look through the code and find two interesting spots.

Although there is plenty of code before the 'or eax, eax' instruction in Figure 2 above, none of them change the value of register EAX, but this UPX packer assigns a pointer from the stack to EAX before jumping to OEP (see Figure 3 below). So, on the versions of Windows where the register EAX is zero when the file loads, if the file is unpacked and then run, the sample will know it and jump to the closed loop.

Another code snippet from the inner packer does additional checks against the presence of UPX. To satisfy this check, the EAX must equal to ESP + 0x11C, which matches the EAX value initialized by the UPX stub code.

If either of the checks fail, it leads to a dead loop or an unhandled exception. Now we know that to debug or emulate this sample, the UPX stub code can't be skipped by a static unpacker. By bypassing or including the UPX stub code in the execution, the malware underneath is finally revealed to be a member of the Bamital malware family. I also compared the size of UPX, packed and unpacked, and notice a big difference in file sizes, so I decide to dig more. The encrypted file underneath occupies a big portion of the file and looks to be filled with a lot of padding. By looking through the encryption this packer uses, it's clear that it appends tons of useless padding bytes (0x6A in this case) to the compressed code and re-orders the whole buffer, so that the compressed code blends into the padding, making it look like junk data that can avoid entropy checking and other similar techniques.

The malware author may have tried out this technique to avoid detection, but we're on to them. With our antivirus products such as Microsoft Security Essentials, this trick is handled well and we detect the malware underneath as Trojan:Win32/Bamital.I.

翻译:
最近当我分析一群自定义包装的样品,其中一个吸引了我,它与我以前见过的其他任何样本都不同。第一眼看,包装的外层是 UPX 存根,这常被用于恶意软件。特别是当与自定义包装相结合,UPX可以提供极好的压缩比。
因为它由UPX包装,我先解压缩到静态的文件,再检查。在入口点严重模糊处理的代码,很容易造成我认为还有另一层的包装,所以让我们跟踪定位,看看会发生什么情况。内部包装的最终以一个死循环结束了,每次迭代叫Kernel32 !GetUserDefaultLCID。

从上面的图中,很清楚在这封闭不退出条件的情况下,代码是无用的。但黑匣子分析显示它确实在做一些东西。回到入口点,我仔细看代码,找到两个有意思的地方。

虽然在上面图 2 中有很多的代码之前有 “or eax,eax” 指令,但他们都是不更改值的寄存器 EAX,但此 UPX 封隔器在跳转到OEP(请参见下面的图 3)前指定一个指针从堆栈到EAV。如此,寄存器 EAX 是零文件加载时的 Windows 版本,如果该文件是解压缩,然后运行,此示例将知道它,并跳转到封闭环境。

另一段代码内的封隔器对 UPX 的存在没有额外的检查。为了满足这种检查,EAX 必须等于 ESP +0x11C,与由 UPX 存根 (stub) 代码初始化的 EAX 值匹配。

如果任一检查失败,它会导致一个死循环或未处理的异常。现在我们知道,调试或效仿此示例,在静态时UPX 存根 (stub) 代码不能被避免跳过。通过绕过或执行包括 UPX 存根 (stub) 代码,下面的恶意软件是最新透露的Bamital 恶意软件家族的成员。我也比较了的 包装与解压缩的 UPX的大小、,并注意很多不同大小的文件,所以我决定去挖掘更多。加密的文件下面占用了大文件的一部分,看起来像是充满了很多的铺垫。通过查找封隔器使用的加密,很显然它追加了吨的无用压缩代码来填充字节 (在本例中的 0x6A) 和 re-orders 整个缓冲区,以便压缩的代码看起来像融为一体的空白,使它看上去像垃圾数据,可以避免熵检查和其他类似的技术。

恶意软件作者可能有试用这种技术来避免检测,但我们也回应了他们。使用防病毒产品如MSE来处理好这种伎俩,我们检测到的恶意软件为Trojan:Win32/Bamital.I.

ps:终于第一次弄好了,英语荒废了,远不如前,大家凑活着看吧,有不对的地方欢迎指正。明天c语言考试,先看会书去

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
一晴空
发表于 2011-6-30 14:49:45 | 显示全部楼层
前排支持,这是微软对壳的查杀的一篇资料吧微软用户表示无压力
飞霜流华
 楼主| 发表于 2011-6-30 14:54:08 | 显示全部楼层
一晴空 发表于 2011-6-30 14:49
前排支持,这是微软对壳的查杀的一篇资料吧微软用户表示无压力

铁定没压力,要是哪天微软对壳的应对能力能像大蜘蛛一样就好了
一晴空
发表于 2011-6-30 15:18:38 | 显示全部楼层
本帖最后由 一晴空 于 2011-6-30 15:19 编辑
wy1091727248 发表于 2011-6-30 14:54
铁定没压力,要是哪天微软对壳的应对能力能像大蜘蛛一样就好了


那啥,什么时候协助你调整翻译~~~最近没时间不过~~~另外题目有点怪,官方的解释不是“恶意软件集成了UPX壳”吗?
飞霜流华
 楼主| 发表于 2011-6-30 16:09:34 | 显示全部楼层
一晴空 发表于 2011-6-30 15:18
那啥,什么时候协助你调整翻译~~~最近没时间不过~~~另外题目有点怪,官方的解释不是“恶意软件集成了UP ...

packer是包装的意思,integrate是(使)结合的意思,我本来也想翻成壳,后来bing了一下,就这个翻译,想想,还是这个翻译吧,自家的东西,总不会太离谱~
carlcai
发表于 2011-6-30 16:54:23 | 显示全部楼层
楼主继续努力啊呵呵,难得看到微软的杀毒报告。不错。看的我头晕。
驭龙
发表于 2011-6-30 17:32:38 | 显示全部楼层
carlcai 发表于 2011-6-30 16:54
楼主继续努力啊呵呵,难得看到微软的杀毒报告。不错。看的我头晕。

像这种报告MMPC一个月要发7-9篇,其实这些东西没什么用的。拿这篇文章来说,两天前刚发出来时,一晴空,就问我要不要发这个,我看了一下,这个没什么用,就没有让一晴空发,因为对我们毫无疑义。

PS:你的头像现在真的很特别,我还是喜欢你之前的头像,呵呵

飞霜流华
 楼主| 发表于 2011-6-30 17:46:30 | 显示全部楼层
zdshsls 发表于 2011-6-30 17:32
像这种报告MMPC一个月要发7-9篇,其实这些东西没什么用的。拿这篇文章来说,两天前刚发出来时,一晴空,就 ...

我也知道这个东西似乎意义不大,而且晕得很
不过一来这个作为MMPC的病毒报告,我翻译出来也只是想让大家看看最新的动态,权当娱乐一下,二来今天我去茶社,人家逮着我就说MSE区人好少,搞得我好不尴尬所以我就把这个发了出来。
我想着先发几次看看反响,假如不错的话,做成一个系列,日后想起来,内心还是有点自豪的嘛
ps:早点回来,我等着你带来的神秘礼物
beiluoshimen
发表于 2011-6-30 18:17:59 | 显示全部楼层
wy1091727248 发表于 2011-6-30 17:46
我也知道这个东西似乎意义不大,而且晕得很
不过一来这个作为MMPC的病毒报告,我翻译出来也只是想 ...

因为微软动作实在太慢而且MSE没什么可玩性。。等3。0出了我才会继续用。。现在诺顿中。。
hj5abc
发表于 2011-7-1 11:56:12 | 显示全部楼层
虽然说这篇文对用户不是那么大的作用

但侧面反映出,分析师每天分析大量样本还要脱壳,工作量很大,像机器自动提取或直接带壳入库比如小红伞,就省下很多工作量,但可能换来的是不能很好地查杀变种。

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-11-24 10:29 , Processed in 0.138831 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表