DGA域名检测模型训练方法、DGA域名检测方法、装置及存储介质与流程

    专利2022-07-07  98


    本发明涉及网络安全技术领域,特别是涉及一种dga域名检测模型训练方法、dga域名检测方法、装置及存储介质。



    背景技术:

    此处的陈述仅提供与本发明有关的背景信息,而不必然地构成现有技术。

    在大型的网络系统中,特别是跨地域的互联网络系统中,如果某个节点或节点中的某个网元遭遇安全威胁攻击,这个安全威胁攻击往往会波及相邻节点和节点中的其他网元,从而引发部署在网络中安全监测设备产生大量的、重复的、有用或无用的安全威胁告警信息。对于网络安全管理人员来说,如何从这些大量的、重复的、有用或无用的安全威胁告警信息中快速、准确地定位具体哪些网元设备遭遇安全威胁攻击,并进行分析和解决问题,就显得尤为重要。

    本发明涉及网络攻击识别监测领域,具体而言,dga(域名生成算法)是一种利用随机字符来生成命令和控制(c&c)域名,从而逃避域名黑名单检测的技术手段。

    在网络攻击事件中,控制者和被感染主机之间形成一个可以一对多控制的网络,被感染的主机将通过一个c&c接收攻击者的指令。为了能和c&c服务器取得联系,同时又能规避入侵检测系统,一般攻击者会用一种随机算法来生成大量的域名,并尝试逐个连接这些域名,攻击者也会从这些域名里选择部分在dns服务商注册,一旦连接某个域名成功,即可与c&c服务器取得联系。因此,恶意域名又被称为传播僵尸网络病毒、木马、蠕虫或是进行诈骗、色情内容传播等不法行为的网站域名。恶意域名算法称为域名生成算法(dga,domaingenerationalgorithm),算法的输入称为seeds,涵盖日期、社交网络搜索热词、随机数或字典,生成的一串特殊字符前缀(比如gvevh44bvatey),添加tld后得到最终域名资源,该域名称为agd(algorithmicallygenerateddomain)。网络安全防御方为了彻底关闭该僵尸网络,需要屏蔽所有的agd,成本极大。

    检测出dga域名是僵尸程序检测技术的重要步骤,由于dga成算法规则是随机的,生成恶意域名有时候看似是没有恶意或看似正常的。因此对dga的检测缺乏自动化的方法,可以分为人工经验判断和人工特征提取结合程序判断两种。但这两种方法检出率不高,dga虚警率较高,不具备实用性。

    目前较为先进的方法是使用机器学习对大量正常和dga域名进行训练,再对位置dga域名进行检测并识别。但是现有技术中的机器学习方法需要做大量的特征工程。另一些现有技术采用基于cnn的方法对dga样本进行训练,但cnn与具有时间先后依赖关系的字符串特征提取场景不匹配。

    现有的dga域名检测方法具有以下问题和不足:

    (1)人工特征提取结合人工经验判断,工作量巨大,而且不能适应海量dga域名不断变化的攻击方式。

    (2)基于传统机器学习的dga域名检测方法,但现有机器学习方法需要做大量的特征工程,工作量和计算成本非常大,同时检测准确率完全依赖于特征的处理,需要耗费大量时间进行人工特征研究。

    (3)现有方法存在虚警率高,准确率低的问题。



    技术实现要素:

    本发明的目的在于提供一种新的dga域名检测模型训练方法、dga域名检测方法、装置及存储介质。

    本发明的目的采用以下技术方案来实现。依据本发明提出的dga域名检测方法,包括以下步骤:步骤s1,获取多个域名样本的域名信息;步骤s2,对于所述多个域名样本中的dga域名和非dga域名,分别根据所述域名信息中的至少一部分信息来训练用于特征提取的循环神经网络;并且,计算所述dga域名对应的所述循环神经网络的输出与所述非dga域名对应的所述循环神经网络的输出的比值,作为所述域名信息中的至少一部分信息的特征;步骤s3,将所述特征输入到一个分类器中进行训练,以得到dga域名分类器,用以利用所述dga域名分类器判断一个域名是否来自于域名生成算法。

    本发明的目的还可以采用以下的技术措施来进一步实现。

    前述的dga域名检测模型训练方法,所述步骤s2中的与所述dga域名对应的所述循环神经网络的输出和与所述非dga域名对应的所述循环神经网络的输出均为似然函数p(x|θ)的拟合;其中,所述x是所述域名信息中的至少一部分信息,所述θ是所述循环神经网络的参数,所述p(x|θ)表示给定所述θ后所述x的概率。

    前述的dga域名检测模型训练方法,所述域名信息包括域名的字符串;所述步骤s2中的所述对于多个所述域名样本中的dga域名和非dga域名,分别根据所述域名信息中的至少一部分信息来训练用于特征提取的循环神经网络包括:对于所述dga域名、所述非dga域名中的一个或多个,采用字符级的循环神经网络进行特征提取,采用字符级交叉熵作为损失函数进行反向传播。

    前述的dga域名检测模型训练方法,所述采用字符级的循环神经网络进行特征提取包括:除最后一个时间节拍之外,所述循环神经网络的每个时间节拍的输出是下一位字符出现的概率;所述循环神经网络的最后一个时间节拍的输出是所述似然函数的拟合,用于表示所述域名的字符串是dga或非dga的概率;所述采用字符级交叉熵作为损失函数进行反向传播包括:所述循环神经网络在每个时间节拍都进行损失函数反向传播,具体包括在每个时间节拍计算循环单元的输出与所述域名的字符串中的下一个节拍的真值之间的交叉熵并进行反向传播。

    前述的dga域名检测模型训练方法,所述dga域名对应的所述循环神经网络的输出或所述非dga域名对应的所述循环神经网络的输出为:

    其中所述x是所述域名信息中的所述至少一部分信息的字符串,所述xi是所述字符串中第i个字符,所述θ是循环神经网络的参数。

    前述的dga域名检测模型训练方法,在所述步骤s2之前,所述方法还包括:将所述域名的字符串中的每个字符采用独热方式进行编码;所述步骤s2中的根据所述域名信息中的至少一部分信息来训练用于特征提取的循环神经网络包括:根据独热编码后的所述域名的字符串,来训练所述循环神经网络。

    前述的dga域名检测模型训练方法,所述步骤s1具体包括:获取所述域名样本的主域名和子域名;所述步骤s2具体包括:对于所述主域名和所述子域名,分别训练与所述dga域名对应的所述循环神经网络、和与所述非dga域名对应的所述循环神经网络,并分别确定与所述主域名对应的所述比值、和与所述子域名对应的所述比值,分别作为所述主域名的特征和所述子域名的特征;所述步骤s3具体包括:将所述主域名的特征和所述子域名的特征输入到一个分类器中进行训练。

    前述的dga域名检测模型训练方法,所述步骤s1包括还包括:提取所述域名样本的顶级域名;在所述步骤s3之前,所述方法还包括:将所述顶级域名采用独热方式进行编码得到顶级域名独热向量,作为所述顶级域名的特征;所述步骤s3具体包括:将多个所述域名样本的所述主域名的特征、所述子域名的特征、和所述顶级域名的特征,共同输入到一个分类器中进行训练,以得到所述dga域名分类器。

    前述的dga域名检测模型训练方法,所述步骤s3具体包括:将所述特征作为输入并利用标定是否为dga域名作为监督信息,来对一个用于二分类的逻辑斯蒂回归分类器进行训练。

    前述的dga域名检测模型训练方法,所述步骤s2中利用的所述循环神经网络为基于长短期记忆的循环神经网络或者为基于门控循环单元的循环神经网络。

    本发明的目的还采用以下技术方案来实现。依据本公开提出的一种dga域名检测方法,其特征在于,所述方法包括以下步骤:利用与如任一项前述的dga域名检测模型训练方法的步骤s1相同的方式,获取待检测域名的域名信息;将所述待检测域名的域名信息中的至少一部分信息输入到如任一项前述的dga域名检测模型训练方法的步骤s2得到的dga域名对应的循环神经网络和非dga域名对应的循环神经网络,并计算所述两个循环神经网络的输出的比值,作为所述待检测域名的域名信息中的至少一部分信息的特征;将所述待检测域名的所述特征输入到如任一项前述的dga域名检测模型训练方法的步骤s3得到的dga域名分类器中,以判断所述待检测域名是否来自于域名生成算法。

    本发明的目的还采用以下技术方案来实现。依据本公开提出的一种dga域名检测模型训练装置,包括:存储器,用于存储非暂时性计算机可读指令;以及处理器,用于运行所述计算机可读指令,使得所述处理器执行时实现前述任意一种dga域名检测模型训练方法。

    本发明的目的还采用以下技术方案来实现。依据本公开提出的一种dga域名检测装置,包括:存储器,用于存储非暂时性计算机可读指令;以及处理器,用于运行所述计算机可读指令,使得所述处理器执行时实现前述任意一种dga域名检测方法。

    本发明的目的还采用以下技术方案来实现。依据本公开提出的一种计算机可读存储介质,用于存储非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时,使得所述计算机执行前述任意一种dga域名检测模型训练方法或dga域名检测方法。

    本发明与现有技术相比具有明显的优点和有益效果。借由上述技术方案,本发明提出的dga域名检测模型训练方法、dga域名检测方法、装置及存储介质至少具有下列优点及有益效果:

    1、本发明可以省去特征工程这一繁杂的过程。而如果使用现有方法来生成一长串特征列表(例如长度,元音,辅音以及n-gram模型),并使用这些特征来识别dga生成域名和非dga生成域名。需要安全人员实时的更新和创建新的特征库,这将是异常艰巨的过程。

    2、人工提取特征的方法不易应对千变万化的dga生成手段,一旦攻击者掌握了固定的人工特征提取过滤规则,那么攻击者就可以轻松地通过更新其dga来逃避检测。而本发明所示方法基于循环神经网络(简称为rnn)的自动表征学习能力,能够更快的适应不断变化的对手。

    3、当前dga生成的域名越来越以假乱真,往往和自然语言相关,具有时序特征。与基于cnn的dga检测方法相比,本发明采用rnn对具有时序特征的dga域名进行建模,更符合应用实际。

    4、本发明自动判断dga域名,并作为威胁情报供安全运维人员参考使用。大大减少了dga生成域名人工检测的人力物力的巨大投入。

    5、本发明的另一个优点是仅对域名进行识别而不使用任何上下文功能,如nxdomains,上下文功能的生成往往需要额外昂贵的基础设施(如网络传感器和第三方信誉系统)。

    6、与一般rnn方法相比,本发明可以缩短训练时间,提升训练效率。而对域名进行切人的方法,更符合域名不同部分发挥不同作用的实际。

    上述说明仅是本发明技术方案的概述,为了能更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。

    附图说明

    图1是本发明一个实施例的dga域名检测模型训练方法的流程示意图;

    图2是本发明另一实施例的dga域名的模型训练方法和检测方法的流程示意图;

    图3是本发明一个实施例提供的提取特征的流程示意图;

    图4是本发明一个实施例的dga域名检测模型训练装置的示意图;

    图5是本发明一个实施例的dga域名检测装置的示意图。

    具体实施方式

    为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的dga域名检测模型训练方法、dga域名检测方法、装置及存储介质的具体实施方式、结构、特征及其功效,详细说明如后。

    请注意,本发明涉及域名生成算法(domaingenerationalgorithm,简称dga)生成的域名,简称为dga域名、或称为dga生成域名。

    图1为本发明的dga域名检测模型训练方法一个实施例的示意性流程框图。图2为本发明的dga域名的模型训练方法和检测方法的一个实施例的示意性流程框图。需注意,虽然图2是以基于长短期记忆(简称lstm)的循环神经网络(简称rnn)为示例,但该过程也适用于一般的循环神经网络。请参阅图1和图2,本发明示例的dga域名检测模型训练方法主要包括以下步骤:

    步骤s1,获取多个域名样本的域名信息。可选的,该些域名样本是已标定是否为dga域名的域名,即是类别已知的数据,从而可以将该标定作为监督信息进行监督学习。

    步骤s2,对于该多个域名样本中的dga域名和非dga域名,分别根据域名信息中的至少一部分信息来训练用于特征提取的循环神经网络(简称rnn),用以根据dga域名、非dga域名对应的循环神经网络对域名信息中的至少一部分信息提取dga域名、非dga域名的不变性的特征;并且,计算dga域名对应的循环神经网络的输出与非dga域名对应的循环神经网络的输出的比值,作为域名信息中的至少一部分信息的特征。

    不妨将该域名信息中的至少一部分信息的特征称为检测特征或dga特征。需注意,在一些示例中,可以对域名信息中的一部分信息获取前述两个循环神经网络的输出的比值作为检测特征;对域名信息中另一部分信息,采用其他方式提取特征,作为另一部分信息的检测特征。

    可选地,对于dga域名和非dga域名,采用同种类型且结构相同的循环神经网络进行训练,当然训练好的dga域名和非dga域名对应的循环神经网络并不相同。

    步骤s3,将前述的多个域名样本的前述的域名信息中的至少一部分信息的特征输入到一个分类器中进行训练,以得到dga域名分类器,用以利用训练好的该dga域名分类器来判断一个待检测域名是否来自于域名生成算法(dga)。具体的,该步骤s3包括将步骤s2得到的dga域名对应的循环神经网络的输出与非dga域名对应的循环神经网络的输出的比值,输入到一个分类器中进行训练。

    需注意,由于神经网络二分类的分类器一般采用逻辑斯蒂回归分类器,在一些实施例中,步骤s3具体包括利用逻辑斯蒂回归分类器中进行训练。

    在本发明的一些实施例中,前述步骤s2中的根据域名信息中的至少一部分来训练用于特征提取的循环神经网络以得到该至少一部分信息的特征,具体包括:将域名信息中的第一部分域名信息、第二部分域名信息,分别训练对应的用于特征提取的循环神经网络,以得到该第一部分域名信息的特征和该第二部分域名信息的特征。需注意,对所分成的部分的数量并不限定,例如也可以为三部分、四部分或更多部分。

    在本发明的一些实施例中,步骤s2中的与dga域名对应的循环神经网络的输出和与非dga域名对应的循环神经网络的输出均为似然函数的拟合。需注意,dga域名、非dga域名对应的循环神经网络提取到的特征是dga域名、非dga域名的不变性特征,该特征可以对似然函数p(x|θ)进行拟合。其中,该x是前述的域名信息中的至少一部分信息,该参数θ是循环神经网络的参数,该p(x|θ)表示给定参数θ后x的概率。可选的,该p(x|θ)可以认为是在循环神经网络的参数θ给定的条件下,域名信息中的一部分信息x是dga的概率。在一些示例中,由于一个域名是dga的概率与非dga的概率具有如下关系p(x=dga)=1-p(x=non-dga),因此该p(x|θ)也可认为是非dga的概率。

    从而,前述的dga域名对应的循环神经网络的输出p(x|θdga)与非dga域名对应的循环神经网络的输出p(x|θnon-dga)这两个输出的比值λ(x),可以视为广义似然比,前述步骤s3事实上包括进行广义似然比测试。一般来说,似然比定义为有约束条件下的似然函数最大值与无约束条件下似然函数最大值之比。以似然比为基础可以构造一个服从卡方分布统计量。

    在本发明的一些实施例中,域名样本的域名信息包括域名的字符串,该字符串包括有序排列的多位字符。前述步骤s2中的对于多个域名样本中的dga域名和非dga域名,分别根据域名信息中的至少一部信息分来训练用于特征提取的循环神经网络包括:对于dga域名、非dga域名中的一个或多个,采用字符级的循环神经网络进行特征提取,采用字符级交叉熵作为损失函数进行反向传播。

    在本发明的一些实施例中,该字符级指的是基于域名的字符串中的各个字符。在本发明的一些具体示例中,采用的字符级rnn为:rnn中的每个时间节拍对应于被输入的字符串中的一位字符,训练阶段的损失函数是每个节拍的输出和下一节拍真值的交叉熵,进行误差反向传播,如果字符串的长度是n,则需要反向传播n次。

    在一个可选实施例中,前述的采用字符级的循环神经网络进行特征提取包括:在循环神经网络中,除最后一个时间节拍之外,循环神经网络的每个时间节拍(也称为时间步)的循环单元的输出是下一位字符出现的概率;循环神经网络的最后一个时间节拍的输出作为前述的似然函数的拟合,用于表示输入至该循环神经网络的字符串是dga或非dga的概率。

    需注意,前述步骤s2中循环神经网络的输出与步骤s3中的分类器的输出是相区别的。在一些可选示例中,步骤s2中的循环神经网络的输出可以视为域名中的一段字符串是dga或非dga的概率,步骤s3中的分类器的输出可以视为整个域名是dga或非dga的概率。

    在一个可选实施例中,前述的采用字符级交叉熵作为损失函数进行反向传播包括:循环神经网络在每个时间节拍都进行损失函数反向传播,具体包括在每个时间节拍计算循环单元的输出与域名的字符串中的下一个节拍的真值之间的交叉熵并进行反向传播,从而能够加快训练速度。

    在一个可选实施例中,dga域名对应的循环神经网络的输出p(x|θdga)、或非dga域名对应的循环神经网络的输出p(x|θnon-dga)为:

    其中,x是域名信息中的至少一部分信息的字符串,xi是字符串中第i个字符,θ是循环神经网络的参数。

    本发明提出的方法,通过采用字符级的循环神经网络进行特征提取,采用字符级交叉熵作为损失函数进行反向传播,能够提高训练效果、加快训练速度。

    在本发明的一些实施例中,在前述步骤s2之前,本方法还包括:将域名的字符串中的每个字符进行独热编码(one-hot编码)。而前述步骤s2中的根据域名信息中的至少一部分信息来训练用于特征提取的循环神经网络包括:根据独热编码后的域名的字符串,来训练循环神经网络。

    在本发明的一些实施例中,前述步骤s1包括:获取域名样本的主域名和子域名。可选的,该主域名为域名系统等级中的二级域名;可选的,该子域名为该二级域名的子域名,可以为三级域名。

    具体的,获取到的域名样本的主域名和子域名可以分别是主域名字符串和子域名字符串,并可以在后续步骤中采用字符级的循环神经网络进行特征提取,采用字符级交叉熵作为损失函数进行反向传播。事实上,在一些实施例中,本发明所示方法所利用的域名信息包括域名的字符串,而前述的第一部分域名信息、第二部分域名信息分别为主域名字符串和子域名字符串。

    进一步地,前述步骤s2具体包括:对于主域名和子域名,分别利用前述示例中的步骤来训练与dga域名对应的用于特征提取的循环神经网络、和与非dga域名对应的用于特征提取的循环神经网络,并分别得到主域名对应的前述的两个网络输出的比值、和子域名对应的前述的两个网络输出的比值,分别作为主域名的特征和子域名的特征。前述步骤s3具体包括:将主域名的特征和子域名的特征输入到一个分类器中进行训练。在一个具体示例中,本步骤是基于主域名的字符串和子域名的字符串进行的。

    在本发明的一些实施例中,前述步骤s1包括还包括:提取域名样本的顶级域名。在前述步骤s3之前,本方法还包括:将顶级域名采用独热(one-hot)方式进行编码得到顶级域名独热向量,作为顶级域名的特征。而前述步骤s3包括:将多个域名样本的主域名的特征、子域名的特征、以及顶级域名的特征,共同输入到一个分类器中进行训练,以得到训练好的dga域名分类器。在一个具体示例中,本步骤是基于主域名的字符串和子域名的字符串进行的。

    需注意,在一些示例中,前述的采用独热(one-hot)方式进行编码的过程也可以是基于机器学习得到的,例如得到的编码结果是通过训练得到的。

    在本发明的一些实施例中,前述步骤s3包括:将多个域名样本的域名信息中的至少一部分信息的特征作为输入并利用标定是否为dga域名的域名作为监督信息,来对一个逻辑斯蒂(logistic)回归分类器进行训练。可选的,该逻辑斯蒂回归分类器是用于二分类的分类器。

    在本发明的一些实施例中,如图2所示,前述各个实施例中的步骤s2中利用的循环神经网络为基于长短期记忆(简称为lstm)的循环神经网络,循环神经网络中的循环单元为lstm单元。需注意,本发明对选用的循环神经网络并非限制为利用lstm,例如在另一些实施例中循环神经网络为基于门控循环单元(简称为gru)的循环神经网络,或者利用其他的循环神经网络。

    在本发明的一些实施例中,本发明还示例一种dga域名检测方法,主要包括以下步骤:

    利用与如前述任意一个实施例的dga域名检测模型训练方法的步骤s1相同的方式,获取待检测域名的域名信息;

    利用如前述任意一个实施例的dga域名检测模型训练方法的步骤s2得到的训练好的循环神经网络来确定待检测域名的域名信息中的至少一部分信息的特征;具体的,将待检测域名的域名信息中的至少一部分信息输入到如前述任意一个实施例的dga域名检测模型训练方法的步骤s2得到的dga域名对应的循环神经网络和非dga域名对应的循环神经网络,并计算这两个循环神经网络的输出的比值,作为该待检测域名的域名信息中的至少一部分信息的特征;

    将待检测域名的前述的域名信息中的至少一部分信息的特征输入到如前述任意一个实施例的dga域名检测模型训练方法的步骤s3得到的dga域名分类器中,以判断待检测域名是否来自于域名生成算法(dga)。

    在本发明的dga域名检测方法的一些实施例中,获取的待检测域名的域名信息包括的主域名和子域名,具体可以是主域名字符串和子域名字符串;在提取特征时,将主域名、子域名分别输入到训练好的dga域名对应的循环神经网络和非dga域名对应的循环神经网络,并计算这两个循环神经网络的输出的比值,得到该待检测域名的主域名的特征和子域名的特征;并将该主域名的特征和该子域名的特征输入到训练好的分类器中,根据该分类器的输出来判断待检测域名是否来自于域名生成算法。

    进一步的,在本发明的dga域名检测方法的一些实施例中,还包括:获取待检测域名的顶级域名;将顶级域名采用独热方式进行编码得到顶级域名独热向量,作为该顶级域名的特征;将待检测域名的主域名的特征、子域名的特征、和顶级域名的特征,共同输入到训练好的分类器中进行训练,以根据该分类器的输出来判断待检测域名是否来自于域名生成算法。

    有关本发明的dga域名检测方法的实施例的详细说明和技术效果可以参考前述dga域名检测模型训练方法各实施例中的相应说明,在此不再赘述。

    在一些示例中,本发明采用一种基于字符级rnn和逻辑斯蒂回归相结合的方式对域名是否来自dga做检测。

    在一些示例中,不直接运用rnn对一个域名是否属于dga域名进行预测,而是分别对主域名和子域名作为输入训练建立一个rnn。把域名作为输入训练建立两个rnn,对dga产生的域名和非dga产生的域名分别训练一个rnn,再进行广义似然比检验(glrt)并进行dga检测。

    具体的说,给定一个字符串(在本发明中可以是主域名或子域名的字符串),每个rnn对字符串某个字符的输出其实是下一个字符出现的概率,最后时间节拍的输出作为似然函数的拟合,再进行广义似然比测试,用以判断是否属于dga域名。子域名和域名的lstm-广义似然比检测模型的输出,再整合顶级域名的one-hot向量训练,三个类型的输出结合到一起,共同输入逻辑斯蒂回归模型中,最后形成对dga的分类预测。

    在一些示例中,如图2所示,模型训练阶段包括:

    (1)把某个域名分为主域名和子域名、提取顶级域名。

    (2)把每一个域名字符串中的每个字符进行one-hot编码。

    (3)对于两类域名(无论是dga还是非dga)的主域名和子域名,分别训练两个基于lstm的rnn,即一共四个lstm模型。两类域名分别为主域名和子域名,这四个模型都是基于字符的rnn,输出都是下一个字符的预测,最后一个时间节拍的输出可以认为某个输入字符串是dga/非dga似然函数p(x|θ)。

    (4)四个lstm模型的输出计算两个广义似然比,再结合顶级域名的one-hot编码共同输送到一个逻辑斯蒂(logistic)回归分类器中,运用标定的域名是否是dga域名作为监督信息进行训练。

    在一些示例中,如图2所示,模型预测阶段包括:

    (1)把一个域名分为主域名和子域名、提取顶级域名。

    (2)把每一个域名字符串中的每个字符进行one-hot编码。

    (3)对于该域名,将编码后的主域名和子域名分别输入到按照前述模型训练阶段所示方法训练得到的对应的两个rnn中,该两个rnn分别与主域名、子域名对应,并计算似然比。需注意,是分别计算主域名的广义似然比和子域名的广义似然比,而不是主域名和子域名的rnn输出做比值。

    (4)对于该域名,把步骤(3)得到的主域名的广义似然比、子域名的广义似然比、以及顶级域名的one-hot编码,共同输入到逻辑斯蒂回归分类器中,输出的值就是输入域名是否是dga域名的概率,亦是分类结果。例如该分类结果为:p(输入域名是dga)=0.9,p(输入域名不是dga)=0.1。

    需注意,在一些示例中,在预测之后,还可以利用预测结果再对模型进行优化。

    在一些dga检测方法中,可以直接训练rnn用以对一个字符串进行分类。这种做法有一个问题,即反向传播需要每个字符串完全输入完毕才能进行,这就延缓了训练的速度。

    在本发明的一些实施例中,采用字符级lstm作为rnn模型,采用交叉熵作为损失函数进行反向传播,每个节拍都会计算lstm输出和字符串下一个节拍的真值之间的交叉熵进行反向传播,加快了训练速度。交叉熵损失可以表示为:

    其中c代表样本在集合中序号,yc代表样本标签,x代表样本的特征(one-hot向量),θlstm代表lstm的参数。对于一般的rnn,该θlstm可以表示为θ。

    图3是本发明一个实施例提供的提取特征的流程框图,该图示意性的展示了本发明提出的基于rnn的广义似然比测试模型。需注意,虽然图3是以基于lstm的rnn为示例,但该过程也适用于一般的rnn。在本发明的一些实施例中,对于主域名和子域名,每一个都训练两个lstm模型,dga样本训练一个lstm模型,非dga样本训练一个模型,训练后的输出可以视为似然函数p(x|θ)。把一个域名样本同时输入到两个lstm中,输出均为似然函数的拟合,从而输出的比值可以认为是广义似然比。

    两个lstm分别称为lstmdga模型和lstmnon-dga模型,两个模型的输出均可以表示为下述公式:

    其中x是域名字符串样本,xi是样本字符串中第i个字符;θ是某个lstm的参数,是前面θlstm的一种统一的表达方式。运用该公式对于模型lstmdga和lstmnon-dga分别计算似然函数,不妨分别记为p(x|θdga)和p(x|θnon-dga)。然后计算广义似然比:

    由于顶级域名非常短(通常是2到3个字符),一般没必要训练rnn进行特征提取,本发明直接采用one-hot向量对顶级域名编码,匹配249个最常用的顶级域名。如果没有匹配的,把顶级域名编码为“其他”,共同组成250个二进制特征。本发明采用http://publicsuffix.org公布的顶级域名列表。最常见的顶级域名是.com、.org、.ru、.net、和.info等。我们发现.ru、.info、.biz、和.cc等顶级域名包含更多的dga域名,基本上是非dga域名数量的3倍。由于顶级域名特征向量是独立出来的,因此通过本发明的模型还可以得出哪些顶级域名生成算法更有可能采用。

    总结起来,本发明提出一种基于rnn的dga生成域名判别方法。域名特征提取部分首先把域名分为域名、子域名和顶级域名,对域名和子域名采用字符级循环神经网络进行特征提取,采用字符级预测交叉熵作为损失函数进行模型训练。对dga-lstm和非dga-lstm进行计算预测广义似然比,作为dga判定依据。再结合顶级域名的one-hot向量输入到逻辑斯蒂回归模型中进行二分类,最后输出一个字符串是dga域名的概率。

    本发明提出的是对于网络系统遭遇安全威胁攻击的鲁棒的监测方法。

    1、基于字符级rnn的域名特征提取方法,字符级rnn域名提取方法每一个时间节拍都进行损失函数反向传播,而不是整个字符串的输出和是否是dga域名的交叉熵作为损失函数进行反向传播。

    也就是说,本发明的一些实施例所采用的字符级rnn为:训练阶段的损失函数是每个节拍的输出和下一节拍真值的交叉熵,进行误差反向传播,如果字符串的长度是n,则需要反向传播n次。而在另一些示例中,rnn模型训练阶段的损失函数采用字符串最后一个字符输入rnn后的输出值和字符串分类真值之间的交叉熵,每个字符串反向传播一次。

    2、训练两个lstm模型(而不是一个),并对两个模型计算广义似然比作为判断是否为dga域名的主要特征。

    3、结合域名、子域名的广义似然比以及顶级域名的one-hot向量进行逻辑斯蒂回归训练用于监测dga域名。

    需注意,可以利用本发明提出的dga域名检测方法来对dga同源攻击进行分类,判断是否为dga同源攻击。其中,同源攻击是指攻击者使用dga串行生成域名,如果未能连接到已解析的ip,那么将使用dga生成另一个域名,然后再试一次,直到成功为止。

    图4是图示根据本发明的一个实施例的dga域名检测模型训练装置的示意性框图。如图4所示,根据本公开实施例的dga域名检测模型训练装置100包括存储器101和处理器102。

    该存储器101用于存储非暂时性计算机可读指令。具体地,存储器101可以包括一个或多个计算机程序产品,该计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。该易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。该非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。

    该处理器102可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,并且可以控制dga域名检测模型训练装置100中的其它组件以执行期望的功能。在本公开的一个实施例中,该处理器102用于运行该存储器101中存储的该计算机可读指令,使得该dga域名检测模型训练装置100执行前述的本公开各实施例的dga域名检测模型训练方法的全部或部分步骤。

    图5是图示根据本发明的一个实施例的dga域名检测装置的示意性框图。如图5所示,根据本公开实施例的dga域名检测装置200包括存储器201和处理器202。

    该存储器201用于存储非暂时性计算机可读指令。具体地,存储器201可以包括一个或多个计算机程序产品,该计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。该易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。该非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。

    该处理器202可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,并且可以控制dga域名检测装置200中的其它组件以执行期望的功能。在本公开的一个实施例中,该处理器202用于运行该存储器201中存储的该计算机可读指令,使得该dga域名检测装置200执行前述的本公开各实施例的dga域名检测方法的全部或部分步骤。

    本领域技术人员应能理解,为了解决如何获得良好用户体验效果的技术问题,本实施例中也可以包括诸如通信总线、接口等公知的结构,这些公知的结构也应包含在本发明的保护范围之内。

    有关本实施例的详细说明和技术效果可以参考前述各实施例中的相应说明,在此不再赘述。

    本发明的实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在设备上运行时,使得设备执行上述相关方法步骤实现上述实施例中的dga域名检测模型训练方法或dga域名检测方法。

    本发明的实施例还提供一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的dga域名检测模型训练方法或dga域名检测方法。

    另外,本发明的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的dga域名检测模型训练方法或dga域名检测方法。

    其中,本发明提供的装置、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。

    以上所述,仅是本发明的较佳实施例而已,并非对本发明做任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。


    技术特征:

    1.一种dga域名检测模型训练方法,其特征在于,所述方法包括以下步骤:

    步骤s1,获取多个域名样本的域名信息;

    步骤s2,对于所述多个域名样本中的dga域名和非dga域名,分别根据所述域名信息中的至少一部分信息来训练用于特征提取的循环神经网络;并且,计算所述dga域名对应的所述循环神经网络的输出与所述非dga域名对应的所述循环神经网络的输出的比值,作为所述域名信息中的至少一部分信息的特征;

    步骤s3,将所述特征输入到一个分类器中进行训练,以得到dga域名分类器,用以利用所述dga域名分类器判断一个域名是否来自于域名生成算法。

    2.根据权利要求1所述的dga域名检测模型训练方法,其特征在于:所述步骤s2中的与所述dga域名对应的所述循环神经网络的输出和与所述非dga域名对应的所述循环神经网络的输出均为似然函数p(x|θ)的拟合;其中,所述x是所述域名信息中的至少一部分信息,所述θ是所述循环神经网络的参数,所述p(x|θ)表示给定所述θ后所述x的概率。

    3.根据权利要求2所述的dga域名检测模型训练方法,其特征在于:

    所述域名信息包括域名的字符串;

    所述步骤s2中的所述对于多个所述域名样本中的dga域名和非dga域名,分别根据所述域名信息中的至少一部分信息来训练用于特征提取的循环神经网络包括:

    对于所述dga域名、所述非dga域名中的一个或多个,采用字符级的循环神经网络进行特征提取,采用字符级交叉熵作为损失函数进行反向传播。

    4.根据权利要求3所述的dga域名检测模型训练方法,其特征在于:

    所述采用字符级的循环神经网络进行特征提取包括:除最后一个时间节拍之外,所述循环神经网络的每个时间节拍的输出是下一位字符出现的概率;所述循环神经网络的最后一个时间节拍的输出是所述似然函数的拟合,用于表示所述域名的字符串是dga或非dga的概率;

    所述采用字符级交叉熵作为损失函数进行反向传播包括:所述循环神经网络在每个时间节拍都进行损失函数反向传播,具体包括在每个时间节拍计算循环单元的输出与所述域名的字符串中的下一个节拍的真值之间的交叉熵并进行反向传播。

    5.根据权利要求4所述的dga域名检测模型训练方法,其特征在于:

    所述dga域名对应的所述循环神经网络的输出或所述非dga域名对应的所述循环神经网络的输出为:

    其中所述x是所述域名信息中的所述至少一部分信息的字符串,所述xi是所述字符串中第i个字符,所述θ是循环神经网络的参数。

    6.根据权利要求3所述的dga域名检测模型训练方法,其特征在于,

    在所述步骤s2之前,所述方法还包括:将所述域名的字符串中的每个字符采用独热方式进行编码;

    所述步骤s2中的根据所述域名信息中的至少一部分信息来训练用于特征提取的循环神经网络包括:根据独热编码后的所述域名的字符串,来训练所述循环神经网络。

    7.根据权利要求2所述的dga域名检测模型训练方法,其特征在于,

    所述步骤s1具体包括:获取所述域名样本的主域名和子域名;

    所述步骤s2具体包括:对于所述主域名和所述子域名,分别训练与所述dga域名对应的所述循环神经网络、和与所述非dga域名对应的所述循环神经网络,并分别确定与所述主域名对应的所述比值、和与所述子域名对应的所述比值,分别作为所述主域名的特征和所述子域名的特征;

    所述步骤s3具体包括:将所述主域名的特征和所述子域名的特征输入到一个分类器中进行训练。

    8.根据权利要求7所述的dga域名检测模型训练方法,其特征在于,

    所述步骤s1包括还包括:提取所述域名样本的顶级域名;

    在所述步骤s3之前,所述方法还包括:将所述顶级域名采用独热方式进行编码得到顶级域名独热向量,作为所述顶级域名的特征;

    所述步骤s3具体包括:将多个所述域名样本的所述主域名的特征、所述子域名的特征、和所述顶级域名的特征,共同输入到一个分类器中进行训练,以得到所述dga域名分类器。

    9.根据权利要求1所述的dga域名检测模型训练方法,其特征在于,所述步骤s3具体包括:

    将所述特征作为输入并利用标定是否为dga域名作为监督信息,来对一个用于二分类的逻辑斯蒂回归分类器进行训练。

    10.根据权利要求1所述的dga域名检测模型训练方法,其特征在于:

    所述步骤s2中利用的所述循环神经网络为基于长短期记忆的循环神经网络或者为基于门控循环单元的循环神经网络。

    11.一种dga域名检测方法,其特征在于,所述方法包括以下步骤:

    利用与如权利要求1至10中任一项所述的dga域名检测模型训练方法的步骤s1相同的方式,获取待检测域名的域名信息;

    将所述待检测域名的域名信息中的至少一部分信息输入到如权利要求1至10中任一项所述的dga域名检测模型训练方法的步骤s2得到的dga域名对应的循环神经网络和非dga域名对应的循环神经网络,并计算所述两个循环神经网络的输出的比值,作为所述待检测域名的域名信息中的至少一部分信息的特征;

    将所述待检测域名的所述特征输入到如权利要求1至10中任一项所述的dga域名检测模型训练方法的步骤s3得到的dga域名分类器中,以判断所述待检测域名是否来自于域名生成算法。

    12.一种dga域名检测模型训练装置,包括:

    存储器,用于存储非暂时性计算机可读指令;以及

    处理器,用于运行所述计算机可读指令,使得所述计算机可读指令被所述处理器执行时实现权利要求1至10中任一项所述的dga域名检测模型训练方法。

    13.一种dga域名检测装置,包括:

    存储器,用于存储非暂时性计算机可读指令;以及

    处理器,用于运行所述计算机可读指令,使得所述计算机可读指令被所述处理器执行时实现权利要求11所述的dga域名检测方法。

    14.一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在设备上运行时,使得所述设备执行如权利要求1至10中任一项所述的dga域名检测模型训练方法或执行如权利要求11所述的dga域名检测方法。

    技术总结
    本发明涉及一种DGA域名检测模型训练方法、DGA域名检测方法、装置及存储介质,该模型训练方法包括:步骤S1,获取多个域名样本的域名信息;步骤S2,对于所述多个域名样本中的DGA域名和非DGA域名,分别根据所述域名信息中的至少一部分信息来训练用于特征提取的循环神经网络;并且,计算所述DGA域名对应的所述循环神经网络的输出与所述非DGA域名对应的所述循环神经网络的输出的比值,作为所述域名信息中的至少一部分信息的特征;步骤S3,将所述特征输入到一个分类器中进行训练,以得到DGA域名分类器,以便利用训练好的该DGA域名分类器来判断待检测域名是否来自于域名生成算法DGA。

    技术研发人员:马莉雅;雷君;龙泉;何能强;李鹏超;金红;陈晓光;杨满智;蔡琳;尚程;王利丽
    受保护的技术使用者:国家计算机网络与信息安全管理中心;恒安嘉新(北京)科技股份公司
    技术研发日:2020.11.17
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-7291.html

    最新回复(0)