我刚刚进入RE领域,大约在一年前的一堂课中我了解了虚拟包装器(例如VMProtect或Themida)。恶意软件实际上多久会被虚拟化打包程序打包一次?解压缩静态分析程序的最新状态是什么?

#1 楼

虚拟化程序在野外使用
它们很少使用,甚至更糟(或更优),很少以有用的方式使用。
它们的使用方式
通常,它是使用仅通过主函数或另一个二进制压缩程序的虚拟化程序,这两种情况都不会阻止分析:如果绕过虚拟化的压缩程序代码,则无论如何都会得到原始的未压缩代码。
为什么不多使用它们通常

会使目标target肿且变慢
正确使用它们并不容易
根据(通常是盗版)许可证的水印对其进行检测是很常见的,因此无论您要进行虚拟化的内容如何,​​都将通过特定的指纹对其进行检测。

一个有意义的示例
AFAIK恶意软件中唯一已知的虚拟化器智能用法(此处为VMProtect)是Trojan。 NicolasFallière为此撰写了Clampi白皮书,但没有那么详细。为此,整个病毒体都已虚拟化。
有关去虚拟化的论文

Rolf Rolles的拆包虚拟化混淆器,OpenRCE博客条目

sherzo的内部代码虚拟化器


我找不到这些(其他不错的)论文的公共下载链接:

鲍里斯·劳斯(Boris Lau)处理虚拟化打包程序的问题

>真相Jim Wan的Themida如何恢复虚拟化的x86指令




评论


在学术方面,另一个是:恶意软件仿真器的自动逆向工程

–布伦丹·多兰·加维特(Brendan Dolan-Gavitt)
13年4月2日在18:11

最新动态方法:cs.arizona.edu/~debray/Publications/ccs-unvirtualize.pdf

– lllllllllllll
2014年3月23日14:38在

#2 楼

我可以支持其他响应者提出的观点。在野外样本中,您很少会遇到代码虚拟化。

只需添加一下,这是Tora最近的案例研究,研究了FinFisher中使用的自定义虚拟化(对不起,直接链接到PDF) ,没有其他资源。)

这里使用的VM只有11个操作码,因此可以轻松理解此示例,并使用它来了解自定义VM背后的一些常见设计原理。

#3 楼

在过去的大约一年中,我认为我只遇到了一个使用虚拟化打包程序(在这种情况下为VMProtect)的恶意软件样本。我看到的大多数示例都使用愚蠢的打包程序,这些打包程序可以轻松地从内存中转储原始PE。我不会花所有的时间在研究恶意软件,但是我通常每周会查看几个潜在的恶意样本,只是为了对我所谈论的数量有所了解。另外,我似乎还记得SpyEye的作者使用VMProtect保护了恶意软件生成器,但我不确定其他出售此类工具包的人是否也使用过它。我听说Citadel生成器有一些相当粗糙的保护,但是我不确定它是什么。

关于您问题的第二部分,我不是专家,但是有几个站点想到可以检查您是否有兴趣尝试解压缩这些东西。该站点上有一些有关解压缩各种东西的文章,包括VMProtect和Themida。我没有特别浏览这些帖子,只是注意到它们在那里。我想在tuts4you.com上也有一些教程处理这些特定打包器的某些版本,如果您有兴趣检查其中的某些版本。

#4 楼

对于您的问题的第一部分:它实际上取决于域。利用基于虚拟化的打包程序的恶意软件样本通常很容易检测到,从恶意软件作者的角度来看,这是一个缺点。如果避免检测是至关重要的,尤其是在有针对性的攻击中,无论如何您的样本都可能是自定义的,则虚拟化打包程序不是一个好主意。我认为这就是为什么只有很少的样本使用它们的原因。在过去的大约一年中,我只看到一个(受themida保护)。