咪咪色网 基于动态步履分析的网页木马检测治安
附近上门

附近上门

咪咪色网 基于动态步履分析的网页木马检测治安

发布日期:2024-10-19 06:04    点击次数:161

咪咪色网 基于动态步履分析的网页木马检测治安

网页浏览还是成为计算机用户庸俗的日常行径.中国互联采集信息中心(CNNIC)于2017年1月22日在北京发布第39次《中国互联采集发展情景统计敷陈》[1], 舍弃2016年12月, 我国网民范畴达7.31亿, 互联网普及率为53.2%.在互联网过头应用茂密发展的同期, 各式体式的黑客袭击也盈篇满籍, 举例通过网页散播坏心软件.当用户浏览坏心网页时, 坏心软件得以传播.坏心软件被瞎想用于各式采集违纪, 如限度用户计算机、盗取私东谈主信息、推结论绝做事袭击和乱来.Mcafee实验室在2015年8月份发布的安全要挟敷陈[2]上提到咪咪色网, 其第2季度中发现的新增可疑URL跳跃2 000万, 新增坏心软件数目跳跃1 500万.

坏心软件袭击实施者除了不错通过激情学技巧和拐骗神气让用户自觉下载并装置坏心软件外, 还不错利用网页木马袭击, 即瞎想一个包含坏心代码的网页, 自动触发坏心软件的下载和装置.这种袭击神气尝试利用浏览器过头插件的缝隙达到成见.

JavaScript是一种被庸俗用于网页拓荒的客户端剧本谈话, 它在为网页拓荒者带来便利的同期, 也被袭击者用于编写网页木马联系的坏心代码.天然面前主流的杀毒软件齐具备坏心网页的检测能力, 但由于JavaScript是一种尽头便捷进行代码污辱和加密的谈话, 坏心代码作家不错借此使杀毒软件产生漏报; 而良性JavaScript代码也可能被污辱和压缩, 以保护常识产权和优化文献尺寸, 导致也被误以为坏心代码[3].

针对这么的问题, 本文提议一种基于动态步履分析的网页木马检测治安, 通过对JavaScript代码进行动态分析, 监控函数和运算符推论, 以从及时推论的代码、动态生成的指定类型内容和跳转URL中获取联系的字符串操作记载, 并检测可疑的堆内存空间坏心填充操作, 据此索求联系特征, 并使用机器学习治安进行良性代码和网页木马的分类.本文的主要孝敬包括:

(1)   提议了一种检测网页木马袭击在着陆页面(landing page)上袭击剧本获取步履的治安.Script和iframe标签的动态插入和页面跳转是网页中的常见步履, 而网页木马袭击中的着陆页也常愚弄这些治安在看望者浏览之后获取缝隙并利用代码推论.本治安利用暗影(shadow variable)推论技艺记载特征, 然后通过分析动态插入剧本与页面或动态推论代码的步履进行检测, 以有用抵拒代码污辱并幸免误报.

(2)   提议了一种检测可疑坏心堆操作成见.针对堆坏心操作技艺进行Shellcode注入步履, 检测在堆内存空间中生成大量可疑字符串数据的步履, 并计算其可疑程度当作特征.

(3)   结束了结合动态分析与机器学习的网页木马检测治安, 从及时推论的代码和动态生成的指定类型的内容中获取联系字符串操作记载, 并索求斟酌堆坏心操作可能性的成见, 组成特征向量, 以此检测网页木马.

本文第1节主要先容联系接洽使命.第2节分析网页木马袭击的旨趣和常见经由.第3节给出基于动态步履分析的网页木马检测治安过头结束.第4节是实验分析部分.第5节转头全文并预测过去的使命.

1 联系使命

字据文献[4], 介意网页木马袭击的接洽有3类, 分别是检测网页内袭击向量、网页应用缝隙识别和用户保护.本文提议的治安属于第1类接洽; 第2类接洽轻柔于发现网站代码弱势, 幸免被利用挂上网页木马; 第3类接洽轻柔于利用URL黑名单机制, 贯注用户看望坏心网站或愚弄沙盒技艺使得被下载的坏心软件功能失效.网页内袭击向量检测治安不错诀别为静态分析、动态分析和半动态分析.

●  静态分析治安在不渲染网页的情况下索求特征, 并使用启发式治安或机器学习进行分类.

文献[5]从网页中索求缝隙利用、缝隙利用代码获取机制和污辱这3个类别的特征, 使用启发式治安进行分类.文献[6]索求剧本代码长度、unicode编码字符数目、平均字符串长度等15个特征, 用机器学习算法进行分类模子考验.文献[7]针对网页木马袭击, 从网页内容和URL中索求48个特征, 一样使用机器学习算法进行分类.天然静态分析治安具备高检测服从, 便于大范畴的分析, 但容易被坏心代码制造者和发布者通过代码污辱和修改URL特征躲闪检测.文献[8]的作家选拔了20个主流杀毒软件, 并选拔了510份含坏心JavaScript代码的网页样本进行检测, 平均检测见服从为86.85%, 在接受了不同污辱技艺对样本内JavaScript代码污辱后, 平均检测率镌汰为55.3%~0%.

●  动态分析治安在页面内容推论时对其进行分析.

文献[9]提议一个名为HoneyMonkey的自动化检测系统.该系统使用两类诬捏机模拟果然的浏览者看望网站:一类是莫得装置安全补丁, 存在已知缝隙的诬捏机; 另一类是已装置安全补丁, 用于发现0-day缝隙的诬捏机.HoneyMonkey在浏览网页的过程中采集5类信息来检测网页的坏心步履:文献操作、进度创建、Windows注册表修改、缝隙利用和浏览器跳转.文献[10]对网页中的JavaScript生成的字符串进行X86提醒模拟, 并使用启发式算法检测是否Shellcode.文献[11]提议的治安通过插桩后的浏览器模拟自便系统环境和确立, 跟踪JavaScript代码函数的界说和调用并索求关联重定向、反污辱、环境策画和缝隙利用的特征考验分类模子、检测网页木马.文献[12]提议的治安在浏览器堆内存空间中检测带领限度流到Shellcode的NOP滑板提醒, 中断Shellcode的推论.文献[13]通过动态分析浏览器诠释注解JavaScript得到的字节码的调用序列, 并从中索求特征, 用机器学习算法分类.文献[14]通过分析网页浏览时浏览器级系统调用的推论, 结合数据依赖分析、介意规矩和JavaScript重现机制考验有限状态自动机分类模子, 检测坏心JavaScript代码.与静态分析治安比拟, 动态分析治安草率有用地处理代码污辱和加密, 但问题是需要较长的检测时刻和资源蹧跶.

●  半动态分析试图在静态分析和动态分析之间进行衡量.

文献[15]提议一个名为CUJO的网页木马介意检测系统.该系统的静态分析部分对JavaScript代码进行词法分析, 然后用通用的记号替换具体的记号符, 动态分析部分记载运算符和函数调用, 并从这两步分析出的斥逐中抽取Q-gram特征并使用SVM算法进行分类.文献[16]通过对浏览器中载入的JavaScript代码领会出的综合语法树进行带凹凸文信息的特征抽取, 并进行特征选拔, 筛选具备代表性的特征, 考验朴素贝叶斯分类器.该治安的动态分析部分用于在网页推论时代获取动态生成和推论的JavaScript代码.文献[17]的治安通过对比静态分析和运行时信息的对比, 检测伪装函数调用、污辱的函数界说以及动态推论函数和动态生成函数的参数污辱来检测污辱的坏心代码.文献[18]提议了N-Gram、entropy和字符长度这3个成见, 进行JavaScript代码污辱强度分析和坏心代码检测.

2 配景 2.1 网页木马

网页木马(drive-by-download, Web trojan)是一种常见何况危害性巨大的袭击体式.此类袭击利用袭击剧本, 即用剧本谈话编写的放在网页内的袭击向量, 借助系统缝隙静默装置坏心软件.当用户浏览时启动袭击的页面被称为着陆页面, 存放袭击剧本和坏心软件的做事器被称为坏心软件分发站点.

图 1展示了网页木马的典型袭击经由图.

Fig. 1 Typical process of drive-by download attack 图 1 典型网页木马袭击经由

频繁, 网页木马的袭击要领可分为3步.

(1)   获取和准备袭击剧本和Shellcode.受害者在看望着陆页时, 该页面将利用摈弃script, iframe或跳转的神气从坏心软件分发站点获取袭击剧本和Shellcode.着陆页面代码和袭击剧本频繁会被污辱, 以逃避杀毒软件的检测.坏心剧本为了加多袭击的见服从, 可能会检测用户的系统环境、浏览器、插件等信息, 并可能同期对多种缝隙进行袭击.

(2)   利用缝隙.袭击剧本利用受害者系统中的缝隙, 注入Shellcode, 将限度流跳转到Shellcode上启动坏心软件的下载和装置, 完成袭击者的场所.

(3)   复返袭击剧本, 下载和装置坏心软件.从费事坏心软件分发站点下载坏心软件, 并在受害者不知情的情况下装置.被装置的坏心软件可能是病毒、后门程序、木马、告白程序和间谍程序等.

为了对用户发动袭击, 袭击者不错我方搭建一个站点部署坏心代码拐骗用户看望, 但字据文献[19]的接洽, 试验天下中绝大部分袭击为了扩大袭击界限, 齐领会过各式治安将袭击剧本镶嵌到一个正规页面, 或使对正规页面的看望重定向到坏心软件分发站点.要达到这个成见, 不错使用的技能有:利用网站做事器缝隙获取限度权, 点窜网站; 利用网页应用的缝隙进行XSS, SQL注入等袭击, 使其他用户在浏览时或做事器在进行安全联系的操作时推论袭击者提供的内容; 针对援用和搀杂其他开首做事的页面, 举例第三方告白、插件和代码库, 袭击者可利用这些外部开首的内容发动袭击.

2.2 例子

Trojan:JS/Tadtruss.A(https://www.microsoft.com/security/portal/threat/encyclopedia/entry.aspx?Name=Trojan:JS/Tadtruss.A)是一种JavaScript坏心代码, 使用户浏览器跳转到坏心软件发布站点, 图 2所示为其样本示例.这段代码被摈弃在某个站点上, 并进行了代码污辱处理, 以秘密果然意图.tol函数将传进的包含污辱后代码的字符串解密并用eval函数动态推论.图中临了一排代码中传入tol函数的字符串, 解开后是一段用window.location跳转到域名为bestangelsblog.info的坏心软件分发站点.

Fig. 2 A sample of Trojan:JS/Tadtruss.A 图 2 Trojan:JS/Tadtruss.A样本

图 3所示为一段利用CVE-2012-1889缝隙[20]的袭击剧本.这段袭击剧本包含Shellcode, 即, 将要被放入浏览器堆内存空间中, 在缝隙被利用后推论的坏心机器代码.因为Shellcode联系于浏览器堆内存空间的容量来说尽头小, 而袭击者不成通过JavaScript代码精准安排某个字符串在堆内存空间内的地址, 是以为了擢升限度流跳转到Shellcode的见服从, 典型的袭击剧本使用堆喷射技艺.袭击者在Shellcode之前插入所谓的滑板提醒, 即一系列不错将限度流跳转到Shellcode的提醒, 它们频频比后续的Shellcode长好多.在该例中, Shellcode存放在shellcode变量中, 滑板提醒序列存放在slide数组中, 然后将滑板/Shellcode提醒的副本大量充斥浏览器堆内存空间, 结束了堆喷射.图 3中, 临了一排JavaScript代码调用definition治安触发缝隙, 利用微软XML中枢做事组件3.0的内存崩溃弱势费事推论代码.

Fig. 3 Vulnerability attack script sample CVE-2012-1889 图 3 CVE-2012-1889缝隙袭击剧本样本 3 基于动态步履分析的检测

咱们瞎想的基于动态步履分析的网页木马检测治安主要依赖动态分析所得到的斥逐, 具体过程包括动态分析部分的暗影推论和机器学习部分的特征索求.

3.1 动态分析

为了检测可能使用了污辱技艺的网页木马, 需要分析、处理JavaScript代码中的字符串, 包括分析字符串操作以及识别字符串的开首类型.为此给出如下界说.

界说1(字符串操作).字符串操作是一个JavaScript原生函数或操作符, 结束字符串的团结、拆分、替换、截取、编码息争码等操作.不错刻画为f(s1, s2, s3, …, sn), 其中, si是字符串操作的字符串类型的参数(如果它是字符串对象的治安, 则包括该对象自身)或操作数.每个字符串操作复返一个字符串.

界说2(字符串的源类型).字符串的获取开首类型简称为源类型, 分为5类.

(1)   字面量, 即在JavaScript代码中创建的字符串常量.

(2)   改换, 即由JavaScript代码中其他类型数据改换而得到的字符串.

(3)   HTML, 即HTML DOM中HTML元素对象治安复返的字符串和读取其属性得到的字符串.

(4)   AJAX, 即通过AJAX技艺异步从做事器获取的字符串.

(5)   URL, 即开首于面前网页的URL或载入面前页面的页面的URL.

当1个或多个字符串经过多少字符串操作后, 复返的字符串将前者的源类型的并集当作它自身的源类型, 是以, 一个字符串的源类型不错多于1个.

界说3(字符串操作记载).每个字符串齐对应一份字符串操作记载, 不错刻画为{r1, r2, r3, …, rm}, ri={fi, ti}, 其中, fi是推论的字符串操作, ti是输入该次字符串操作的字符串源类型.字符串操作记载代表该字符串由有限个字符串陆续经过m个字符串操作后得到的字符串.

界说4(动态推论函数).这是指不错推论字符串中JavaScript代码的函数.

界说5(动态生成函数).这是指不错向文档写入字符串内HTML抒发式的函数.

界说6(动态推论凹凸文).当一排JavaScript代码放在一个字符串内并通过动态推论函数或插入内联剧本的神气推论时咪咪色网, 称这条语句在动态推论凹凸文内.

为了获取字符串操作记载, 本文接受了暗影(shadow variable)推论治安.在暗影推论中, 特定的具体值有联系联的暗影值.暗影值包含与该具体值关联的信息, 为了便捷动态分析.本文的暗影推论基于JavaScript动态分析框架Jalangi2[21], 将每一个字符串包装成暗影对象, 并在推论过程中更新暗影值.

界说7(暗影对象的属性).每个暗影对象包含的属性有:

(1)   具体值val, 即字符串的原始值.

(2)   源类型source=[ti], 是一个聚合, 代表该字符串的源类型.

(3)    record=(rj), 一个字符串操作记载的数组, 即该字符串的生成过程.字符串运行化时, 包装暗影对象的字符串操作记载为空.

界说8(暗影对象的解包和更新规矩).为了在记载和更新暗影值的同期不会影响到程序推论, 暗影对象的解包和更新规矩如下:

(1)   如果字段获取obj[v], obj是一个对象, 则解包v获取obj的v字段对应的值.

(2)   二元运算操作v1 op v2, 如果v1或v2是暗影对象, 则解包出val再推论二元操作.关于复返字符串的二元抒发式, 以为其是一个字符串操作, 复返更新的暗影对象.

(3)   一元运算操作op v, 如果v是暗影对象, 则解包出val再进行一元操作.

(4)   函数调用func(v1, v2, ...), 如果func是一个原生或浏览器结束的JavaScript函数, 则对函数实参中的暗影对象进行解包; 如果该函数复返的是字符串, 则以为其是一个字符串操作, 复返更新的暗影对象.关于用户自界说函数, 参数传递时不明包, 不会影响代码推论.

界说9(暗影对象更新步履).体式化暗示为vresult=update(f, v1, v2, ..., vn):

$ \begin{array}{l} {v_{result}}.source = \bigcup\nolimits_{i = 1}^n {{v_i}} .source, \\ {v_{result}}.record = {v_1}.record + ... + {v_n}.record + recor{d_{new}}, \\ {v_{result}}.val = f({v_1}, {v_2}...{v_n}), \end{array} $

其中, f是这次的字符串操作, v1, ..., vn是这次字符串操作联系的暗影对象, recordnew={f, vresult.source}.以此结束对暗影对象属性的更新.

3.2 特征索求

JavaScript谈话有多种神气插入外部剧本和页面、跳转或动态推论代码, 而且良性网页中的JavaScript代码齐有可能推论这些步履, 这些步履存在与否, 不及以当作一个页面是良性照旧恶性的判断成见.为此, 本文主要轻柔5类步履:动态推论函数推论、动态生成函数推论、剧本插入、页面插入和URL跳转, 并抽取这5类步履的联系特征.底下进行胪陈.

动态推论函数包括eval, setTimeout, setInterval, 动态生成函数包括document.write, document.writeln.剧本插入和页面插入步履不错通过createElement函数创建script标签和iframe标签, 并使用appendChild, insertBefore等函数插入到文档内完成, 也不错利用动态生成函数奏凯写入对应标签到文档中.另外, 还不错通过给HTML元素对象的innerHTML属性赋值含有iframe标签的字符串完成页面插入.URL跳转不错通过将URL字符串赋值给location对象或它的href属性, 以及当作location对象的replace函数的参数并推论完成.

为了索求与这些步履联系的特征,

●  最初, 记载这5类步履的推论以及是否在动态推论凹凸文中, 其中, 动态生成函数的实参内如果不含有script标签和iframe标签, 则不记载其该次推论.

●  其次, 为了判断与后3类步履关联的坏心污辱, 从被用于特定用途的字符串中抽取其字符串操作记载当作特征.举例, 当document.write推论时, 如果当作实参的字符串含script标签, 则该实参的字符串操作记载即被抽取; 当某个iframe元素对象的src的属性被赋值一个URL字符串时, 索求该URL字符串的字符串操作记载.

表 1列出了字符串操作记载索求的规矩.

Table 1 String operation record extraction rule 表 1 字符串操作记载索求规矩

动态推论函数和动态生成函数为拓荒者提供了便捷的污辱技能, 袭击者不错把要秘密的代码进行一系列的处理后存在1个或多个字符串内, 并在代码推论时代恢收复貌并推论.这么的解污辱过程也被称为代码张开(unfold).与此同期, 复杂的字符串处理也不错将动态插入的剧本和页面以及跳转场所的URL在代码中秘密.本文治安索求字符串操作记载当作特征, 本色上即是为了检测与剧本插入、页面插入和URL跳转联系的解污辱操作.联系于一些使用静态分析检测坏心代码和污辱的治安[6, 22], 本文治安不沟通检测其他污辱技能, 举例变量名和函数名替换、多行代码并为1行等, 因为好多主流的网站和代码库齐会使用这类技能缓慢文献尺寸.单纯沟通代码可读性当作检测成见容易形成误报, 而本文治安主要沟通特定的步履是否秘密于污辱代码之中.

以上特征是基于对污辱网页木马样本的不雅察而选拔的.如前文所述, 网页木马袭击需要利用外联剧本、外联网页和跳转来达到获取袭击剧本和Shellcode的成见, 而在试验中采集到的坏心剧本样本中, 污辱技艺被大量接受以逃避检测.天然在良性网页中, 为了幸免在HTML文档中奏凯书写告白标签导致偶然拦截加载网页内容而影响用户体验, 越来越多的拓荒者选拔在举座网页加载结束后动态载入告白, 但这么的告白载入剧本莫得必要被污辱, 也少许被污辱.更复杂的污辱将会引来更复杂的代码张开息争码步履, 是以多层污辱后的代码依然偏离了判定模子对良性网页的圭臬.

本文治安选拔联系字符串操作记载当作特征来捕捉污辱的网页木马的代码张开和URL解码步履, 而关于怎么使用字符串操作的样式来判定一个网页是否恶性, 咱们使用机器学习的治安来获取判定模子.关于一些拓荒者为了保护常识产权而污辱部分代码的步履, 如果污辱的场所代码与外联Web内容和跳转无关, 本治安不会从中索求特征, 以幸免误判.同期, 咱们选拔的字符串操作记载特征是字符串操作和操作的字符串源类型的组合, 是以一方面膨胀了特征空间, 另一方面草率更细腻地对良性和坏心代码作出区分.

另外, 针对利用JavaScript在浏览器堆内存空间内大量充斥滑板提醒和Shellcode的坏心操作, 本文提议一个检测成见, 称为堆危境成见, 来斟酌剧本推论此类坏心步履的可能性.在JavaScript谈话中, 通盘创建的对象齐存储于堆中, 浏览器不错很便捷地在它们的生命周期内进行措置.试验中好多袭击剧本频频会使用滑板Shellcode字符串填充一个长度很大的数组, 因为在JavaScript中, 数组其实即是一个对象, 而数组的特色也便捷进行批量操作.相对来说, 良性网站为了幸免性能问题影响用户体验, 会尽量将JavaScript代码在推论过程中对堆内存空间的占用限度在一个合理的界限内.从这个角度沟通, 本文治安检测被分析剧本运行时, 对堆内存空间的使用情况, 并计算堆危境成见当作一个特征.堆危境成见是一个非负实数, 在JavaScript一入手推论的时候, 堆危境成见为0.当一个对象的某个属性被赋值时, 同期更新堆危境成见, 具体要领如算法1所示.

算法1.堆危境成见更新算法.

输入:OldHA:更新前堆危境成见;

  NewVal:将要赋值给对象属性的值;

  OldVal:对象属性原有的值.

输出:NewHA:更新后堆危境成见.

1   NewHA=OldHA

2   if isString(OldVal) then

3     if OldVal.length≥1024 then

4     NewHA=NewHA-OldVal/1024

5   if isString(NewVal) then

6     if NewVal.length≥1024 then

7       NewHA=NewHA+NewVal/1024

8         return NewHA

算法1最初将旧的堆危境成见值赋值给一个存放新的堆危境成见值的变量(第1行); 然后, 判断该对象将要被赋新值的属性存储的旧值是否为字符串类型, 如果是字符串类型且其长度大于等于某个阈值, 则按第4行的抒发式更新堆危境成见值(第2行~第4行); 接着判断新值是否为字符串类型, 如果是字符串类型且其长度大于等于该阈值, 则按第7行的抒发式更新堆危境成见值(第5行~第7行); 临了复返更新后的危境成见值(第8行).

字据对试验中的袭击剧本的不雅察, 咱们设定数值1 024当作判定一个行将写入对象的字符串是否有可能是滑板提醒Shellcode的阈值.即当剧本在运行时, 对一个对象的属性赋值一个长度跳跃1 024的字符串被以为是疑似Shellcode注入的步履.对象的属性被更新后, 旧值所占的空间将被开释, 如果旧值是一个字符串且长度跳跃1 024, 则诠释该字符串曾被沟通入堆危境成见的计算.是以算法1第2行~第4行的成见是响应这个空间开释过程, 幸免对象的属性值更新天然莫得导致对象占用空间增长但堆危境成见增长的情况.字据JavaScript谈话的垃圾回收机制, 当一个对象不被援用时, 它占用的空间将会被浏览器开释.由于堆危境成见并不必于精准地计算剧本运行时代占用的堆内存空间大小, 是以不沟通字据对象自身的生命周期更新堆危境成见.

咱们使用的分析器具Jalangi2愚弄了插桩技艺[21], 使待分析的JavaScript的代码在推论时回调咱们编写的分析代码, 分析代码不错采集这些特征.

3.3 特征向量

经过动态分析和特征索求后, 咱们不错构造特征向量, 见表 2.

Table 2 Composition of sample feature matrix 表 2 样本特征矩阵的组成

在表 2中,

●   NO.当作样本的独一编号.

●   MAL暗示该样本是否推论网页木马袭击:如果, 则记号为T; 若否, 则记号为F.咱们考验得出的分类模子将字据特征来预测该记号.

探花偷拍

●   DE和DE_D代表不在动态推论凹凸文中动态推论函数的推论和动态推论凹凸文中动态推论函数的推论, 对应的特征值为推论总次数.

●   DG和DG_D代表不在动态推论凹凸文中动态生成函数的推论和动态推论凹凸文中动态生成函数的推论, 对应的特征值为推论总次数.

●   SI和SI_D代表不在动态推论凹凸文中剧本插入的推论和动态推论凹凸文中剧本插入的推论, 对应的特征值为推论总次数.

●   PI和PI_D代表不在动态推论凹凸文中页面插入的推论和动态推论凹凸文中页面插入的推论, 对应的特征值为推论总次数.

●   RE和RE_D代表不在动态推论凹凸文中跳转的推论和动态推论凹凸文中跳转的推论, 对应的特征值为推论总次数.

●   HA代表堆危境成见, 对应的特征值即成见的值.

●   SPi代表字据表 1的规矩索求的通盘字符串操作记载, 对应的特征值为该操作累计次数.

JavaScript中常见的字符串操作包括拼接(concat或+)、替换(replace)、团结(join)、编码(unescape, encodeURI, encodeURIComponent)、解码(escape, decodeURI, decodeURIComponent)、截取(substr, substring, slice, charAt)、转为小写字母(toLowerCase)、转为大写字母(toUpperCase)等.

4 实验 4.1 实验拓荒

本实验的成见是使用本文瞎想结束的器具来判定自便网页是否为推论网页木马袭击的坏心网页, 并与现存技艺进行对比, 以此诠释本文治安的有用性.

本文拓荒的实验环境包括两大部分:硬件部分处理器为Intel Core i3-350m, 内存为4G DDR3 1066;软件部分的操作系统为Windows Server 2008圭臬版, 动态程序分析使用JavaScript动态程序分析框架Jalangi2, Jalangi2运行在VirtualBox5.0诬捏机内, 诬捏机操作系统Debian 8.1, 分拨内存1.5G, 运行网页的浏览器是Firefox43.0.1, 机器学习器具使用Weka3.6.字据微软azure机器学习算法选拔治安(-in/documentation/articles/machine-learning-algorithm-cheat-sheet/), 针对本实验样本特征, 本文接受Weka中结束的有议论树分类治安BFTree[23]进行检测模子的考验, 并使用10折交叉考据考验模子检测成果, 参数接受Weka中提供的缺省值.

网页的本色类别与实验的分类斥逐比拟, 会产生如下4种情况.

(1)  True Positive, 良性网页被判定为良性网页, 该类网页被记为TP(M).

(2)  True Negative, 坏心网页被判定为坏心网页, 该类网页被记为TN(M).

(3)  False Positive, 坏心网页被判定为良性网页, 该类网页被记为FP(M).

(4)  False Negative, 良性网页被判定为坏心网页, 该类网页被记为FN(M).

其中, M为分析时输入的网页特征矩阵(见表 2).

字据以上判定斥逐, 使用漏报率(false negative rate)和误报率(false positive rate)评价实验成果, 同期捕快举座分析的准确率(accuracy).

4.2 数据集

本文实验所接受的数据集系数包含490个试验天下中采集的网页样本, 其中包含良性网页309个, 大部分开首于Alexa()环球看望排名榜前500的网站首页, 其他开首于中国看望排名榜前500的部分网站首页; 坏心网页181个, 开首于VirusShare(https://virusshare.com)网站的坏心软件数据集.

由于采集环境的问题, 在看望Alexa环球看望排名榜上的一些网站时, 会出现无法谄媚网站做事器的情况, 以及动态分析框架Jalangi2对部分网页的JavaScript代码插桩青年景的代码在运行时代会形成浏览器永劫刻假死, 咱们从Alexa环球看望榜中中式了275个网站首页, 并从Alexa中国看望榜中式了34个网站首页, 组成良性网页样本集.

推论网页木马袭击的坏心网页采集自VirusShare网站.VirusShare是一个为安全接洽者、分析师和技艺提供坏心软件样本的样本库.该样本库一直处于更新状态, 截止2017年3月, VirusShare存储着跳跃2 700万的坏心软件样本.咱们通过搜索JS.downloader, JS.exploit, JS.shellcode, JS.obfuscator等要道字来获取网页木马样本, 每个样本均被5种以上的杀毒软件判定为坏心.从下载到的200个样本中剔除了6个坏心代码(因为文献编码未知的问题无法平时推论的样本), 并剔除了13个仅在HTML文本内插入外联坏心剧本但外联剧本贯穿已失效的样本.

4.3 实验斥逐及分析

咱们提议了3个接洽问题, 瞎想了联系实验并结合实验斥逐来往应这些问题.

(1) RQ1:使用本文治安进行网页木马检测准确率何如?联系于杀毒软件和其他治安, 准确率是否更高?

字据AV-TEST(https://www.av-test.org)2016年1月~2月的杀毒软件测试斥逐, 咱们选出两款得分为6.0的杀毒软件Avast! Free AntiVirus和G Data InternetSecurity当作比较对象, 并和它们的检测成果进行对比, 斥逐见表 3.咱们的治安的准确率(96.94%)高于这两款杀毒软件(分别为95.91%和90.82%).

Table 3 Comparison of detection accuracy between our approach and two antivirus software 表 3 本文治安检测准确率和两款杀毒软件对比

除此除外, 表 4展示了和同为污辱网页坏心代码检测技艺的文献[18, 22]中治安的对比斥逐.咱们的治安误报率为6.1%, 介于另两种治安之间(分别为1%和12.13%); 漏报率为1.3%, 低于另外两种治安(5%和3.84%).

Table 4 Comparison to existing methods for detecting malicious code 表 4 与现存污辱坏心代码检测治安对比

由此可见, 本文所提议的网页木马检测治安在咱们采集的样本集上有较高的准确率.

(2) RQ2:分别从良性网页和试图发动堆喷射的坏心网页中得到的堆危境成见区分度大吗?

咱们对通盘网页样本中索求的堆危境成见特征值进行统计对比, 发现关于试图发动堆喷射的袭击剧本, 索求到的堆危境指数普遍于良性网页中索求到的堆危境指数.

因此, 堆危境成见足以用于良性网页和试图发动堆喷射的坏心网页的区分.

(3) RQ3:本文治安使用的动态分析对Web内容运行和载入时刻有哪些影响?

表 5表现了插桩前后的网页载入时刻比较.由于插桩技艺自身的端正, 插桩后的JavaScript剧本代码推论服从会低于原始代码.实验中, 对数据集内的样本插桩后, 联系于插桩之前的推论时刻增长到2倍~80倍.同期, 在网页联系剧本推论前, 还需要破耗插桩时刻.插桩时刻字据插桩文献代码量而变化.

Table 5 Performance analysis 表 5 性能分析 5 转头

本文提议了一种结合动态分析与机器学习的网页木马检测治安, 从及时推论的代码和动态生成的指定类型内容中获取联系的字符串操作记载并检测可疑的堆坏心操作, 以此组成特征向量, 并使用机器学习治安生成网页木马的检测模子.通过多角度的分析和对比, 本文所提议的治安在样本集上的检测成果要优于其他治安, 草率有用地检测污辱的网页木马.但由于本治安所使用的动态分析框架Jalangi2的插桩时刻较长, 且插桩会使JavaScript代码推论性能下落, 实验平分析用时较长, 有些网页还会使浏览器出现永劫刻假死等问题, 需要在后续使命中连接完善.

过去的使命将集聚于两个方面:一方面是由于动态分析时刻和资源蹧跶较大, 为了擢升分析服从咪咪色网, 优化治安的具体结束或者将动态分析与静态分析结合; 另一方面是由于本文治安分析对象是污辱的网页木马, 如果坏心JavaScript剧本是彻底莫得污辱的, 且不需要在堆内存空间策画Shellcode, 如果奏凯将坏心软件下载贯穿传入有缝隙的Activex控件API达成袭击, 则超出了本文治安的处理界限, 后续将沟通分析处理此类坏心代码.



附近上门

网页浏览还是成为计算机用户庸俗的日常行径.中国互联采集信息中心(CNNIC)于2017年1月22日在北京发布第39次《中国互联采集发展情景统计敷陈》[1], 舍弃2016年12月, 我国网民范畴达7.31亿, 互联网普及率为53.2%.在互联网过头应用茂密发展的同期, 各式体式的黑客袭击也盈篇满籍, 举例通过网页散播坏心软件.当用户浏览坏心网页时, 坏心软件得以传播.坏心软件被瞎想用于各式采集违纪, 如限度用户计算机、盗取私东谈主信息、推结论绝做事袭击和乱来.Mcafee实验室在2015年8月