技术领域
[0001] 本申请涉及网络安全技术领域,特别涉及一种检测域名生成算法生成的域名的方法及装置。
相关背景技术
[0002] 目前互联网中的攻击逐渐变化为大规模的网络攻击,根据国外安全公司实验室的统计,仅2018年检测到的大规模网络攻击次数为15314次,攻击范围覆盖世界上101个国家和地区。此类大规模的网络攻击,大多数都通过Domain‑Flux技术进行流量混淆来避免安全软件的检测。该技术通过域名生成算法(Domain Generation Algorithm,DGA)生成一系列的域名,而受到攻击者控制的主机通过这些DGA域名进行通信。对于这样一类网络攻击的检测,一般可以通过检测网络通信中的DGA域名来实现。
[0003] 相关技术中,DGA生成的域名的检测方法主要包含三类:基于逆向工程的方法、基于流量分析的方法和基于域名分析的方法。基于逆向工程的方法需要对收集的DNS(Domain Name System,域名系统)流量样本进行逆向分析,从而得到域名生成算法的过程,通过生成黑名单的方法来检测DGA域名。该方法需要大量的人工分析,因此对于新的恶意DGA来进行网络攻击检测的响应较慢。基于流量分析的方法是通过分析DNS流量的行为来识别DGA域名,该方法可以考虑到查询域名的行为特征,但是需要收集大量DNS流量信息,无法实现实时的DGA域名检测。基于域名分析的方法根据正常域名和各家族DGA域名具有不同的文本特征,通过直接分析域名文本特征来进行DGA域名的检测。该方法可以实现高准确率的实时检测,被广泛用于DGA域名的检测中。
[0004] 然而,基于域名分析的DGA检测方法,大多数是通过机器学习方法针对已知家族DGA域名进行检测和分类,但会将未知家族的DGA域名错误分类为正常良性域名或某种已知家族的DGA域名,导致域名攻击无法被及时检测到或者检测到的未知DGA攻击却误判为某种已知家族的DGA域名。
[0005] 申请内容
[0006] 本申请提供一种检测域名生成算法生成的域名的方法及装置,以解决相关技术中通过机器学习方法针对已知家族DGA域名进行检测,导致将未知家族的DGA域名错误分类为正常良性域名或某种已知家族的DGA域名,使得DGA域名攻击无法被及时检测到或者检测到攻击却误判为某种已知DGA家族攻击的问题。
[0007] 本申请第一方面实施例提供一种检测域名生成算法生成的域名的方法,包括以下步骤:利用独热编码及两层全连接层,从顶级域名提取顶级域名特征;利用长短期记忆网络,从次级域名提取次级域名特征;将所述顶级域名特征与所述次级域名特征进行拼接,得到域名融合特征;根据所述域名融合特征对DGA域名进行检测和分类,并根据分类结果基于对应类别的异常检测模型得到域名生成算法家族的检测结果。
[0008] 可选地,在本申请的一个实施例中,还包括:采集每一个域名生成算法家族在被正确分类的样本在最后一层全连接层的输出向量的最大值,训练对应的单类支持向量机学习模型;将每个样本在全连接层上的输出输入对应类别的单类支持向量机学习模型进行异常检测,以进行所述未知域名生成算法家族新类别的认定。
[0009] 可选地,在本申请的一个实施例中,其中,所述独热编码的向量的维度等于顶级域名的个数,并且每个顶级域名的独热编码为对应顶级域名下标的数值为1,其他下标的数值均为0。
[0010] 可选地,在本申请的一个实施例中,所述利用长短期记忆网络,从次级域名提取次级域名特征,包括:将训练的次级域名先通过空字符补齐成预设长度的格式;通过字符的表示方法转为矩阵形式的数值表示,以输入所述长短期记忆网络进行特征的学习,以根据所述次级域名提取所述次级域名特征。
[0011] 可选地,在本申请的一个实施例中,在所述利用长短期记忆网络,从所述次级域名提取所述次级域名特征之前,还包括:将所述长短期记忆网络输出的结果的向量维度设置为与所述顶级域名特征的学习的向量维度相同。
[0012] 本申请第二方面实施例提供一种检测域名生成算法生成的域名的装置,包括:第一提取模块,用于利用独热编码及两层全连接层,从顶级域名提取顶级域名特征;第二提取模块,用于利用长短期记忆网络,从次级域名提取次级域名特征;融合模块,用于将所述顶级域名特征与所述次级域名特征进行拼接,得到域名融合特征;第一检测模块,用于根据所述域名融合特征对DGA域名进行检测和分类,并根据分类结果基于对应类别的异常检测模型得到域名生成算法DGA家族的检测结果。
[0013] 可选地,在本申请的一个实施例中,还包括:训练模块,用于采集每一个域名生成算法家族在被正确分类的样本在最后一层全连接层的输出向量的最大值,训练对应的单类支持向量机学习模型;第二检测模块,用于将每个样本在全连接层上的输出输入对应类别的单类支持向量机学习模型进行异常检测,以进行所述未知域名生成算法家族新类别的认定。
[0014] 可选地,在本申请的一个实施例中,所述第二提取模块包括:补齐单元,用于将训练的次级域名先通过空字符补齐成预设长度的格式;学习单元,用于通过字符的表示方法转为矩阵形式的数值表示,以输入所述长短期记忆网络进行特征的学习,以根据所述次级域名提取所述次级域名特征。
[0015] 本申请第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序和学习模型,所述处理器执行所述程序和模型,以实现如上述实施例所述的检测域名生成算法生成的域名的方法。
[0016] 本申请第四方面实施例提供一种计算机可读存储介质,其上存储有计算机程序和学习模型,其特征在于,该程序和模型被处理器执行,以用于实现行如上述实施例所述的检测域名生成算法生成的域名的方法。
[0017] 对已知家族的DGA域名建立分类检测模型,在实现已知DGA家族域名检测的基础上,通过对不同家族的DGA域名建立异常检测模型,从而实现未知DGA家族域名的检测,其中,对于已知家族DGA域名的检测,通过将顶级域名和次级域名分别使用独热编码和长短期记忆网络的方法提取相应的特征,在融合顶级域名和次级域名特征的基础上学习模型对DGA域名进行检测和分类,而对于未知家族DGA域名的检测,通过对每一类被正确分类检测的样本在已知家族DGA域名上的检测分类模型中的输出通过单类支持向量机拟合异常检测模型,从而在进行未知家族DGA域名的检测时,通过初始分类的结果使用对应类别的异常检测模型进行未知家族DGA域名的检测,充分利用未知类别的检测技术来识别未知家族的DGA域名,可以对DNS服务器上的域名进行实时检测,从而可以即使拦截可疑域名,保障网络安全。由此,解决了相关技术中通过机器学习方法针对已知家族DGA域名进行检测,导致将未知家族的DGA域名错误分类为正常良性域名或某种已知家族的DGA域名,使得域名攻击无法被及时检测到或者检测到攻击却误判为某种已知家族DGA域名攻击的问题。
[0018] 本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
具体实施方式
[0029] 下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
[0030] 下面参考附图描述本申请实施例的检测域名生成算法生成的域名的方法及装置。针对上述背景技术中心提到的相关技术中通过机器学习方法针对已知家族DGA域名进行检测,导致将未知家族的DGA域名错误分类为正常良性域名或某种已知家族的DGA域名,使得域名攻击无法被及时检测到或者检测到攻击却误判为某种已知家族的DGA域名攻击的问题,本申请提供了一种检测域名生成算法生成的域名的方法,在该方法中,对已知家族的DGA域名建立分类检测模型,在实现已知DGA家族域名检测的基础上,通过对不同家族的DGA域名建立异常检测模型,从而实现未知DGA家族域名的检测,其中,对于已知家族DGA域名的检测,通过将顶级域名和次级域名分别使用独热编码和长短期记忆网络的方法提取特征,在特征融合的基础上对DGA域名进行检测和分类,而对于未知家族DGA域名的检测,通过对每一类被正确分类检测的样本在已知家族DGA域名上的检测分类模型中的输出通过单类支持向量机拟合异常检测模型,从而在进行未知家族DGA域名的检测时,通过初始分类的结果使用对应类别的异常检测模型进行未知家族DGA域名的检测,充分利用未知类别的检测技术来识别未知家族的DGA域名,可以对DNS(Domain Name System,域名系统)服务器上的域名进行实时检测,从而可以即时拦截可疑域名,保障网络安全。由此,解决了相关技术中通过机器学习方法针对已知家族DGA域名进行检测,导致将未知家族的DGA域名错误分类为正常良性域名或某种已知家族的DGA域名,使得域名攻击无法被及时检测到或者检测到攻击却误判为某种已知家族的DGA域名攻击的问题。
[0031] 具体而言,图1为本申请实施例所提供的一种检测域名生成算法生成的域名的方法的流程示意图。
[0032] 如图1所示,该检测域名生成算法生成的域名的方法包括以下步骤:
[0033] 在步骤S101中,利用独热编码及两层全连接层,从顶级域名提取顶级域名特征。
[0034] 可以理解的是,步骤S101为使用独热编码加两层全连接层提取顶级域名特征。其中,待检测的域名包含顶级域名和次级域名两个部分,以待检测的域名为对象,该域名由英文句号分隔为不同的层级,最后一个英文句号字符后面的所有子字符串称为顶级域名部分,且紧邻顶级域名左侧的子字符串称为下述的次级域名部分。
[0035] 可选地,在本申请的一个实施例中,其中,独热编码的向量的维度等于顶级域名的个数,并且每个顶级域名的独热编码为对应顶级域名下标的数值为1,其他下标的数值均为0。
[0036] 具体而言,使用独热编码加两层全连接层提取顶级域名特征,即对顶级域名建立独热编码。独热编码向量的维度等于现有顶级域名的个数,每个顶级域名的独热编码为对应顶级域名下标的数值为1,其他下标的数值均为0。将该独热编码向量通过神经网络中两层全连接层(即乘两个不同的权值矩阵)输出特征的提取结果。
[0037] 在步骤S102中,利用长短期记忆网络,从次级域名提取次级域名特征。
[0038] 可以理解的是,步骤S102为使用长短期记忆网络提取次级域名特征。
[0039] 可选地,在本申请的一个实施例中,利用长短期记忆网络,从次级域名提取次级域名特征,包括:将训练的次级域名先通过空字符补齐成预设长度的格式;通过字符的表示方法转为矩阵形式的数值表示,以输入长短期记忆网络进行特征的学习,以根据次级域名提取次级域名特征。
[0040] 具体地,使用长短期记忆网络提取次级域名特征,即将次级域名首先通过空字符补齐成固定长度的格式,再通过字符的表示方法转为矩阵形式的数值表示输入LSTM(Long Short‑Term Memory,长短期记忆网络)进行次级域名特征的学习。长短期记忆网络为一种广泛使用的循环神经网络,其结构可参照标准结构实现。
[0041] 另外,在本申请的一个实施例中,在利用长短期记忆网络,从次级域名提取次级域名特征之前,还包括:将长短期记忆网络输出的结果的向量维度设置为与顶级域名特征的学习的向量维度相同。
[0042] 即言,将长短期记忆网络输出的结果的向量维度设置为与顶级域名特征学习的向量维度相同。
[0043] 在步骤S103中,将顶级域名特征与次级域名特征进行拼接,得到域名融合特征。
[0044] 可以理解的是,步骤S103为拼接顶级域名特征和次级域名特征,即言将提取到的顶级域名特征和次级域名特征通过向量拼接形成一个融合的域名特征向量。
[0045] 在步骤S104中,根据域名融合特征对DGA域名进行检测和分类,并根据分类结果基于对应类别的异常检测模型得到域名生成算法家族的检测结果。
[0046] 可以理解的是,步骤S104为将拼接后的特征输入两层全连接层进行分类,从而既可以检测已知家族的DGA域名也可以检测未知家族的DGA域名,从而可以有效地用于网络攻击检测,也充分利用了域名层级的特点进行域名的特征提取,并通过加入异常检测模型实现未知家族的DGA域名的识别,从而使得对与已知家族和未知家族的DGA域名都能具有较高的检测率,保障网络通信的安全。
[0047] 简言之,将拼接后的特征输入两层全连接层进行分类,即将拼接后的域名特征输入全连接层得到最后的DGA域名检测识别结果。
[0048] 可选地,在本申请的一个实施例中,还包括:采集每一个DGA家族在被正确分类的样本在最后一层全连接层的输出向量的最大值,训练对应的单类支持向量机学习模型;将每个样本在全连接层上的输出输入对应类别的单类支持向量机学习模型进行异常检测,以进行未知域名生成算法家族新类别的认定。
[0049] 在实际执行过程中,步骤S104后,本申请实施例的方法还包括:收集每一个DGA家族在步骤四中被正确分类的样本在最后一层全连接层的输出向量的最大值训练对应的单类支持向量机学习模型,并且将每个样本在全连接层上的输出输入对应类别的单类支持向量机进行异常检测,以进行未知DGA家族新类别的认定。
[0050] 具体而言,以上步骤S101‑步骤S104用于DGA域名检测识别的过程。对于其中模型的权值的选择,本申请实施例可以在大量有标数据中通过反向传播方法进行训练,其包括:
[0051] 步骤S105:收集每一个DGA家族在步骤4中被正确分类的样本在最后一层全连接层的输出向量的最大值训练对应的单类支持向量机。即对于每一个DGA家族和正常域名类别,分别训练一个基于单类支持向量机的异常检测模型,该模型的训练样本为对应类别在上述DGA域名识别方法中被正确识别的样本在最后一层全连接层的输出向量的最大值(包含经过激活函数前的向量和经过激活函数后的向量)。
[0052] 步骤S106:将每个样本在全连接层上的输出输入对应类别的单类支持向量机进行异常检测,进行未知DGA家族新类别的认定。即首先将待测域名通过上述步骤S101~S104的DGA域名识别方法得到初始的检测识别结果类别,再使用在步骤S105中得到的对应单类支持向量机进行异常检测,若检测为异常样本,则认定为未知家族的DGA域名;若检测为非异常样本,则保持步骤S104得出的检测结果。
[0053] 综上,在本申请的实施例中,充分利用了域名中的层级特点,使用不同的网络方式分别提取顶级域名和次级域名特征,增加DGA域名检测的准确度。同时,在检测方法中加入了单类支持向量机的异常检测模型,使得在检测已知DGA家族域名的同时可以检测未知DGA家族的域名,从而抵御不断出现的新DGA种类的域名攻击,保障目标主机的安全。本发明所述方法非常适合应用于基于DNS流量检测的防火墙与入侵检测产品中。
[0054] 以下以一个具体实施对本申请实施例的方法的原理进行详细描述。
[0055] 如图2所述,图2为本申请实施例检测已知DGA家族的流程图,训练过程与检测过程的流程均可由图中所表示,其包含特征提取和训练与检测两个部分。其中,特征提取将域名分为顶级域名和次级域名分别采用独热编码和长短期记忆网络提取特征,进而将顶级域名和次级域名的特征向量拼接成一个特征向量通过全连接层进行识别分类。在训练时,需要使用大量域名标签数据集,标签是由数值表示的对应域名属于的DGA家族类别。将该数据集使用神经网络反向传播等方法用于模块的参数拟合。在测试时,使用训练阶段学习到的参数,将单个域名输入该模块,在模块的最后得到检测识别的结果。
[0056] 图3为增加了未知DGA家族域名检测的训练部分的流程图。即找出所有的训练集数据中被正确识别的样本,将其输入方法的模型中,提取模型最后一层的输出向量的最大值用来拟合对应类别的单类支持向量机的异常检测模型。该过程一共会得到DGA家族种类数目的单类支持向量机。(在检测域名数据中包含正常域名时,单类支持向量机的个数为DGA家族数加1。)
[0057] 图4为未知DGA域名检测模块的测试方法的流程图。将待检测的域名首先通过检测已知DGA家族的模块会得到初始的识别结果。基于该结果找到对应类别的单类支持向量机,并将待检测的域名在模块中最后一层的输出向量的最大值输入该单类支持向量机中,并得到该支持向量机的异常检测结果。若判定为异常样本,则将该域名认定为未知家族的DGA域名;若判定为非异常样本,则保持原识别模块中的识别结果。
[0058] 根据本申请实施例提出的检测域名生成算法生成的域名的方法,对已知家族的DGA域名建立分类检测模型,在实现已知DGA家族域名检测的基础上,通过对不同家族的DGA域名建立异常检测模型,从而实现未知DGA家族域名的检测,其中,对于已知家族DGA域名的检测,通过将顶级域名和次级域名分别使用独热编码和长短期记忆网络的方法提取相应的特征,在融合顶级域名和次级域名特征的基础上学习模型对DGA域名进行检测和分类,而对于未知家族DGA域名的检测,通过对每一类被正确分类检测的样本在已知家族DGA域名上的检测分类模型中的输出通过单类支持向量机拟合异常检测模型,从而在进行未知家族DGA域名的检测时,通过初始分类的结果使用对应类别的异常检测模型进行未知家族DGA域名的检测,充分利用未知类别的检测技术来识别未知家族的DGA域名,可以对DNS服务器上的域名进行实时检测,从而可以即使拦截可疑域名,保障网络安全。
[0059] 其次参照附图描述根据本申请实施例提出的检测域名生成算法生成的域名的装置。
[0060] 图5是本申请实施例的检测域名生成算法生成的域名的装置的方框示意图。
[0061] 如图5所示,该检测域名生成算法生成的域名的装置10包括:第一提取模块100、第二提取模块200、融合模块300和、第一检测模块400。
[0062] 其中,第一提取模块100,用于利用独热编码及两层全连接层,从顶级域名提取顶级域名特征。
[0063] 第二提取模块200,用于利用长短期记忆网络,从次级域名提取次级域名特征。
[0064] 融合模块300,用于将所述顶级域名特征与所述次级域名特征进行拼接,得到域名融合特征。
[0065] 第一检测模块400,用于根据所述域名融合特征对DGA域名进行检测和分类,并根据分类结果基于对应类别的异常检测模型得到域名生成算法家族的检测结果。
[0066] 可选地,在本申请的一个实施例中,如图6所示,还包括:训练模块500和第二检测模块600。
[0067] 其中,训练模块500,用于采集每一个域名生成算法家族在被正确分类的样本在最后一层全连接层的输出向量的最大值,训练对应的单类支持向量机学习模型。
[0068] 第二检测模块600,用于将每个样本在全连接层上的输出输入对应类别的单类支持向量机学习模型进行异常检测,以进行所述未知域名生成算法家族新类别的认定。
[0069] 可选地,在本申请的一个实施例中,所述第二提取模块包括:补齐单元和学习单元。
[0070] 其中,补齐单元,用于将训练的次级域名先通过空字符补齐成预设长度的格式。
[0071] 学习单元,用于通过字符的表示方法转为矩阵形式的数值表示,以输入所述长短期记忆网络进行特征的学习,以根据所述次级域名提取所述次级域名特征。
[0072] 需要说明的是,前述对检测域名生成算法生成的域名的方法实施例的解释说明也适用于该实施例的检测域名生成算法生成的域名的装置,此处不再赘述。
[0073] 根据本申请实施例提出的检测域名生成算法生成的域名的装置,对已知家族的DGA域名建立分类检测模型,在实现已知DGA家族域名检测的基础上,通过对不同家族的DGA域名建立异常检测模型,从而实现未知DGA家族域名的检测,其中,对于已知家族DGA域名的检测,通过将顶级域名和次级域名分别使用独热编码和长短期记忆网络的方法提取相应的特征,在融合顶级域名和次级域名特征的基础上学习模型对DGA域名进行检测和分类,而对于未知家族DGA域名的检测,通过对每一类被正确分类检测的样本在已知家族DGA域名上的检测分类模型中的输出通过单类支持向量机拟合异常检测模型,从而在进行未知家族DGA域名的检测时,通过初始分类的结果使用对应类别的异常检测模型进行未知家族DGA域名的检测,充分利用未知类别的检测技术来识别未知家族的DGA域名,可以对DNS服务器上的域名进行实时检测,从而可以即使拦截可疑域名,保障网络安全。
[0074] 图7为本申请实施例提供的电子设备的结构示意图。该电子设备可以包括:
[0075] 存储器701、处理器702及存储在存储器701上并可在处理器702上运行的计算机程序和学习模型。
[0076] 处理器702执行程序和模型时实现上述实施例中提供的检测域名生成算法生成的域名的方法。
[0077] 进一步地,电子设备还包括:
[0078] 通信接口703,用于存储器701和处理器702之间的通信。
[0079] 存储器701,用于存放可在处理器702上运行的计算机程序和学习模型。
[0080] 存储器701可能包含高速RAM存储器,也可能还包括非易失性存储器(non‑volatile memory),例如至少一个磁盘存储器。
[0081] 如果存储器701、处理器702和通信接口703独立实现,则通信接口703、存储器701和处理器702可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0082] 可选的,在具体实现上,如果存储器701、处理器702及通信接口703,集成在一块芯片上实现,则存储器701、处理器702及通信接口703可以通过内部接口完成相互间的通信。
[0083] 处理器702可能是一个中央处理器(Central Processing Unit,简称为CPU)或者是一个中央处理器与多个图形处理器(graphics processing unit,简称为GPU)结合的深度学习处理架构,或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
[0084] 本实施例还提供一种计算机可读存储介质,其上存储有计算机程序和学习模型,其特征在于,该程序和模型被处理器执行时实现如上的检测域名生成算法生成的域名的方法。
[0085] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或N个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0086] 此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“N个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0087] 流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更N个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
[0088] 应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,N个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,如可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0089] 本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序和模型来指令相关的硬件完成,所述的程序和模型可以存储于一种计算机可读存储介质中,该程序和模型在执行时,包括方法实施例的步骤之一或其组合。