我刚刚进入 RE 领域,大约一年前,我在课堂上了解了虚拟化加壳程序(如 VMProtect 或 Themida)。恶意软件真正与虚拟化加壳程序打包在一起的频率如何,解压缩它们以进行静态分析的最新技术是什么?
虚拟化包装器在野外有多普遍?
虚拟机在野外的使用
它们很少使用,甚至更糟(或更好),很少以有用的方式使用。
如何使用它们
通常,它是使用仅主函数的虚拟器或另一个二进制加壳器,这两种情况都不会阻止分析:如果绕过虚拟化加壳器代码,那么无论如何你都会得到原始的解压代码。
为什么它们不经常使用
- 它使目标变得臃肿和变慢
- 正确使用它们并非易事
- 根据他们(通常是盗版)许可证的水印来检测它们是相当普遍的,所以无论你虚拟化什么,它都会被特定的指纹检测到。
一个有意义的例子
AFAIK 唯一已知的恶意软件中虚拟化器(此处为 VMProtect)的智能使用是 Trojan.Clampi,Nicolas Fallière 为其撰写了一份白皮书,但并没有那么详细。对于这个,整个病毒体都被虚拟化了。
去虚拟化论文
- Rolf Rolles 的Unpacking Virtualization Obfuscators,OpenRCE博客条目
- sherzo 的内部代码虚拟器
我找不到这些(其他方面很好)论文的公共下载链接:
- Boris Lau处理虚拟化打包程序
- 振翔Jim Wan 的Themida的How to recovery virtualized x86 指令
在过去一年左右的时间里,我想我只遇到过一个使用虚拟化打包程序(在这种情况下为 VMProtect)的恶意软件样本。我查看的大多数示例都使用愚蠢的打包程序,它们可以轻松地从内存中转储原始 PE。我不会把所有的时间都花在研究恶意软件上,但我通常每周会查看几个潜在的恶意样本,只是为了对我所谈论的数量给出一些看法。另外,我似乎记得 SpyEye 作者使用 VMProtect 来保护恶意软件构建器,我不确定其他销售此类工具包的人是否也使用过它。我听说 Citadel builder 有一些非常粗糙的保护,但我不确定它是什么。
关于您问题的第二部分,我不是专家,但我想到了几个网站,可以检查您是否有兴趣尝试学习解压缩这些东西。 这个站点有一些关于拆包各种东西的帖子,包括 VMProtect 和 Themida。我没有特别浏览这些帖子,只是注意到它们在那里。如果您有兴趣查看其中一些,我认为tuts4you.com上也有一些教程涉及这些特定包装器的某些版本。
对于您问题的第一部分:这实际上取决于域。利用基于虚拟化的加壳程序的恶意软件样本通常很容易检测,从恶意软件作者的角度来看,这是一个缺点。如果避免检测至关重要,尤其是在您的样本可能是自定义的有针对性的攻击中,那么虚拟化加壳程序就不是一个好主意。我认为这就是为什么只有很少的样本使用它们的原因。在过去一年左右的时间里,我只见过一个(themida protected)。