CN108600200B - 域名检测方法、装置、计算机设备及存储介质 - Google Patents
域名检测方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN108600200B CN108600200B CN201810306845.1A CN201810306845A CN108600200B CN 108600200 B CN108600200 B CN 108600200B CN 201810306845 A CN201810306845 A CN 201810306845A CN 108600200 B CN108600200 B CN 108600200B
- Authority
- CN
- China
- Prior art keywords
- domain name
- sub
- detection model
- vector
- layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/145—Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种域名检测方法,该方法包括:获取待检测的域名;将所述域名输入已训练的域名检测模型中的向量层,所述向量层用于确定与所述域名对应的域名向量;将所述域名向量作为所述域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,所述域名检测模型用于根据各个所述子检测参数确定检测结果;获取所述域名检测模型输出的检测结果。该域名检测方法不需要人工提取特征,简单方便,且提高了域名检测的准确度。此外,还提出了一种域名检测装置、计算机设备及存储介质。
Description
技术领域
本申请涉及计算机处理技术领域,特别是涉及一种域名检测方法、装置、计算机设备及存储介质。
背景技术
DGA(Domain generat ion algorithms,域名生成算法)经常被用作恶意软件连接到C&C(Command and Control Server,命令和控制服务器),从而达到操控受害者机器的目的。恶意软件定期使用DGA算法生成伪随机域名,有效绕过黑名单检测。如果能够快速检测DGA域名,在一定程度上能够快速发现恶意软件的感染情况,进行预警。
目前DGA域名检测方法主要有两种,一种是基于传统机器学习的DGA域名检测,通过人工提取特征,然后进行建模和检测。一种是基于深度学习(LSTM)的DGA域名检测,将域名作为字符序列输入LSTM进行建模和检测。
第一种方法由于需要人工提取特征,耗时耗力。第二种方法虽然省去了人工提取特征,但是存在比较严重的漏识别问题,有不少具有明显随机性的DGA域名被模型检测为正常域名,即检测的准确度较低。
发明内容
基于此,有必要针对上述问题,提出了一种不需要人工提取特征且准确度高的域名检测方法、装置、计算机设备及存储介质。
一种域名检测方法,所述方法包括:
获取待检测的域名;
将所述域名输入已训练的域名检测模型中的向量层,所述向量层用于确定与所述域名对应的域名向量;
将所述域名向量作为所述域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,所述域名检测模型用于根据各个所述子检测参数确定检测结果;
获取所述域名检测模型输出的检测结果。
一种域名检测装置,所述装置包括:
第一获取模块,用于获取待检测的域名;
输入模块,用于将所述域名输入已训练的域名检测模型中的向量层,所述向量层用于确定与所述域名对应的域名向量;
检测模块,用于将所述域名向量作为所述域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,所述域名检测模型用于根据各个所述子检测参数确定检测结果;
输出模块,用于获取所述域名检测模型输出的检测结果。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行以下步骤:
获取待检测的域名;
将所述域名输入已训练的域名检测模型中的向量层,所述向量层用于确定与所述域名对应的域名向量;
将所述域名向量作为所述域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,所述域名检测模型用于根据各个所述子检测参数确定检测结果;
获取所述域名检测模型输出的检测结果。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以下步骤:
获取待检测的域名;
将所述域名输入已训练的域名检测模型中的向量层,所述向量层用于确定与所述域名对应的域名向量;
将所述域名向量作为所述域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,所述域名检测模型用于根据各个所述子检测参数确定检测结果;
获取所述域名检测模型输出的检测结果。
上述域名检测方法、装置、计算机设备及存储介质,通过将域名输入已训练的域名检测模型中的向量层,向量层用于确定与域名对应的域名向量,将域名向量作为域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,域名检测模型用于根据各个子检测参数确定检测结果,然后获取域名检测模型输出的检测结果。该域名检测模型采用了多个子域名检测模型,且多个子域名检测模型共用一个域名向量,然后通过综合多个子域名检测模型输出的子检测参数确定最终的检测结果,有利于提高域名检测的准确度,且直接将域名作为输入,不需要人工提取特征,简单方便。
附图说明
图1为一个实施例中域名检测方法的应用环境图;
图2为一个实施例中域名检测方法的流程图;
图3为另一个实施例中域名检测方法的流程图;
图4为一个实施例中根据子检测参数确定检测结果的流程图;
图5为又一个实施例中域名检测方法的流程图;
图6为一个实施例中生成的数据列表的示意图;
图7为一个实施例中建立域名检测模型的方法流程图;
图8为一个实施例中域名检测模型的结构示意图;
图9为一个实施例中子域名检测模型输出子检测参数的方法流程图;
图10为另一个实施例中子域名检测模型输出子检测参数的方法流程图;
图11为一个实施例中子域名检测模型的原理示意图;
图12为一个实施例中域名检测模型的示意图;
图13为一个实施例中域名检测方法的流程示意图;
图14为再一个实施例中域名检测装置的结构框图;
图15为一个实施例中域名检测装置的结构框图;
图16为另一个实施例中域名检测装置的结构框图;
图17为又一个实施例中域名检测装置的结构框图;
图18为再一个实施例中域名检测装置的结构框图;
图19为一个实施例中计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中域名检测方法的应用环境图。参照图1,该域名检测方法应用于域名检测系统。该域名检测系统包括终端110和服务器120。终端110和服务器120通过网络连接。终端110具体可以是台式终端或移动终端,移动终端具体可以是手机、平板电脑、笔记本电脑等中的至少一种。服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。具体地,终端110将待检测的域名上传到服务器120,服务器120获取到待检测的域名后,将域名输入已训练的域名检测模型中的向量层,向量层用于确定与域名对应的域名向量,然后将域名向量作为域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,域名检测模型用于根据各个子检测参数确定检测结果,获取域名检测模型输出的检测结果。
如图2所示,在一个实施例中,提供了一种域名检测方法。本实施例以应用于服务器举例说明。该域名检测方法具体包括如下步骤:
步骤S202,获取待检测的域名。
其中,域名(Domain Name)是由一串用点分隔的名字组成的互联网上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。域名通常由若干从a到z的26个拉丁字母、0到9的10个阿拉伯数字及“-”、“.”等符号构成并按一定的层次和逻辑排列。比如,baidu.com。域名可分为不同级别,包括顶级域名、二级域名、三级域名。其中,顶级域名(top-level domains,TLD)分为国家顶级域名和国际顶级域名,国家顶级域名是按照ISO3166国家代码分配的顶级域名,例如,中国是cn,美国是us,日本是jp等;国际顶级域名,例如,表示工商企业的.com,表示网络提供商的.net,表示非盈利组织的.org等。二级域名(Second-level domain,SLD)是处于顶级域名之下的域,是域名的倒数第二部分,比如,www.qq.com,其中,倒数第一部分.com为顶级域名,倒数第二部分qq为二级域名。三级域名是处于二级域名左边的域名,比如,zhidao.baidu.com,其中,zhidao为三级域名。
待检测的域名是指当前需要被检测的域名。在一个实施例中,待检测的域名来源于客户端上传的DNS(Domain Name System,域名系统)访问数据,DNS访问数据中包括请求访问的域名、访问时间等。
在一个实施例中,获取到DNS访问数据后,还需要对DNS访问数据进行预处理,首先,需要过滤掉不合法的域名,例如,过滤掉顶级域名为空,顶级域名为arpa等不合法的域名,其次,提取注册域名(主域名+顶级域名),并全部转为小写,例如,www.qq.com提取的注册域名为qq.com。最后,过滤掉重复的注册域名。
步骤S204,将域名输入已训练的域名检测模型中的向量层,向量层用于确定与域名对应的域名向量。
其中,已训练的域名检测模型是指已训练好的用于检测域名所属类别的模型,比如,检测域名是否为DGA域名。DGA域名是指采用域名生成算法(DGA)生成的域名。向量层用于将域名中包含的域名字符转换为字符向量的表示形式,进而得到与域名对应的域名向量。域名向量是由多个域名字符向量组成的。在一个实施例中,向量层中存储有字符向量表,字符向量表中存储有字符与字符向量之间的对应关系,获取到域名后,在字符向量表中查找与每个域名字符对应的字符向量,然后组合生成与域名对应的域名向量。
在另一个实施例中,向量层中包含有word2vec模型,采用word2vec模型计算与每个域名字符对应的字符向量,进而得到与域名对应的域名向量。其中word2vec模型是一款将词表征为实数值向量的高效工具,其利用深度学习的思想,可以通过训练,把对文本内容的处理简化为k维向量空间中的向量运算。
步骤S206,将域名向量作为域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,域名检测模型用于根据各个子检测参数确定检测结果。
其中,域名检测模型中包括有多个子域名检测模型。将域名向量作为每个子域名检测模型的输入,即多个子域名检测模型对应的输入相同。子域名检测模型用于根据域名向量对域名的类别进行初步预测。子检测参数反映了子域名检测模型对于域名所属类别的初步预测。域名检测模型用于对各个子域名检测模型输出的子检测参数进行整合得到最终的检测结果,即综合各个子域名检测模型的初步预测确定最终的预测结果。
在一个实施例中,子检测参数为输出的各个域名类别对应的分数值(即未进行归一化的数值),分数值的大小反映了域名属于各个域名类别的概率大小。在另一个实施例中,子检测参数为输出的各个域名类别对应的概率,通过将各个子域名检测模型输出的子检测参数进行加权求和得到最终的检测结果。比如,假设有两个子域名检测模型,域名类别分为正常域名和DGA域名。每个子域名检测模型输出两个子检测参数,分别为正常域名对应的概率和DGA域名对应的概率,假设其中一个子域名检测模型输出的正常域名的概率p1,DGA域名的概率为1-p1,另一个子域名检测模型输出的正常域名的概率为p2,DGA域名的概率为1-p2。且两个子域名检测模型对应的权重分别为w1和w2,那么计算得到正常域名的概率为w1*p1+w2*p2,DGA域名的概率为w1*(1-p1)+w2*(1-p2)。将计算得到的概率最大的一类作为最终的检测结果。
步骤S208,获取域名检测模型输出的检测结果。
其中,检测结果即域名检测模型对域名进行预测的最终检测结果。在一个实施例中,检测结果分为两类,一类是正常域名,一类是DGA域名。在另一个实施例中,检测结果分为多类,包括正常域名和多个DGA家族,即不但要检测出域名是否为DGA域名,还需要预测出域名属于哪个DGA家族。实验证明,相对于原来的基于LSTM的域名检测方法,采用本申请的域名检测方法不仅提高了域名检测的精度和召回率,还使得漏识别问题得到了很好的解决。
上述域名检测方法,通过将域名输入已训练的域名检测模型中的向量层,向量层用于确定与域名对应的域名向量,将域名向量作为域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,域名检测模型用于根据各个子检测参数确定检测结果,然后获取域名检测模型输出的检测结果。该域名检测模型采用了多个子域名检测模型,且多个子域名检测模型的共同一个域名向量,然后通过综合多个子域名检测模型输出的子检测参数确定最终的检测结果,有利于提高域名检测的准确度,且直接将域名作为输入,不需要人工提取特征,简单方便。
在一个实施例中,获取待检测的域名,包括:获取数据访问记录,数据访问记录中包括请求访问的域名;将请求访问的域名作为待检测的域名。
其中,数据访问记录中记录了访问过的域名,将请求访问的域名作为待检测的域名。数据访问记录是由客户端采集的,然后上传到服务器的。服务器提取数据访问记录中包含的域名作为待检测的域名。
如图3所示,在一个实施例中,数据访问记录还包括:发起访问的主机标识和返回的域名解析记录;在获取域名检测模型输出的检测结果之后,还包括:
步骤S210,将被检测为域名生成算法DGA生成的DGA域名作为候选域名。
其中,DGA域名是指由域名生成算法DGA生成的域名。获取到检测结果后,若检测结果为DGA域名,则将该被检测为DGA域名的可疑域名作为候选域名。便于后续对判定为DGA域名的所有域名进行进一步过滤筛选。
步骤S212,获取访问过候选域名的候选主机标识和候选域名对应的域名解析记录。
其中,主机标识用于唯一标识一个主机。域名解析记录是指访问候选域名时返回的域名解析记录,域名解析记录中记载了与候选域名对应的解析结果,即IP地址。当然,也可能解析不到相应的IP地址,此时解析结果为空。若候选域名对应的解析记录为空,则域名解析记录中记录为NXDomain(空域),若候选域名对应的不为空,则域名解析记录中记录有解析得到的IP地址。
步骤S214,获取域名过滤规则,根据候选主机标识和域名解析记录对候选域名进行过滤得到目标域名。
其中,域名过滤规则用于对预测为DGA域名的域名进行进一步筛选,过滤得到目标域名,目标域名即为确定的DGA域名。域名过滤规则是指具有DGA域名特征的过滤规则。该域名过滤规则中记载了DGA域名特征,如果符合域名过滤规则,说明该域名为DGA域名。具体地,将被预测为DGA域名的可疑域名(候选域名)和相应的候选主机标识和域名解析记录进行关联,然后根据候选域名对应的候选主机标识和域名解析记录对候选域名进行过滤得到目标域名。在一个实施例中,域名过滤规则为:判断同一候选主机标识访问过的候选域名是否大于预设阈值(比如,30个),若是,则继续判断同一候选主机标识访问的候选域名中返回的域名解析记录中为空域的域名个数是否大于预设个数(比如,10个),若是,则判定候选域名为DGA域名(即目标域名)。对域名检测模型预测为DGA域名的可疑域名进行进一步过滤,筛选出符合DGA域名特征的目标域名,有利于进一步提高域名检测的准确度。
在一个实施例中,获取域名过滤规则,根据候选主机标识和域名解析记录对候选域名进行过滤得到目标域名,包括:判断同一候选主机标识访问的候选域名个数是否大于第一预设阈值,若是,则判断同一候选主机标识访问的候选域名所对应的域名解析记录中的空域个数是否大于第二预设阈值,若是,则判断候选域名是否符合预设标准,若是,则判定为目标域名。
其中,域名过滤规则中包含有多条具有DGA特征的规则,将满足所有条规则的候选域名作为目标域名。将被预测为DGA域名的候选域名进行关联,统计出同一候选主机标识访问的候选域名个数,以及同一候选主机标识访问的候选域名所对应的域名解析记录中空域个数。具体地,判断同一候选主机标识访问的候选域名个数是否大于第一预设阈值,若是,则判断同一候选主机标识访问的候选域名所对应的域名解析记录中空域个数是否大于第二预设阈值,若是,则判断候选域名是否符合预设标准,预设标准可以根据实际情况自定义设置,比如,预设标准可以设置为:二级域名的长度,比如,设置二级域名的长度必须大于5,若符合预设标准,则判定为目标域名。通过对域名检测模型检测为DGA域名的可疑域名进行多个规则的过滤,有利于进一步提高域名检测的准确性。
在一个实施例中,预设标准包括:二级域名的长度和域名解析记录中字段个数(即IP地址的个数)。判断候选域名是否符合预设的标准,包括:判断候选域名中的二级域名的长度是否大于预设长度,若是,则继续判断对应的域名解析记录中字段个数是否小于预设个数,若是,则判定候选域名为目标域名。其中,从候选域名中提取出每个域名的“二级域名2LD+顶级域名TLD”,然后判断二级域名的长度,len(2LD)是否大于预设长度(比如,5),若是,则继续判断域名解析记录中的IP地址个数Len(strrdata)是否小于预设个数(比如,5),若是,则说明候选域名符合预设的DGA域名标准,判定该候选域名为目标域名。
如图4所示,在一个实施例中,获取每个子域名检测模型输出的子检测参数,域名检测模型用于根据各个子检测参数确定检测结果,包括:
步骤S206A,获取每个子域名检测模型对应的权重,将子域名检测模型对应的权重作为子域名检测模型输出的子检测参数的权重。
其中,不同子域名检测模型所对应的权重比例不同,权重用于衡量每个子域名检测模型的预测结果的比重。将子域名检测模型对应的权重作为子域名检测模型输出的子检测参数的权重。若同一子域名检测模型对应的子检测参数有多个,则将相应的权重作为每个子检测参数的权重。
步骤S206B,根据子检测参数和子检测参数的权重计算得到每个域名类别对应的概率,域名类别包括正常域名和多个DGA家族域名。
其中,获取到各个子域名检测模型输出的子检测参数和子检测参数的权重,然后通过加权求和的方式计算得到每个域名类别对应的概率,域名类别包括正常域名和多个DGA家族域名。举个例子,如果域名类别包含有1类正常域名和26类DGA家族,那么需要计算出这27类中每一个类别对应的概率。
在一个实施例中,每个子域名检测模型输出的子检测参数为各个域名类别对应的初步概率,将同一类别对应的初步概率进行加权求和得到与该类别对应的最终概率。假设有两个子域名模型A和B,对应的权重分别为w1,w2,对于同一类别,A输出的概率为x1,对应的权重为w1,B输出的概率为x2,对应的权重为w2,那么计算得到的该类别对应的最终概率为w1*x1+w2*x2。
步骤S206C,根据每个域名类别对应的概率确定与域名对应的域名类别。
其中,计算得到每个域名类别对应的概率后,将最大概率对应的域名类别作为与域名对应的域名类别。上述域名检测方法,不仅检测出域名是否为DGA域名,还确定了DGA域名所属的DGA家族,有利于后续根据每个DGA家族进行分别监控,及时发现风险并进行预警。
如图5所示,在一个实施例中,上述域名检测方法还包括:
步骤S216,跟踪每个DGA家族中域名数量的变化,计算得到每个DGA家族对应的域名活跃值。
其中,为了能够及时地发现DGA域名的变化趋势,监控每一类DGA家族中域名数量的变化趋势。域名活跃值用于反映域名增长的速度,增长越快,域名活跃值越大。域名活跃值与单位时间内域名增长的数量成正相关。在一个实施例中,域名活跃值=增长后的域名数量/增长前的域名数量。
在另一个实施例中,还需要统计每个DGA家族中被感染的肉鸡(bot)的数量变化,其中,bot指肉鸡,即被感染的主机。通过跟踪每个DGA家族中被感染的主机数量变化趋势,结合地理位置,能看到被感染主机的区域分布,作为威胁情报的展示。
步骤S218,判断DGA家族对应的域名活跃值是否大于预设阈值,若是,则进行预警,若否,则结束。
其中,计算得到每个DGA家族对应的域名活跃值,当DGA家族对应的域名活跃值大于预设阈值时,则说明该DGA家族需要重点关注,通过预警来进行提醒。预警的方式可以自定义设置,比如,可以将报警信息通过一定格式汇总,然后发送到指定的即时通信客户端,还可以将报警信息通过邮件发送到相应的预警邮箱。
在一个实施例中,为了更深入的对DGA域名进行分析和溯源,结合已有的DNS访问数据,将DGA域名关联到访问它的样本(md5)和时间,样本是指访问DGA域名的软件程序,md5用于唯一标识一个软件程序。然后,统计出每个样本(md5)对应的主机(guid)数量,DGA域名数量,广度、热度等信息,生成相应的列表供安全分析人员进行分析使用。如图6所示,为一个实施例中生成的数据列表的示意图,展示了每个样本(md5)对应的主机(guid)数量,DGA域名数量,广度、热度等。
如图7所示,在一个实施例中,在获取待检测的域名字符之前,还包括:建立域名检测模型,建立域名检测模型的步骤包括:
步骤S201A,获取训练域名和训练域名对应的类别标签。
其中,类别标签是指对训练域名标注的所属的类别。由于需要对域名检测模型进行有监督的训练,所以需要获取训练域名以及与训练域名对应的类别标签作为训练数据,将训练域名作为输入,将相应的类别标签作为期望的输出进行训练。
在一个实施例中,训练数据是从DGArchive网站上下载的最新的DGA家族以及对应的域名数据集。由于进行模型训练对数据量需求比较大,并且训练样本之间的不均衡对最终效果有较大影响,所以可以从域名数大于预设数量(比如,10万)的多个DGA家族中随机抽取预设数量的域名,比如,假设一共选取26个DGA家族,分别从每个DGA家族中随机抽取10万条数据,最终构成了260万条数据,每类家族对应有10万个训练DGA域名。另外,从alex网站上下载一定数量(比如,50万)的正常域名,构成正常域名类。抽取到的域名即为训练域名,相应的域名类别即为类别标签。
步骤S201B,将训练域名作为域名检测模型中向量层的输入,将训练域名对应的类别标签作为域名检测模型期望的输出对域名检测模型中包含的向量层和各个子域名检测模型进行训练,得到包含有目标向量层和各个目标子域名检测模型的目标域名检测模型,目标向量层中包含有训练得到的字符向量表,字符向量表中记录了训练得到的域名字符与字符向量之间的对应关系。
其中,向量层用于将域名转化为域名向量的表示形式。向量层为域名检测模型中的第一层,即首先将训练域名作为域名检测模型中向量层的输入,然后将向量层输出的域名向量作为各个子域名检测模型的输入,根据各个子域名检测模型输出的子检测参数确定域名检测模型的检测结果,通过将检测结果与期望的类别进行比对,当结果值与期望值有差别是,根据差别的大小来通过反向传播不断调整域名检测模型中向量层和子域名检测模型中的参数,以使得输出的检测结果与期望的类别标签达到一致。在一个实施例中,分别给各个子域名检测模型赋值一个权重,然后通过优化交叉熵损失函数来使得带权重的结果值与期望值逼近。
训练得到的向量层中包含有训练得到的字符向量表,字符向量表中记载了域名字符与字符向量之间的对应关系,域名是由域名字符组成的,后续获取到域名后,便可以根据域名中包含的域名字符查找相应的字符向量,然后按照域名字符的顺序组合为域名向量。举个例子,假设每个字符采用一个128位的向量表示,字符向量表中存储了N(N表示字符个数,比如,N=74)个128位的字符向量,假设获取到的域名为qq.com,即该域名中包含有6个字符,分别为“q”、“q”、“.”、“c”、“o”和“m”,获取到每个字符对应的字符向量后,进行组合得到一个6*128的域名向量。
在一个实施例中,域名检测模型包括第一子域名检测模型和第二子域名检测模型;第一子域名检测模型采用第一卷积神经网络模型进行训练得到的;第二子域名检测模型采用第二卷积神经网络模型进行训练得到的,第一卷积神经网络模型与第二卷积神经网络模型不同。
其中,域名检测模型包括两个子域名检测模型,分别为第一子域名检测模型和第二子域名检测模型。第一子域名检测模型和第二子域名检测模型不同。第一子域名检测模型是采用第一卷积神经网络模型进行训练得到的,而第二子域名检测模型是采用第二卷积神经网络模型进行训练得到的。第一卷积神经网络模型和第二卷积神经网络模型不同。
在一个实施例中,第一卷积神经网络模型为文本卷积神经网络模型(textCNN)。第二卷积神经网络模型为循环神经网络模型(RCNN)。其中,textCNN模型和RCNN模型都是基于CNN的文本分类算法,而基于CNN的文本分类算法的可以有效的抓住伪随机性特征。所以将两者结合,不仅提高了域名检测的精度和召回率,还使得漏识别问题得到了很好的解决。在另一个实施例中,第一卷积神经网络模型和第二卷积神经网络模型采用相同的训练算法,但是两者采用的卷积核不同,从而得到两个不同的子域名模型。
如图8所示,为一个实施例中,域名检测模型的结构示意图,该域名检测模型包括向量层(embeding)和两个子域名检测模型,其中,一个子域名检测模型为textCNN模型,包括卷积层(convolution),池化层(pooling)和全连接层(FC),另一个子域名检测模型为RCNN模型,包括:循环结构层(Recurrent),池化层(pooling)和全连接层(FC)。最后是输出层(output),用于综合两个子域名检测模型的输出得到最终的输出结果。
如图9所示,在一个实施例中,第一子域名检测模型包括卷积层、第一池化层和第一全连接层;
将域名向量作为域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,包括:
步骤S206a,将域名向量作为卷积层的输入,卷积层用于对域名向量进行卷积运算得到第一特征矩阵。
其中,第一子域名检测模型采用卷积神经网络模型进行训练得到,第一子域名检测模型包括一层卷积层、一层池化层和一层全连接层。卷积层对输入域名向量进行卷积运算得到第一特征矩阵,卷积运算是指利用卷积核进行乘积的运算。经过卷积核卷积可以降低特征维度,并且表达出文本中上下文联系的局部特征,不同的卷积窗口具有不同的表达能力。其中,卷积窗口的大小是根据域名向量的纬度(embedding size)和滤波宽度(filterwidth)决定的,滤波宽度是由实验调整得到的,在一个实施例中,滤波宽度分别选择3,4,5,6,7,8几个值,假设域名向量的纬度为128维,那么卷积窗口可以分别选择128*3,128*4,128*5,128*6,128*7,128*8。其中,一个卷积核对应一个输出,比如,如果卷积层中有10个卷积核,经过10个卷积核的作用将会得到10个输出,即得到10维的第一特征矩阵。
步骤S206b,将第一特征矩阵作为第一池化层的输入,第一池化层用于将第一特征矩阵中的每个向量中最大的权重进行投影得到归一化的第二特征矩阵。
其中,将卷积层输出的第一特征矩阵作为池化层的输入。在一个实施例中,池化层采用最大池化层(max-pooling),即用于将卷积层得到的每个向量中的能量最大的元素(即权重最大元素)投影到下一层的输入,这样做的目的是为了保证不同域名长度和不同卷积核的输出归一化,并保持最大信息没有丢失。第一特征矩阵是由多个向量组成的,将每个向量中最大的权重进行投影得到归一化的第二特征矩阵。另外,为了池化层过多容易产生过拟合,可以选择以一定概率去掉一些神经元,比如,以p1(0.5)的概率去掉一些神经元。
步骤S206c,将第二特征矩阵作为第一全连接层的输入,第一全连接层用于根据第二特征矩阵进行分类计算得到每个分类对应的子检测参数。
其中,全连接层即子域名检测模型的输出层,相当于一个分类器,用于根据第二特征矩阵进行分类计算得到子检测参数,子检测参数用于衡量各个分类所占的比例。
如图10所示,为一个实施例中子域名检测模型的示意图。子域名检测模型包括:向量层、卷积层、池化层和全连接层。首先,将域名输入向量层,将向量层的输出作为卷积层的输入,将卷积层的输入作为池化层的输入,将池化层是输出作为全连接层是输入,然后获取全连接层的输出。
如图11所示,在一个实施例中,第二子域名检测模型包括循环结构层、第二池化层和第二全连接层;
将域名向量作为域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,包括:
步骤S206d,将域名向量作为循环结构层的输入,循环结构层用于对域名向量中的每个字符向量进行前向和后向循环计算得到包含有上下文特征的扩展字符向量,将得到的各个扩展字符向量进行组合得到扩展域名向量,根据扩展域名向量进行非线性运算得到目标域名向量。
其中,这里的循环结构层相当于卷积层,域名向量是由多个字符向量组成的,循环结构层用于对域名向量中每个字符向量进行前向和后向循环计算得到包含有上下文特征的扩展字符向量,然后将得到的各个扩展字符向量进行组合得到扩展域名向量。
如图12所示,为一个实施例中,子域名检测模型的原理示意图,其中,循环结构层是通过正向和反向循环来构造一个字符的下文和上文,可采用如下方式计算得到每个字符向量对应的扩展字符向量。
cl(wi)=f(W(l)cl(wi-1)+W(sl)e(wi-1))
cr(wi)=f(W(r)cr(wi+1)+W(sr)e(wi+1))
其中,wi表示输入的第i个字符。cl(wi)表示第i个字符的前向扩展向量,cr(wi)表示第i个字符的后向扩展向量,e(wi)表示第i个字符的字符向量,W(l)、W(r)、W(sl)、W(sr)分别表示相应的权重,各个权重值是在模型训练的过程中确定的。计算得到字符的上下文表示之后,用拼接的方式来得到该字符向量对应的扩展字符向量(xi),如下公式:
xi=[cl(wi);e(wi);cr(wi)]
通过如上方式计算得到每个字符向量对应的扩展字符向量后,组合得到域名对应的扩展域名向量,根据扩展域名向量进行非线性运算得到目标域名向量。在一个实施例中,获取与该扩展域名向量对应的权重矩阵和偏置矩阵,然后进行非线性运算得到目标域名向量,其中,非线性运算是采用激活函数实现的,激活函数可以采用tanh函数,也可以采用Rule函数等。在一个实施例中,目标域名向量采用以下公式计算得到:
其中,W(2)、b(2)分别表示相应的权重矩阵和偏置矩阵,权重矩阵和偏置矩阵也是在训练模型的过程中训练得到的。
步骤S206e,将目标域名向量作为第二池化层的输入,第二池化层用于将目标域名向量中的最大的权重进行投影得到归一化的目标特征矩阵。
其中,将循环结构层输出的目标域名向量作为池化层的输入。在一个实施例中,池化层采用最大池化层(max-pooling),即用于将循环结构层得到的每个扩展字符向量中的能量最大的元素(即权重最大元素)投影到下一层的输入,这样做的目的是为了输出归一化,并保持最大信息没有丢失。目标域名向量是由多个扩展字符向量组成的,将每个扩展字符向量中最大的权重进行投影得到归一化的目标特征矩阵。另外,为了池化层过多容易产生过拟合,可以选择以一定概率去掉一些神经元,比如,以p1(0.5)的概率去掉一些神经元。
步骤S206f,将目标特征矩阵作为第二全连接层的输入,第二全连接层用于根据目标特征矩阵进行分类计算得到每个分类对应的子检测参数。
其中,全连接层即子域名检测模型的输出层,相当于一个分类器,用于根据目标特征矩阵进行分类计算得到子检测参数,子检测参数用于衡量各个分类所占的比例。
如图13所示,为一个实施例中域名检测方法的流程示意图。包含两个部分,一部分是训练域名检测模型,另一部分是利用训练好的域名检测模型进行预测。其中,第一部分包括:首先,进行训练数据的采集,采集DGA域名和正常域名的训练数据。其次,基于卷积神经网络集成的模型训练方法进行训练得到域名检测模型。第二部分包括:采集待检测的域名,然后对采集到的域名进行预处理,预处理包括:过滤掉不合法的域名以及去掉重复的域名。然后采用域名检测模型对域名进行检测,将检测为DGA域名的可疑域名进行进一步过滤,得到最终的DGA域名,然后监控DGA域名数量的变化,生成相应的分析列表进行展示以及监控的异常时进行预警。
如图14所示,在一个实施例中,提出了一种域名检测方法,包括:
步骤S1501,获取数据访问记录,数据访问记录中包括请求访问的域名;步骤S1502,将请求访问的域名作为待检测的域名。
步骤S1503,将域名输入已训练的域名检测模型中的向量层,向量层用于确定与域名对应的域名向量。
步骤S1504,将域名向量作为域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数。
步骤S1505,获取每个子域名检测模型对应的权重,将子域名检测模型对应的权重作为子域名检测模型输出的子检测参数的权重。
步骤S1506,根据子检测参数和子检测参数的权重计算得到每个域名类别对应的概率,域名类别包括正常域名和多个DGA家族域名。
步骤S1507,根据每个域名类别对应的概率确定与域名对应的域名类别。
步骤S1508,获取域名检测模型输出的域名类别。
步骤S1509,将被检测为域名生成算法DGA生成的DGA域名作为候选域名。
步骤S1510,获取访问过候选域名的候选主机标识和候选域名对应的域名解析记录。
步骤S1511,获取域名过滤规则,根据候选主机标识和域名解析记录对候选域名进行过滤得到目标域名。
步骤S1512,跟踪每个DGA家族中域名数量的变化,计算得到每个DGA家族对应的域名活跃值。
步骤S1513,判断DGA家族对应的域名活跃值是否大于预设阈值,若是,则进行预警,若否,则结束。
如图15所示,提出了一种域名检测装置,所述装置包括:
第一获取模块1602,用于获取待检测的域名;
输入模块1604,用于将所述域名输入已训练的域名检测模型中的向量层,所述向量层用于确定与所述域名对应的域名向量;
检测模块1606,用于将所述域名向量作为所述域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,所述域名检测模型用于根据各个所述子检测参数确定检测结果;
输出模块1608,用于获取所述域名检测模型输出的检测结果。
在一个实施例中,所述第一获取模块1602还用于获取数据访问记录,所述数据访问记录中包括请求访问的域名,将所述请求访问的域名作为所述待检测的域名。
如图16所示,在一个实施例中,所述数据访问记录还包括:发起访问的主机标识和返回的域名解析记录;
上述域名检测装置还包括:
候选域名确定模块1610,用于将被检测为域名生成算法DGA生成的DGA域名作为候选域名;
第二获取模块1612,用于获取访问过所述候选域名的候选主机标识和所述候选域名对应的域名解析记录;
过滤模块1614,用于获取域名过滤规则,根据所述候选主机标识和所述域名解析记录对所述候选域名进行过滤得到目标域名。
在一个实施例中,所述过滤模块1614还用于判断同一候选主机标识访问的候选域名个数是否大于第一预设阈值,若是,则判断同一候选主机标识访问的候选域名所对应的域名解析记录中的空域个数是否大于第二预设阈值,若是,则判断所述候选域名是否符合预设标准,若是,则判定为目标域名。
在一个实施例中,所述检测模块还用于获取每个子域名检测模型对应的权重,将子域名检测模型对应的权重作为子域名检测模型输出的子检测参数的权重;根据所述子检测参数和子检测参数的权重计算得到每个域名类别对应的概率,所述域名类别包括正常域名和多个DGA家族域名;根据每个域名类别对应的概率确定与所述域名对应的域名类别。
如图17所示,在一个实施例中,上述域名检测装置还包括:
跟踪模块1616,用于跟踪每个DGA家族中域名数量的变化,计算得到每个DGA家族对应的域名活跃值;
预警模块1618,用于当所述DGA家族对应的域名活跃值大于预设阈值时,则进行预警。
如图18所示,在一个实施例中,上述域名检测装置还包括:
域名检测模型训练模块1601,用于获取训练域名和所述训练域名对应的类别标签;将所述训练域名作为域名检测模型中向量层的输入,将所述训练域名对应的类别标签作为所述域名检测模型期望的输出对所述域名检测模型中包含的向量层和各个子域名检测模型进行训练,得到包含有目标向量层和各个目标子域名检测模型的目标域名检测模型,所述目标向量层中包含有训练得到的字符向量表,所述字符向量表中记录了训练得到的域名字符与字符向量之间的对应关系。
在一个实施例中,所述域名检测模型包括第一子域名检测模型和第二子域名检测模型;所述第一子域名检测模型采用第一卷积神经网络模型进行训练得到的;所述第二子域名检测模型采用第二卷积神经网络模型进行训练得到的,所述第一卷积神经网络模型与所述第二卷积神经网络模型不同。
在一个实施例中,所述第一子域名检测模型包括卷积层、第一池化层和第一全连接层;所述检测模块还用于将所述域名向量作为所述卷积层的输入,所述卷积层用于对所述域名向量进行卷积运算得到第一特征矩阵;将所述第一特征矩阵作为第一池化层的输入,所述第一池化层用于将第一特征矩阵中的每个向量中最大的权重进行投影得到归一化的第二特征矩阵;将所述第二特征矩阵作为第一全连接层的输入,所述第一全连接层用于根据所述第二特征矩阵进行分类计算得到每个分类对应的子检测参数。
在一个实施例中,所述第二子域名检测模型包括循环结构层、第二池化层和第二全连接层;所述检测模块还用于将所述域名向量作为所述循环结构层的输入,所述循环结构层用于对所述域名向量中的每个字符向量进行前向和后向循环计算得到包含有上下文特征的扩展字符向量,将得到的各个扩展字符向量进行组合得到扩展域名向量,根据所述扩展域名向量进行非线性运算得到目标域名向量;将所述目标域名向量作为第二池化层的输入,所述第二池化层用于将目标域名向量中的最大的权重进行投影得到归一化的目标特征矩阵;将所述目标特征矩阵作为第二全连接层的输入,所述第二全连接层用于根据所述目标特征矩阵进行分类计算得到每个分类对应的子检测参数。
图19示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是服务器。如图19所示,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现域名检测方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行域名检测方法。本领域技术人员可以理解,图19中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的域名检测方法可以实现为一种计算机程序的形式,计算机程序可在如图19所示的计算机设备上运行。计算机设备的存储器中可存储组成该域名检测装置的各个程序模块,比如,如图16的第一获取模块1602,输入模块1604,检测模块1606和输出模块1608。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的域名检测装置中的步骤。例如,图19所示的计算机设备可以通过如图15所示的第一获取模块1602获取待检测的域名;通过输入模块1604将所述域名输入已训练的域名检测模型中的向量层,所述向量层用于确定与所述域名对应的域名向量;通过检测模块1606将所述域名向量作为所述域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,所述域名检测模型用于根据各个所述子检测参数确定检测结果;通过输出模块1608,用于获取所述域名检测模型输出的检测结果。
在一个实施例中,提出了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行以下步骤:获取待检测的域名;将所述域名输入已训练的域名检测模型中的向量层,所述向量层用于确定与所述域名对应的域名向量;将所述域名向量作为所述域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,所述域名检测模型用于根据各个所述子检测参数确定检测结果;获取所述域名检测模型输出的检测结果。
在一个实施例中,所述获取待检测的域名,包括:获取数据访问记录,所述数据访问记录中包括请求访问的域名;将所述请求访问的域名作为所述待检测的域名。
在一个实施例中,所述数据访问记录还包括:发起访问的主机标识和返回的域名解析记录;在获取所述域名检测模型输出的检测结果之后,所述计算机程序还使得所述处理器执行如下步骤:将被检测为域名生成算法DGA生成的DGA域名作为候选域名;获取访问过所述候选域名的候选主机标识和所述候选域名对应的域名解析记录;获取域名过滤规则,根据所述候选主机标识和所述域名解析记录对所述候选域名进行过滤得到目标域名。
在一个实施例中,所述获取域名过滤规则,根据所述候选主机标识和所述域名解析记录对所述候选域名进行过滤得到目标域名,包括:判断同一候选主机标识访问的候选域名个数是否大于第一预设阈值,若是,则判断同一候选主机标识访问的候选域名所对应的域名解析记录中的空域个数是否大于第二预设阈值,若是,则判断所述候选域名是否符合预设标准,若是,则判定为目标域名。
在一个实施例中,所述获取每个子域名检测模型输出的子检测参数,所述域名检测模型用于根据各个所述子检测参数确定检测结果,包括:获取每个子域名检测模型对应的权重,将子域名检测模型对应的权重作为子域名检测模型输出的子检测参数的权重;根据所述子检测参数和子检测参数的权重计算得到每个域名类别对应的概率,所述域名类别包括正常域名和多个DGA家族域名;根据每个域名类别对应的概率确定与所述域名对应的域名类别。
在一个实施例中,所述计算机程序还使得所述处理器执行如下步骤:跟踪每个DGA家族中域名数量的变化,计算得到每个DGA家族对应的域名活跃值;当所述DGA家族对应的域名活跃值大于预设阈值时,则进行预警。
在一个实施例中,在所述获取待检测的域名字符之前,所述计算机程序还使得所述处理器执行如下步骤:获取训练域名和所述训练域名对应的类别标签;将所述训练域名作为域名检测模型中向量层的输入,将所述训练域名对应的类别标签作为所述域名检测模型期望的输出对所述域名检测模型中包含的向量层和各个子域名检测模型进行训练,得到包含有目标向量层和各个目标子域名检测模型的目标域名检测模型,所述目标向量层中包含有训练得到的字符向量表,所述字符向量表中记录了训练得到的域名字符与字符向量之间的对应关系。
在一个实施例中,所述域名检测模型包括第一子域名检测模型和第二子域名检测模型;所述第一子域名检测模型采用第一卷积神经网络模型进行训练得到的;所述第二子域名检测模型采用第二卷积神经网络模型进行训练得到的,所述第一卷积神经网络模型与所述第二卷积神经网络模型不同。
在一个实施例中,所述第一子域名检测模型包括卷积层、第一池化层和第一全连接层;所述将所述域名向量作为所述域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,包括:将所述域名向量作为所述卷积层的输入,所述卷积层用于对所述域名向量进行卷积运算得到第一特征矩阵;将所述第一特征矩阵作为第一池化层的输入,所述第一池化层用于将第一特征矩阵中的每个向量中最大的权重进行投影得到归一化的第二特征矩阵;将所述第二特征矩阵作为第一全连接层的输入,所述第一全连接层用于根据所述第二特征矩阵进行分类计算得到每个分类对应的子检测参数。
在一个实施例中,所述第二子域名检测模型包括循环结构层、第二池化层和第二全连接层;所述将所述域名向量作为所述域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,包括:将所述域名向量作为所述循环结构层的输入,所述循环结构层用于对所述域名向量中的每个字符向量进行前向和后向循环计算得到包含有上下文特征的扩展字符向量,将得到的各个扩展字符向量进行组合得到扩展域名向量,根据所述扩展域名向量进行非线性运算得到目标域名向量;将所述目标域名向量作为第二池化层的输入,所述第二池化层用于将目标域名向量中的最大的权重进行投影得到归一化的目标特征矩阵;将所述目标特征矩阵作为第二全连接层的输入,所述第二全连接层用于根据所述目标特征矩阵进行分类计算得到每个分类对应的子检测参数。
在一个实施例中,提出了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行以下步骤:获取待检测的域名;将所述域名输入已训练的域名检测模型中的向量层,所述向量层用于确定与所述域名对应的域名向量;将所述域名向量作为所述域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,所述域名检测模型用于根据各个所述子检测参数确定检测结果;获取所述域名检测模型输出的检测结果。
在一个实施例中,所述获取待检测的域名,包括:获取数据访问记录,所述数据访问记录中包括请求访问的域名;将所述请求访问的域名作为所述待检测的域名。
在一个实施例中,所述数据访问记录还包括:发起访问的主机标识和返回的域名解析记录;在获取所述域名检测模型输出的检测结果之后,所述计算机程序还使得所述处理器执行如下步骤:将被检测为域名生成算法DGA生成的DGA域名作为候选域名;获取访问过所述候选域名的候选主机标识和所述候选域名对应的域名解析记录;获取域名过滤规则,根据所述候选主机标识和所述域名解析记录对所述候选域名进行过滤得到目标域名。
在一个实施例中,所述获取域名过滤规则,根据所述候选主机标识和所述域名解析记录对所述候选域名进行过滤得到目标域名,包括:判断同一候选主机标识访问的候选域名个数是否大于第一预设阈值,若是,则判断同一候选主机标识访问的候选域名所对应的域名解析记录中的空域个数是否大于第二预设阈值,若是,则判断所述候选域名是否符合预设标准,若是,则判定为目标域名。
在一个实施例中,所述获取每个子域名检测模型输出的子检测参数,所述域名检测模型用于根据各个所述子检测参数确定检测结果,包括:获取每个子域名检测模型对应的权重,将子域名检测模型对应的权重作为子域名检测模型输出的子检测参数的权重;根据所述子检测参数和子检测参数的权重计算得到每个域名类别对应的概率,所述域名类别包括正常域名和多个DGA家族域名;根据每个域名类别对应的概率确定与所述域名对应的域名类别。
在一个实施例中,所述计算机程序还使得所述处理器执行如下步骤:跟踪每个DGA家族中域名数量的变化,计算得到每个DGA家族对应的域名活跃值;当所述DGA家族对应的域名活跃值大于预设阈值时,则进行预警。
在一个实施例中,在所述获取待检测的域名字符之前,所述计算机程序还使得所述处理器执行如下步骤:获取训练域名和所述训练域名对应的类别标签;将所述训练域名作为域名检测模型中向量层的输入,将所述训练域名对应的类别标签作为所述域名检测模型期望的输出对所述域名检测模型中包含的向量层和各个子域名检测模型进行训练,得到包含有目标向量层和各个目标子域名检测模型的目标域名检测模型,所述目标向量层中包含有训练得到的字符向量表,所述字符向量表中记录了训练得到的域名字符与字符向量之间的对应关系。
在一个实施例中,所述域名检测模型包括第一子域名检测模型和第二子域名检测模型;所述第一子域名检测模型采用第一卷积神经网络模型进行训练得到的;所述第二子域名检测模型采用第二卷积神经网络模型进行训练得到的,所述第一卷积神经网络模型与所述第二卷积神经网络模型不同。
在一个实施例中,所述第一子域名检测模型包括卷积层、第一池化层和第一全连接层;所述将所述域名向量作为所述域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,包括:将所述域名向量作为所述卷积层的输入,所述卷积层用于对所述域名向量进行卷积运算得到第一特征矩阵;将所述第一特征矩阵作为第一池化层的输入,所述第一池化层用于将第一特征矩阵中的每个向量中最大的权重进行投影得到归一化的第二特征矩阵;将所述第二特征矩阵作为第一全连接层的输入,所述第一全连接层用于根据所述第二特征矩阵进行分类计算得到每个分类对应的子检测参数。
在一个实施例中,所述第二子域名检测模型包括循环结构层、第二池化层和第二全连接层;所述将所述域名向量作为所述域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,包括:将所述域名向量作为所述循环结构层的输入,所述循环结构层用于对所述域名向量中的每个字符向量进行前向和后向循环计算得到包含有上下文特征的扩展字符向量,将得到的各个扩展字符向量进行组合得到扩展域名向量,根据所述扩展域名向量进行非线性运算得到目标域名向量;将所述目标域名向量作为第二池化层的输入,所述第二池化层用于将目标域名向量中的最大的权重进行投影得到归一化的目标特征矩阵;将所述目标特征矩阵作为第二全连接层的输入,所述第二全连接层用于根据所述目标特征矩阵进行分类计算得到每个分类对应的子检测参数。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (9)
1.一种域名检测方法,所述方法包括:
获取数据访问记录,所述数据访问记录中包括请求访问的域名、发起访问的主机标识和返回的域名解析记录;将所述请求访问的域名作为待检测的域名;
将所述域名输入已训练的域名检测模型中的向量层,由所述向量层将所述域名中包含的域名字符转换为字符向量的表示形式,进而得到与所述域名对应的由多个域名字符向量组成的域名向量,所述域名检测模型包括所述向量层、第一子域名检测模型、第二子域名检测模型和输出层,所述第一子域名检测模型包括卷积层、第一池化层和第一全连接层,所述第二子域名检测模型包括循环结构层、第二池化层和第二全连接层;
将所述域名向量作为所述域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型对应的权重,将子域名检测模型对应的权重作为子域名检测模型输出的子检测参数的权重;根据所述子检测参数和子检测参数的权重计算得到每个域名类别对应的概率,所述域名类别包括正常域名和多个DGA家族域名;根据每个域名类别对应的概率确定与所述域名对应的域名类别;
获取所述域名检测模型输出的检测结果;将被检测为域名生成算法DGA生成的DGA域名作为候选域名;获取访问过所述候选域名的候选主机标识和所述候选域名对应的域名解析记录;获取域名过滤规则,根据所述候选主机标识和所述域名解析记录对所述候选域名进行过滤得到目标域名;跟踪每个DGA家族中域名数量的变化,计算得到每个DGA家族对应的域名活跃值,所述域名活跃值用于正向反映域名增长的速度;当所述DGA家族对应的域名活跃值大于预设阈值时,则进行预警。
2.根据权利要求1所述的方法,其特征在于,所述获取域名过滤规则,根据所述候选主机标识和所述域名解析记录对所述候选域名进行过滤得到目标域名,包括:
判断同一候选主机标识访问的候选域名个数是否大于第一预设阈值,若是,则判断同一候选主机标识访问的候选域名所对应的域名解析记录中的空域个数是否大于第二预设阈值,若是,则判断所述候选域名是否符合预设标准,若是,则判定为目标域名。
3.根据权利要求1所述的方法,其特征在于,在所述获取数据访问记录之前,还包括:
获取训练域名和所述训练域名对应的类别标签;
将所述训练域名作为域名检测模型中向量层的输入,将所述训练域名对应的类别标签作为所述域名检测模型期望的输出对所述域名检测模型中包含的向量层和各个子域名检测模型进行训练,得到包含有目标向量层和各个目标子域名检测模型的目标域名检测模型,所述目标向量层中包含有训练得到的字符向量表,所述字符向量表中记录了训练得到的域名字符与字符向量之间的对应关系。
4.根据权利要求1所述的方法,其特征在于,所述第一子域名检测模型采用第一卷积神经网络模型进行训练得到的;所述第二子域名检测模型采用第二卷积神经网络模型进行训练得到的,所述第一卷积神经网络模型与所述第二卷积神经网络模型不同。
5.根据权利要求4所述的方法,其特征在于,所述将所述域名向量作为所述域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,包括:
将所述域名向量作为所述卷积层的输入,所述卷积层用于对所述域名向量进行卷积运算得到第一特征矩阵;
将所述第一特征矩阵作为第一池化层的输入,所述第一池化层用于将第一特征矩阵中的每个向量中最大的权重进行投影得到归一化的第二特征矩阵;
将所述第二特征矩阵作为第一全连接层的输入,所述第一全连接层用于根据所述第二特征矩阵进行分类计算得到每个分类对应的子检测参数。
6.根据权利要求4所述的方法,其特征在于,所述将所述域名向量作为所述域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型输出的子检测参数,包括:
将所述域名向量作为所述循环结构层的输入,所述循环结构层用于对所述域名向量中的每个字符向量进行前向和后向循环计算得到包含有上下文特征的扩展字符向量,将得到的各个扩展字符向量进行组合得到扩展域名向量,根据所述扩展域名向量进行非线性运算得到目标域名向量;
将所述目标域名向量作为第二池化层的输入,所述第二池化层用于将目标域名向量中的最大的权重进行投影得到归一化的目标特征矩阵;
将所述目标特征矩阵作为第二全连接层的输入,所述第二全连接层用于根据所述目标特征矩阵进行分类计算得到每个分类对应的子检测参数。
7.一种域名检测装置,所述装置包括:
第一获取模块,用于获取数据访问记录,所述数据访问记录中包括请求访问的域名、发起访问的主机标识和返回的域名解析记录,将所述请求访问的域名作为待检测的域名;
输入模块,用于将所述域名输入已训练的域名检测模型中的向量层,由所述向量层将所述域名中包含的域名字符转换为字符向量的表示形式,进而得到与所述域名对应的由多个域名字符向量组成的域名向量,所述域名检测模型包括所述向量层、第一子域名检测模型、第二子域名检测模型和输出层,所述第一子域名检测模型包括卷积层、第一池化层和第一全连接层,所述第二子域名检测模型包括循环结构层、第二池化层和第二全连接层;
检测模块,用于将所述域名向量作为所述域名检测模型中各个子域名检测模型的输入,获取每个子域名检测模型对应的权重,将子域名检测模型对应的权重作为子域名检测模型输出的子检测参数的权重;根据所述子检测参数和子检测参数的权重计算得到每个域名类别对应的概率,所述域名类别包括正常域名和多个DGA家族域名;根据每个域名类别对应的概率确定与所述域名对应的域名类别;
输出模块,用于获取所述域名检测模型输出的检测结果;
候选域名确定模块,用于将被检测为域名生成算法DGA生成的DGA域名作为候选域名;
第二获取模块,用于获取访问过所述候选域名的候选主机标识和所述候选域名对应的域名解析记录;
过滤模块,用于获取域名过滤规则,根据所述候选主机标识和所述域名解析记录对所述候选域名进行过滤得到目标域名;
跟踪模块,用于跟踪每个DGA家族中域名数量的变化,计算得到每个DGA家族对应的域名活跃值,所述域名活跃值用于正向反映域名增长的速度;
预警模块,用于当所述DGA家族对应的域名活跃值大于预设阈值时,则进行预警。
8.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至6中任一项所述方法的步骤。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至6中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810306845.1A CN108600200B (zh) | 2018-04-08 | 2018-04-08 | 域名检测方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810306845.1A CN108600200B (zh) | 2018-04-08 | 2018-04-08 | 域名检测方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108600200A CN108600200A (zh) | 2018-09-28 |
CN108600200B true CN108600200B (zh) | 2021-06-11 |
Family
ID=63621188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810306845.1A Active CN108600200B (zh) | 2018-04-08 | 2018-04-08 | 域名检测方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108600200B (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI684889B (zh) * | 2018-10-04 | 2020-02-11 | 安碁資訊股份有限公司 | 評估網域名稱的方法及其伺服器 |
CN111125563A (zh) * | 2018-10-31 | 2020-05-08 | 安碁资讯股份有限公司 | 评估网域名称的方法及其伺服器 |
CN109391706A (zh) * | 2018-11-07 | 2019-02-26 | 顺丰科技有限公司 | 基于深度学习的域名检测方法、装置、设备和存储介质 |
CN109302418B (zh) * | 2018-11-15 | 2021-11-12 | 东信和平科技股份有限公司 | 一种基于深度学习的恶意域名检测方法及装置 |
CN109688110A (zh) * | 2018-11-22 | 2019-04-26 | 顺丰科技有限公司 | Dga域名检测模型构建方法、装置、服务器及存储介质 |
CN109951472A (zh) * | 2019-03-13 | 2019-06-28 | 武汉智美互联科技有限公司 | 一种基于cnn深度学习的dga域名检测方法 |
CN110225030B (zh) * | 2019-06-10 | 2021-09-28 | 福州大学 | 基于rcnn-spp网络的恶意域名检测方法及系统 |
CN111181756B (zh) * | 2019-07-11 | 2021-12-14 | 腾讯科技(深圳)有限公司 | 一种域名安全性判定方法、装置、设备及介质 |
CN110674370A (zh) * | 2019-09-23 | 2020-01-10 | 鹏城实验室 | 域名识别方法及装置、存储介质及电子设备 |
CN110855632B (zh) * | 2019-10-24 | 2022-03-11 | 新华三信息安全技术有限公司 | 报文检测方法、装置、网络设备和计算机可读存储介质 |
CN111131260B (zh) * | 2019-12-24 | 2020-09-15 | 邑客得(上海)信息技术有限公司 | 一种海量网络恶意域名识别和分类方法及系统 |
CN113381963B (zh) * | 2020-02-25 | 2024-01-02 | 深信服科技股份有限公司 | 一种域名检测方法、装置和存储介质 |
CN113315739A (zh) * | 2020-02-26 | 2021-08-27 | 深信服科技股份有限公司 | 一种恶意域名的检测方法及系统 |
CN111556050B (zh) * | 2020-04-26 | 2022-06-07 | 山石网科通信技术股份有限公司 | 域名处理方法、装置、存储介质及处理器 |
CN113645173A (zh) * | 2020-04-27 | 2021-11-12 | 北京观成科技有限公司 | 一种恶意域名的识别方法、系统和设备 |
CN111935097B (zh) * | 2020-07-16 | 2022-07-19 | 上海斗象信息科技有限公司 | 一种检测dga域名的方法 |
CN112073551B (zh) * | 2020-08-26 | 2021-07-20 | 重庆理工大学 | 基于字符级滑动窗口和深度残差网络的dga域名检测系统 |
CN112019569B (zh) * | 2020-10-20 | 2021-02-12 | 腾讯科技(深圳)有限公司 | 恶意域名检测方法、装置及存储介质 |
CN114500457A (zh) * | 2020-10-26 | 2022-05-13 | 中国移动通信有限公司研究院 | 一种域名分类器检测方法、装置、设备及存储介质 |
CN112866257B (zh) * | 2021-01-22 | 2023-09-26 | 网宿科技股份有限公司 | 一种域名检测方法、系统及装置 |
CN112926647B (zh) * | 2021-02-23 | 2023-10-17 | 亚信科技(成都)有限公司 | 模型训练方法、域名检测方法及装置 |
CN112995360B (zh) * | 2021-04-30 | 2021-07-30 | 新华三技术有限公司 | 一种域名检测方法、装置、dga服务设备及存储介质 |
CN113709152B (zh) * | 2021-08-26 | 2022-11-25 | 东南大学 | 一种具备高抗检测能力的对抗域名生成模型 |
CN114912443A (zh) * | 2022-06-22 | 2022-08-16 | 曲阜师范大学 | 域名检测、分类和特征筛选方法和系统、设备及存储介质 |
CN115841113B (zh) * | 2023-02-24 | 2023-05-12 | 山东云天安全技术有限公司 | 一种域名标号检测方法、存储介质及电子设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10218716B2 (en) * | 2016-10-01 | 2019-02-26 | Intel Corporation | Technologies for analyzing uniform resource locators |
CN107332848B (zh) * | 2017-07-05 | 2020-05-12 | 重庆邮电大学 | 一种基于大数据的网络流量异常实时监测系统 |
CN107645503B (zh) * | 2017-09-20 | 2020-01-24 | 杭州安恒信息技术股份有限公司 | 一种基于规则的恶意域名所属dga家族的检测方法 |
CN107577945B (zh) * | 2017-09-28 | 2021-03-23 | 创新先进技术有限公司 | Url攻击检测方法、装置以及电子设备 |
CN107786575B (zh) * | 2017-11-11 | 2020-07-10 | 北京信息科技大学 | 一种基于dns流量的自适应恶意域名检测方法 |
-
2018
- 2018-04-08 CN CN201810306845.1A patent/CN108600200B/zh active Active
Non-Patent Citations (2)
Title |
---|
基于随机森林算法的僵尸网络域名检测研究及实现;吴琳;《江苏通信》;20161031(第05期);第60页 * |
基于静态及动态特征的恶意域名检测技术研究;王林汝;《江苏通信》;20170831(第4期);第77页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108600200A (zh) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108600200B (zh) | 域名检测方法、装置、计算机设备及存储介质 | |
Gao et al. | A distributed network intrusion detection system for distributed denial of service attacks in vehicular ad hoc network | |
CN110399925B (zh) | 账号的风险识别方法、装置及存储介质 | |
CN112003870B (zh) | 一种基于深度学习的网络加密流量识别方法及装置 | |
CN105590055B (zh) | 用于在网络交互系统中识别用户可信行为的方法及装置 | |
CN112866023B (zh) | 网络检测、模型训练方法、装置、设备及存储介质 | |
CN111355697B (zh) | 僵尸网络域名家族的检测方法、装置、设备及存储介质 | |
Kayacik et al. | Selecting features for intrusion detection: A feature relevance analysis on KDD 99 intrusion detection datasets | |
CN110099059B (zh) | 一种域名识别方法、装置及存储介质 | |
CN109960729A (zh) | Http恶意流量的检测方法及系统 | |
CN111949803B (zh) | 一种基于知识图谱的网络异常用户检测方法、装置和设备 | |
CN111131260B (zh) | 一种海量网络恶意域名识别和分类方法及系统 | |
CN107332848A (zh) | 一种基于大数据的网络流量异常实时监测系统 | |
CN111291015B (zh) | 一种用户行为异常检测方法及装置 | |
CN112492059A (zh) | Dga域名检测模型训练方法、dga域名检测方法、装置及存储介质 | |
EP3913888A1 (en) | Detection method for malicious domain name in domain name system and detection device | |
Luo et al. | Dgasensor: Fast detection for dga-based malwares | |
CN113271292A (zh) | 一种基于词向量的恶意域名集群检测方法及装置 | |
CN115270996A (zh) | 一种dga域名检测方法、检测装置及计算机存储介质 | |
CN110958244A (zh) | 一种基于深度学习的仿冒域名检测方法及装置 | |
CN112685272B (zh) | 一种具备可解释性的用户行为异常检测方法 | |
Zhu et al. | Effective phishing website detection based on improved BP neural network and dual feature evaluation | |
US9332031B1 (en) | Categorizing accounts based on associated images | |
CN109992960A (zh) | 一种伪造参数检测方法、装置、电子设备及存储介质 | |
CN111901324B (zh) | 一种基于序列熵流量识别的方法、装置和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |