火绒安全实验室 发表于 2017-1-17 15:13

变形脚本病毒的“照妖镜” ——火绒“脚本行为沙盒”简介

本帖最后由 此生长唸 于 2017-1-17 15:18 编辑

一、前言
近年来下载者病毒逐渐从传统的PE类病毒向脚本类病毒演变,脚本类病毒与PE类相比在一些方面上存在优势。
首先脚本类病毒在文件大小上明显小于PE类病毒,混淆成本远低于PE类病毒,混淆手法更为多变,并且能够实现PE病毒绝大部分的功能。这类脚本病毒的批量制造,对传统安全软件提出了不小的挑战。
下载者病毒所需要的功能简单、单一,还要求病毒大小不能过大,方便网络传播。而脚本类病毒正好满足下载者病毒的要求。所以,近年来,脚本类下载者病毒呈现激增的趋势。
为了应对不断变化的病毒样本, 主流安全软件厂商引入了脚本的虚拟沙盒。与PE类似,”脚本虚拟沙盒”是通过仿真脚本运行时环境,使病毒代码认为运行真实系统中,进而还原其行为。通过病毒在虚拟沙盒中还原出来的原始代码和病毒执行时的一系列行为进行查毒。理论上只要仿真环境足够逼真,真实操作系统中能够执行的病毒,在虚拟沙盒中都能够成功执行并检测到其执行时的恶意行为。目前国外主流安全软件都很重视这类问题,策略不同,各有优劣。火绒采用区别于主流安全软件的创新思路实现脚本虚拟行为沙盒,可以更好地解决这个难题。同时,基于这一思路的延伸,未来我们会为火绒反病毒引擎引入更多创新特性。

二、反病毒引擎的脚本虚拟沙盒技术
由于脚本病毒的混淆方法简单,混淆成本远低于PE病毒,通过搜索引擎就能够找到大量的在线混淆网站,能够简单的混淆出大量静态特征不同但功能相同的脚本。使得仅通过静态特征查杀变得越来越困难。
例如SVM:TrojanDownloader/JS.Nemucod.a下载者病毒,如下图所示,仅从代码形式上来看,就有多种形式,仅单纯的阅读代码已经很难发现这些病毒其实执行的都是同样的功能,都是由一份代码通过不同的混淆手法批量生成出来的。
http://tc.sinaimg.cn/maxwidth.800/tc.service.weibo.com/p9_pstatp_com/6a3f6a001b3e9afbd8db88b54451aa7a.jpg图 2-1、Nemucod家族部分样本展示然而通过动态虚拟执行,我们可以很容易看出他们虽然下载链接、生成的文件名并不完全相同,但行为模式几乎完全一样,如下图所示:
http://tc.sinaimg.cn/maxwidth.800/tc.service.weibo.com/p3_pstatp_com/2716b89fb4fc2e20cf68bc44a612468b.jpg图2-2、Nemucod家族动态虚拟执行
1.主流安全软件的脚本虚拟沙盒

同PE混淆类病毒一样,通过动态虚拟执行还原被混淆代码的原始数据和行为,才是解决问题之道。基于这样的思路,主流安全厂商都试图通过动态“执行”的方式来解决脚本混淆问题。其中主流的思路是在反病毒引擎中嵌入脚本解释器来分析并执行脚本代码,进而通过对脚本执行时需要的运行时组件进行有限的模拟来分析脚本的运行时行为。其架构大致如下图所示:
http://tc.sinaimg.cn/maxwidth.800/tc.service.weibo.com/p1_pstatp_com/a360d06417938da04aabe334aab49d09.jpg图2-3、主流脚本虚拟沙盒这类脚本虚拟机实现相对简单,且互联网上有大量的开源脚本引擎作为参考,能够快速的搭建一个相对有效的脚本虚拟机。但这类脚本虚拟机往往存在以下两个问题:
1)脚本解释和模拟执行直接运行在真实系统环境中,甚至一些产品中直接应用开源脚本解释器来构建,所以这类脚本虚拟机存在被漏洞利用脚本“穿透”的潜在风险;2)病毒代码对虚拟环境仿真程度的”探测“不断升级(例如对文件系统的”探测”),使得这类脚本虚拟机在虚拟环境模拟方面捉襟见肘、疲于应付;

2.火绒脚本虚拟沙盒
基于上述原因,并考虑到火绒反病毒引擎现有架构,我们并没有采用上述基于脚本解释器的方式来实现脚本虚拟沙盒。我们的思路是将脚本问题转化为PE问题,进而复用反病毒引擎原有的基于PE病毒的行为检测逻辑。下图为火绒脚本虚拟沙盒:
http://tc.sinaimg.cn/maxwidth.800/tc.service.weibo.com/p3_pstatp_com/016ed302c32b5f029c2a930783450568.jpg图2-4、火绒虚拟沙盒
从图中可以看出,我们解决脚本问题的思路是,在现有火绒虚拟沙盒的基础上,实现脚本病毒依赖的运行时环境,并在此基础上实现WScript.exe来执行脚本。如下图所示:
http://tc.sinaimg.cn/maxwidth.800/tc.service.weibo.com/p3_pstatp_com/f53f62d9f691918585511dabe06f95ee.jpg图2-5、脚本执行流程
这样的架构和实现与前述架构的区别与优势在于:
1)脚本的解释、执行完全被限制在虚拟沙盒中,执行过程中与真实系统环境完全隔离,完全不存在被漏洞利用脚本“穿透”的风险;
2)脚本运行时环境构建在火绒虚拟Windows内核之上,仿真程度极高。由于一直以来火绒都比较依赖 通过虚拟行为沙盒来解决PE混淆问题,所以我们对于虚拟沙盒的环境仿真一直处于积极完善的过程之中,不但实现了完善的进程、线程调度、文件系统、注册表,甚至完全模拟了Windows窗口系统。在此基础上,只需要实现脚本解释组件、相关运行时组件以及脚本宿主程序(WScript.exe)即可。基于这样的架构,可以有效地应对病毒代码对虚拟环境的”探测“;
3)基于这样的架构,反病毒引擎不需要任何修改就可以完全复用基于虚拟行为沙盒的病毒行为检测逻辑;
4)处理脚本和PE代码联动的问题。
例如,TrojanDropper/JS.Basecode.a病毒家族会将真正实现恶意行为的PE病毒加密打包,外层脚本只负责释放和执行PE病毒。这类脚本在火绒反病毒引擎的行为扫描过程中可以完全还原从脚本释放PE到PE病毒执行完的全部流程,所以可以有效并准确地识别该病毒家族。该家族病毒在火绒虚拟沙盒中执行流程如下图所示:
http://tc.sinaimg.cn/maxwidth.800/tc.service.weibo.com/p3_pstatp_com/b045f2174195ce0e8799bd5a3192f168.jpg图2-6、释放并执行PE病毒
三、脚本病毒对抗手段分析
经过我们长期的跟踪和观察,脚本病毒为了对抗安全软件的反混淆技术,主要从以下两方面来检测安全软件的虚拟沙盒:
1、语言层面检测。
2、系统环境的检测。
说到脚本病毒,就不得不提近年来十分活跃的Nemucod下载者病毒,该病毒使用微软的JScript编写,能够直接运行在Windows操作系统之上,通过COM接口调用系统功能,能够比在浏览器中运行的JavaScript脚本实现多的多功能。该家族病毒近年来保持着高速的升级更新,反反混淆手段不断变换。从中我们可以看到该家族病毒两种检测方法都有使用,下面我们就对其使用的检测手段进行简要介绍。

1、语言层面检测


/*@cc_on @*/ 这句语句是 微软的JScript所支持的特有语法,这个语句中包含的语句会被执行,并开启条件编译,但这个语句只有IE和WScript中支持。如下图所示的病毒代码中,我们可以看出病毒使用了上述语句,如果使用开源脚本引擎,就会将/**/中的语句认为时注释而不执行,就会因为没有创建对象而出错。

http://tc.sinaimg.cn/maxwidth.800/tc.service.weibo.com/p3_pstatp_com/03e319588af0d9d6b037815abaf450ed.jpg图3-1、使用特殊语法检测
setUTCFullYear函数时JavaScript语言中的一个内置方法,用于设置年份,在病毒中也被常用于检测虚拟沙箱。如下图代码所示,病毒首先将年份设置为2003年,并在随后获取年份,来检查是否时刚才所设置的年份,如果发现不是则不执行解密流程。
http://tc.sinaimg.cn/maxwidth.800/tc.service.weibo.com/p3_pstatp_com/fc5b503ea80154515c5bce2c2a4406dc.jpg图3-2、使用setUTCFullYear设置年份
下图中的代码我们可以看到病毒通过使用try…catch 语句捕获异常进行异常处理,在第一个try…catch 语句中new ActiveXObject 语句需要正确执行,而第二个try…catch由于new ActiveXObject语句参数错误,所以运行时会抛出异常,这时异常被捕获就会执行异常处理中的语句,只有这样才能正确的拼接出需要的字符串。
http://tc.sinaimg.cn/maxwidth.800/tc.service.weibo.com/p3_pstatp_com/83b263bfb6c4adc331605d2cc0936abd.jpg图3-3、通过异常处理检测虚拟沙盒
2、系统环境检测

根据我们对病毒的长期的跟踪发现,随着安全软件与病毒的攻防不断升级,近一年来,脚本病毒的混淆器已经不再是简单的通过上文中我们所介绍的方法仅仅是检测脚本引擎的功能是否完整,而是利用JScript可以调用操作系统的功能,来调用操作系统的一些功能来检测自己的运行环境。观察下面两幅图中的代码,我们发现病毒通过枚举目录,来获取目录名称的各种属性来检测系统的文件系统。

http://wx3.sinaimg.cn/large/9136f8efly1fbtjigqpboj20k603mdft.jpg图3-4、枚举子目录检测目录名长度http://tc.sinaimg.cn/maxwidth.800/tc.service.weibo.com/p3_pstatp_com/dd084a5e0cc37cf5f292dccd8cfbd7a2.jpg图3-5、枚举子目录检测目录名长度类型下图中是我们截取自一个病毒样本中检测虚拟沙盒的代码,通过对源代码进行整理后我们可以看到,该病毒会获取hosts文件的文件属性,来检测是否是在真实系统中。
http://tc.sinaimg.cn/maxwidth.800/tc.service.weibo.com/p1_pstatp_com/3cab1f6d92a7f0f93d561e6db5411306.jpg图3-6、检测系统文件属性下图中的样本用到了WScript.exe中的内置方法,通过调用Arguments方法获取启动参数,如果参数不对,则重新启动WScript.exe。如果执行脚本的不是WScprit.exe,脚本执行就会出错。
http://tc.sinaimg.cn/maxwidth.800/tc.service.weibo.com/p1_pstatp_com/d4131e097a9df3bcc781dd44efb8dc23.jpg图3-7、检测WScript参数
四、附录
文中涉及样本SHA1:
http://wx1.sinaimg.cn/large/9136f8efly1fbtjk6vhv1j20jq0gf75x.jpg

arryboom 发表于 2017-1-24 00:05

本帖最后由 mouse31rat 于 2017-1-24 00:07 编辑

此生长唸 发表于 2017-1-23 17:18
您使用的是火绒3.0版本吗?
然后反观我的新机器上安装的新版的话,
http://p1.bqimg.com/4851/8713e74b03d300be.png
家长功能是根本用不到的,也没有印象火绒曾经宣传过要带这种类似绿坝的功能
自定义规则防护功能被放到设置->系统防御->自定义防护了,新机安装火绒之后一度以为这个自定义防护功能被取消了,直到有一天想清理日志打开了设置才看到。
http://p1.bqimg.com/4851/718fdd5a893a9922.png
很实用的流量分析现在独立出来成为了一个模块,独立窗口,进行流量管理远远不如以前方便。
个人的感觉,自定义防护的这个引擎或者说火绒的核心FD ND绝对是数一数二的,但是自定义规则的配置界面从火绒横空出世到现在不知道为什么一直感觉跟UI设计师不在一个频道上,不去鼠标放在图标上很难知道这些按钮是用来做什么的,然后刚开始配规则甚至找不到保存规则的地方,保存了刚开始也找不到,到了什么Group1,然后这个group12似乎还不能重命名,导致配置完了之后以为自动保存就退出来了,规则直接丢失了,一度还以为没有生效,功能按钮不明显的地方有以下几处
http://p1.bqimg.com/4851/d6a61b6fa980af28.png
http://p1.bqimg.com/4851/cda07b3e7bf3bb14.png
如果直接导入已有的规则包这个设计会很方便可以理解,但是自己动手配置的话就感觉特别扭,我相信也不是一个两个用户有这样的感觉。

arryboom 发表于 2017-1-20 17:45

此生长唸 发表于 2017-1-20 15:50
您的建议我会转达给产品。后续的开发会酌情借鉴。

谢谢,其实不用那么麻烦,我的老机WIN7上火绒还是去年的版本,老界面的,更新到最新版后老的界面并没有更新,但引擎和病毒库都已经是最新版了,说明老版本界面是兼容最新版的引擎的,虽然老版的界面在个人使用经验里也不是特别好用,但是比目前最新版的这个界面强多了,现在的版本明显感觉出来希望更多小白用户也可以上手,做了很多割舍,但是真正懂得火绒HIPS引擎强大之处的童鞋毕竟还是希望能有个与之匹配的界面,有所取舍是应该的,但是经典舍的太多就很容易跟类似的产品同质化了,当时火绒出来的时候对大家来说还是非常震撼的,我们国内也有这样一伙人可以静下心来打造一款像以前的SSM,COMODO这样强大的HIPS产品!

躲在角落看繁华 发表于 2017-1-17 15:41

前排支持~~~~表示一直在用火绒呢就是和TP模块有冲突感觉TX好烦

影佑 发表于 2017-1-17 15:47

懵逼进来看看

liuhaijiji5807 发表于 2017-1-17 15:53

小凯凯 发表于 2017-1-17 16:26

huanghu 发表于 2017-1-17 15:58
不懂,但是支持下

你这个个性签名不错,就是不知道什么意思。。。

bay8027 发表于 2017-1-17 16:30


懵逼进来看看

fs6842 发表于 2017-1-17 16:41

真心不懂。

马克 发表于 2017-1-17 16:52

huanghu 发表于 2017-1-17 15:58
不懂,但是支持下

求图出处

拐角 发表于 2017-1-17 18:23

懵逼的进来懵逼的出去....

交王飞也不行 发表于 2017-1-17 21:15

支持楼主
页: [1] 2 3 4
查看完整版本: 变形脚本病毒的“照妖镜” ——火绒“脚本行为沙盒”简介