恶意勒索软件使用宏攻击正在呈现增长之势,我们最近在博客中心也进行了报道,分别是 这里 和 这里 。现在 McAfee 实验室正在研究一种新的恶意宏变种,可以在一定程度上识别虚拟机,沙箱等机制的检测。
在今年 3 月早期,我们就已经发现了恶意宏使用新的高混淆算法保护自己免于被静态以及传统的反恶意软件技术检测到。这些算法改变频率不会很大;我们注意到算法的更新大概是一个月一次。这么慢的更新速度也暗示了作者在软件上也只增加了很少的变化。目前为止,我们已经发现了三种混淆算法。而在今年 4 月中旬的事件是我们比较感兴趣的,下面是我们的分析。
这些变种的恶意宏不仅具有高混淆技术,而且有好几层外壳。除了混淆本身,宏本身的功能也是互相分散的。我已经将混淆算法转化成了 python 语言,躲避检测技术的脚本转化成了 VBA 脚本这样会更容易理解点。
下面是传入函数的混淆字符串:
等价的 python 脚本来反混淆字符串:
恶意软件发送一个假冒的 MS 2016 屏幕来诱导用户打开宏:
我们的分析显示,这是一个知名的黑客创建的,因为它和早期的版本“ Donoff ”相似。哪个版本也发送了如下相似的信息。这就意味着这次的事件也来自于相同的组织。
下面的流程图显示是如何躲避检测的:
我们在宏中发现下面的代码检测username和hostname。如果usename是USER,hostname是HOST,那么代码将不会执行。因为大多数蜜罐技术使用的用户名就是User和Host吸引零day的恶意软件。作者使用这个方法躲避零day攻击。
为了避免被安全人员分析,作者接下来做的事避免自己的代码在虚拟机上执行。代码如下:
由于主要依靠垃圾邮件和钓鱼邮件来下载宏,作者需要渗透进像邮件扫描以及入侵检测类的产品。下面的代码检测是否存在类似Snort,Suricata,Wireshark的设备。
发送 payload 的妥协网址
这些作者妥协一个合法的网站来传递他们的 payload ,本例中的合法网站的地址:
http://soc[xxxxx]it.com/system/logs/office.exe
在我们的分析中,这个硬编码的链接发送下面的文件,暗示作者依然在准备环境并没有卸载网站上的 payload 。( Intel Security 联系了网站的所有者)
我们发现这个文件有点奇怪:作者设置了一个特定文件路径的程执行条件,即使之前的一系列躲避技术返回值为 true 。如果恶意文件在 “<random_number>_<country name>” 文件夹执行,即使存在虚拟机和动态检测也依旧会执行。检测“ <random_number>_australia ”执行路径的代码如下所示。目前我们发现的是澳大利亚和美国: