混淆恶意JavaScript代码的多特征检测识别与分析
2018-09-29曲文鹏赵连军邓旭
曲文鹏 赵连军 邓旭
摘 要:JavaScript目前已经成为交互式网页和动态网页中一项广泛采用的技术,恶意的JavaScript代码也变得活跃起来,已经被当作基于网页的一种攻击手段。通过对大量JavaScript恶意代码的研究,对混淆恶意JavaScript代码进行特征提取与归类,从基于属性特征、基于重定向特征、基于可疑关键词特征、基于混淆特征四大类中总共提取了82个特征,其中47个是四大类中的新特征。从真实环境中收集了总数为5 525份JavaScript正常与混淆的恶意代码用于训练与测试,利用多种有监督的机器学习算法通过异常检测模式来评估数据集。实验结果表明,通过引入新的特征,所有分类器的检测率较未引入新特征相比有所提升,并且误检率(False Negative Rate)有所下降。
关键词:机器学习; 恶意代码; 异常检测; 混淆; JavaScript
Abstract: JavaScript has become a widely used technology in interactive and dynamic webpages, malicious JavaScript code also becomes active and has been used as an attack method based on Web pages. Based on the study of a large number of JavaScript malicious code, the paper makes the feature extraction and classification on obfuscated malicious JavaScript code. From the four categories: based on attribute features, redirection features, suspicious keyword features and confusion features, a total of 82 features are extracted, of which 47 are new features in the four major categories. 5 525 JavaScript-based pages are collected in a real environment for training and testing, and data sets are further evaluated through anomaly detection patterns using a variety of supervised machine learning algorithms. Experiment shows that compared with not introducing new features, the detection rate of all classifiers is improved by introducing new features, and the False Negative Rate has decreased.
Key words: machine learning; malicious code; anomaly detection; obfuscation; JavaScript
引言
作為一种动态的客户端脚本语言,JavaScript已经广泛应用于交互式Web的开发,可以将某些计算转移到用户端来帮助减轻服务器端的压力,从而提高网页的访问速度。发展至今,跻身主流的各家浏览器均可支持这项脚本语言。然而,最近几年JavaScript已经成为了普通常见和极易攻陷的解释性语言。为了浏览大多数的正常网页,客户必须在浏览器中启用JavaScript功能,但与此同时却很难阻止恶意代码下载到用户的电脑中。因为攻击者会利用各种方法诱导用户打开受感染的Web内容,比如弹出式广告、钓鱼网站、病毒邮件、亲朋好友发送的链接等等。恶意的JavaScript代码可以内嵌于网页当中,并在浏览器加载该网页时自动运行。运行后,恶意的JavaScript代码会产生一些恶意的行为,比如在后台自动下载恶意软件、自动安装恶意软件、在网页中不断弹出垃圾广告、发送垃圾邮件等等。这些恶意的代码为了应对杀毒软件的检测通常都进行了混淆处理,若仅是选择普通的静态特征用于分析和检测则会遇到一些问题,混淆的手法包括使用一些十六进制的ASCII码、利用逻辑异或运算、分割字符串、压缩字符串等。这些混淆技术已经使原来的代码变得越来越复杂,这就将对恶意代码的检测与去除混淆的技术提出了更高的要求。
根据恶意脚本的执行方式,可以通过基于静态混淆字符串分析[1]和基于动态JavaScript代码分析相结合的方法来提高恶意JavaScript代码的检测速度与检测质量。其中,静态分析方法利用代码的静态特征,即代码的结构来识别恶意代码。动态分析方法通过观察代码的执行状态和进程来检测恶意代码[2]。在具有大量特征集的情况下使用机器学习方法会获得更好的效果和更高的精度,故而可通过机器学习来展开检测分析。
本研究基于真实数据,提出了一种基于静态的混淆恶意JavaScript代码多特征检测识别与分析方法。首先,从基于属性特征、基于重定向特征、基于可疑关键词特征、基于混淆特征四大分类中总共提取了82个特征,其中47个是四大分类中的新特征,再利用一类支持向量机(One-class SVM)、朴素贝叶斯(Naive Bayes)、主成分分析法(PCA)、交替决策树(ADTree)等4种机器学习算法,对代码进行分析与提取,检测出混淆恶意JavaScript代码。通过实验,最终得出新老特征检测效率的对比结果。
1 相关工作
时下,已陆续涌现多种不同的方法可用来静态检测混淆恶意JavaScript代码或者动态分析。Wang等[2]发表了一种新的检测恶意JavaScript代码的方法,可将异常检测与仿真相结合来识别恶意JavaScript代码,并且开发了一个项目,可以通过使用多个JavaScript特征和机器学习技术来检测JavaScript代码是否为恶意的。Curtsinger等[3]提出了一种从JavaScript代码的抽象语法树中使用层次工程特征的方法,检测恶意代码。Kolter等[4]使用多种分类的方法,比如朴素贝叶斯,来检测恶意的可执行文件。Rieck等[5]用n-gram方法对网页特征进行提取,结合ADSandbox工具提供静态方法和动态方法相结合的分析与检测,但是训练数据同时使用了正常样本和恶意样本。Cova等[6]提出了以代码中字符型函数定义和使用的频率、重定向的数量、动态函数调用的次数等10个特征,作为检测恶意JavaScript代码攻击的特征。此外,文献[7]设计了一种基于静态分析的JavaScript恶意代码检测方法,针对网页中JavaScript代码进行4类特征分析与提取。文献[8]又探讨了一种通过使用多特征的方法,来提高恶意代码检测效率的方法。文献[9]中,研究分别从采集并且分类恶意网页代码样本、利用网页的静态代码分析技术创建模板、获取正常网页代码样本和随机采样评估这4个步骤进行了实验,把恶意网页代码样本划分为不同的类别,每一类都含有一种恶意网页代码以及对应的变形。
本文研究提出的是一种基于静态的混淆恶意JavaScript代码多特征检测识别与分析方法,在提取与文献[7-8]中相类似的基本统计特征外,又进一步着重从基于属性特征、基于重定向特征、基于可疑关键词特征、基于混淆特征四大分类中同时进行新旧特征的对比,不仅覆盖大部分混淆恶意JavaScript代码的特征,而且具有较高的对比性。
2 特征提取
混淆恶意JavaScript代码的多特征检测识别与分析主要由数据收集、数据筛选、特征提取、特征分类、异常检测、结果输出与分析等部分组成。特征提取及检测流程如图1所示。
2.1 特征提取及检测方法
首先通过Python构建抓捕器抓取目标网站的代码,抓取后解析HTML源代码,然后構建代码分离器保存其中的JavaScript脚本标签源代码,并对JavaScript脚本核心内容开启提取特征向量工作,选取具有恶意性的特征。选择JavaScript脚本代码特征的过程后,就会梳理总结各类特征,找出可以用来使用机器学习的算法,再利用机器学习进行预测。
2.2 特征提取
根据当下已有的一些方法,研究收集了这些方法中使用过的一些特征,并且进行了分类,在已提取的旧特征的基础上,可为每个分类增加了新特征。每个类别所对应的新、旧特征可见表1~表4。
研究总共提取了82个特征并划分为四大类,其中新特征有47个。在进行实验检测时,就会针对旧特征和新、旧结合特征分别进行检测。
3 检测算法
3.1 一类支持向量机
通常一类问题出现在需要对训练样本进行一定比例的筛选,或者已知的训练样本都是正样本,而负样本却很少的情况。这种情况下,往往需要训练一个对于训练样本紧凑的分类边界,此时即需启用负样本实验。在本实验中,可以通过已知的混淆恶意JavaScript代码的特征来训练一个一类分类器,得到一个紧凑的分类边界,超出这个边界就可断定为是正常的JavaScript代码。实验时,设计上是以正常的代码作为训练集。
文献[10]提出一类支持向量机(One-class SVM)用于解决训练数据只有一类的问题,描述如下。
3.3 主成分分析法
主成分分析法(PCA)是一种数学变换的方法, 是把给定的一组相关变量通过线性变换转变为另一组不相关的变量,这些新的变量按照方差依次递减的顺序逐一排列。PCA的原理为从原来众多的向量中提取若干个变量,提取的这若干个变量可以最大程度地刻画表示原来数据的信息量。一般用于降维处理后,再进行检测实验。
3.4 交替决策树
交替决策树(ADTree)是一种用于分类的机器学习算法,其中概括了决策树并且与提升相关,重点是由一个决策节点组成,而且指定了预测条件和预测节点。过程中,总是以预测节点作为根和叶,通过遵循所有决策节点都为真的全部路径并且对所遍历的任何预测节点进行求和来对实例划定分类。在设计上也不同于二进制分类树,例如CART算法和C4.5算法。
4 实验结果及分析
4.1 实验数据与实验环境
实验样本包括恶意的JavaScript样本和安全的JavaScript样本。研究将从Alexa Top sites(http://www.alexa.com/topsites)和Top ChinaZ(http://top.chinaz.com/)公布的网站中获取的JavaScript代码定义为正常行为的数据,利用30天的时间,获取了5 404份定义为正常的JavaScript代码。关于恶意样本,其中分别由卡巴斯基安全实验室提供的部分混淆恶意JavaScript代码样本和网络中搜集到的内容联合组成,共选取恶意JavaScript代码121份。
实验中,将所有的数据样本中的70%作为已知部分且只包含正常的数据作为训练数据,剩余的30%样本作为测试数据,测试数据中包含所有的恶意JavaScript代码样本。混淆恶意JavaScript代码检测使用的测试环境可见表5。
研究中,定义混淆恶意的JavaScript代码样本为负样本,正常的JavaScript代码为正样本,由此得到分类器列联表可详见表6。
4.2 实验结果
为了使实验兼具代表性及更好的准确性,可将实验分为2组。一组只使用四大分类中的旧特征,另一组使用四大特征分类中新、旧结合的特征,并且每一组实验均采用十折交叉验证,把所有的數据分成10份,将其中的1份作为测试集,另外的9份作为训练集,每组依次轮流10次进行实验,同时采用了4种分类算法。4种算法检测效果可见表7。
从表7中可以看出,在四大特征分类中使用新特征后,PCA、ADTree、One-class SVM、Naive Bayes这4种算法的检测效率相比没有使用新特征全部得到了提高,4种算法的误检率相比没有使用新特征全部得到了降低。其中,Naive Bayes的准确率提升的幅度最大,提升了9.4个百分点。One-class SVM的误检率降低的幅度最大,降低了2.7个百分点。
5 结束语
通过对大量恶意代码的研究,对混淆恶意JavaScript代码进行四大特征分类,并且基于四大特征类中的新、旧特征展开了研究与检测分析,获得了满意的结果。过程中研究了大量混淆代码,试图提取出尽可能多的静态混淆特征,但是攻击者仍然在继续开发着不同的混淆技术,致力于掩盖JavaScript的真实结构。因此在某些情况下,某些被混淆的恶意JavaScript代码是无法被检测到的。此后的下一步工作是继续深入研究,找出共性,还原其本质,通过提取新特征以及改进检测算法来提高运行结果的检测效率,在攻与防的对立统一中,寻求重大的技术突破。
参考文献
[1] 马洪亮, 王伟, 韩臻. 混淆恶意JavaScript代码的检测与反混淆方法研究[J]. 计算机学报, 2017, 40(7):1699-1713.
[2] WANG Weihong, LV Yinjun, CHEN Huibing, et al. A static malicious JavaScript detection using SVM[C]//Proceedings of the 2nd International Conference on Computer Science and Electronics Engineering. Paris, France:Atlantis Press, 2013:214-217.
[3] CURTSINGER C, LIVSHITS B, ZORN B G, et al. ZOZZLE: Fast and precise in-browser JavaScript malware detection[C]// 20th Usenix Security Symposium. San Francisco, CA:Usenix, 2011: 33-48.
[4] KOLTER J Z, MALOOF M A. Learning to detect and classify malicious executables in the wild[J]. Journal of Machine Learning Research, 2006, 7: 2721-2744.
[5] RIECK K, KRUEGER T, DEWALD A. Cujo: Efficient detection and prevention of drive-by-download attacks[C]//Proceedings of the 26th Annual Computer Security Applications Conference.Austin,Texas,USA:ACM, 2010: 31-39.
[6] COVA M, KRUEGEL C, VIGNA G. Detection and analysis of drive-by-download attacks and malicious JavaScript code[C]//Proceedings of the 19th International Conference on World Wide Web. Raleigh, North Carolina:ACM, 2010: 281-290.
[7] 徐青, 朱焱, 唐寿洪,等. 分析多类特征和欺诈技术检测JavaScript恶意代码[J]. 计算机应用与软件, 2015, 32(7):293-296.
[8] PATIL D R, PATIL J B. Detection of malicious JavaScript code in Web pages[J]. Indian Journal of Science and Technology, 2017, 10(19):1-12.
[9] FERNANDEZ F. Heuristic engines[C]//Proceedings of the 20th Virus Bulletin Conference. Vancouver:[s.n.],2011:407-444.
[10]SCHLKOPF B, PLATT J C, SHAWE-TAYLOR J, et al. Estimating the support of a high-dimensional distribution[J]. Neural computation, 2001, 13(7): 1443-1471.