针对客户端的恶意代码分析

2016-01-20 01:35王玉玺周文军杨剑
关键词:沙盒

王玉玺, 周文军, 杨剑

(江苏第二师范学院数学与信息技术学院,江苏南京 210013)

针对客户端的恶意代码分析

王玉玺, 周文军, 杨剑

(江苏第二师范学院数学与信息技术学院,江苏南京210013)

摘要:恶意代码数量多且变种多样,通常会通过加密隐藏真实目的,沙盒可以为恶意代码提供一个安全的运行环境,在实验时借助沙盒分析和揭露恶意代码的行为特征,发现很多恶意代码看似不同,实际为同一恶意代码的变种.最后对若干恶意代码样本进行分析,通过特征码对样本中的恶意代码进行分类,验证了恶意代码变种的现象.

关键词:恶意代码;沙盒;特征码

DOI:10.3969/j.issn.1000-1565.2015.02.015

中图分类号:TP309.5

文献标志码:志码:A

文章编号:编号:1000-1565(2015)02-0193-06

Abstract:The malicious codes can be divided into two types of boot and destructive, and they attack various vulnerabilities for client systems. The quantity of these codes is growing faster, and so much variants have been or will be produced for these codes. Some codes are encrypted to hide their true purpose. Because of the concealment for malicious codes, it is difficult to directly determine the authenticity of malicious codes. Sandbox can provide a secure environment for malicious codes to expose their behavior and find the characteristics. By this way malicious codes can be killed better. It can reveal the hidden malicious code and also verify the feasibility of these detection methods through a number of virus samples tested.

收稿日期:2014-09-12

基金项目:国家重点实验室基地开放课题(9011311);江苏第二师范学院“十二五”规划课题(JSNU-Y-4632)

Analysis on malicious code for client

WANG Yuxi, ZHOU Wenjun,YANG Jian

(College of Mathematics and Information Technology,

Jiangsu Second Normal University, Nanjing 210013, China)

Key words: malicious code; sandbox; signature

第一作者:王玉玺(1978-),男,江苏徐州人,江苏第二师范学院讲师,主要从事计算机网络技术应用、方向研究.

E-mail:hackwindy@sina.com

近年来,互联网在中国取得了持续快速的发展.中国互联网信息中心(CNNIC)2014年1月发布的《中国互联网络发展状况统计报告》中指出截止2013年12月底,中国网民规模达6.18亿,互联网普及率45.8%,较2012年底提升了3.7%[1].随着互联网的普及,Web应用日益丰富,为人们的工作、生活和学习提供了越来越多的便利.但与此同时,Web应用中的安全问题也日益突出.在Web应用中,针对客户端的威胁有多种,其中恶意代码是主要因素之一.目前的杀毒软件主要通过过滤网页内容,比对恶意代码特征码的方式进行甄别,从而保护用户的安全.

1Web安全威胁

根据Symantec发布的《Symantec Internet security threat report》[2],77%的安全漏洞与Web相关.这些安全漏洞可能导致Web应用遭受各种攻击,如拒绝服务攻击、SQL注入、窃取用户信息等[3].而通过Web传播的恶意代码中,约有24.3%为JS(脚本类型文件)[4].利用网页漏洞或使用其他一些手段向网站页面代码中植入包含有恶意代码的脚本仍然是主要手段,即网页挂马.这里所谓的挂马,并不一定是指木马病毒,而可能是Web方式的渗透攻击代码[5].当访问者浏览被挂马网页时,这些恶意代码会在用户不知情的情况下被执行,或者将用户引导至其他恶意网站,从而导致用户主机被感染.一般情况下这些恶意代码利用各种漏洞,诸如浏览器漏洞、系统漏洞,或其他应用程序的漏洞来执行恶意行为[6].

网页挂马,首先要向网站服务器中的网页文件中植入恶意代码,这样当用户访问网页时才可能会被感染.向网页植入恶意代码的方式有多种,一般不会将有明显特征的恶意代码放在用户直接访问的网页中,这样很容易被杀毒软件或者网站管理员发现.恶意代码需要隐藏自身,一般是通过在网页中插入简短的、看似正常的脚本代码;当用户访问网页时,脚本代码会自动执行,弹出一个隐藏的iframe窗口,通过该iframe窗口进行跳转,跳转至恶意代码宿主页,甚至有时为了更好地隐藏,需要通过多层iframe的跳转.当用户被隐式地跳转到恶意代码宿主页时,真正有杀伤力的恶意代码将会被下载执行,过程如图1所示.

图1 恶意代码引导过程Fig.1 Guiding process of malicious codes

为了提高攻击的成功率,恶意代码有一套免杀机制:通过大小写变换、十六进制编码、Unicode编码、Base64编码、Escape编码等方法对自身进行编码混淆;通过通用(Screnc等)或定制的加密工具(XXTEA等)对恶意代码进行加密;修改恶意代码文件掩码、混淆文件结构、分割至多个文件等[5].如果代码被加密,那么无法直接从字面上判断其是否为恶意的,如果能够将加密之后的代码放在一个安全的环境中运行,查看这段加密代码到底做了什么行为,那就很容易判断出该加密代码是否为恶意代码,这种实验需要通过沙盒来进行[7].

2沙盒

沙盒(Sandbox)在计算机领域主要指一个严格受控的计算环境,程序在其中进行运算时的状态、所访问的资源都受到严格的控制和记录,它是一个安全的运算环境.“沙盒”模型的思想是在信任的环境中运行不信任的代码,这样即使用户不小心引入了不安全的代码,也不会对系统造成破坏[8].在沙盒中,可以直接提供一个实际运行的浏览器镜像,让网络上的程序可以在这个空间里随意地运行,如果运行时的行为表明正在运行的程序是病毒或者恶意程序[9],那么可以模仿恶意代码的行为写出类似的恶意代码明文.如果想要直接对加密后的恶意代码进行解密,难度非常大,而模仿加密的恶意代码行为,给出具有相似恶意行为的代码明文,相对来说可行性较高.

这里使用加州大学圣塔芭芭拉分校(University of California, Santa Barbara, UCSB)的Wepawet作为恶意代码运行的沙盒.Wepawet是一个平台,用于检测和分析基于网络的威胁.Wepawet是技术和方法的组合,用于执行、跟踪、分析和描述通过访问网页而触发的代码的活动.其主要用于2个目的:1)在基于网络的恶意软件检测和分析领域,设计、开发和验证新的研究技术;2)在实践中应用这些技术去应对真正的安全威胁.

3恶意代码

3.1 解密

对于客户端来说,针对客户端的恶意代码可以分为2种,一种是具有真正杀伤力的恶意代码,可以直接攻击系统中的相关漏洞;还有一种就是具有跳转功能的引导性恶意代码,将用户最终引向恶意代码宿主站点.这2种恶意代码都会被加密,从而尽可能的逃避检测.对于这些加密的恶意代码都可以使用沙盒进行分析.

3.1.1引导性恶意代码

…………//代码省略

如上述代码所示,在一个html文档最后,也就是关闭标签的后面加上了一长串加密过的JS脚本代码,包含在标签对中,那么这么一串加密的JS代码会做什么,会给用户带来什么后果,这些都无法从字面上得到答案,只是看上去比较可疑.将该html文件上传至Wepawet进行检测,观察html文件在沙盒中运行后的结果.Wepawet给出的分析结果是suspicious(可疑的),经过模拟运行,分析出加密的恶意代码会执行如下述代码所示的操作.

document.write("");

从上面的代码明文中可以看出,加密代码确实具有恶意代码的嫌疑,因为它在用户访问该页面时弹出了一个隐藏的iframe窗口,引导用户访问另一张网页,这个行为是在用户不知情的情况下发生的,可能想要隐藏什么内容.如图2所示,Wepawet通过追踪跳转链接,给出了隐藏的iframe引导用户的网络活动轨迹,最终会让用户下载一个JS文件,从而使用户中毒.

图2 引导性恶意代码执行过程Fig.2 Implementation process of guiding malicious codes

3.1.2破坏性恶意代码

Refere nceError

259,574,140,336,630,602,0,511,497,469,217,161,511,602, 266,231,504,140, 602,0,511,602,217,63,504,203,399,63,273,462,273,112,420,574,511,112,

…………//代码省略

511,343,161,630,602,574,336,511,266,602,0,259,280,217, 602,259,161,217, 602,140,511,196,147,462,462,462,329,210,434,287,357,462,266,329

nX2R:;YL>DQ3?-B !|Ic6*i&y{^,h}rPKF5d(4_p7b〗zv)uTUl[$MOx1AJNGsHS"0wV@/.<tkjW9+=gEoCq%ea8fm

…………//代码省略

如上述代码所示,一个html文件中包含一长串加密之后的代码,经过Wepawet的检测,结果为malicious(恶意的),即用户如果通过浏览器打开此页面,会被恶意代码攻击,这也可以理解为该网页就是一个恶意代码宿主页.如果该恶意代码攻击的系统漏洞在用户的系统中并不存在,那么该恶意代码对该用户就没有任何危害.

对加密代码进行解密之后的部分核心代码如下所示:

var ghtb=document.createElement("OBJECT");

ghtb.classid="clsid: "+clid;

ghtb.launch("http: ".concat("-J-jar","-J\66.90.104.163pub ew.avi http://66.90.104.163/w.php?f=18&e=2 none"));

与漏洞CVE-2010-1423的特征码进行比对,可以以此判断该恶意代码是为了攻击该漏洞而编写的.

经过对上述2个html文件的分析,可以看出用户在访问挂马网页时,可能会遇到被引导和被攻击2个环节,这2个环节的代码都有可能会被加密,从而隐藏真实目的,达到感染用户的目的.

3.2 特征码检测

特征码识别技术就是将恶意代码的静态部分进行一些关键性的代码判断比较,包含某一特征码的代码就被识别为恶意代码.国外专家认为特征码法是检测已知病毒的最简单、开销最小的方法[10].

上文中提到的恶意代码,有的经过加密,也有未经加密.如果是没有加密的恶意代码,可以直接通过特征码的比对进行检测;如果是经过加密的恶意代码,只能通过沙盒模拟运行1次,解密之后再与特征码进行比对.这里讨论的恶意代码都是利用客户端的各种系统漏洞进行攻击,上文中提到的CVE-2010-1423漏洞就是其一,这里的CVE是指通用漏洞与披露(common vulnerabilities and exposures).

CVE是一个字典表,为公开的信息安全漏洞给出一个通用的名称(CVE编号),可以帮助用户在各自独立的漏洞数据库和漏洞评估工具中共享数据.在漏洞报告中指明的一个漏洞,如果有CVE名称,就可以快速地在任何其他CVE兼容的数据库中找到相应修补的信息,解决安全问题[11].

CVE-2010-1423漏洞就是Java开发工具包URL参数变量注入漏洞,漏洞具体描述为:运行在Windows及Linux操作系统下的Java开发工具包及Java NPAPI插件URL参数存在变量注入漏洞,攻击者通过javaws.exe文件的(1)-J(2)-XXaltjvm 参数执行任意代码.部分源码如下所示:

var u="http: -J-jar -J\lock.cmpxchg8b.comcalc.jar none";

if(window.navigator.appName=="Microsoft Internet Explorer")

{

var o=document.createElement("OBJECT");

o.classid="clsid:CAFEEFAC-DEC7-0000-0000-ABCDEFFEDCBA";

o.launch(u);

…………//代码省略

与上文中破坏性恶意代码比较,可以发现相似之处,以此作为特征编写正则表达式,形成特征码,可以与其他网页文件的内容进行比对,判断是否包含恶意代码.

3.3 样本分析

这里准备了101个恶意代码样本文件和5个特征码,这5个特征码针对的漏洞CVE编号分别为CVE-2006-0003,CVE-2009-1136,CVE-2010-0806,CVE-2010-1423和CVE-2010-1885.接下来做一些分析,首先用5个特征码对病毒样本进行扫描,得到如图3的结果.在101个样本中共有97个样本中包含恶意代码分别针对上面给出的5个漏洞,其中针对CVE-2006-0003的有26个样本,针对CVE-2009-1136的有24个样本,针对CVE-2010-0806的有4个样本,针对CVE-2010-1423的有11个样本,针对CVE-2010-1885的有32个样本.

目前的网络环境复杂,针对不同漏洞的恶意代码数量多,并且经常会有大量变种产生,在这种情况下,检测工作非常困难.如果每发现一个新的恶意代码,就要针对该代码编写相应的防护措施,那么工作量非常大,且会使得杀毒软件的病毒库迅速膨胀.上述实验就是将样本文件通过沙盒进行分析,然后只要5个CVE特征码,就可以检测这101个样本中的97个.因此,从实验数据上看,只要防守住漏洞,针对可能会被攻击的漏洞,编写相应的特征码,可以极大地提高防护恶意程序的效率,特征码编写的好坏也会影响到防护效果.

上述实验,使用5个列出的漏洞特征码对样本数据进行了扫描分析,并且进行了分类汇总.接下来,再对这101个病毒样本文件逐个扫描,看看每个文件中所包含的恶意代码会针对多少个漏洞进行攻击,这个实验需要借助于更多的漏洞特征码,如图4所示,其中已知漏洞就是上文中提到的5个列出的漏洞.从图4中可以看出每个样本文件中的恶意代码都会针对或多或少的漏洞进行攻击,针对的漏洞数量越多,用户受感染的概率就越高.因为恶意代码的最终目的是希望感染用户,所以一般的挂马网页中可能会包含针对多个漏洞的恶意代码,然后根据用户的系统环境,进行攻击.

图3 基于特征码的分类汇总Fig.3 Classification based on signature

图4 恶意代码针对漏洞数量统计Fig.4 Different types of malicious codes quantity statistics

4结束语

当前网络环境复杂,用户在使用Web应用的过程中可能会面临各种各样的风险.恶意代码会针对用户的各种系统漏洞进行攻击,因此防护针对客户端的恶意代码显得尤为重要.恶意代码会用各种方式隐藏自己的真实身份,从而达到成功感染用户的目的,那么在检测此种恶意代码时就必须使用一些有针对性的手段.上文中已经就一些恶意代码样本进行了实验,验证了沙盒与特征码检测的有效性,但仍有一些问题需要进一步优化和处理.如沙盒的效率问题,如何在最短的时间之内将加密的恶意代码解密成易懂的明文,提高恶意代码的检测效率;另外就是特征码的编写,特征码编写的好坏直接影响到检测的成功率.上述这些问题将在今后的工作中继续开展研究.

参考文献:

[1]CNNIC.中国互联网络发展状况统计报告[R/OL].[2014-3-5]. http://www.cnnic.net.cn/hlwfzyj/hlwxzbg/hlwtjbg/201403 /P020140305346585959798.pdf.

[2]Symantec Corporation.2014 Internet security threat report, volume[R/OL].[2014-2-12]. http://www.symantec.com/content/en/us/enterprise /other_resources/b-istr_main_report_v19_21291018.en-us.pdf.

[3]于莉莉,杜蒙杉,张平,等.Web安全性测试技术综述[J].计算机应用研究,2012,29(11):4001-4005.

YU Lili,DU Mengshan,ZHANG Ping,et al.Survey on web security testing technologies[J].Application Research of Computers,2012,29(11):4001-4005.

[4]趋势科技.中国地区2013年第二季度网络安全威胁报告[R/OL].[2013-8-23]. http://cn.trendmicro.com/imperia/md/content/cn/license /pdf-20130823.pdf.

[5]诸葛建伟.挂马网站分析追溯技术与实践[L/OL].[2008-6-17]. http://www.cstnet.cn/scml/20080617041513250.pdf.

[6]张慧琳,诸葛建伟,宋程昱,等.基于网页动态视图的网页木马检测方法[J].清华大学学报:自然科学版,2009,49(S2): 2126-2132.

ZHANG Huilin,ZHUGE Jianwei,SONG Chengyu,et al.Detection of drive-by downloads based on dynamic page views[J].J Tsinghua Univ (Sci&Tech) ,2009,49(S2): 2126-2132.

[7]章明.Web应用程序客户端脚本安全技术研究[D] .上海:上海交通大学,2012.

ZHANG Ming.Research on client-side scripting security technology of web application[D].Shanghai:Shanghai Jiaotong University,2012.

[8]段玉龙.基于沙盒仿真的可执行程序恶意代码检测工具的研究与实现[D].长沙:国防科技大学,2008.

DUAN Yulong.Research and implementation of sandbox and simulation based executables malicious code detection tool[D].Changsha:National University of Defense Technology,2008.

[9]王洋,王钦.沙盒安全技术的发展研究[J].软件导刊,2009,8(8): 152-153.

WANG Yang,WANG Qin.Research on sandbox security technology[J].Software Guide,2009,8(8): 152-153.

[10]陈丹伟,唐平,周书桃.基于沙盒技术的恶意程序检测模型[J].计算机科学,2012,39(6A): 12-14.

CHEN Danwei,TANG Ping,ZHOU Shutao.Malware detection model based on the sandbox[J].Computer Science,2012,39(6A): 12-14.

[11]The office of cybersecurity and communications at the U.S. department of Homeland Security.Common Vulnerabilities and Exposures[EB/OL].[2013-5-16]. http://cve.mitre.org/about/index.html.

(责任编辑:孟素兰)

猜你喜欢
沙盒
互联网金融下沙盒监管制度的困境与进路
不好惹的沙盒树
继普吉岛之后 泰国再增加3个接待国际游客的“沙盒”旅游区
国外金融科技风险管控经验及对我国的启示
——基于监管沙盒视角的分析
我国金融科技“监管沙盒”测试企业退出标准研究*
金融创新产品—监管沙盒
用软件处理Windows沙盒配置文件
韩国版金融科技“监管沙盒”法案及其启示
Windows 10“沙盒” 不仅更安全
《沙盒监管》对我国金融创新监管的启示