一种基于动态内容分析的网页木马实时检测方法

文档序号:10655927阅读:338来源:国知局
一种基于动态内容分析的网页木马实时检测方法
【专利摘要】本发明公开了一种基于动态内容分析的网页木马实时检测方法,首先组成样本库,并将样本库分成训练集和测试集;然后用JavaScript动态分析软件对样本库的网页中的JavaScript代码进行插桩,运行插桩后网页,动态追踪字符串处理提取一系列行为特征,与此同时,记录“堆操作危险指数”,以上特征组成特征向量,将所有特征向量生成样本库的特征集;选择不同的分类算法,进行分类模型训练,选择分类结果最优的模型作为检测模型;最后运行动态分析软件,对经过代理服务器的网页进行插桩,访问已插桩的待测网页,动态提取相关特征,使用检测模型判断是良性网页还是包含网页木马的恶意网页。相比静态分析方式,本发明具有更高的检测精准率,可以有效对抗代码混淆技术。
【专利说明】
一种基于动态内容分析的网页木马实时检测方法
技术领域
[0001]本发明属于计算机恶意软件检测或处理领域,具体涉及一种基于动态内容分析的网页木马检测方法。
【背景技术】
[0002]Web应用和服务已成为现代人日常生活中不可或缺的一部分。JavaScript是一门常被用于Web应用开发的客户端脚本编程语言,因为它所提供的动态特性而在互联网上被广泛使用。与此同时,JavaScript也为传播恶意软件提供了巨大的方便。恶意行为的实施者常常利用恶意JavaScript脚本对受害者进行Drive-by Download攻击,即网页木马(直译为路过式下载)。这种攻击方式使用户在浏览特定网页时,系统会在用户不知情的情况下下载和执行恶意代码,最终被盗取有价值的敏感信息,甚至成为僵尸网络(Botnet)的一部分。
[0003]近年来,对网页木马的检测和防御已经成为信息安全领域研究的主要课题之一。现有的代表性方案有两种,一种选择在服务端进行保护和在网站开发过程中进行漏洞检测与修补,避免网站遭受恶意修改或被第三方广告和插件嵌入恶意代码;另一种是对恶意代码的检测方案。在检测技术上主要分为三类:一是基于网站URL的分析;二是检测网页内容;三是分析浏览器在浏览页面时的运行状态。针对URL的检测技术基于对网站域名、链接结构、DNS信息等URL相关的信息的分析。与此相对的,网页内容分析和浏览器运行状态分析试图检测目标网页是否执行Drive-by Download攻击。网页内容分析被分类为静态分析、动态分析和混合分析。
[0004]由于JavaScript语言的一些高危行为(如执行本地文件)被浏览器和操作系统的安全性机制限制,恶意网页制作者会选择利用针对浏览器及其插件的漏洞来绕过这一机制。静态分析方法具有速度快,资源占用低的特点。但混淆技术常常被用于隐藏恶意代码的真实意图,使静态分析容易产生漏报。与此同时,混淆技术并不仅仅被用于恶意代码,也被用于良性代码以达到保护知识产权的目的。检测代码是否被混淆并不能决定该代码是否有恶意意图。动态分析可以收集代码运行时信息有效的对抗混淆技术,检测代码潜在的恶意行为。动静态混合分析的方法试图对前两者进行权衡。

【发明内容】

[0005]本发明要解决的技术问题是提供一种能有效克服代码混淆技术影响的网页木马检测技术。
[0006]为解决上述问题,本发明提出一种基于动态内容分析的网页木马实时检测方法,包含以下步骤:
[0007]步骤I)收集一定量的恶意网页集M和和良性网页集B,分别组成样本库,并将样本库分成训练集和测试集;
[0008]步骤2)用JavaScript动态分析软件对样本库的网页中的JavaScript代码进行插粧,运行插粧后网页,利用动态分析软件的回调分析函数,给所有创建的字符串加上污点记录,并记录JavaScript代码中对字符串的操作,以及每次操作的字符串的源类型,当一个字符串流向指定的终点时,将该字符串经历过的每次字符串操作记录和对应的源类型作为一个特征,与此同时,记录“堆操作危险指数”,以上特征组成特征向量,将从样本库中网页提取的所有特征向量生成样本库的特征集;
[0009]步骤3)选择不同的分类算法,使用步骤2生成的特征集进行分类模型训练,选择分类结果最优的模型作为检测模型;
[0010]步骤4)建立代理服务器,运行动态分析软件,对经过代理服务器的网页进行插粧,访问已插粧的待测网页,动态提取步骤2所述的相关特征,使用步骤3获得的检测模型判断是良性网页还是包含网页木马的恶意网页。
[0011 ]进一步,步骤2中的所述相关特征包括:
[0012]A,是否发生iframe元素动态插入或src属性修改;
[0013]B,是否动态插入Script标签;
[0014]C,是否有动态生成类函数执行;
[0015]D,是否有实时执行类函数执行;
[0016]E,是否有方括号形式对象成员引用;
[0017]F,堆操作危险指数。
[0018]又进一步,上述堆操作危险指数的计算方法为:动态检测长度超过1024的字符串,一旦它或由拼接、截取或修改它而得到的字符串被写入某一个对象的属性中,则计算N/1024并累加到堆操作危险指数,N为写入的字符串长度。
[0019]进一步,步骤I中的所述良性网页集B是从专门发布网站世界排名的网站中选取排名靠前的一定数量的网站首页取得。
[°02°]进一步,步骤2中的所述动态分析软件为Jalangi2。
[0021]相比现有技术,本发明的有益效果在于:
[0022](I)将JavaScript字符串操作记录作为特征,有效抵抗混淆技术。
[0023](2)使用Jalangi2插粧工具,动态分析的实现不依赖于浏览器与操作系统。
[0024]本发明对通过基于动态的网页内容分析的方法检测网页木马,能够有效克服JavaScript代码混淆技术对静态分析类方法检测率的负面影响。
【附图说明】
[0025]图1为利用JaI ang i 2进行插粧的流程图。
[0026]图2是分类模型训练流程图。
[0027]图3为本发明网页木马检测的流程图。
【具体实施方式】
[0028]现结合附图对本发明的具体实施作进一步详细的说明。
[0029]本发明提供一种基于动态内容分析的进行网页木马实时检测的实施例。本实施例是针对使用JavaScript脚本实施的Drive-by Download攻击,即网页木马攻击,进行检测的方法。使用JavaScript动态分析软件,优选为Jalangi2,对网页中的JavaScript代码插粧,在代码运行过程中追踪字符串操作并提取一系列相关行为特征,利用预先训练好的分类模型进行分类,判断该网页是否执行网页木马攻击。
[0030]步骤I)收集一定量的恶意网页集M和和良性网页集B,分别组成样本库。
[0031]步骤1.1)从Alexa上获取排名靠前的一定数量的网站首页,组成良性网页集B。
[0032]步骤1.2)从VirusTotal上获取一定数量的网页木马样本。
[0033]步骤1.3)将样本库分成训练集和测试集。
[0034]步骤2)对样本库中的网页包含的JavaScript代码进行特征提取。
[0035]步骤2.1)Jalangi2是一个JavaScript分析框架,通过编写分析脚本并插粧被分析代码实现动态分析。如图1所示,用Jalangi2对样本库的网页中的JavaScript代码进行插粧,包括训练样本集和测试样本集的网页。
[0036]步骤2.2)运行插粧后网页,利用Jalangi2的回调分析函数,给所有字符串加上污点记录,并记录JavaScript代码中对字符串的操作,以及每次操作的字符串的源(Source)类型。当一个字符串流向指定的终点(Sink)时,将该字符串经历过的每次字符串操作记录和对应的源类型作为一个特征。
[0037]本方法将源分为四类:
[0038]1.JavaScript字符串字面量,即直接写入JavaScript源代码的字符串固定值;
[0039]2.DOM对象的内容和属性;
[0040]3.从其它类型转换得到的字符串;
[0041]4.来自于网页代码之外的字符串,包括AJAX请求返回的数据和URL获取得到的字符串。
[0042]列出指定的终点:
[0043]I ?实时执行类函数,包括eval(),setTimeout(),setlnterval();
[0044]2.动态生成类函数,包括 document.write(), document, write In O ;
[0045]3.Script元素和Iframe元素对象;
[0046]4.方括号形式对象成员引用,形如a[b];
[0047]5.JavaScript 页面跳转途径,包括 window.locat1n.href ,window.navigate,window.1oct1n.replace,self.locat1n,top.locat1n。
[0048]记录的字符串操作包含原生字符串操作函数以及+运算符,字符串操作函数的定义:传入参数为字符串类型,返回也为字符串类型的函数或字符串所有的返回字符串类型的方法。一个字符串操作特征的形式为[字符串操作sources字符串源类型]。由于一个被操作的字符串可能由多个源的字符串拼接而成,所以字符串源类型可能多于一种。上述特征的值为该类字符串操作的次数。
[0049]同时记录以下几个特征:
[°°50] 1.是否发生iframe元素动态插入或src属性修改;
[0051 ] 2.是否动态插入Script标签;
[0052]3.是否有动态生成类函数执行;
[0053]4.是否有实时执行类函数执行;
[0054]5.是否有方括号形式对象成员引用。
[0055]除此之外,网页木马攻击为了提高漏洞利用成功后Shellcode的命中率,会与大量滑板指令(Sled)序列拼接后写入堆空间。滑板指令是某种机器指令,以帮助转移控制流最终到Shellcode本身上。本方法提出一个特征,称为“堆操作危险指数”,该指数计算方法为:动态检测长度超过1024的字符串,一旦它或由拼接、截取或修改它而得到的字符串被写入某一个对象的属性中,我们计算N/1024并累加到堆操作危险指数,N为写入的字符串长度。
[0056]以上特征组成特征向量。
[0057]步骤2.3)将从样本库中网页提取的所有特征向量组成样本库的特征集。
[0058]步骤3)使用上述获得的样本特征集训练并选择分类模型。
[0059]步骤3.1)根据步骤1.3将样本库的特征集分为训练用途和测试用途。
[0060]步骤3.2)如图2所示,利用Weka3工具,选择不同的分类算法,使用训练样本特征集进行分类模型训练。
[0061]步骤3.3)用上述分类模型逐一对测试样本特征集进行分类,选择分类结果最优的模型作为检测模型。
[0062]步骤4)检测待测网页是否执行网页木马攻击。
[0063]步骤4.1)如图3所示,建立代理服务器,以在线实时插粧模式运行Jalangi2,对经过代理服务器的所有网页进行插粧。
[0064]步骤4.2)访问已插粧的待测网页,动态提取特征,使用步骤3获得的检测模型判断是良性网页还是包含网页木马的恶意网页。
[0065]以上所述仅为本发明的一个具体实施例,并不用以限制本发明,本实施例中所用数据集和攻击模式仅限于本实施例,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种基于动态内容分析的网页木马实时检测方法,其特征在于包含以下步骤: 步骤I)收集一定量的恶意网页集M和和良性网页集B,分别组成样本库,并将样本库分成训练集和测试集; 步骤2)用JavaScript动态分析软件对样本库的网页中的JavaScript代码进行插粧,运行插粧后网页,利用动态分析软件的回调分析函数,给所有创建的字符串加上污点记录,并记录JavaScript代码中对字符串的操作,以及每次操作的字符串的源类型,当一个字符串流向指定的终点时,将该字符串经历过的每次字符串操作记录和对应的源类型作为一个特征,与此同时,记录“堆操作危险指数”,以上特征组成特征向量,将从样本库中网页提取的所有特征向量生成样本库的特征集; 步骤3)选择不同的分类算法,使用步骤2生成的特征集进行分类模型训练,选择分类结果最优的模型作为检测模型; 步骤4)建立代理服务器,运行动态分析软件,对经过代理服务器的网页进行插粧,访问已插粧的待测网页,动态提取步骤2所述的相关特征,使用步骤3获得的检测模型判断是良性网页还是包含网页木马的恶意网页。2.根据权利要求1所述的一种基于动态内容分析的网页木马实时检测方法,其特征在于步骤2中的所述相关特征包括: A,是否发生iframe元素动态插入或src属性修改; B,是否动态插入Script标签; C,是否有动态生成类函数执行; D,是否有实时执行类函数执行; E,是否有方括号形式对象成员引用; F,堆操作危险指数。3.根据权利要求2所述的一种基于动态内容分析的网页木马实时检测方法,其特征在于所述堆操作危险指数的计算方法为:动态检测长度超过1024的字符串,一旦它或由拼接、截取或修改它而得到的字符串被写入某一个对象的属性中,则计算N/1024并累加到堆操作危险指数,N为写入的字符串长度。4.根据权利要求1所述的一种基于动态内容分析的网页木马实时检测方法,其特征在于步骤I中的所述良性网页集B是从专门发布网站世界排名的网站中选取排名靠前的一定数量的网站首页取得。5.根据权利要求1所述的一种基于动态内容分析的网页木马实时检测方法,其特征在于步骤2中的所述动态分析软件为Jalangi2。
【文档编号】G06F21/56GK106022132SQ201610372777
【公开日】2016年10月12日
【申请日】2016年5月30日
【发明人】张卫丰, 刘蕊成, 张迎周, 周国强, 王子元
【申请人】南京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1