张 婷, 钱丽萍
(北京建筑大学 电气与信息工程学院, 北京 100044)
近年来,互联网的蓬勃发展为人们的日常生活创造了极大的便利. 同时,便捷的网络服务也吸引了大量网络攻击者通过钓鱼网站、垃圾邮件和恶意软件等方式进行非法牟利. 2018年上半年,瑞星“云安全”系统在全球范围内共截获恶意网址4 785万个,其中挂马网站2 900万个,诈骗网站1 885万个. 美国恶意URL总量为1 643万个,位列全球第一,其次是中国226万个,德国72万个,分别为第二、第三位[1].
不法分子常采用诱导用户访问恶意URL的方式,对用户进行恶意攻击. 在多种恶意URL中,最具迷惑性的恶意URL类型是恶意仿冒URL. 一条完整的URL结构包括协议、主机名、路径名、文件名以及参数域5部分(RFC1738). 恶意仿冒URL通常在主机名、路径名、文件名以及参数域中使用一些知名网站的域名混淆视听. 因此,深入研究恶意仿冒URL识别技术,提出相应的检测手段和防范措施,具有重要的理论研究和实际应用意义.
恶意仿冒URL集为恶意URL集的子集,故恶意仿冒URL的检测方式与恶意URL类似. 目前,针对恶意URL的检测方式主要包括基于黑名单、机器学习及深度学习.
黑名单方法是一种方便快捷,占用资源少的检测方法,但仅能识别出已存在于黑名单中的恶意URL. Prakash等人提出使用PhishNet来扩展黑名单,并将已识别的恶意URL进行分解,然后通过相似度计算来检测未知的恶意URL[2]. 但其识别能力仍依赖原有黑名单集,不仅容易引起漏判,且时间开销大.
机器学习检测方式,该方法首先对检测数据进行特征提取,再通过常用有监督或无监督的机器学习算法进行特征模型训练,最后使用该模型对新样本进行训练. 张洋等人在网络属性、语法特性方面建立多元恶意域名属性特征,并采用随机森林、十折交叉验证等机器学习算法对提取的多元恶意域名属性特征进行分类检测,并对分类检测的结果进行分析[3]. 虽然其通常能够准确地识别未知URL,但最终模型预测结果的好坏与所选特征向量有密切联系.
深度学习方法是目前检测URL较常用的方法之一,无须人工干预,自动提取特征并分析,能够准确地识别未知恶意URL. 吴海滨等[4]利用恶意URL的上下文信息,结合深度学习方法对恶意URL进行检测. 潘司晨等[5]利用多核卷积的卷积神经网络对恶意URL进行检测. 龚泽阳等[6]利用LSTM模型对中英文混合短文本的情感表达尽心分析. 何颖刚等[7]利用LSTM模型对句子的相似度进行计算,并使用Word2Vec模型对中文字符进行字向量编码.
综上所述,本文提出一种基于分布式编码的恶意仿冒URL的检测方法,首先根据URL数据的字符特征进行分布式编码表示,将URL转换为二维向量,再利用长短期记忆网络(Long-Short Term Memory, LSTM)对二维向量进行特征提取并分类,完成恶意仿冒URL的检测.
传统前馈神经网络的输入层、隐藏层、输出层之间采用全连接方式进行连接,且节点间没有任何关系,很难处理与时间序列有关的问题. 为了顺利将上一时刻的状态应用到当前时刻,提出了循环神经网络(Recurrent Neural Network,RNN). RNN网络结构是在传统前馈神经网络结构中添加循环机制,使其同层神经元之间进行信息交互,实现对过去信息的记忆,RNN网络单元结构如图1所示,t时刻的状态值st与输出值ot的计算如式(1)、式(2)所示.
图1 RNN神经网络隐藏层展开示意图Fig.1 Expansion diagram of hidden layer of RNN neural network
(1)
ot=f(Vst)
(2)
其中,xt是t时刻的输入值,st-1是t-1时刻的状态值,U,W,V分别为xt,st-1,st的权重矩阵,θ,f为激活函数.
理论上RNN网络在当前时刻的状态取决于之前所有时刻,但实际应用中,RNN网络的反向传播迭代会导致较远时间的信息逐渐消失,使RNN网络无法建立长期依赖,无法学习到较早时期的数据信息.
为了解决RNN网络的梯度消失与长期依赖问题,研究人员提出一种特殊的RNN模型——LSTM. LSTM在标准RNN网络的基础上增加了门控机制,分别为输入门、遗忘门和输出门. LSTM通过3个门判断信息应该被遗忘还是记忆,从而有效地解决长期依赖问题. 其单元结构如图2所示.
图2 LSTM模型单元结构图Fig.2 LSTM model cell structure diagram
t时刻遗忘门ft的计算规则如式(3)所示,决定对t-1时刻信息的遗忘率.
ft=δ(Wf[ht-1,xt]+bf)
(3)
其中,[ht-1,xt]为上一时刻状态ht-1当前时刻的输入xt的组合向量;Wf,bf分别为遗忘门的权重矩阵、偏置项;δ为sigmoid激活函数.
t时刻输入门it的计算规则如式(4)所示,决定对t时刻信息的利用率.
it=δ(Wi[ht-1,xt]+bi)
(4)
其中,Wi,bi分别为输入门的权重矩阵和偏置项.
t时刻单元状态c′t的计算规则如式(5)所示,t时刻状态ct的计算规则如式(6)所示.
c′t=tanh (Wc[ht-1,xt]+bc)
(5)
ct=ftct-1+itc′t
(6)
其中,Wc,bc分别为当前单元状态的权重矩阵、偏置项,tanh为激活函数,ct-1为t-1时刻的状态.
t时刻输出门ot的计算规则如式(7)所示,决定对t时刻信息的输出率.T时刻的输出ht的计算规则如式(8)所示.
ot=δ(Wo[ht-1,xt]+bo)
(7)
ht=ottanh (ct)
(8)
其中,Wo,bo分别为输出门的权重矩阵、偏置项.
One-hot编码即一位有效编码,是数据编码中较常用的一种编码方式,其主要用于处理离散型特征的数据. One-hot编码利用n位状态寄存器对n个状态进行编码,每位寄存器独立控制一个状态,且任何时刻仅一位有效. 假设URL数据集中有m个不同字符,即该数据集的one-hot编码由[1,m]的向量表示. 例如某URL集中共有7个不同字符,比如1:t;2:a;3:o;4:b;5:.;6:c;7:m,采用one-hot编码方式对字符串“taobo.com”进行编码,如图3所示.
图3 one-hot编码结果Fig.3 One-hot encoding result
另一种较常用的编码方式为基于分布式思想的Word2Vec,其具有强大的表征能力,它将文本语料的最小语义单元映射为实数向量,并用不同语义单元的空间距离(如余弦距离、欧式距离)表示语义相似度. Word2Vec主要有skip-gram和CBOW两种模型. skip-gram模型[8]通过给定目标字符预测上下文信息,且skip-gram模型应用范围更广,更适用于较大量的训练数据. URL各部分的最细粒度为字符,字符间具有一定含义,使用Word2Vec中skip-gram模型进行编码,能够根据字符间相似性,放大字符的上下文含义,使其特征更显式的表达,为后文特征提取节省时间.
LE A等[9]提出良性与恶意URL字符频率、字符组合等特征都有明显的区别,具有不同的词法特征. 薛富等[10]提出“URL中点的个数”“@字符”等6项钓鱼网址中常见特征,若URL中有其中任意一项就判定为可疑. 张策等[11]提出“URL长度”“URL是否含有日期”等10项URL的常见特征能够对Hub网页进行有效识别. 刘健等[12]提出“顶级是否为五大域名”“是否含有特殊字符”等7项URL的静态特征,并使用多种机器学习算法进行检测. 本文利用URL的字符位置、频率和上下文关系选用skip-gram模型对URL数据集进行编码,将URL看作句子,字符则作为最小语义单元.
在对skip-gram模型的训练中,得到URL中各字符的编码方式. skip-gram模型的工作流程为:首先统计URL集中的有效字符,对有效字符按出现频次进行降幂排序后进行one-hot编码,并将URL数据集转化为训练所需的二元数据对. 然后将二元数据对放入模型中训练,将one-hot编码转化成基于分布式的稠密编码映射表. 将URL集中每个字符映射为不同的二维向量. 如图4所示.
图4 skip-gram编码结果Fig.4 Skip-gram encoding result
由图3、图4对比可知,经skip-gram分布式编码后字符向量维度更低,占内存更小,降低后续神经网络的训练时间与空间复杂度. 且每维向量均代表特殊意义,不存在无意义的“0”向量位. skip-gram分布式编码能够提取字符间的上下文关系,降低神经网络对URL特征提取的难度.
Woodbridge等[13]提出利用LSTM模型对DGA进行预测,自动提取上下文信息特征进行恶意URL域名算法的二分及多分类检测. 张志豪等[14]利用LSTM模型对交通事故安全水平进行检测,根据捕获数据间存在的时序关系,进行精确预测. 陈畅等[15]根据水轮机机组运行过程中的时序关系对后期机组的运行状态进行预测. 且调研发现URL的协议、主机名域、路径域、文件名域及参数域间具有一定的联系且URL字符串整体具有一定的语法结构和时序特性,故本文选用LSTM模型对URL进行检测.
本文构建一个2层LSTM的恶意仿冒URL检测模型,如图5所示,将ship-gram编码后的URL特征图作为输入,且单位时刻的输入为单个字符向量. 通过2层LSTM模型进行URL各字符、各部分间的时序特征提取,且每层LSTM层后接dropout层,并将第2个dropout层的时序输出结果送入平均池化层,平均池化层利用特征的局部相关原理,对特征图进行压缩,提取主要特征,如式(9)所示. 其主要目的是将LSTM模型的时序输出ht(h1,h2,…,ht-5,ht-4,…,ht,ht+1)进行去时间性平均,得到不含时间特性的输出(output)进行URL的分类检测.
(9)
其中,T为模型训练的总时间,ht为带时间向量第2个dropout层的输出,output为平均池化的结果.
Zaremba等[16]用语言模型、语音识别、机器翻译等多种实验证明在LSTM模型中正确应用dropout的重要性. 并比较同一模型中使用dropout与不使用dropout的性能差别. dropout的正确使用,能够提升模型性能,减少过拟合概率,使模型更加健壮. 如图5所示的检测恶意仿冒URL的模型中,在不同层的循环结构的信息传递中使用dropout,而同层循环结构的信息传递不使用dropout.
图5 本文URL检测模型Fig.5 The URL detection model in this article
本文模型参数如表1所示. 输入维度是指每个时刻输入数据的大小,n的取值为经one-hot或skip-gram编码后单个字符向量的维度,输入时长是指时序持续的时长,即URL的长度. 两层LSTM层分别使用128和256的隐藏节点数. Dropout设置为0.4和0.5,随机更新部分神经元,且测试时dropout设置为1. 利用模型的所有参数完成恶意仿冒URL的特征提取与检测.
表1 模型参数设置
王雨琪等[17]使用从Alexa与Phishtank网站中获取的URL集作为数据集,对基于URL语言特征的钓鱼网站进行检测,刘健等[12]从恶意网址实验室与第一分类目录网爬取恶意与良性URL作为数据集,并使用多层过滤检测模型对恶意URL进行检测. 本文从上述网站中获取实验所需的恶意与良性URL数据集,并提取良性URL数据的域名字段,组成域名集. 将所提取域名集与恶意URL进行杰卡德相似系数对比,相似系数大于0.65的恶意URL即为恶意仿冒URL集. 恶意仿冒URL样例如表2所示.
表2 恶意仿冒URL样例
由表2可知,恶意仿冒URL中均存在与良性URL域名视觉相似的部分,主要是在其URL的主机名、路径名、文件名及参数域字段中仿冒一些常用域名,如“taobao.com”“www.paypal.com”“sites.google.com”等,诱导用户点击,以达到攻击的目的. 本文对极具迷惑性的恶意URL识别能够有效地提醒用户对恶意URL的访问,减少大量的恶意攻击行为.
将本文实验正、负数据集各随机选取30%的正、负数据作为测试集,剩余70%的数据作为训练集,放入模型中进行特征提取,且batchsize(批大小)为512条数据,epoch(轮次)为5 000轮.
使用平均池化的LSTM模型(pool-lstm)、标准输出层的LSTM模型(norm-lstm)分别对one-hot编码、skip-gram编码后的实验数据进行训练,组合模型分别为:skip-gram+pool-lstm模型(模型1)、skip-gram+norm-lstm模型(模型2)、one-hot+pool-lstm模型(模型3)、one-hot+norm-lstm模型(模型4). 采用十折交叉验证对本文URL数据集进行分类,且使用准确率、精确率、召回率、F1加权平均值等评价指标对实验结果进行评价,如表3所示.
表3 各模型检测结果对比
由表3可知,4种组合模型准确率、精确率、召回率、F1的结果均超过90%,故本文使用LSTM模型对编码后的URL进行特征提取并分类的方法有效. 由模型1与模型2、模型3与模型4对比可知,在使用相同编码方式的情况下,采用平均池化作为LSTM网络输出层的模型具有更优效果. 由模型1与模型3、模型2与模型4对比可知,在使用相同LSTM特征提取模型的情况下,采用skip-gram编码方式的模型具有更优效果. 故本文选择skip-gram编码与平均池化层作为LSTM网络的输出层的组合模型对恶意仿冒URL进行特征提取并分类,其准确率达97.2%.
本文针对网络安全中较常见的维护手段——恶意URL识别,提出一种基于URL分布式编码的深度学习分类算法. 实验结果证明:
1)skip-gram编码方式、平均池化特征融合方式均能够有效地提升LSTM模型特征提取的准确度.
2)较常用的检测方式,降低了特征提取的复杂度,提高了对未知恶意仿冒URL的识别能力.
3)本文提出的方法能够有效地帮助网络安全人员拦截恶意攻击,识别未知的恶意URL攻击行为. 从而保护用户的隐私及财产安全.