融合k-means及其胶囊网络的DGA网络域名检测识别系统
技术领域
本发明涉及一种网络安全态势感知监测技术领域,特别是涉及一种融合k-means及其胶囊网络的DGA网络域名检测识别系统。
背景技术
僵尸网络(Botnet)是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序)病毒,从而控制者和被感染主机之间形成一个可一对多控制的网络。僵尸网络的构建主要利用软件或者硬件设备的漏洞、以及社会工程学(利用人性的弱点完成目标任务)等方式使受害主机在未发觉的情况下感染恶意僵尸程序,并使用一对多的command andcontrol(C&C)的信道,控制僵尸主机完成控制主机发出的指定的攻击行为。互联网的快速兴起和发展以及网络中用户数量的激增,但由于用户安全意识的缺乏,导致用户设备被一些恶意软件植入僵尸程序,这也是僵尸网络形成的主要原因之一。从互联网的诞生,第一个具有恶意行为的大规模僵尸网络是于1999年6月发现PrettyPark,它通过IRC协议与感染的僵尸主机维持通讯。僵尸网络是互联网上受到黑客集中控制的一群计算机,往往被黑客用来发起大规模的网络攻击,如分布式拒绝服务攻击(DDoS)、海量垃圾邮件等,同时黑客控制的这些计算机所保存的信息,譬如银行帐户的密码与社会安全号码等也都可被黑客随意取用。僵尸网络的检测有多种方法,目前主要针对网络和主机两种方式检测,即一种通过僵尸主机通信检测,另一种依赖主机是否植入僵尸程序。由于当前僵尸程序越来越隐蔽,且主机的安全绝大数取决于用户安全意识,因此通过主机方式来检测僵尸网络变得困难。由多个被植入僵尸程序的主机组成了僵尸网络,僵尸网络的控制需要与控制主机进行连接,可以直接对僵尸网络中主机直接下达执行的命令。控制主机与僵尸网络中主机进行通讯,通常使用硬编码的方式将控制主机的Internet Protocol(IP)直接写到僵尸程序中。这样导致了该通信方式一旦被网络管理员发现主机上有可疑的IP请求,可以直接通过防火墙阻断IP的流量通信。僵尸网络中主机无法接受到控制主机的命令,那么也就自然地无法发动网络攻击。攻击者为了避免IP封锁,转而使用Domain Name System(DNS)域名绑定控制主机继而达到控制僵尸网络中主机的目的。即使IP被网络管理员禁掉,但通过更换域名绑定的IP地址仍然可以继续与僵尸网络内主机保持会话。但是这种方式很难对抗逆向分析,安全人员通过逆向分析出的域名建立域名黑名单对访问的恶意域名的流量进行过滤。
为了对抗安全人员对域名的封锁和逆向分析,攻击者发明另一种对抗策略,即动态域名,该域名依靠Domain Generation Algorithms产生大量域名。组建僵尸网络的僵尸程序被事先编入设计好的DGA,利用该算法生成大量的DGA域名并周期性产生一个域名列表。在满足一定条件下(在某一个时间段内),僵尸网络的控制者会注册某些域名作为该僵尸网络的命令控制服务器访问域名。然后被感染僵尸主机上的僵尸程序根据域名列表依次与表中的域名进行连接,如果尝试域名解析成功,并且被感染僵尸主机能够收到所属僵尸网络协议的应答,此时僵尸主机便与僵尸网络的命令控制服务器通信成功,即可完成攻击者的下达的指令。如果正在进行僵尸网络通信的域名被网络安全研究人员发现并被网络运营商屏蔽,此时将攻击者会注册DGA域名列中的预定的下一个域名,于是攻击者能够保证命令控制服务器对应的域名仍然能够解析成功,维持命令控制服务器与僵尸主机的通信,从而通过该方式增加了僵尸网络抗检测和屏蔽性,提高了僵尸网络的隐蔽性。通过不断更改僵尸网络控制服务器的域名使恶意僵尸网络保持运行的技术称之为domain flux。由于domain flux的良好特性,在僵尸网络中使用DGA域名的domain flux变得十分的流行。由于使用domain flux技术使得僵尸网络防范变得越加困难,而原有的早期防御手段是非常有限,例如黑名单、正则匹配等方式。后来机器学习兴起,机器学习算法能从海量域名中学习人工设定的特征,取了非常不错成绩。但学习的特征需要人为定义,算法性能的取决去安全人员特征是否设置恰当,因此带来了不稳定因素。近年来深度学习取得快速的发展,在自然语言处理、计算机视觉、语音处理等多项任务中不断刷新当前已有性能记录,并应用到具体的工业场景中。基于深度学习的DGA域名检测方法也得到了网络安全研究人员的重视,其中主要是利用深度学习一个重要的优势,即它能自动发现数据中有效的特征并做出分类,以此来判断一条域名是否是DGA域名,通过这样的方式完成DGA域名的检测。此外不同的僵尸网络家族生成的DGA域名可按照所属家族进行多分类,通过给DGA域名打上对应家族标签,然后使用监督学习方式训练DGA域名的分类检测器。
发明内容
本发明旨在至少解决现有技术中存在的技术问题,特别创新地提出了一种融合k-means及其胶囊网络的DGA网络域名检测识别系统。
为了实现本发明的上述目的,本发明提供了一种融合k-means及其胶囊网络的DGA网络域名检测识别系统,包括网络域名获取模块、预处理模块、域名特征拼接模块、转换特征模块、整合选择模块和结果指标展示模块;
网络域名获取模块的数据输出端与预处理模块的数据输入端相连,预处理模块的数据输出端与域名特征拼接模块的数据输入端相连,域名特征拼接模块的数据输出端与转换特征模块的数据输入端相连,转换特征模块的数据输入端与整合选择模块的数据输入端相连,整合选择模块的数据输出端与结果指标展示模块的数据输入端相连;
网络域名获取模块用于获取网络域名,将获取的网络域名作为待处理网络域名;
预处理模块用于对网络域名获取模块中获取的待处理网络域名进行预处理;预处理后得到处理网络域名;
域名特征拼接模块用于对预处理模块中的处理网络域名进行网络域名特征图拼接;
转换特征模块用于将其输出的标量特征转换为向量特征;
整合选择模块用于对特征进行整合选择,得到最优的特征;
结果指标展示模块用于展示其DGA域名或/和正常域名或/和评价指标。
在本发明的一种优选实施方式中,在预处理模块中,对待处理网络域名进行预处理的方法为:
将域名字符串经过one-hot编码;
或者,将域名字符串经过one-hot编码后,再进行字符编码压缩。
在本发明的一种优选实施方式中,在域名特征拼接模块中包括:
f()表示非线性激活函数;
⊙表示逐元素相乘;
Wa表示滤波器;
b0表示第一偏置项;
C=[A1,A2,A3,…,An],
其中,C表示多个滤波器在卷积后组合在一起的特征图;
Aζ表示一个滤波器在卷积后得到的特征图,ζ=1,2,3,…,n。
在本发明的一种优选实施方式中,在转换特征模块中包括:
ui=g(Wi βCi+b1),
ui表示第i特征表达的胶囊;
g()表示一种矩阵变换方式;
Wi β表示共享滤波器中的第i滤波器;
Ci表示分组后的特征图;
b1表示第二偏置项;
u=[u1,u2,u3,…,uP],
其中,u表示多个胶囊的信息特征;
uψ表示第ψ特征表达的胶囊;ψ=1,2,3,…,P。
在本发明的一种优选实施方式中,在整合选择模块中包括:
其中,l表示度量子层胶囊与父层胶囊的网络聚类的值;
N表示子层胶囊的数量;
K表示父层胶囊的数量;
min表示求最小值函数;
vj表示父层胶囊j;
vj表示父层胶囊j;
Wji表示非共享参数;
<>表示相似性度量方法。
在本发明的一种优选实施方式中,在整合选择模块中还包括:
其中,cij表示第i子层胶囊对第j父层胶囊的支持权重因子;leaky-softmax()表示一种softmax函数变种;
Wji表示非共享参数;
vj表示父层胶囊j;
||||表示1范数操作;
<>表示相似性度量方法;
其中,vj表示父层胶囊j;
N表示子层胶囊的数量;
cij表示第i子层胶囊对第j父层胶囊的支持权重因子;
Wji表示非共享参数;
其中,vj表示父层胶囊j;
||||2表示2范数操作;
||||表示1范数操作。
在本发明的一种优选实施方式中,在结果指标展示模块中其评估指标展示包括第一评估指标或/和第二第估指标;
第一评估指标包括准确率Acc、查准率Pc、查全率Rc、调和平均值Fc之一或者任意组合;
其准确率Acc的计算方法为:
其中,Acc表示准确率;
M′表示样本的数量;
y(m)表示真实标签值;
其查准率Pc的计算方法为:
其中,Pc表示类别c的查准率;
TPc表示一个样本的真实类别为c并且模型正确地预测为类别c的数量;
FPc表示一个样本的真实类别为其他类,模型错误地预测为类别c的数量;
其查全率Rc的计算方法为:
其中,Rc表示类别c的查全率;
TPc表示一个样本的真实类别为c并且模型正确地预测为类别c的数量;
FNc表示一个样本的真实类别为c,模型错误地预测为其他类的数量;
Fc表示查准率和召回率的调和平均值;
β表示权重因子;
Pc表示类别c的查准率;
Rc表示类别c的查全率;
第二评估指标包括总体查准率Pmacro、总体召回率Rmacro、总体F1macro值之一或者任意组合;
其总体查准率Pmacro的计算方法为:
其中,Pmacro表示采用Macro计算方式求得总体查准率;
G表示样本类别数;
Pc表示类别c的查准率;
其总体召回率Rmacro的计算方法为:
其中,Rmacro表示采用Macro计算方式求得总体召回率;
G表示样本类别数;
Rc表示类别c的查全率;
其总体F1macro值的计算方法为:
其中,F1macro表示采用Macro计算方式求得召回率总体F1-Score值;
Pmacro表示采用Macro计算方式求得总体查准率;
Rmacro表示采用Macro计算方式求得总体召回率。
在本发明的一种优选实施方式中,在结果指标展示模块中还包括:
其中,TPc表示一个样本的真实类别为c并且模型正确地预测为类别c的数量;
M′表示样本的数量;
y(m)表示真实标签值;
其中,FNc表示一个样本的真实类别为c,模型错误地预测为其他类的数量;
M′表示样本的数量;
y(m)表示真实标签值;
^表示逻辑运算与;
其中,FPc表示一个样本的真实类别为其他类,模型错误地预测为类别c的数量;
M′表示样本的数量;
y(m)表示真实标签值;
∧表示逻辑运算与。
在本发明的一种优选实施方式中,还包括模型优化模块,模型优化模块包括:
Lc=Tcmax(0,m+-||vj||)2+λ(1-Tc)max(0,||vj||-m-)2,
其中,Lc表示每一个类别胶囊的损失值;
Tc表示分类的指示函数;
max()表示取最大值操作;
m+表示上边界;
vj表示父层胶囊j;
||||表示1范数操作;
λ表示类缺失的权重因子;
m-表示下边界。
在本发明的一种优选实施方式中,还包括模型优化模块,模型优化模块包括:
FL(pt)=-αt(1-pt)γlog(pt),
其中,FL(pt)表示损失值函数;
αt表示控制正负样本的权重;
pt表示样本类别的概率值;
γ表示聚焦参数;
其中,pt为样本类别的概率值;
p表示模型对正向样本类预测值;
y表示样本标签值。
在本发明的一种优选实施方式中,还包括模型优化模块,模型优化模块包括:
Lc=Tcmax(0,m+-||vj||)2+λ(1-Tc)max(0,||vj||-m-)2,
其中,Lc表示每一个类别胶囊的损失值;
Tc表示分类的指示函数;
max()表示取最大值操作;
m+表示上边界;
vj表示父层胶囊j;
||||表示1范数操作;
λ表示类缺失的权重因子;
m-表示下边界;
FL(pt)=-αt(1-pt)γlog(pt),
其中,FL(pt)表示损失值函数;
αt表示控制正负样本的权重;
pt表示样本类别的概率值;
γ表示聚焦参数;
其中,pt为样本类别的概率值;
p表示模型对正向样本类预测值;
y表示样本标签值;
其中,Total_Loss表示模型损失值;
M表示一共有M个类;
Lc表示每一个类别胶囊的损失值;
FL(pt)表示损失值函数;
pt表示样本类别的概率值。
综上所述,由于采用了上述技术方案,本发明能够对获取的域名进行DGA检测分类。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明DGA僵尸网络检测连接示意框图。
图2是本发明两种不同架构示意框图。
图3是本发明转移矩阵示意框图。
图4是本发明迭代次数的性能影响示意图。
图5是本发明测试所花费的时间示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
1前言
1.1研究目的
目前关于DGA域名检测研究大都采用卷积神经网络这种特征提取方式抽取数据内的信息,同时结合池化层把原有的连续的特征离散化。由于当前特征提取采用的卷积神经网络(CNN)存在特征表达上空间信息缺陷的问题,导致在CNN数据流中造成部分特征甚至重要特征信息的丢失。域名命名规则对其域名长度的限制,致使域名字符串不足以提供丰富的字符信息。为了在有限长度上域名字符串上提取到更丰富的特征信息,本专利申请提出了一种基于k-means路由算法的胶囊网络用于DGA僵尸域名检测。通过胶囊网络提取得到呈矢量化的特征,能够很好的体现部分到整体之间位置信息。
1.2主要创新点与贡献
(1)为了能够更好检测DGA僵尸域名,本专利申请摒弃传统神经网络设计的观念,引入胶囊网络来设计检测模型。运用胶囊网络内的胶囊单元存储的向量式的特征来弥补传统网络中标量特征表达的不足。同时本专利申请还引入k-means聚类方法作为胶囊网络内的胶囊层之间路由算法。与原来的动态路由算法相比,基于k-means路由算法提升了胶囊网络的稳定性和鲁棒性。
(2)为了客观的评估本专利申请所提出模型的有效性。本专利申请构建了两个数据集,收集真实网络环境中DGA域名并建立Real-Dataset;另外依靠域名生成算法合成DGA域名并建立Gen-Dataset数据集。通过两个数据集间的差异比较,更能发现模型之间优劣性。
(3)本专利申请提出的基于k-means路由算法的胶囊网络在Real-Dataset和Gen-Dataset上的二分类和多分类任务上均达到目前领先的成绩。本专利申请提出的模型在两个数据集的多分类任务上的评估指标macro F-Score比当前DGA僵尸域名检测模型分别提高了8.12%和3.23%。同时发现在保证检测性能的前提下,本专利申请所提出的模型在检测实时性方面也优于其他模型。
2提出的DGA僵尸网络域名检测方法
在卷积神经网络中以标量方式对数据特征表达的匮乏,于是Hinton提出了胶囊网络,它能够从数据中抽取到更复杂、更抽象的特征,同时使用向量表达数据的特征更为丰富。为了DGA域名检测器能够快速、实时地、高精准地发现域名字符串内的隐藏特征并区别僵尸DGA域名,本专利申请提出了一种基于k-means路由的胶囊网络用于僵尸DGA域名分类识别的方法。提出的DGA僵尸网络检测方法如图1所示。
胶囊网络由多个不尽相同胶囊层构成,每个胶囊层均被划分成许多个由神经单元组成的胶囊向量。在胶囊层中,胶囊的向量长度表示实体存在的概率,胶囊向量的方向则表示实例化的参数,使用胶囊向量比在原来的单个特征上表达更为丰富。同一层的胶囊通过动态路由的方式对更高阶胶囊(父层胶囊)的实例化参数进行预测,通过多个低级别的胶囊(子层胶囊)预测一致,对应的高级别的胶囊将会得到激活,会使得更高级别的胶囊的活动向量得到更大的标量积。从胶囊网络的提出,立即引发研究人员对新的网络的关心。在深度学习中,当前主流的网络架构仍然使用的是卷积神经网络,它与胶囊的主要不同在于胶囊网络用向量输出替换卷积神经网络中输出为标量的检测器,同时动态的路由协议取代传统的池化操作。同时为了保留卷积神经网络局部相关性以及跨空间学习特征的优点,因此除Capsule Layer以外的其他的层均保留了与卷积神经网络一样的结构。通过动态方式的路由传递特征实例化信息,较高层级的胶囊能够覆盖更大的文本区域,同时由于路由协议特性能够部分保留区域内实体的精确位置信息。
本专利申请提出的基于k-means路由的胶囊网络在结构上是非常简单的,可以大致划分为5层,分别是输入层、字符嵌入层、单层卷积层、Primary Capsule layer、CapsuleLinear layer。胶囊网络的架构图如图2所示,数据流从左到右,域名字符串在输入层经过one-hot编码,然后传递给Embedding layer进行字符编码压缩以此降低向量维度。接着使用标准卷积层提取文本的最初级的特征,并将多个大小相同的滤波器所产生得到多组特征图拼接在一起,并将其传递至Primary Capsule layer将标量特征转换为向量特征。Primary Capsule layer与Capsule Linear layer之间依靠路由协议对特征进行整合,通过修正子胶囊与父胶囊之间的变换矩阵和激活值等参数,获得最优的特征结果。本专利申请所提出的模型在路由算法部分是依靠k-means聚类算法实现子胶囊层与父胶囊层之间的特征选择。
最终根据Capsule Layer输出的类别胶囊的模长作为概率值预测域名是否为DGA域名以及判断DGA域名家族类别。本小节接下来的部分将会对本专利申请所提出模型更进一步描述。
2.1Convolutional Layer(卷积层)
本专利申请卷积层使用了标准的卷积方式,并使用多个不同的卷积核大小的滑动窗口(N-gram)依次从Embedding Layer抽取文本中不同位置的局部特征。卷积能够有效的从连续的词向量中提取出高层级的特征,并为下游任务提供丰富的特征支持。本专利申请的卷积层提取的特征将会传递到Primary Capsule Layer中。
假设定义
为一条域名样本内的第i字符的字符向量,其中
表示字符向量维度V在实数域取值,V表示字符向量的维度。因此整条域名则被记为
其中
表示一条域名被表示为长度为L和维度为V的矩阵,且取值均为实数域,L表示输入到模型的域名长度。并定义卷积核大小为
进行卷积运算,其中
表示卷积核尺寸的高为k
1和宽为V,且取值在实数域上,k
1为在域名上的不同位置使用的滑动窗口尺寸。一个卷积核也可以称之为一个滤波器,因此一组滤波器W
α以stride(步伐)为1的步伐条件下依次与词窗口
用VALID(有效)方式进行卷积操作,并产生特征图
表示卷积操作后得到特征图大小为L-k
1+1,且在实数域上取值。
其中
表示特征图A
a的每一列;
表示实数域;
表示词窗口;W
a表示滤波器;⊙表示逐元素相乘,b
0是第一偏置项,f()是非线性激活函数,它可以是sigmoid、hyperbolic、tangent等。在本专利申请中,选择ReLU作为卷积操作后的非线性激活函数。本专利申请卷积层使用多个滤波器以此来生成多个特征图,为了更好描述滤波器提取特征的过程,定义相同尺寸的滤波器的特征数量为n,那么值α=1,2,3,…,n,通过卷积运算后可以得到数量为n的特征图,其式子定义如下:
其中,C表示多个滤波器在卷积后组合在一起的特征图;
Aζ表示一个滤波器在卷积后得到的特征图,ζ=1,2,3,…,n;
表示特征图的shape(形状)为(L-k
1+1)×n,且在实数域上取值。
本专利申请所提出的基于k-means路由的胶囊网络设计中卷积中kernel(核)的大小分为两种方式,一种只使用了kernel=3,其结构对应架构图Capsule-I;为了在kernel尺寸上的变化以便获取更丰富的语义信息,设置三种不同的尺寸的kernel=(3,4,5),其架构图为Capsule-II。Capsule-II最后把三个平行通道的特征通过逐元素相加的方式融合在一起。图2所示是两种网络设计的结构,其中P表示Primary Capsule层的胶囊数量,M表示Capsule Linear层的胶囊数量,dcl表示Capsule Linear层胶囊的维度。第4小节实验内容对Capsule-I与Capsule-II进行的实验对比分析。
2.2Primary Capsule Layer(主胶囊层)
胶囊网络是神经网络单元的组合,其存储是关于它试图在给定的文本中不同语义之间信息,在高维向量空间中,每个胶囊代表一个文本内部的语义特征。Primary Capsulelayer是胶囊网络的第一层,本层的主要目的是将卷积神经网络标量的输出使用胶囊的向量输出来替代,并保留其中实例化参数。其中比较重要的是局部的词序和字符之间的语义信息。定义共享滤波器
表示在实数域上取值;同时其数量为n。对输入到Primary Capsule layer的特征图C分组为C
i,W
i β分别以滑动窗口方式进行卷积操作。
ui=g(Wi βCi+b1) (3)
其中Wi β表示共享滤波器中的第i滤波器;Ci表示分组后的特征图;g()是一种矩阵变换方式,即把特征图按胶囊固定的维度变换为一个二维张量;特征按胶囊维度dpc分组;b1是第二偏置项;ui表示第i特征表达的胶囊,其为一维向量。
u=[u1,u2,u3,…,uP] (4)
其中u表示多个胶囊的信息特征;u
ψ表示第ψ特征表达的胶囊;ψ=1,2,3,…,P;
表示在实数域上取值,P表示胶囊的数量,d
pc表示Primary Capsule层胶囊的维度,在本专利申请中设置参数d
pc=8。
2.3 Routing Algorithm(提出的路由算法)
胶囊网络核心的部分是路由算法,其路由机制是输入子层胶囊节点与所有可能输出的父层胶囊节点相连接,其耦合系数总和为1。胶囊层输入输出向量表示为特定实体类别的属性,并使用动态路由算法在训练过程中不断迭代来调整子层的胶囊向量和父层胶囊向量权重关系的强度。通过多个子胶囊预测一致,那么相应的父胶囊将会得到激活,会使得其父胶囊的活动向量得到更大的标量积,相比之下其他父胶囊的标量积就会减少。动态路由方式与最大池化操作相比前者不会丢弃实体重要的位置信息,增加特征信息。
由于k-means聚类算法具有计算简便、速度快的特点,同时在域名检测中,需要考虑到模型检测带来延迟的问题,在本专利申请的研究中选择k-means聚类算法作为子胶囊与父胶囊特征间聚类。
根据k-means聚类算法特点,在路由算法之前引入一个矩阵对来自PrimaryCapsule输入向量进行变换。通过这个矩阵能够保存语义的位置信息,具有从多角度特征良好的表达能力,同时k-mean在初始化的问题也能得到很好的解决,以及通过该矩阵来增加或者降低胶囊的维度。转移矩阵具有两种方式为共享参数和非共享参数,分别使用
和
表示共享权重(共享参数)W
j的shape为K,并在实数域上取值;
表示表示非共享权重(非共享参数)W
ji的shape为K×N,并在实数域上取值;其中K表示父层胶囊的数量,N表示子层胶囊的数量。图3表示子胶囊与父胶囊在共享参数和非共享参数方式转移矩阵,其中(3a)为共享参数转移矩阵,(3b)为非共享参数转移矩阵。
表1.提出的基于k-means的路由算法
接下来简要介绍一下基于k-means路由算法的流程。把输入给路由算法的向量
视为子层的胶囊i,第j个聚类中心v
j视为父层胶囊j,通过度量方式d计算子层胶囊与父层胶囊相似性,并使用优化迭代方式减少l的值。其中d表示相似程度的度量。
其中,l表示度量子层胶囊与父层胶囊的网络聚类的值;min表示求最小值函数;
表示子层胶囊与父层胶囊相似性;
使用向量内积的方式去计算子层胶囊与父层胶囊相似性度量。同时为了避免不同胶囊之间信息相互干扰,保证语义信息的顺序位置,并为每个胶囊都独立分配一个权重,于是选择非共享参数方式变换子层胶囊信息。
其中,Wji表示非共享参数;<>表示相似性度量方法,这里是内积;cij表示第i子层胶囊对第j父层胶囊的支持权重因子,通过每次循环迭代调整该因子使得不同的子层胶囊对不同的父层胶囊支持权重发生改变,通过这种方式合理选择重要特征。
本专利申请使用了Leaky-Softmax计算cij,Leaky-Softmax是一种提升动态路由的性能的策略,目的是为了减轻噪音(例如对分类没有帮助字符、特殊符号)对胶囊网络的干扰。
其中,leaky-softmax()表示一种softmax函数变种;||||表示1范数操作;
特征转换后的子层胶囊
与权重因子c
ij乘积得到父层胶囊v
j。
S激活函数是胶囊网络中提出一种新的激活函数。该函数的作用使向量方向保持不变,而长度压缩在0到1之间。||||2表示2范数操作。公式(9)中常数项η,在本专利申请中,发现当常数项η取0.5的效果比值取1的效果要好,这是因为值为0.5时如果模长的接近0就会起到放大作用,如果值为1的话那么全局被进行压缩,使得模长接近0的情况进一步向0靠齐,忽略了其局部重要性。
2.4 Capsule Linear Layer(胶囊线性层)
Capsule Linear Layer是胶囊网络的输出层。在本专利申请中,胶囊网络的路由仅仅在Primary Capsule layer与Capsule Linear layer之间执行基于k-means路由算法,其输出的父层胶囊数量K为域名类别数,父层胶囊的维度定义为16。在胶囊中的模长越大,那么该特征就越显著。在Capsule Linear layer中根据每个域名类别的模长来预测输入给模型的域名类别。Capsule linear中每个胶囊代表一个实体的类别,使用2范数求其模长并作为实体类别的概率,即不论是二分类还是多分类任务中,取capsule linear中取向量模长的值最大对应实体类作为模型预测值。
2.5 Loss function(损失函数)
在本专利申请中的损失函数使用margin loss与focal loss结合的方式,计算出的损失值后通过梯度下降优化模型中的可训练参数。公式(10)计算得到每一个类别胶囊的损失值Lc,然后把所有类别胶囊的损失值进行简单求和得到总margin loss值。
Lc=Tcmax(0,m+-||vj||)2+λ(1-Tc)max(0,||vj||-m-)2 (10)
其中,Lc表示每一个类别胶囊的损失值;max()表示取最大值操作;λ表示类缺失的权重因子;c为域名分类的类别,Tc为分类的指示函数,当c存在Tc为1,不存在Tc为0。m+为上边界,取值为0.9,m-为下边界,取值为0.1。
为了缓解数据类别不平衡带来的影响,本专利申请引入focal loss计算其中部分损失。
FL(pt)=-αt(1-pt)γlog(pt) (11)
其中,FL(pt)表示损失值函数;log表示对数,其底数为2,或者为自然底数e或者10;可以根据实际情况进行设置;
其中,p表示模型对正向样本类预测值;y表示样本标签值;γ表示聚焦参数;αt是控制正负样本的权重,pt为样本类别的概率值。通过margin loss和focal loss之和作为模型损失值并使用Total_Loss表示。
其中,Total_Loss表示模型损失值。
3实验结果与分析
接下来的小节将会对第三小节的内提出基于k-means路由算法的胶囊网络在域名数据集上进行验证,并使用评价指标量化模型的性能。
3.1实验设置
3.1.1实验环境
本实验的基本实验环境如表2所示。
表2.基本实验环境
Environment name |
Parameter |
Processer |
Intel(R)Core(TM)i7-4790k CPU@4.0GHz |
Memory |
32GB |
Accelerating device |
NVIDIA GeForce RTX 2080Ti |
Operation system |
Ubuntu 18.04.4LTS |
IDE |
Pycharm |
Language |
Python 3.6 |
Others package |
numpy,matplotlib,pandas,sklearn,seaborn,tqdm,tensorboardX |
3.1.2超参数设置
本专利申请的模型实验的超参数:初始化学习率为0.001;学习率参数调整方式为每16个Epoch,学习率调整原来的1/2;优化器为Adam,其中betas参数分别为0.9和0.99;Epoch为128;模型内定义可训练权重矩阵使用xavier_uniform初始化;词向量的维度d定义为16。
3.2数据集介绍
本专利申请通过在数据集上的实验来证明基于k-means路由算法的胶囊网络在僵尸DGA域名检测的性能。实验的DGA域名数据来源分为两类,一类是来自从真实网络中收集的DGA域名;另一类是依靠DGA域名生成算法产生僵尸网络通信的非法域名。
3.2.1 Real-Dataset
Real-Dataset数据集由两部分组成,第一部分来自360NetlabDGA公开数据,该数据是从真实网络中捕获的DGA域名,于是作为DGA域名样本;而另一部分是非DGA域名,也就是合法的域名样本,则来自Alexa访问量全球排名1,000,000的网站域名。截止2020年2月,360Netlab公开数据集中包含了44个DGA域名家族。由于该公开数据集是来自从互联中捕获而得的,因此存在数据分布差异造成严重的数据不平衡。为了减缓数据不平衡给模型训练带来影响,本专利申请把DGA家族中样本数量过低的类别都去掉。同时把DGA家族中样本数量过高的类别都通过欠采样降低该类样本数目,这样每类DGA域名数量都在保持在合理的比例范围。把DGA样本作为Real-Dataset的正样本。与此同时,考虑到日均庞大的访问量,Alexa数据中的域名在各个DGA域名识别研究中均被看作非DGA的合法域名。由于Alexa域名数量众多,使用欠采样的方式来匹配Real-Dataset中正样本数量,并把这部分合法域名称为Real-Dataset的负样本。于是对Real-Dataset统计如表3所示,其中除了包含各类样本的数量和类别意外,还包括了最大和最短的域名长度以及每类域名所使用不同字符的数量。
表3.Real-Dataset统计分布
3.2.2 Gen-Dataset
相比依靠在网络中收集的Real-Dataset数据集而言,DGA域名家族类别不足和相应样本数量较少。考虑到实验充分性,确保本专利申请所提出的模型可靠、有效。因此本专利申请额外使用33种不同的域名生成算法生成各类家族DGA域名,且每个类样本数量均在20,000。这样充分保证各个DGA家族之间数量分布均匀。同样,为了匹配Gen-Dataset的正样本的数量,Gen-Dataset内的负样本从Alexa中欠采样获取600,000条合法域名样本。
3.3数据处理
本专利申请所提出的基于k-means路由的胶囊网络模型只能处理数值型张量类型的数据,不能直接处理本专利申请的字符型的域名数据。因此需要将字符型数据转换成数值型数据,以供模型进一步训练。常见的将字符数值化的方式有两种:一种是one-hot编码方式,即词典内所有的单词都用向量(o1,o2,…,oV)表示,通过索引单词的序号,并在该位置标记为1,而其他位置都标记为0。由于一个单词需要使用长度为V的向量表示,因此单个句子需要使用二维张量L×V表示,L表示句子的长度。把这样的数据输入到模型中,会导致模型计算参数量巨大且存在数据稀疏的问题。另一种是词向量的方式,在很多自然语言处理任务中常常采用该方法进行词编码,把one-hot高维稀疏向量压缩成低维稠密的词向量,这样大大减少了计算的参数量。
在僵尸域名检测问题上,域名通过英文、数字以及使用“-”之一或者任意组合组成,大多数域名存在缩写和简化导致其语义不全,尤其是DGA域名看似是由杂乱的字符组成,且大多数时候不能直接从域名字符串上反应信息。
为了适应本专利申请数据,本专利申请采用char-level方式编码,即把每个域名中每个字符看作一个“词”,把不同的字符映射成不同的字符向量。那么一个完整的域名可记为D,其中c表示组成的字符。
D=(c1,c2,c3,…,cL) (14)
其中L为域名的长度,L是一个固定值为64。当域名的长度不足L时则进行0填充,当域名的长度超过L时使用尾截断去掉多余的字符串。由于域名对大小写敏感,根据其命名规则可知输入字符集为“abcdefghijklmnopqrstuvwxyz0123456789-.”,该字符集长度使用V1表示,则字符ci的one-hot的映射如下所示:
然后把D输入到图2中Embedding Layer中进行维度压缩。
3.4评估指标
评价指标是来衡量本专利申请所提出的基于k-means路由算法的胶囊网络在僵尸DGA域名检测性能。依据本专利申请实验的需求,划分为二分类任务和多分类任务,然后分别计算相应的准确率、查准率、召回率、F-Score的值。其中y表示样本的标签值,
表示样本的预测值,M′表示样本的数量。
准确率,被正确分类的样本占总样本的比例:
其中,Acc表示准确率;
y(m)表示真实标签值;
对于类别c来说,模型在测试集上的结果可以分为以下四种情况:
(1)True Positive(TP):一个样本的真实类别为c并且模型正确地预测为类别c。这类样本数量记为
其中,TPc表示一个样本的真实类别为c并且模型正确地预测为类别c的数量;
(2)False Negative(FN):一个样本的真实类别为c,模型错误地预测为其他类,这类样本数量记为
其中,FNc表示一个样本的真实类别为c,模型错误地预测为其他类的数量;
∧表示逻辑运算与;
(3)False Positive(FP):一个样本的真实类别为其他类,模型错误地预测为类别c。这类样本数量记为
其中,FPc表示一个样本的真实类别为其他类,模型错误地预测为类别c的数量;
(4)True Negative(TN):一个样本的真实类别为其他类,模型也预测为其他类,这类样本数量记为TNc。
表4.类别c的预测结果的混淆矩阵
根据表4为类别c的混淆矩阵,将进一步定义查准率、查全率、F-Score。
Precision,类别c的查准率是所有预测为类别c的样本中预测正确的比例:
其中,Pc表示类别c的查准率;
Recall,在DGA域名检测中也称为Detection Rate(DR),类别c的查全率是所有真实标签为类别c的样本中预测正确的比例:
其中,Rc表示类别c的查全率;
F-Score是一个综合指标,为查准率和召回率的调和平均值:
其中,Fc表示查准率和召回率的调和平均值;β是权重因子,本专利申请取值为1。
在本专利申请DGA域名多分类的实验中,需要计算所有类别上的总体查准率、召回率和总体F1-Score值。因此引入Macro-Average和Micro-Average两种计算方式。由于Macro-Average比Micro-Average计算上更合理,因此本专利申请采用Macro-Average。
其中,Pmacro表示采用Macro计算方式求得总体查准率;
G表示样本类别数;
其中,Rmacro表示采用Macro计算方式求得总体召回率;
其中,F1macro表示采用Macro计算方式求得召回率总体F1-Score值。
3.5实验结果
为了展示本专利申请所提出的基于k-means路由算法的胶囊网络对DGA僵尸域名检测在模型测试响应时间以及检测精度等各方面性能。本专利申请选择了当前在使用深度学习方法做DGA僵尸域名检测5个具有代表性的模型作为本专利申请实验的基准模型,其分别如下:
Bi-LSTM:双向的Long Short-Term Memory Network(LSTM),具有在长序列训练中防止梯度消失和梯度爆炸能力。
Bi-GRU:双向的门控神经网络,其网络是根据LSTM改进得到,相比LSTM而言GRU少一个门控,因此少一些参数。
CNN-LSTM:结合CNN在局部区域特征提取的优势以及LSTM在序列数据上记忆能力的一种变种网络。
Shallow-CNN:使用多个不同尺寸的滑动窗口且深度较浅的CNN提取文本序列特征。该网络结构简单、具有训练难度小的特点。
Attention-LSTM:在基于LSTM网络结构上使用soft-attention机制,捕获文本序列中重要的特征信息,提升模型性能。
根据上文所述,用于实验分析对比的基准模型在自然语言处理领域中的文本分类、机器翻译、文本摘要、实体抽取等多项任务中都取得了不错的成绩,同时DGA僵尸域名本专利申请也属于文本类信息,这也是在本专利申请的研究中选择这些模型作为对比模型原因之一。
本小节的实验结果均是所有模型在测试集上的性能展现。本节实验内容针对所提出基于k-means路由算法的胶囊网络和实验的对照组模型在数据集Real-Dataset与Gen-Dataset上的DGA僵尸域名分类以及其DGA域名的家族之间的识别,其分类的结果用表格形式呈现。有关DGA僵尸域名识别结果在表5与6展示,其中除了Acc、Precision、Recall、F-score还增加了AUC的评估,依此从多维度来评估本专利申请所提出模型的性能。有关DGA域名家族之间识别结果在表7与8展示,分别评估了模型在单个DGA家族类别以及对整个域名家族总体分类。由于本专利申请多分类处受篇幅的影响,致使表格不能展示模型所有的评估指标,因此本专利申请选择两个极具重要性的评估指标分别为Recall(DR)和F-score。不论在DGA僵尸域名识别还是DGA家族之间分类上的所有评估指标的数值均在[0-1]之间,且评估指标的值越高说明该模型的性能越优异,
并在每个类的域名上最优表现模型评估数值体加粗表示。但这些评估指标往往不能单独作为评估的标准,需要其他评估指标一起做出综合考量。为了方便评估数据的直观性,本专利申请采用以百分制作为单位。为了更进一步展示本专利申请所提出的模型,对胶囊网络内的k-means路由算法迭代次数做了对比分析,以及单个DGA域名样本测试实时性的表现。
3.5.1僵尸网络域名检测实验结果
DGA域名检测实质是判断任意一条域名是否为DGA域名,属于二分类任务。表5呈现的是在Real-Dataset的DGA域名检测的二分类结果。总体上来看本专利申请所提出模型与5个实验对比模型在评估指标并没有存在明显差距,且几乎所有的评估指标都在99%左右。这说明在深度学习中,不论是传统的神经网络还是胶囊网络都具有非常优异的性能。但还得指出其根本原因是Real-Dataset中的DGA域名样本与合法样本是相对容易区分。本专利申请所提出的模型在所有评估指标上都略微领先其他模型,虽然在评估指标数值上体现差别很小,但实际Real-Dataset中被划分错误样本数量并不少。
表5.Real-Dataset在二分类结果,单位为百分数(%)
表6.Gen-Dataset二分类结果对比,单位为百分数(%)
Model |
Acc |
Precision |
Recall |
F-Score |
AUC |
Bi-LSTM |
97.35 |
97.36 |
97.36 |
97.35 |
97.36 |
Bi-GRU |
96.14 |
96.19 |
96.17 |
96.14 |
96.17 |
CNN-LSTM |
97.21 |
97.21 |
97.22 |
97.21 |
97.23 |
Shallow-CNN |
96.92 |
96.93 |
96.93 |
96.92 |
96.93 |
Attention-LSTM |
92.42 |
92.45 |
92.44 |
92.42 |
92.44 |
CapsNet-I |
97.34 |
97.34 |
97.33 |
97.34 |
97.36 |
CapsNet-II |
97.59 |
97.58 |
97.57 |
97.58 |
97.60 |
表6呈现的是在Gen-Dataset的DGA域名检测的二分类结果。由于Gen-Dataset比Real-Dataset在域名家族数量多11个类别,检测的难度也就相应的提升了。本专利申请所提出的模型仍然在各个评估指标上超越其他模型,但在对比模型内不同网络架构性能差别逐渐显现出来,其中Attention-LSTM的性能是最差的。相比对比模型,本专利申请所提出方法在F-Score上提升0.23%的性能。这主要的得力于胶囊网络中使用向量来替代标量特征,特征表达更加丰富,同时胶囊网络具备等变的特性,使模型的泛化能力增强。
3.5.2僵尸网络家族分类实验结果
DGA僵尸域名家族之间分类实质是判断DGA域名是由哪种域名生成算法产生的,属于多分类任务。在Real-Dataset上DGA域名家族分类结果如表7所示,一共有22个DGA家族,每个家族都有对应模型评估指标分数。从实验结果不难看出,本专利申请所提出模型在家族域名整体识别评估指标macro的检测率(DR)和F-Score上,分别超越了最优的对照组模型9.94%和8.12%,对Real-Dataset内DGA家族域名样本的识别极具竞争性。同时对表内数据分析发现,本专利申请所提出的模型在多个DGA家族类别上取得了领先的成绩,即便在某些家族类别上未超越对比模型,但其在评估指标上紧随其后与对照组性能相差无几。在对照模型内的Bi-LSTM、Bi-GRU、LSTM-Attention、CNN-LSTM均发现在某些DGA家族上出现零检测现象,即在某类样本上评估指标数值均为0的情况。这表明这些模型在Real-Dataset上家族域名多分类识别的能力不足,其原因大致有两点:第一Real-Dataset是来自网络真实的DGA域名,从网络中收集DGA域名难度大,导致在某些家族样本量较少,即使通过欠采样方式也难做到类别之间数量合理化,该问题也是深度学习中一直存在的数据不平衡的问题;第二用于DGA家族分类的模型性能的不足,传统的神经网络单元特征表达与胶囊网络中向量特征表达存在差距。
表7.Real-Dataset多分类结果,单位为百分数(%)
表8.Gen-Dataset多分类结果,单位为百分数(%)
本专利申请所提出模型在Real-Dataset检测上不存在零样本检测现象,但是针对个样本量少或域名字符复杂的家族识别率同比其他家族有所下降,例如necurs、locky、cryptolocker。
表8是呈现各个模型在Gen-Dataset上33种不同家族域名上的表现以及整体的表现。本专利申请所提出模型与最优的对照模型相比在macro的检测率(DR)与F-score值分别提升了4.08%和3.23%。Gen-Dataset内DGA域名的种类比Real-Dataset多,对于多分类任务来讲,类别数量越多分类的难度越大。可以明显看出各个模型在Real-Dataset上macro评估指标与Gen-Dataset相比有较为显著差异。Gen-Dataset补充Real-Dataset没有涵盖的DGA家族类别,能更进一步充分的验证本专利申请所提出模型检测能力,发现模型的优缺点。Gen-Dataset内各个DGA家族域名样本数量均是依靠人为设定的,因此样本数量不平衡带来的影响微乎其微。但透过实验数据表8依然能够发现对照组内的部分模型在某些DGA家族检测上出现零检测现象,特别是kraken、monerodownloader、chinad家族上,对照模型几乎都出现零检测情况。造成这种情况的原因是因为这些难识别的域名在字符上随机性高,传统神经网络提取的特征对隐藏特征表达存在一定欠缺。而本专利申请所提出模型在Gen-Dataset性能表现非常具有竞争力,在各个DGA家族上都表现不错,即使在locky、dircrypt、proslikefan、fobber、qakbot、tempedreve和kraken与其他类别识别存在差距时,而本专利申请所提出模型依然与对比模型相比存在竞争优势。
3.5.3在CapsNet上路由算法的迭代次数与时间关系
图4分别表示本专利申请所提出k-means路由算法的胶囊网络在Real-Dataset和Gen-Dataset上二分类和多分类,对不同路由算法迭代次数的性能影响。本专利申请选择路由迭代次数分为3组实验,依次是迭代1次、迭代3次和迭代5次。每组实验分别使用Acc、Precision、Recall和F-Score评估指标量化模型的性能。从图5可知当迭代次数为3时,性能均比迭代次数为1和5好。胶囊网络迭代的次数影响到子层胶囊到父层胶囊的特征聚类,若迭代次数较少,则子层胶囊并未将特征良好的传递到所属的父层胶囊内;若迭代次数较多,会造成某些子层胶囊过度的偏向所属的父层胶囊,以至于父层胶囊得不到其他子层胶囊的支持,同时迭代次数过多会造成模型训练时间加长,但在模型性能上体现是非常有限的。且迭代次数在本专利申请所提出模型中是一个超参数,需要人为设定,在本专利申请的研究中根据模型性能表现设置迭代次数为3。
3.6模型的实时测试
对于DGA域名检测模型来说,模型的实时性也是模型重要的一个评估指标参数。在网络中通过不同的网络设备几乎都有延迟,DGA检测模型一般部署在网络进出口处监视网络内部是否存在DGA域名请求。网络工程师们都希望任何网络设备或应用部署不应该以网络延迟为牺牲,网络的延迟会影响网络内部用户体验。而且部署的DGA域名检测模型希望能够实时检测和能够快速反应报告网络安全研究人员及时处理该情况。图5是本专利申请所提出模型与对照组模型对单个域名测试的时间消耗。
通过比较发现本专利申请所提出模型在实时性上具有良好的表,其中以Capsule-I为例,因其只有一种类型的kernel,所以测试时速度相比Capsule-II快很多。
4结果
通过第3小节中实验的对比分析,本专利申请所提出的模型不仅在二分类任务上优于对照组模型,而且在两个数据集上的多分类任务都取得了非常具有竞争性的成绩。特别是在小样本的家族上识别具有良好的性能,以及针对域名字符串随机性高以及具有较强的隐藏特征域名识别都有较明显的优势。其因是本专利申请模型是基于胶囊网络设计的,通过将传统的深度学习中标量的特征变换为向量的特征,增加特征表示范围。同时胶囊觉有等变的特征,即使对同一类域名做出多种变换,然而得到高级语义信息依然保持不变,增加模型了鲁棒性。
本专利申请还通过关于模型训练时间来获取模型的训练的成本。通过实验发现循环神经网络模型(Bi-LSTM、Bi-GRU)训练时间比一般CNN时间开销更多,由于循环神经网络是序列模型,使用GPU并行加速训练并不能像CNN一样同时进行。实验还发现本专利申请所提出的模型在训练时间开销也比一般CNN高,因为胶囊网络中的子层胶囊与父层胶囊特征聚类依靠路由算法,然而路由算法需要迭代好几次,这会使胶囊网络反向传播时梯度更新变得耗时,而正向传播时间所花费很少,这也能说明为什么本专利申请所提出模型在测试时取得良好实时性。
在第3小节中,本专利申请提出的模型在大多数类别上性能的都比对照模型要优异,但是在表8中dnschanger和fobber这两个家族出现本专利申请模型与对照模型差的情况,这两个对照模型分别是CNN-LSTM与LSTM-Attention。不难发现,CNN-LSTM模型融合了卷积网络与循环神经网路的优点,LSTM-Attention使用注意机制,依靠这样的优势在某些家族上能够获得一定优势,但是从本专利申请表8实验数据结果来看只有存在极少这样的案例,不具备一定的普适应。
在日益变得复杂的网络空间中,网络空间安全问题逐渐成为重要的议题。为解决僵尸网络的控制服务器与被控的僵尸主机之间的依靠DGA域名解析连接的问题,为此本专利申请提出了一种基于k-means路由算法的胶囊网络用于检测DGA域名。通过实验证明,本专利申请所提出模型不仅在DGA域名识别任务上取得了优于对照模型的成绩,而且更是在DGA域名家族多分类中取得非常优异的成绩,分别在两个数据集Real-Dataset和Gen-Dataset上的综合评估指标macro F-score领先其他模型8.12%和3.23%。同时发现本专利申请所提出模型在小样本家族识别以及字符串上高随机性的家族识别都有不错的表现。本专利申请的胶囊网络中使用k-means作为路由算法,增强了模型的稳定性和鲁棒性。本专利申请还探索了路由迭代次数对模型的影响,进而在模型行训练中选择一个不错的迭代次数的超参数。为了DGA检测模型实时性的需要,考虑真实网络环境的部署,本专利申请所提出模型也具有相对较好实时性。
虽然本专利申请所提出模型在数据集上取得了具有竞争性的成绩。但还是得指出当前所研究中需要突破的地方,在研究DGA域名识别中所给的正常域名都是来自Alexa中,但Alexa中域名没有考虑到字符串类似DGA域名这种情况,比如广告域名、隐蔽网站域名。还有一点,增加DGA域名的辅助信息,从多维角度判断一条域名是否为DGA域名。因此这也是我们接下来所需要做的工作。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。