斩断恶性病毒运输线:“动态防御”阻击脚本类下载器
-
作者:火绒安全
-
发布时间:2016-11-07
-
阅读量:793
一、前言
1、“脚本类下载器”成为的恶性病毒的最大传播者
众所周知,勒索病毒等新型恶性病毒,常通过邮件来传播,“邮件欺诈——病毒下载器——恶性病毒”是目前最常见的传播方式。
早期在互联网中传播的下载者病毒多以Upatre、Ogimant等PE病毒为主,但近年来,“脚本类”下载者病毒呈现激增的趋势。2016年初至今,根据“火绒威胁情报系统”的数据,我们发现脚本病毒与宏病毒所占的比重在不断加大,使用此类方式进行传播的病毒大部分为下载者病毒(TrojanDownloader),病毒制作者经常将这两种病毒作为邮件附件并将其赋以诱惑性的文字发送给受害者。其运行后会下载勒索病毒等高危病毒,使用户造成严重的经济损失。
2、动态防御成为“脚本类下载器”最有效克星
相对于以往的下载器病毒,“脚本类下载者”病毒变得更难对付,是目前病毒防范的重点和难点。这类病毒的混淆成本低,混淆手法更为多变,因此可以在很短时间内产生新变种,并且以大批量垃圾邮件的方式在互联网中进行传播。
由于此类病毒混淆手法不断变化,安全软件对其的查杀通常存在一定的滞后性,所以对于这类脚本类病毒,基于行为分析的“动态启发式分析”及动态防御是我们认为较为有效的防御手段。
二、样本分析
经过我们长时间的观察,互联网中所流行的绝大多数脚本病毒与宏病毒都不同程度的应用了混淆技术。与我们在《代码战争:伪装和狙杀——从“壳”到“病毒混淆器”》中所介绍的PE病毒混淆器相同,脚本与宏病毒对于混淆技术的应用主要是为了躲避安全软件查杀,尤其是以文件“哈希”为查杀依据的“云查杀”。其主要混淆手法如下:
1.随机变量名及函数名。
2.添加垃圾代码。
3.等效替换。
4.利用自定义算法加密原始代码数据。
与PE病毒混淆器相比,虽然其混淆方法较为简单,但是由于混淆成本较低致使此类病毒依然层出不穷。下面我们就针对当前这两类较为流行的病毒进行详细分析。
1.脚本病毒
Nemucod是一个近年来十分流行的JavaScript脚本病毒,其对于上述四种混淆方法都有不同程度的应用。本文中样本其总体结构与本文前言中所叙述的结构相同,脚本病毒会以邮件附件的形式被发送给受害者。通常此类邮件所包含的病毒文件名都会十分具有诱惑性,其经常将自己伪装为各种收据或者重要通知(如: “invoice_SCAN_Kj1Qf.js ”等),诱骗用户点击并执行恶意代码。
图2-1-1、Nemucod代码展示图
我们可以看到,针对应用过混淆技术的JavaScript样本,单纯通过阅读代码的方式是很难快速确定其具体病毒行为的。借助上图中所示样本内容,我们先对三种较为简单的混淆方法进行举例说明。
1)随机变量名及函数名。通常反病毒引擎都会对一些脚本病毒的主要逻辑进行查杀,但在脚本病毒被混淆后,所有病毒代码逻辑中使用的变量、函数名都是随机生成的,不同样本中除脚本内置函数外,主要代码特征不断变化,从而提高了安全软件对该类病毒查杀的难度。如下图所示:
图2-1-2、随机变量、函数名混淆效果图
2)添加垃圾代码。脚本病毒中的垃圾代码有两种比较常见的形式:
a)在代码中插入大量注释。
图2-1-3、垃圾代码举例
b)在逻辑中添加大量无效分支。
图2-1-4、垃圾代码举例
3)等效替换。比较常见的形式有:
a)常数替换。在图2-1-1中我们可以看到,其代码中将其需要使用的所有常数都进行了常数替换。例如:将0替换成(-485+485)/993。
b)字符串拆分。
图2-1-5、等效替换举例
c)函数拆分。
图2-1-6、等效替换举例
通过我们对这三种代码级的混淆方法的介绍,我们可以看到,即使病毒仅仅使用这三种较为简单的混淆手段,也可以在保留病毒代码原有逻辑的基础上将代码混淆的“面目全非”。如果反病毒引擎只依靠这些被混淆过的病毒特征进行查杀,是很难对未知脚本病毒进行有效查杀的。
通过对原始代码进行整理之后,我们便可以更加直观的看到其外层混淆代码的逻辑。如下图所示:
图2-1-7、整理后的Nemucod展示图
如上图所示,letters是一个字符字典,data_list中所存储的是21进制表示的下标字符串,将data_list中的所有下标按照字符字典中的顺序拼接完成后,我们便可以得到解密后的病毒代码。如下图所示:
图2-1-8、解密后代码展示图
图2-1-9、整理后的解密代码展示图
经过完整的解密后,我们得到了病毒的原始代码(如上图)。其主体逻辑为:先尝试下载url_list中存放的勒索病毒链接,在下载至系统临时目录后,再将下载到的勒索病毒进行执行,使用户造成直接的经济损失。
Nemucod家族为了躲避安全软件的查杀,每隔一段时间就会改变其外层混淆器的逻辑,为了展示该家族外层混淆代码的多变性,我们用该家族的另一变种与上文所述变种进行对比分析。下图中所示的代码内容是出自该家族的另一个变种:
图2-1-10、病毒代码展示
通过对比两个不同变种的代码特征,我们发现虽然其外层代码的整体结构存在着一定的差异,但是其解密后的代码却与上文中所述样本完全一致。解密后代码如下图所示:
图2-1-11、病毒解密后代码展示
在我们将不同变种代码进行对比之后,我们可以发现,病毒作者所传播的核心恶意代码在很长的一段时间内都会大致相同,但其随着安全软件对其外层特征的查杀,病毒作者会不断地变换病毒的外层混淆代码,与安全软件进行长期对抗。由于安全软件在收集病毒样本时存在一定的局限性和滞后性,使得那些使用最新方法混淆过的脚本病毒在一段时间内在互联网中大范围传播,直至安全厂商可以对其新的外层特征进行查杀。在这种长期对抗中,如果安全软件只依靠已知的外层病毒特征,那么其防御能力将很难覆盖到未知的脚本病毒。
虽然其外层特征在不断变换,但是我们发现此类病毒的核心恶意行为具有很高的相似度。其脚本主要行为如下图:
图2-1-12、病毒行为展示图
本文中所述样本下载的PE病毒为勒索病毒“特斯拉”(Ransom/Tescrypt),病毒行为防御效果如下图所示:
图2-1-13、病毒行为防御查杀展示
图2-1-14、病毒行为拦截
2.宏病毒
虽然在类Office软件默认禁用宏脚本之后,宏病毒的传播得到了有效的控制,但是由于此类病毒存在一定的诱骗性和隐蔽性,致使宏病毒在整个“黑色产业链”中依然存有一席之地。
OMacro/Downloader是宏病毒中较为主流的病毒家族,其主要的病毒行为为下载恶意软件,近些年其所下载的恶意软件多为勒索病毒。宏病毒样本在Word中打开后的示意图如下:
图2-2-1、宏病毒示意图
如上图所示,带有宏脚本的文档打开时会提示“宏已被禁用”,只有点击启用后脚本内容才有可能被运行。 VBA脚本会在Office内置的文档事件中被回调,宏病毒经常使用的文档事件有:Document_Open、Document_Close等。本文中所提到的宏病毒样本其VBA脚本部分设有密码,其密码为“21”,在输入密码后我们可以其脚本内容。
图2-2-2、宏病毒调用入口展示图
如上图所示,在该文档关闭时会执行“vIReZIjT”模块中的“RTNOKwlt”方法执行病毒逻辑。该文档中的所有宏脚本全部进行过混淆处理,主要逻辑代码中被插入了很多垃圾代码,如下图所示:
图2-2-3、混淆后的宏病毒脚本
经过整理后,我们得到了两个主要的函数。其主要逻辑是,先将Base64加密的PowerShell命令进行解密,之后执行PowerShell脚本下载病毒文件到本地进行执行。其主要宏脚本内容如下图所示:
图2-2-4、主要代码展示图
其代码中所使用的关键数据全部都存放在窗体的控件中,其中起到主要作用的PowerShell命令以Base64的形式被加密并打散后存放在四个不同的控件中。为了躲避安全软件的查杀,此类宏病毒会想方设法对关键数据进行加密。如下图所示:
图2-2-5、窗体控件展示图
将Base64数据拼接后进行解密,我们就得到了其所运行的PowerShell命令。其主要功能是通过网址链接(hxxp://birch.mcmstudio.co.uk/frontspeakers/bandw/nautilus.php)下载恶意软件至本地进行执行。其解密后的PowerShell脚本内容如下:
图2-2-6、解密后的PowerShell脚本
宏病毒与脚本病毒相同,也会不断的变换其外层混淆特征,我们用该家族的另一变种进行举例说明。该变种同样借助Document_Close事件执行恶意代码,其脚本内容如下图所示:
图2-2-7、病毒代码展示
图2-2-8、病毒解密代码展示
我们发现该变种的外层特征与之前变种存在明显差异,之前变种中所使用的关键数据是通过Base64算法加密的,而当前样本中所使用的是自定义的加密算法,其解密算法会将数据中的字符位置根据参数进行重新排序。该样本与前一变种恶意行为相同,都是通过PowerShell脚本下载恶意软件至本地进行执行。对其主要数据的解密后,我们得到了其最终调用的PowerShell脚本内容,其内容与前一变种大致相同。如下图所示:
图2-2-9、病毒调用的PowerShell脚本展示
对于同一病毒家族,无论其外层混淆代码如何变化,其内层的关键恶意代码都会保持很高的相似度,其运行所产生的恶意行为也会大致相同。
三、总结
通过长时间的观察和跟踪,我们发现虽然真正给用户造成安全威胁的依然以PE病毒为主。但是近年来,因为病毒的制作者逐渐发现了脚本类病毒相较于PE病毒所具有的优势,所以脚本类病毒样本开始呈井喷式增长。
脚本类病毒与PE病毒相比具有几大明显优势:
1.各大电子邮件服务网站对文本文件的审查力度有限。
2.用户对此类文件的警惕性较低。
3.脚本病毒的混淆成本较低。
综上所述,这类混淆脚本对反病毒引擎提出了不小的挑战。对于此类问题,基于行为分析的动态防御技术仍是目前更为行之有效的防御手段。