APP下载

使用机器学习技术识别Web攻击者

2019-09-19杨美月钟楠宇吴嘉熙唐屹

电脑知识与技术 2019年20期
关键词:机器学习

杨美月 钟楠宇 吴嘉熙 唐屹

摘要:随着Web应用程序的广泛应用,攻击者对Web应用程序的攻击也层出不穷。若能够识别应用程序的攻击者,就可以有效地帮助系统管理员设计出有针对性的防御方法。以识别跨站脚本攻击(XSS)的攻击者为例,提出一种基于机器学习的XSSer-FP方法识别Web应用程序的攻击者。该方法通过分析带攻击代码的URL特征来识别XSS攻击者。实验结果证明了该方法应用于Web攻击者识别的可行性。

关键词: XSS攻击; 机器学习; URL; 攻击者识别; 攻击溯源

中图分类号:TP393.08        文献标识码:A

文章编号:1009-3044(2019)20-0237-04

开放科学(资源服务)标识码(OSID):

Abstract: With the wide application of Web applications, the attacks on these Web applications emerge in an endless stream. If the attacker of the application can be identified, it can effectively help the system administrators design targeted defense method. Taking identifying the attacker of Cross-Site Scripting(XSS)as an example, an XSSer-FP method based on machine learning is proposed to identify the attackers of Web application. This method identifies XSS attackers by analyzing URL characteristics with attack codes. Experimental results proved the feasibility of this method in Web attacker identification.

Key words: XSS attack; machine learning; URL; attacker identification; attack tracing

1 引言

隨着互联网的不断发展,网络安全事件也频频发生,部分攻击者利用Web应用程序的漏洞为自己带来经济利益,但同时会对应用程序使用者的经济和隐私造成威胁,还会损害应用程序所有者的声誉。针对Web应用程序的攻击有多种类型,以跨站脚本攻击(XSS)为例,攻击者在用户浏览器中执行恶意脚本,从而劫持用户会话或将用户重定向到恶意网站。许多学者已经提出多种攻击源追踪的方法来定位攻击主机,以此来减少Web攻击带来的危害,但攻击者可以换另外的主机继续发起攻击。如果我们可以定位攻击者,就可以对其采取法律手段,从根本上解决安全隐患。

由于攻击者有意识地采取不同办法来隐藏自己的踪迹,如虚假IP或跳板方式,因此对于网络攻击源的追踪,现在还没有一种通用的方法来定位攻击者,都是在特定情境下,基于特定先决条件提出相对效果较好的方法,如虚假IP溯源、僵尸网络溯源、匿名网络溯源、跳板溯源和局域网溯源等,但实用性并不理想,且只能追踪到攻击者所使用的攻击主机,并不能找到攻击者。因此我们需要一种方法来实现直接定位攻击者,从而从根本上保护网络环境。

本文以XSS攻击为例,主要根据URL中的攻击代码来分析攻击背后的人。我们提出了XSSer-FP方法,用于识别XSS攻击者,并使用机器学习技术实现URL文本识别过程,从而输出攻击者分类模型。本文使用真实反映在URL中的XSS攻击代码进行了XSS攻击者识别,验证了该方法的可行性。

全文组织如下:第2节对现有的攻击源追踪技术进行了综述;第3节对识别攻击者的行为进行了可行性分析并介绍了实验需要用到的工具;第4节描述了具体的实验设计与实现;第5节总结了全文并展望未来的研究方向。

2 相关的工作

2.1 攻击溯源

在之前的研究中,学者们提出了大量追踪攻击源的方法,但关于攻击者的识别研究极少。指纹识别是一种常见的技术,它将具有大量数据的对象映射到一个较短的特征字符串上,以便进行识别,例如Wenwei Li等人[1]构造了一个基于BP神经网络的分类器,通过发送探测包最终利用分类器实现了对远程主机操作系统类型的指纹识别。

由于攻击者会有意避免IP地址暴露,为定位攻击者,目前的研究提出的攻击溯源方法只适用于某些特定情境。在文献[2]中,对早期的IP溯源方法进行了归类总结,针对不同条件有许多不同方法,如概率包标记算法[3]、确定包标记算法[4]、ICMP 标记算法[5]等;文献[6]对匿名网络中的攻击溯源进行了综述,并总结了两类攻击溯源方法:匿名网络调制追踪和匿名网络渗透追踪;此外,还有针对利用跳板主机进行攻击的溯源问题,[7]一文介绍了目前国内外主要的入侵检测方法,并对跳板攻击的入侵检测技术进行了综述。

2.2 文本作者识别

攻击溯源技术只是追踪攻击者实现攻击时使用的主机,而识别攻击者的过程与文本作者识别的过程有很大的相似之处,可以将攻击的URL作为攻击者的文本。文献[8]认为作者风格是可以从文本特征中抽象出来的,并总结了多种方法对作者归属、作者身份验证、作者特征分析等进行调查。

文献[9]使用机器学习方法对给定的文本进行分析,实验结果表明通过分析文本来识别作者是可行的,主要是对给定的训练文档进行处理,生成一个表示作者特征的数字向量,并利用机器学习方法生成一个分类器进行作者识别,向量作为分类模型的输入。

3 识别Web攻击者

3.1 可行性分析

与许多其他类型的攻击一样,成功的攻击针对的是应用程序输入,特别是用户输入、键值对输入。在Web应用程序中,这些输入主要来自HTML表单,并通过GET或POST请求传递给服务器,对于GET方法,键值输入使用统一的资源定位符(URLs)传递,而对于POST方法,成对的键值输入则体现在请求主体中,而且,攻击代码就存储在键值输入的值当中。对于某个攻击者,针对一些特定应用程序的攻击会使用他最熟悉的攻击技术,因此攻击代码的特性很可能反映了攻击者使用的技术。所以通过分析URL中的攻击代码来识别Web攻击者是可行的。

以跨站脚本攻击(XSS)攻击[10]为例。XSS是应用层的一种代码注入攻击。根据注入脚本的来源,XSS攻击可以分为三类:反射型、存储型和基于DOM的XSS攻击。如图1所示,反射型XSS攻击的过程可以列举如下。

1)构造恶意链接

攻击者构造一个带有JavaScripts的恶意链接,并引诱用户点击该链接,当用户访问该URL时,会触发XSS攻击。

2)HTTP请求

用户单击带有JavaScripts的恶意链接,然后向服务器端发送HTTP请求,并等待服务器响应。

3)HTTP回复

服务器接收并处理请求,然后响应用户请求,并将带有XSS代码的数据发送到用户的浏览器,浏览器解析数据。

4)敏感数据获取

浏览器解析带有XSS代码的数据后,会造成XSS漏洞,此时攻击者可以获取用户敏感信息,如cookie值等。

3.2 实验工具

一般来说,利用机器学习解决问题的基本思路如图2。

与一般机器学习过程类似,本文首先对实验所需的XSS攻击数据集进行预处理,接着对处理过的数据进行特征提取,并利用doc2vec模型得到特征向量,作为分类模型的输入。利用K-fold交叉验证方法对数据集进行训练集和测试集的划分,并利用训练集数据对分类模型进行训练,利用测试集数据对模型的分类能力进行测试。本实验使用多层感知器(MLP)进行分类模型训练。

对于上述实验相关工具介绍如下:Google公司在2013年开放了Word2vec[11]这一款用于训练词向量的软件工具。Word2vec可以根据给定的语料库,通过训练后的模型有效地将一个词语表达成向量形式,主要依赖skip-grams或连续词袋(CBOW)来实现。为了对句子、段落和文档等也实现向量化,Mikolov等人在2014年提出了doc2vec[12],用于实现对句子、段落等的向量化。

在训练分类模型之前,我们需要将数据分为训练集和测试集。为了充分利用数据集,使用k-fold交叉验证方法[13]。该方法的主要思想是将原始数据分为k组,随后将每一组作为测试集,其他k-1组作为训练集进行实验,这样相当于对k个数据集分别进行训练,大大提高了数据利用率。

感知器是一种二元分类器的监督学习算法,它可以判断一个由数字向量表示的输入是否属于某个特定的类,但只能对线性可分离的数据集进行分类。与感知器同理,多层感知器(MLP)[14-15]至少由三层节点组成:输入层、隐藏层和输出层,且上层的输出是下层的输入,本文使用MLP实现对攻击者的分类。

4 Web攻击者识别设计与实现

4.1 数据集

本文实验所用數据集是从http://xssed.com下载的全部total XSS,其中包含45884条XSS攻击信息,每条信息包含攻击者、URL、Pagerank等信息。

我们提出了XSSer-FP方法,用于识别XSS攻击者。其基本思想如图3所示。

XSSer-FP方法使用k-fold交叉验证来划分训练集和测试集;然后处理所有实验所需数据的URL;并利用doc2vec对分词后的数据进行向量化,提取向量特征;随后,XSSer-FP方法使用MLP来训练分类模型;最后,利用该模型对XSS攻击者进行了预测。

根据攻击者提交的攻击数量,选取10个不同的数据集进行实验,分别命名为D_0,D_1,D_2,…,D_9。对每个数据集分别使用3-fold划分训练集和测试集,并分别用于分类模型训练。表1给出了对每个数据集的具体描述:

其中,t为D_0中的一个元组,t.Author表示攻击记录提交者(攻击者),对于每一个攻击者A,令[DA={tt∈D_0∧t.Author==A}]为攻击者A提交的URLs,其中[ATR={t.Authort∈D_0}]为所有攻击者的集合。

为了降低数据集分布不均对实验结果的影响,使识别XSS攻击者的实验有意义,我们尝试使用以上不同的数据集分别进行验证。实验应达到以下预期:数据分布越均匀,识别精度越高。这样,就有理由相信我们的方法能够在适当的数据集中准确地识别XSS攻击者。

4.2 实验设计

完整的URL由 scheme, host, port, path, query和 fragment几部分组成,由其组成的URL格式如下:scheme://host:port/path?query#fragment,其中query部分包含可能被XSS攻击者破坏的键值输入。因此对于每个URL,我们将解析query部分,并对URL进行分词,例如:

我们将URL的有效载荷部分用作字母、数字和特殊字符的正则匹配,以便将URL划分为不同的特征词,效果如下:

随后利用训练后的doc2vec模型得到URL的特征向量,一般地将doc2vec模型中的特征向量设为100维,效果如下:

将攻击者作为URL的标签。采用有三层隐藏层的神经网络(MLP)进行模型训练。MLP采用数据处理后的100维特征向量作为输入,第一个隐藏层设置1000个输入节点,第二个隐藏层设置2000个输入节点,第三个隐藏层设置2000个输入节点,输出层设置1000个输入节点,最终输出2625个攻击者分类。

實验使用Rectified Linear Unit(ReLU)作为隐藏层的激活函数,这是因为ReLU能有效地解决梯度消失问题,而且文献[16]中指出ReLU的收敛速度比sigmoid和tanh快的多。对于输出层,我们使用SoftMax作为激活函数,根据相关实验发现,SoftMax与交叉熵损失函数相结合,可以很好地完成MLP分类任务。

使用交叉熵作为损失函数来评估模型,是因为交叉熵函数可以自动调整权重更新的速度,它可以表示为:

其中y表示预期输出,a表示神经元的实际输出。

实验最先使用SGD作为优化工具,发现它不能很好地收敛,存在局部最优解问题。由于神经网络是非凸的,且RMSProp在非凸条件下表现很好,且RMSProp能够避免学习率过低的问题,可以自适应地调整学习率,因此我们使用RMSProp作为优化器,学习率设置为0.001,其余使用优化器默认参数。

4.3 实验结果

我们对不同数据集的实验结果进行评估,并直观地反映在图表中,具体分析如下:

图4是使用不同的数据集进行实验的损失变化图,其中横坐标表示不同数据集,纵坐标表示损失大小。从图中可以看出数据集D_6的损失是最小的,这表明由该数据集训练的模型具有最佳的分类结果。结合数据集的分布情况,我们可以发现数据集分布越均匀,分类结果越准确。

图5是将10个不同数据集分别训练后得到的精度变化图,其中横坐标表示不同数据集,纵坐标表示精度大小。从图中可以看出,使用数据集D_6进行训练得到的识别准确率最高,且发现在D_6之前,使用提交攻击量多的攻击者的攻击信息,识别准确率更高。结合数据集的分分布情况,当攻击者提交的攻击数超过100时,数据分布较为均匀,此时,识别XSS攻击者的准确率较高。

通过对实验结果的分析,可以发现在数据分布均匀的数据集中,使用XSSer-FP方法,可以通过攻击的URL信息准确识别出XSS攻击者。

5 结论

本文主要根据URL中的攻击代码来分析Web攻击背后的人。通过分析从URL的键值输入中提取的攻击代码特征,提出了用于识别XSS攻击者的XSSer-FP方法,并使用机器学习技术实现URL文本识别过程,输出攻击者分类模型,从而达到识别攻击者的目的。

本文的主要贡献有如下三点:第一,我们对Web应用程序中键值输入的价值属性进行了研究,并表明从键值输入中可以成功解析出攻击代码的特征; 第二,证明了使用从Web应用程序的键值输入中提取的攻击代码特征,可用于识别相应的攻击者; 第三,提供了一个基于XSS攻击数据集实现XSS攻击者识别的分类模型。

由于本文的主要目的是证明通过分析Web攻击的URL信息,可以实现对攻击者的识别,因此对分类模型没有过多研究。在未来的工作中,可以使用多种分类模型进行测试,寻找关于攻击者识别问题的最优分类模型;可以试着寻找更加均匀的攻击数据集进行实验,以此降低由于数据分布不均对分类结果的影响。

参考文献:

[1] Wenwei Li, Dafang Zhang, and Jinmin Yang. Remote OS fingerprinting using BP neural network[J]. In International Conference on Advances in Neural Networks, 2005.

[2] Gao Z. Tracing Cyber Attacks from the Practical Perspective[J]. IEEE Communications Magazine, 2005, 43(5):123-131.

[3] Savage S. Practical Network Support for IP Traceback[J]. Proc. ACM SIGCOMM 2000, Aug. 2000.

[4] Belenky A. IP traceback with deterministic packet marking[J]. IEEE Comm Letters, 2003, 7(4):162-164.

[5] Dan A M, Usc/Isi D M, Felix S, et al. On Design and Evaluation of "Intention-Driven" ICMP Traceback[C]// IEEE International Conference on Computer Communications & Networks. 2001.

[6] Zhouguo C, Shi P, Shixiong Z. Traceback Technology for Anonymous Network[J]. Journal of Computer Research and Development, 2012.

[7] Wang L, Yang J. A research survey in stepping-stone intrusion detection[J]. EURASIP Journal on Wireless Communications and Networking, 2018, 2018(1).

[8] Neal T, Sundararajan K, Fatima A, et al. Surveying Stylometry Techniques and Applications[J]. ACM Computing Surveys, 2017, 50(6):1-36.

[9] Argamon S, Koppel M, Pennebaker J W, et al. Automatically profiling the author of an anonymous text[J]. Communications of the ACM, 2009, 52(2):119.

[10] Upasana Sarmah, D. K. Bhattacharyya, and J. K. Kalita. A survey of detection methods for xss attacks[J]. Journal of Network and Computer Applications, 2018.

[11] Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space[J]. arXiv preprint arXiv: 2013:1301,3781.

[12] Le Q V, Mikolov T. Distributed Representations of Sentences and Documents[J]. 2014.

[13] Tadayoshi Fushiki. Estimation of prediction error by using k -fold crossvalidation. Statistics & Computing, 2011,21(2):137-146.

[14] Gardner M W. Artificial neural networks (the multiplayer perceptron)-a review of applications in the atmospheric sciences[J]. Atmospheric Environment, 1998, 32.

[15] Allan P. Approximation theory of the MLP model in neural networks[J]. Acta Numerica, 1999, 8:53.

[16] Krizhevsky A, Sutskever I, Hinton G. ImageNet Classification with Deep Convolutional Neural Networks[C]// NIPS. Curran Associates Inc. 2012.

【通聯编辑:代影】

猜你喜欢

机器学习
前缀字母为特征在维吾尔语文本情感分类中的研究
下一代广播电视网中“人工智能”的应用
基于支持向量机的金融数据分析研究