基于上下文信息的恶意URL检测技术

2019-10-08 07:45吴海滨张冬梅
软件 2019年1期
关键词:卷积神经网络网络安全

吴海滨 张冬梅

摘  要: 恶意URL现如今对网络安全影响巨大,能否高效的检测恶意URL成为一个亟待解决的问题。针对传统基于文本特征的检测方法没有考虑到URL中词的位置和上下文信息的缺点,提出了一种基于上下文信息的恶意URL检测方法,首先利用预处理方法解决了URL中存在大量的随机字符组成单词的问题,使用特殊符号作为分隔符对URL分词,对得到的分词结果使用Word2vec生成词向量空间,然后训练卷积神经网络提取文本特征并分类。实验结果表明,该方法在大量真实数据上能够达到97.30%的准确率、90.15%的召回率和92.33%的F1值。

关键词: 恶意URL;网络安全;上下文信息;词向量;卷积神经网络

中图分类号: TP393   文献标识码: A    DOI:10.3969/j.issn.1003-6970.2019.01.013

【Abstract】: Malicious URLs have a great impact on network security nowadays. Whether malicious URLs can be detected efficiently has become an urgent problem to be solved. Aiming at the disadvantage of traditional text feature-based detection methods that do not take into account the location and context information in URLs, the author propose a malicious URL detection method based on context information. Firstly, a large number words that consist of random characters in URLs are solved by preprocessing method. Special symbols are used as separators to segment URLs. Word2vec is used to generate word vector space, and then Convolutional neural network is trained to extract text features and classify them. The experimental results show that the method can achieve the accuracy of 97.30%, the recall rate of 90.15% and the F1 Score of 92.33% using a big real data set.

【Key words】: Malicious URL; Network security; Context information; Word vectors; CNN

0  引言

近年来,网络已经发展成为人们日常生活不可或缺的一项,随着互联网给人们带来越来越便利的服务,各种网站大量涌现出来。根据中国互联网络信息中心(CNNIC)发布的第41次《中国互联网络发展状况统计报告》[1]显示,截至2017年12月,中国网民规模已达7.72亿,并且这一数字还在不断增加。

然而互联网是一把双刃剑,方便和安全永远不能完美兼得,如此巨大数量的用户和网站由于安全问题而暴露出危险。互联网中存在各种各样的恶意网站、恶意软件、病毒木马,对用户个人隐私和财产安全造成巨大威胁,并且这些攻击进化的越来越复杂、自动化且难以检测。用户稍不注意就有可能导致信息泄露和财产损失。这些攻击绝大多数是通过恶意URL来实现的。URL是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。因此通过检测恶意URL来判断是否受到网络威胁是至关重要的。每天互联网上产生大量的新网页,对如何高效且准确的检测恶意URL提出了新的挑战。

为此,本文提出了一种基于上下文信息的惡意URL检测方法,把URL分类当做是文本分类的相关问题,该方法利用大量预处理的URL按照特殊符号为分隔符进行分词,并且使用词向量生成工具(Word2vec)生成词向量,然后训练卷积神经网络(CNN)学习特征,最后接入一个Softmax层进行分类。

本文余下部分的结构为:第一节介绍了当前检测恶意URL的相关研究进展,同时也介绍了在深度学习在文本分类中的应用;第二节我们详细介绍了本文提出的基于上下文信息的恶意URL检测技术;第三节描述了我们的实验结果及分析。最后一节是本文的一个总结。

1  相关工作

目前恶意URL检测技术大致可以分为2类,分别是基于黑名单的方法和基于URL和网页源码特征的机器学习方法。

1.1  基于黑名单的方法

黑名单是一份由安全监测机构维护的包含恶意网页URL的数据表。这种技术的优点是十分方便,快捷,而且资源消耗很少,适用于恶意网页检测系统的第一个环节。但是黑名单检测技术有一个致命的缺点,即该方法只能检测出以前被判定为恶意网页的URL,对于刚产生的恶意网页或者还没有被核实的恶意网页都无法检测。而且现在恶意网页生命周期短,形式多变,每天都会产生数量巨大的恶意网页,由于黑名单检测技术的时效性低这一缺陷而导致用户受到新产生的恶意网页攻击。Prakash等人[2]对黑名单技术进行了改进,构建了一个名为PhishNet的系统。该系统通过分析黑名单中的URL的结构和相似性,以此出发来寻找新的恶意URL。但是这种方法依赖于原始黑名单的规模,而且当黑名单规模变大的时候,这种方式的还需要人工总结新的规则。

1.2  基于URL和网页源码特征的机器学习方法

基于URL和网页源码特征的检测方法大致分为三个步骤:1. 收集大量的已标注样本,并且提取相应的特征。2. 把这些特征输入到机器学习算法中训练模型,常用的算法有SVM、决策树、朴素贝叶斯算法等有监督算法和KMeans等无监督算法。3.利用步骤2中训练好的模型对新样本进行预测。

MA等人[3]提出了利用URL的词汇和主机信息特征使用在线学习的方法训练出一个分类器,并且可以更快的适应恶意URL不断变化的新特征,但是用到的词袋模型(Bag of words)忽略了词语之间的顺序关系,并且没有捕获到前后词语的关联性。Sang等人[4]从URL的重定向行为提取出重定向链接长度等新特征,并使用逻辑回归分类器构建了Warningbird的实时URL检测系统。除了从URL本身提取特征之外,还有大量学者[5-7]研究了包括主机信息、网页内容、JavaScript代码等方面的特征用于分类。例如王正琦等人[8]提出的TSWMD检测系统,利用了两层分类器来实现恶意网页的检测,第一层用于快速过滤良性网页,追求检测速度,第二层使用更加复杂的特征来检测,追求检测的准确率,缺点是每一层都需要网页源码的特征,检测的时间和资源开销都比较大。

在恶意URL检测领域之外,许多学者已经在基于深度学习的文本分类[9][10][11]中做了大量的相关研究工作。例如,Kim等人[12]提出了适用于文本分类的TextCNN结构。C. N等人[13]展示了使用无监督网络(Word2vec)配合CNN在短文本情感分析方面有很好的效果。

2  基于上下文信息的恶意URL检测技术实现

本文把恶意URL检测看作是一个文本分类的相关问题,但是URL和自然语言所构成的文本不同之处主要有两点:1.文本分类中出现的词汇都是由自然语言形成的,单词出现的数量是有限的,然而URL中会有很多在样本集中由随机字符拼凑出只出现一次的单词(以下称为‘未知单词),如果没有对这些未知单词进行处理,会导致词典的空间很大,而且也会对模型的特征学习和分类结果造成一定的干扰。2.恶意URL会常用一些混淆的方式[14]来躲避安全检测工具,但是文本的作者并不会刻意隐瞒自己想要表达的情感,所以要对常见的URL混淆方式采取一定的反制措施從而提高CNN模型的特征学习和检测能力。

如图1所示,本文提出的基于上下文信息的恶意URL检测流程主要包含以下两个步骤:1.训练:对预处理的URL进行分词并存入文件;然后使用Word2vec对分词后的URL训练生成词向量;把已带有标注(恶意/正常)的URL使用词向量替换并输入到CNN模型中训练。2.预测:对待测的URL进行预处理、分词、替换为词向量,然后经过训练好的卷积神经网络进行分类,得到样本的所属类别,下面对训练流程进行详细介绍。

2.1  URL预处理方案

去掉协议和www.部分的URL的按照结构可以分为域名、路径、文件名、参数四个部分,其中对于路径和文件名中的‘未知单词分别可以替换为UNKPATH+Length、UNKFILE+Length,其中Length指的是该‘未知单词的长度,给这些‘未知单词加上长度是因为混淆的恶意URL会在其中添加垃圾字符来躲避检测,经过这种混淆方法的URL在某些部分的长度会大于正常URL,所以各部分的长度也可以为模型提供信息。在处理参数部分时又区分了参数名和参数值,分别替换为UNKKEY+Length和UNKVALUE+Length。对于域名部分的处理,恶意URL常用的混淆域名手段有两种。

(1)使用IP地址代替域名,对于这种情况,我们通过正则表达式检测出IP地址并且替换为UNKIP以此来区分它和普通的未知域名(UNKDOMAIN+ Length)。

(2)恶意URL常常使用良性知名网站的品牌名作为前缀或者后缀来迷惑用户,对于这种情况,我们选取了Alexa公布的排名前1000个网站的品牌名,来检测域名部分是否含有品牌名作为前后缀的情况,比如一个恶意URL(googledriver.rhcloud.com/ drive),其中的googledriver会被分成google和driver两个单词。如果driver这个单词只在样本集中出现一次的话,则分词之后变为google和UNKSUF6。

2.2  生成词向量

经过对URL的预处理和分词之后,每个URL会分解为单词和符号以空格隔开的的形式,一个URL就可以看作是由它们组成的一个句子。但是这种形式是不可以直接作为卷积神经网络的输入的,必须把每个单词和符号都处理为一种向量的形式。常用的词向量是one-hot编码,如图2所示。这种方法把词表示为一个维度和词典大小一样的向量,向量中只有一个元素值为1,这个为1的位置就代表了当前词汇,其他元素值都是0。这种表示方法最大的缺点就是把每个单词孤立起来了,不能很好刻画两个单词之间的关系,而且当词典空间巨大的时候容易受到维数灾难的困扰。

在以深度学习为基础的文本分类中,通常使用分布式词向量[16](Distributed representation)来表示一个单词,这种方法的基本思想是通过训练将某种语言中的每一个词映射成为一个较低固定长度N(N是一个超参数)的向量,向量中每个元素都是一个实数,相当于把原来one-hot编码得到的稀疏巨大维度压缩嵌入到一个更小维度的空间,所有的向量构成一个词向量空间,通过在这个向量空间上定义距离就可以刻画词之间的关联性了。Word2vec是一个由google开源的生成分布式词向量的工具,本质上是一个神经网络模型,词向量是此模型的一个产出物。模型中有两种训练模式CBOW (Continuous Bag-of-Words Model),Skip-gram (Continuous Skip- gram Model)。其中CBOW是上下文来预测当前词,而Skip-gram正好相反,是根据当前词预测上下文。

2.3  适用于文本分类的CNN模型结构

随着深度学习在NLP领域[17-18]的应用越来越广泛,循环神经网络(RNN)、CNN模型已经广泛应用在在文本分类领域,鉴于URL是一个短文本,根据Yin等人[19]的研究,在短文本分类上CNN更具有优势,所以我们决定采用CNN模型。实验中构建的CNN模型如图3所示。

猜你喜欢
卷积神经网络网络安全
网络安全知多少?
网络安全
网络安全人才培养应“实战化”
上网时如何注意网络安全?
基于卷积神经网络温室智能大棚监控系统的研究
基于深度卷积神经网络的物体识别算法
“4.29首都网络安全日”特别报道