猫头鹰
信安舆情早知道

打造免杀JScript

前言

我们密切关注的恶意软件的特征之一是其使用的免杀技术,即恶意软件用于传统沙盒中隐藏其真正恶意性质的技术,直到它到达特定目标机器。在其他帖子中,我们讨论了在二进制程序中采用不同的免杀技术。最近,我们已经看到通过VBA宏在恶意Office文档的免杀。在这里,我们研究JScript脚本免杀的使用。

JScript是由微软公司开发的活动脚本语言,是微软对ECMAScript规范的实现。在实践中,JScript的外观和行为与常规JavaScript一样,但也有一些额外的专有特性,例如条件编译。大多数恶意JScript程序作为电子邮件附件提供,当用户单击附件时,它们由Windows脚本宿主(WSH)通过cscript.exe或wscript.exe执行。使用WSH提供的对象和服务,JScript程序可以访问其所运行的设备的资源(例如它可以访问和修改文件系统,或者产生新的进程),因此可以执行强大的攻击。

除了实际的恶意活动,JScript程序经常实现一个或多个免杀技术,可能使他们运行在沙盒系统却不会被发现。这里有一些技术引起了我们的注意。

Stalling Code

stalling code的想法很简单,延缓执行,以便分析系统能够尽早终止分析,并得出结论,分析的程序不会做任何恶意行为。当然,在真实用户的机器上,实际的恶意活动将在stalling code完成运行后立即运行。

实现这种技术的一个简单的方法是由无用的循环的代码实现,这些循中执行一些相对的操作但是没有实际使用效果。例如,我们发现了一个示例,通过在一个循环中执行数千次的解码值来动态地计算一个字符串值,和揭示所得到的值是不使用外部的循环的一个简单检查。

image02-3-1

如果分析成功地绕过了循环,则会显示许多恶意活动,包括C&C网络流量。

image03-3

COM对象仿真检测

JScript程序可以通过WScript.CreateObject方法实例化COM对象,通过它所需要的对象的编程标识符(ProgID)。例如,CreateObject脚本调用FileSystemObject ProgID会导致FileSystemObject对象的实例化,这暴露了与文件系统交互有用的几个方法。要使此操作正常工作,相应的COM对象必须在系统上正确安装和注册。

由于COM对象常常暴露安全相关的功能,它们的实例化和使用由分析系统密切监视。在许多情况下,简单地观察程序是如何与COM对象进行交互的,即使该对象在分析系统上实际上不可用,也提供了关于该程序是否是恶意的有用指示。例如,尝试加载未知对象,然后调用具有过长字符串作为参数的方法的脚本可能尝试利用缓冲区溢出漏洞。因此,一些分析系统假装任何ProgID有效,并且对于没有安装相应的COM控件的ProgID,它们返回一个stub对象,这种技术使得分析系统能够对不太容易流行的COM对象具有可见性,该对象在分析环境中可能不容易获得。

不幸的是,这种技术也可以被恶意脚本用于区分分析系统和真实的用户环境。例如,我们在之前看到的同一个示例中发现了以下(轻微的混淆)代码:

figure3

在这种情况下,脚本尝试加载一个不存在的COM控件(使用无效的ProgID“dcc”):如果实例化成功,变量BKYMHYNV将获取一个非false值(指示脚本在分析环境上执行),否则将具有“假”值。稍后在代码中检查变量,如果BKYMHYNV为false,脚本将尝试执行其恶意活动,否则不会显示恶意行为。

Timebombs

简单而有效的免杀技术包括“激活”的恶意行为,只有在一个特定的时间间隔:在这个时间范围之外进行的,分析系统不会看到任何恶意的活动,并将样本进行分类为良性。

我们之前看过的示例(一个真正的免杀示例)给了我们一个简单的例子:

image00-3

在这种案例中,代码检查当前日期的年份(通过调用Date),返回的是2016年,仅在这种情况下,执行恶意活动。

执行环境

一组流行的免杀技术包括检查脚本执行的环境是否具有在“常规”用户环境中预期的特性。其中的一些特性与预期的用户活动相关(“用户最近至少打开至少五个办公室文件?”);有些则是硬件环境的规范相关(“系统中至少有1GB的RAM”)。异常特征被视为脚本在分析环境(其中用户活动可能受限且硬件资源可能受到约束)内执行的指示。

我们观察到一些JScript样本使用系统中存在的处理器数量来区分常规设备和分析系统:

image01-2

这里,代码读取%NUMBER_OF_PROCESSORS%环境变量的值,其中包含机器上运行的处理器数。如果值超出期望值(小于1或大于8),脚本将立即终止执行; 否则继续下载第二阶段payload。

总结

我们已经讨论了在恶意JScript文件中使用的一些免杀技术:我们提出了几个技巧,运行在WSH中的JScript程序可以用来区分分析系统和真实用户的环境,反过来避免触发检测。

我们注意到这些技术不是唯一的或JScript文件特有的;他们和我们看到的可执行恶意软件和恶意Office文档中使用的技术非常相似。这里的亮点是免杀技术,在这些上下文中有效的反免杀技术也可能有助于分析免杀JScript文件。

示例

以下是本文中提到的示例:

转载请注明来自MottoIN,未经允许不得转载!MottoIN » 打造免杀JScript

分享到:更多 ()

评论 1

评论前必须登录!

 

MottoIN 换一个角度看安全

寻求报道联系我们