字典生成方法、域名检测方法、装置、设备及介质与流程

文档序号:25804824发布日期:2021-07-09 12:52阅读:91来源:国知局
字典生成方法、域名检测方法、装置、设备及介质与流程

1.本申请涉及计算机技术领域,特别涉及一种字典生成方法、域名检测方法、装置、设备及介质。


背景技术:

2.在dga(即domain generation algorithm,域名生成算法)家族的域名中,有一种类型的域名是以单词拼接方式生成的,它是归属于suppobox家族的域名。这种dga域名的构造特点是由两个随机单词组成,如heavengarden.net、heavyneighbor.net等。这种类型的dga域名很难从文法特征上与其他诸如facebook.com、stackexchange.com等真实合法域名进行区分。
3.为了检测dga域名,现有所采用的检测手段是:利用预设的历史dga域名构造用于检测域名类型的字典,然后利用上述域名检测字典去检测一个未知类型的域名是否为dga域名。由于在构造上述域名检测字典之前,需要先确定出域名的类型,如果某个域名的类型未知,则不会利用它来构造上述域名检测字典。这直接导致了,如果黑客更换了用来生成dga域名的字典,那么此时新产生的dga域名很难通过上述域名检测字典来进行检测,导致域名类型不明,因此,人们也就不会利用当前黑客基于新的域名生成字典产生的dga域名来构造域名检测字典,从而导致上述新产生的dga域名的类型长期得不到有效识别,降低了上述手段的泛化能力。


技术实现要素:

4.有鉴于此,本申请的目的在于提供一种字典生成方法、域名检测方法、装置、设备及介质,能够避免新产生的dga域名的类型长期得不到有效识别。
5.其具体方案如下:
6.第一方面,本申请公开了一种字典生成方法,包括:
7.对收集到的域名集中的域名进行分词;
8.以分词后得到的单词作为顶点,并根据域名中存在拼接关系的单词对相应的顶点进行连线,以生成所述域名集对应的连通子图集;
9.确定所述连通子图集中每个连通子图的图形统计指标;
10.基于所述图形统计指标确定每个所述连通子图的类别标签,并利用类别标签为dga标签的所述连通子图构造字典,以通过所述字典确定待检测域名是否为dga域名。
11.可选的,所述对收集到的域名集中的域名进行分词之前,还包括:
12.收集与主机对应的域名集;
13.对所述域名集中的域名进行信息过滤,以保留所述域名集中的顶级域名和/或二级域名。
14.可选的,所述以分词后得到的单词作为顶点,并根据域名中存在拼接关系的单词对相应的顶点进行连线,以生成所述域名集对应的连通子图集,包括:
15.以分词后得到的单词为顶点,根据域名中存在拼接关系的单词对相应的顶点进行连线,得到初始连通子图集;
16.分别剔除所述初始连通子图集中每个初始连通子图的顶点度小于预设顶点度阈值的顶点,以得到所述域名集对应的连通子图集;其中,所述顶点度为顶点的连线数量。
17.可选的,所述确定所述连通子图集中每个连通子图的图形统计指标,包括:
18.确定所述连通子图集中每个连通子图的平均节点度、最大节点度、环个数、环点比以及顶点之间的平均最短距离中的任意一个或多个图形统计指标;
19.其中,所述平均节点度为连通子图中所有连线的数量与所有顶点的数量之间的比值;所述最大节点度为连通子图中具有最多连线的顶点的连线数量;所述环个数为连通子图中闭合回路的数量;所述环点比为连通子图中闭合回路的数量与顶点的数量的比值。
20.可选的,所述基于所述图形统计指标确定每个所述连通子图的类别标签,并利用类别标签为dga标签的所述连通子图构造字典,包括:
21.利用所述连通子图、所述图形统计指标以及预设的基于所述图形统计指标的分类依据,训练决策树模型,以确定出每个所述连通子图的类别标签;
22.将所述决策树模型中类别标签为dga标签的所述连通子图的顶点抽取出来作为字典内容,以得到所述字典。
23.第二方面,本申请公开了一种基于字典的域名检测方法,所述字典为利用前述字典生成方法生成的字典;其中,所述域名检测方法包括:
24.获取待检测域名;
25.对所述待检测域名进行分词,得到待检测单词;
26.搜索所述字典中是否存在所述待检测单词,并基于搜索结果判断所述待检测域名是否为dga域名。
27.可选的,所述基于搜索结果判断所述待检测域名是否为dga域名,包括:
28.若每个所述待检测单词均位于所述字典中,则判定所述待检测域名为dga域名。
29.可选的,所述对所述待检测域名进行分词之前,还包括:
30.对所述待检测域名进行解析;
31.若解析失败,则启动所述对所述待检测域名进行分词的步骤;
32.若解析成功,则判定所述待检测域名为非dga域名,并结束。
33.可选的,所述基于搜索结果判断所述待检测域名是否为dga域名,包括:
34.若所述字典中不存在所述待检测单词,则判定所述待检测域名为非dga域名;
35.若所述字典中存在所述待检测单词,则判断所述字典中的域名数量是否大于预设阈值,如果是则判定所述待检测域名为dga域名。
36.第三方面,本申请公开了一种字典生成装置,包括:
37.域名分词模块,用于对收集到的域名集中的域名进行分词;
38.图形构建模块,用于以分词后得到的单词作为顶点,并根据域名中存在拼接关系的单词对相应的顶点进行连线,以生成所述域名集对应的连通子图集;
39.特征确定模块,用于确定所述连通子图集中每个连通子图的图形统计指标;
40.字典构造模块,用于基于所述图形统计指标确定每个所述连通子图的类别标签,并利用类别标签为dga标签的所述连通子图构造字典,以通过所述字典确定待检测域名是
否为dga域名。
41.第四方面,本申请公开了一种基于字典的域名检测装置,所述字典为前述字典生成装置输出的字典,所述域名检测装置包括:
42.域名获取模块,用于获取待检测域名;
43.域名分词模块,用于对所述待检测域名进行分词,得到待检测单词;
44.域名检测模块,用于搜索所述字典中是否存在所述待检测单词,并基于搜索结果判断所述待检测域名是否为dga域名。
45.第五方面,本申请公开了一种电子设备,所述电子设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述方法。
46.第六方面,本申请公开了一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述方法。
47.本申请在构造字典时,先对收集到的域名进行分词,然后以分词后得到的单词为顶点,并根据域名中相互拼接的单词,对相应顶点进行连线以得到相应的连通子图,接着基于连通子图的图形统计指标来确定出连通子图的类别标签,其中,该类别标签包括dga标签,最后利用类别标签为dga标签的连通子图来构造用于检测域名类型的字典。
48.由此可见,本申请在构造上述字典时,是基于类别标签为dga标签的连通子图来进行字典构造的,并且,在确定上述类别标签为dga标签的连通子图时,并非是基于域名本身的类型来进行确定的,而是基于与域名对应的连通子图的图形统计指标来进行确定的,如此一来,便可以使得在起初收集域名时,不必考虑域名的类型是否为dga域名,也即,即便某个域名是黑客利用更换后的域名生成字典产生的dga域名,也能够将其收集过来并参与到本申请的域名检测字典的构建过程,而不必等到人们已经识别出这个域名是dga域名之后才能够令其参与到字典的构建过程。可见,本申请可以允许在第一时间利用黑客新产生的域名来构造域名检测字典,从而能够将黑客所使用的更换后的域名生成字典及时地纳入本申请所构造的域名检测字典中来,进而避免新产生的dga域名的类型长期得不到有效的识别。
附图说明
49.为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
50.图1为本申请提供的一种字典生成方法流程图;
51.图2为本申请提供的一种具体的字典生成方法流程图;
52.图3为本申请提供的一种具体的字典生成方法流程图;
53.图4为本申请提供的一种主机的dns日志数据对应的图谱示意图;
54.图5为本申请提供的另一种主机的dns日志数据对应的图谱示意图;
55.图6为本申请提供的与不同主机对应的连通子图信息展示图;
56.图7为本申请提供的一种具体的决策树模型结构图;
57.图8为本申请提供的一种基于字典的域名检测方法流程图;
58.图9a至9c为本申请检出的dga安全事件及具体的dga域名展示图;
59.图10为本申请提供的一种字典生成装置结构示意图;
60.图11为本申请提供的一种基于字典的域名检测装置结构示意图;
61.图12为本申请提供的一种电子设备结构图。
具体实施方式
62.下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
63.在dga家族的域名中,有一种类型的域名是以单词拼接方式生成的,如heavengarden.net等。这种类型的dga域名很难从文法特征上与其他诸如facebook.com等真实合法域名进行区分。为了检测上述dga域名,现有技术中,是利用预设的历史dga域名构造用于检测域名类型的字典,然后利用上述域名检测字典去检测一个未知类型的域名是否为dga域名。由于在构造上述域名检测字典之前,需要先确定出域名的类型,如果某个域名的类型未知,则不会利用它来构造上述域名检测字典。这直接导致了,如果黑客更换了域名生成字典,那么此时黑客新产生的dga域名很难通过上述域名检测字典来进行检测。因此,现有技术中也就不会利用当前黑客基于新的域名生成字典产生的dga域名来构造域名检测字典,从而导致上述新产生的dga域名的类型长期得不到有效识别。为此,本申请提供了一种新的字典生成方案及域名检测方案,能够避免新产生的dga域名的类型长期得不到有效的识别。
64.参见图1所示,本申请实施例公开了一种字典生成方法,包括:
65.步骤s11:对收集到的域名集中的域名进行分词。
66.需要指出的是,本实施例所收集的域名中,既可以包括域名类型已确定的域名,如域名类型已知的dga域名或非dga域名,也可以包括域名类型还不明的域名,如黑客利用新更换的域名生成字典产生的dga域名等。
67.进一步的,为了在生成用于检测域名类型的字典的过程中减少信息处理量,本实施例在收集域名之前,先判断该域名是否能够被成功解析;如果能够被成功解析,则表明该域名是非dga域名,此时可以剔除该域名,不对其进行收集;相反,如果解析失败,则表明该域名有可能是dga域名,此时可以将其收集过来并参与后续的字典构造过程。
68.更进一步的,本实施例还可以利用以往通过本申请的字典生成方法所生成的字典来检测某个域名是否是dga域名,如果检测结果表明该域名为非dga域名,则意味着该域名既有可能是黑客利用新的域名生成字典生成的dga域名,也有可能是真实合法的非dga域名,此时进一步判断该域名是否能够被成功解析,如果不能成功解析,则表明该域名有很大的概率是黑客利用新的域名生成字典所生成的dga域名,此时可以将其收集下来,如果能够成功解析,则表明该域名为真实合法的非dga域名,此时可以将其剔除。
69.另外,本实施例还可以对某个域名与当前收集到的其他域名进行比较,或对该域名与以前收集到的域名进行比较,以确定出该域名是否被重复收集,如果是则可以将该域
名进行剔除。
70.可以理解的是,本实施例在对域名进行分词时,需要判断分词后所得到的字符片段是否构成完整的单词,如果否则可以对其进行剔除,如果是则选择保留下来并进入后续的处理流程。
71.步骤s12:以分词后得到的单词作为顶点,并根据域名中存在拼接关系的单词对相应的顶点进行连线,以生成所述域名集对应的连通子图集。
72.可以理解的是,在对上述域名集进行分词处理之后,会得到与上述域名集对应的许多单词。本实施例中,以分词后得到的单词为顶点,并在与相互拼接的单词对应的顶点之间进行连线,从而得到与上述域名集对应的一个或多个连通子图。通常情况下,与上述域名集对应的所有单词是可以分割成多组单词的,并且每组单词之间均不存在拼接关系,这种情况下将得到多个连通子图,并且连通子图的数量与上述单词的组数是相一致的。当然,存在一种特殊的情况是,与上述域名集对应的所有单词是无法进行上述分割的,那么此时所得到的连通子图的数量则是一个。
73.另外,还需要指出的是,对于一个域名集来说,在进行上述连线处理之后,所得到的直接结果是与这个域名集对应的以连通图为表现形式的图谱。为了得到上述连通子图集,还需要以是否形成连续的连通支路为分解依据,对上述图谱进行分解,从而得到上述连通子图集,以使得连通子图集中的每个连通子图均构成连续的连通支路。
74.步骤s13:确定所述连通子图集中每个连通子图的图形统计指标。
75.本实施例中,在得到上述连通子图集之后,需要进一步确定每个连通子图的图形统计指标。需要指出的是,上述图形统计指标是指与连通子图中的顶点信息和/或连线信息相关的统计指标,其与单词本身的语义是无关联的。
76.步骤s14:基于所述图形统计指标确定每个所述连通子图的类别标签,并利用类别标签为dga标签的所述连通子图构造字典,以通过所述字典确定待检测域名是否为dga域名。
77.本实施例,利用连通子图中的与单词语义无关的图形统计指标来确定出连通子图的类别标签。需要指出的是,本实施例具体是通过判断上述图形统计指标是否位于预设范围来确定是否为相应的连通子图打上dga标签。在确定出连通子图的类别标签之后,本实施例利用类别标签为dga标签的连通子图所对应的单词来构造用于检测域名类型的字典,也即得到相应的域名检测字典。当获取到待检测域名后,便可以直接利用上述域名检测字典来确定上述待检测域名是否是dga域名。
78.由此可见,本申请实施例在构造上述字典时,是基于类别标签为dga标签的连通子图来进行字典构造的,并且,在确定上述类别标签为dga标签的连通子图时,并非是基于域名本身的类型来进行确定的,而是基于与域名对应的连通子图的图形统计指标来进行确定的,如此一来,便可以使得在起初收集域名时,不必考虑域名的类型是否为dga域名,也即,即便某个域名是黑客利用更换后的域名生成字典产生的dga域名,也能够将其收集过来并参与到本申请的域名检测字典的构建过程,而不必等到人们已经识别出这个域名是dga域名之后才能够令其参与到字典的构建过程。可见,本申请实施例可以允许在第一时间利用黑客新产生的域名来构造域名检测字典,从而能够将黑客所使用的更换后的域名生成字典及时地纳入本申请所构造的域名检测字典中来,进而避免新产生的dga域名的类型长期得
不到有效的识别。
79.参见图2所示,本申请实施例公开了一种具体的字典生成方法,该方法包括:
80.步骤s21:收集与主机对应的域名集,并对所述域名集中的域名进行信息过滤,以保留所述域名集中的顶级域名和/或二级域名。
81.本实施例中,具体可以按照主机的不同,收集不同的域名集。也即,不同的主机对应于不同的域名集。
82.在收集完各个域名集之后,为了减少域名中的无用信息,加快后续的信息处理速度,本实施例还需要对每个域名集分别进行信息过滤,才能够进入后续的分词操作。本实施例经过上述信息过滤之后,域名集中所保留的信息为与预设级别要求相符的域名,本实施例具体可以保留顶级域名(即tld,top-level domain)和/或二级域名(即sld,second-level domain)。
83.本实施例中,可以通过多种方式来实现上述信息过滤以保留域名集中的顶级域名和/或二级域名。在一种具体实施方式中,对于域名集中的任一域名,当该域名中除了顶级域名和/或二级域名的信息以外,其余剩下的信息如果为空或者为以下字符串“www.”,则可以保留该域名中的顶级域名和/或二级域名的信息,并剔除该域名中的其他信息,否则对该域名中的全部信息进行排除,不做保留。在另一种具体实施方式中,对于域名集中的每一域名,均直接从该域名中提取出顶级域名和/或二级域名的信息,并剔除该域名中的其他信息。
84.步骤s22:对域名集中的域名进行分词。
85.在经过上述信息过滤之后,每台主机对应的域名集中均只剩下与预设级别要求相符的域名。此时对域名集中的域名进行分词处理,以将原本存在拼接关系的多个单词分割成独立的单词,例如对域名

stackexchange.com’中的

stackexchange’进行分词后得到单词

stack’和

exchange’。可以理解的是,本实施例在对域名进行分词时,需要判断分词后所得到的字符片段是否构成完整的单词,如果否则对其进行剔除,如果是则选择保留下来并进入后续的处理流程。
86.步骤s23:以分词后得到的单词为顶点,根据域名中存在拼接关系的单词对相应的顶点进行连线,得到初始连通子图集。
87.本实施例中,在进行分词之后,所得到的单词将作为顶点,通过对存在拼接关系的单词对应的顶点进行连线之后,便得到与主机对应的初始连通子图集。也即,本实施例中,不同的主机对应于不同的初始连通子图集。
88.步骤s24:分别剔除所述初始连通子图集中每个初始连通子图的顶点度小于预设顶点度阈值的顶点,以得到所述域名集对应的连通子图集;其中,所述顶点度为顶点的连线数量。
89.为了降低连通子图中与其他顶点的关联性较低的顶点对后续图形统计指标产生的不良干扰,本实施例在得到每台主机对应的初始连通子图集之后,还对每个初始连通子图的顶点度较小的顶点进行剔除。具体的,本实施例可以将顶点度小于3的顶点从初始连通子图中剔除,也即,将连线数量小于3的顶点进行剔除,从而得到域名集对应的连通子图集。
90.步骤s25:确定所述连通子图集中每个连通子图的平均节点度、最大节点度、环个数、环点比以及顶点之间的平均最短距离中的任意一个或多个图形统计指标。
91.其中,所述平均节点度为连通子图中所有连线的数量与所有顶点的数量之间的比值;所述最大节点度为连通子图中具有最多连线的顶点的连线数量;所述环个数为连通子图中闭合回路的数量;所述环点比为连通子图中闭合回路的数量与顶点的数量的比值。
92.本实施例中,在得到每台主机对应的连通子图集之后,对每个连通子图集中的每个连通子图的图形相关信息进行统计,以得到每个连通子图的图形统计指标。其中,所述图形统计指标包括但不限于平均节点度、最大节点度、环个数、环点比、顶点之间的平均最短距离(即aspl,average shortest-path length)。
93.需要指出的是,在连通子图中,平均节点度这个指标所评估的是连通子图的稀疏程度,如果该连通子图是由dga域名对应的单词所构成的连通图,则该连通子图的平均节点度通常是要大于1的,也即,该连通子图中的连线数量要大于顶点数量。而对于最大节点度这个指标来说,如果该连通子图是由dga域名对应的单词所构成的连通图,则该连通子图的最大节点度通常是很大的,这是因为此时一个单词很有可能被反复多次地用来进行单词拼接。对于环个数这个指标来说,如果该连通子图是由dga域名对应的单词所构成的连通图,则该连通子图的环个数通常也是很大的,这是因为多个单词之间通过随机组合很有可能形成闭合回路。另外,对于环点比这个指标来说,如果该连通子图是由dga域名对应的单词所构成的连通图,则该连通子图的环点比的数值是相对比较大的,这是因为在正常的合法域名中可以在少量单词之间形成环的几率本来就很小。
94.由上可见,本实施例可以根据上述图形统计指标及其与连通子图对应的域名类型之间的关系,可以确定出连通子图是否为由dga域名对应的单词所构成的连通图,如果是则可以为该连通子图打上dga标签,如果否则可以为该连通子图打上非dga标签。
95.步骤s26:基于所述图形统计指标确定每个所述连通子图的类别标签,并利用类别标签为dga标签的所述连通子图构造字典,以通过所述字典确定待检测域名是否为dga域名。
96.本实施例中,由于被打上dga标签的连通子图是被判定为由dga域名对应的单词所形成的连通子图,因此,在基于上述图形统计指标确定出连通子图的类别标签之后,便可以利用被打上了dga标签的连通子图对应的单词来构造用于判断待检测域名是否为dga域名的字典。
97.在一种具体实施方式中,可以利用所有主机对应的所有被打上dga标签的连通子图来构造一个大字典,如此一来,以后所有的域名检测均可以借助上述大字典来完成。在另一种具体实施方式中,也可以分别利用不同主机对应的连通子图来创建不同的字典,并且可以通过分布式文件系统(即hdfs,hadoop distributed file system)来保存上述与不同主机对应的不同字典。
98.综上可见,本实施例以主机为单位来收集相应的域名集,并进行信息过滤以保留预设级别的域名以及对信息过滤之后得到的域名进行分词处理,然后在构造连通图的过程中,以主机为键,以单词为顶点,并在具有拼接关系的单词对应的顶点之间进行连线,以及剔除顶点度较小的顶点,从而生成与不同域名集对应的不同连通子图集,接着针对每个连通子图确定相应的与单词语义无关的图形统计指标,以便基于连通子图的图形统计指标来确定出连通子图的类别标签,进而利用被打上dga标签的连通子图对应的单词来构造域名检测字典。本实施例通过上述信息过滤步骤能够减少域名中的无用信息量,有利于加快后
续的信息处理速度,另外通过上述顶点剔除操作,能够降低连通子图中与其他顶点的关联性较低的顶点对后续图形统计指标产生的不良干扰,有利于提升图形统计指标的可靠性和合理性。
99.参见图3所示,本申请实施例公开了一种具体的字典生成方法,该方法包括:
100.步骤s31:对收集到的域名集中的域名进行分词。
101.步骤s32:以分词后得到的单词作为顶点,并根据域名中存在拼接关系的单词对相应的顶点进行连线,以生成所述域名集对应的连通子图集。
102.步骤s33:确定所述连通子图集中每个连通子图的图形统计指标。
103.其中,关于上述步骤s31至s33的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
104.步骤s34:利用所述连通子图、所述图形统计指标以及预设的基于所述图形统计指标的分类依据,训练决策树模型,以确定出每个所述连通子图的类别标签。
105.可以理解的是,本实施例中的所述分类依据是指基于图形统计指标和相应的一个或多个指标阈值之间的大小关系的、用于确定连通子图的类别标签是否为dga标签的分类依据。另外,本实施例具体是基于决策树算法来确定出连通子图的类别标签。之所以采用决策树算法这种机器学习算法,是因为考虑到决策树模型这种分类器,与线性回归模型一样,均是可被解释的分类器,并且决策树分类器能够很好地处理线性和非线性问题。
106.步骤s35:将所述决策树模型中类别标签为dga标签的所述连通子图的顶点抽取出来作为字典内容,以得到所述字典,以通过所述字典确定待检测域名是否为dga域名。
107.本实施例中,在训练上述决策树模型的过程中,相关的类别标签具体可以设为两种,除了dga标签以外,还包括非dga标签。在训练完之后,本实施例将决策树模型中类别标签为dga标签的连通子图的顶点抽取出来作为字典内容,也即将被打上了dga标签的连通子图对应的单词抽取出来作为字典内容,从而得到用于确定待检测域名是否为dga域名的字典。
108.下面通过一个更加具体的实例对本申请的字典生成方案进行详细说明。本实施例中的字典生成方案具体包括:
109.第一,信息收集过程:以主机为单位,进行域名收集,得到不同主机对应的不同域名集。
110.第二,预处理过程:对域名集中的域名进行信息过滤,以保留域名集中的tld域名,然后利用分词工具对tld域名进行分词处理,并确保分词后所得到的字符片段构成完整的单词。
111.第三,构图过程:以主机为单位,以单词为顶点,以具有拼接关系的单词对应的顶点之间的连线为边进行构图,得到与主机i对应的以连通图为表现形式的图谱g
i
(i∈主机集合);对每个g
i
,剔除掉图中顶点度<3的顶点,顶点度为顶点连接的边的条数;对每个g
i
进行连通子图的分解,连通子图即连通分支,顶点之间如果存在一条边,则两个顶点连通,且连通子图只有一个连通分支,记为j∈连通分支集合。如图4和图5所示,图4示出了某台主机在真实环境下的dns日志数据对应的图谱,图5则示出了另一主机在真实环境下的dns日志数据对应的图谱。从图4和图5中可以看出,图4中图谱的连通子图数量较少,而图5中图谱的连通子图数量则非常多。并且,还需要指出的是,图4和图5均是经过顶点剔除处理之后
得到的图谱。
112.第四,指标统计过程:本实施例对每个连通子图分别计算以下5个图形统计指标:1.平均节点度:连通子图里,所有边的数量/所有顶点的数量,这个指标评估的是连通子图的稀疏程度,如果连通子图是由dga域名对应的单词所构成的,则该连通子图中,边的数量应该要大于顶点的数量。2.最大节点度:连通子图里,单个顶点最大的边的数量,如果连通子图是由dga域名对应的单词所构成的,则这个值应该很大,因为一个单词可能被多次反复使用进行拼接。3.环个数:连通子图里,闭合回路的个数,如果连通子图是由dga域名对应的单词所构成的,则这个值应该很大,因为多个单词之间随机组合很有可能形成回路。4.环点比:环的个数除以顶点的个数,如果连通子图是由dga域名对应的单词所构成的,环点比的数值也应该很大,因为正常域名中,能在少量单词(顶点)中形成环的几率就很小。5.aspl:即顶点与顶点之间的平均最短距离。参见图6所示,图6示出了与不同主机对应的连通子图信息,包括连通子图的数量及其5个具体的图形统计指标。
113.第五,模型训练过程:利用上述连通子图和上述5个图形统计指标,训练了一个决策树模型,用于确定一个连通子图是否具有dga标签的连通子图。图7中示出了一棵完全生长的决策树(其中,dga样本数量:76,非dga样本数量:3000+,并且非dga样本有重复),该决策树并没有进行剪枝,这是因为dga样本较少且分布比较集中,强行剪枝得到的泛化能力有可能造成漏判。需要指出的是,图7的决策树中,每个节点包含相应的节点信息,其中,gini表示基尼系数,samples表示相应的样本数量,value表示相应的不同类别样本数量的具体数值,class表示节点的类别,包括dga标签和非dga标签,另外,图7中有些节点的节点信息包括基于符号“≤”的不等式信息,其中,符号“≤”左边的数字n表示上述第n种图形统计指标的具体数值,例如,“2≤2.708”中的小于等于号的左边的2表示上述第2个图形统计指标“最大节点度”的具体数值。
114.第六,字典构造过程:利用上述决策树模型中类别标签为dga标签的节点对应的连通子图中的单词来生成相应的域名检测字典。一种域名检测字典的内容具体如下:
115.[{"51306130_22.22.22.22&.net":["bridge","bicycle","fellow","result","still","strength","probable","prepare","doctor","character","except","outside","board","pretty","might","store","movement","desire","evening","ladder","welcome","broken","kitchen","building","wagon","double","enter"]}]
[0116]
参见图8所示,本申请实施例还公开了一种基于字典的域名检测方法,所述字典为利用前述字典生成方法生成的字典;其中,所述域名检测方法包括:
[0117]
步骤s41:获取待检测域名;
[0118]
步骤s42:对所述待检测域名进行分词,得到待检测单词;
[0119]
步骤s43:搜索所述字典中是否存在所述待检测单词,并基于搜索结果判断所述待检测域名是否为dga域名。
[0120]
其中,关于上述字典的生成过程具体可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0121]
在一种可能实例中,如果所述字典是与某台主机对应的字典,则所述基于搜索结果判断所述待检测域名是否为dga域名,具体可以包括:若每个所述待检测单词均位于所述字典中,则判定所述待检测域名为dga域名。
[0122]
也即,本实施例中,如果一条域名经过分词后的单词完全来自于上述字典,则此域名被判定为通过单词拼接得到的dga域名。图9a至图9c中,示出的内容为检出的dga安全事件及具体的dga域名,每个安全事件仅展示10个单词拼接类域名。上述结果是通过在真实环境进行测试得到的,在真实环境检出2-3个安全事件,但是域名的检出从几百到上千不等,且暂时还没有发现误报。该技术解决的痛点在于检测与正常合法域名极度相似的恶意dga域名,通过图技术从多个域名的全局特征出发,能够很好的检出用于生成恶意域名的字典,无论黑客怎么换字典,通过本申请实施例中的方法是能够有效及时地对其进行检出的。
[0123]
在一种可能实例中,如果所述字典是一部大字典,其包含所有主机各自对应的字典部分,则所述基于搜索结果判断所述待检测域名是否为dga域名,具体可以包括:若每个所述待检测单词均位于与同一台主机对应的字典部分中,则判定所述待检测域名为dga域名。
[0124]
需要指出的是,当上述字典收录较多信息量的情况下,容易匹配上正常的合法域名,从而造成域名类型的误检事件,为此,本实施例可以进一步增加降低误检率的措施,其中包括:在所述对所述待检测域名进行分词之前,对所述待检测域名进行解析;若解析失败,则启动所述对所述待检测域名进行分词的步骤;若解析成功,则判定所述待检测域名为非dga域名,并结束。这种降低误检率的措施是基于当前能够被成功解析的域名都是真实合法的非dga域名这一考虑而得到的,与此同时这种措施也能够进一步简化域名检测流程,提升域名检测效率。另一种降低误检率的措施则是通过判断字典中的域名数量的大小来实现的,具体的,所述基于搜索结果判断所述待检测域名是否为dga域名,包括:若所述字典中不存在所述待检测单词,则判定所述待检测域名为非dga域名;若所述字典中存在所述待检测单词,则判断所述字典中的域名数量是否大于预设阈值,如果是则判定所述待检测域名为dga域名。
[0125]
参见图10所示,本申请实施例还公开了一种字典生成装置,包括:
[0126]
域名分词模块01,用于对收集到的域名集中的域名进行分词;
[0127]
图形构建模块02,用于以分词后得到的单词作为顶点,并根据域名中存在拼接关系的单词对相应的顶点进行连线,以生成所述域名集对应的连通子图集;
[0128]
特征确定模块03,用于确定所述连通子图集中每个连通子图的图形统计指标;
[0129]
字典构造模块04,用于基于所述图形统计指标确定每个所述连通子图的类别标签,并利用类别标签为dga标签的所述连通子图构造字典,以通过所述字典确定待检测域名是否为dga域名。
[0130]
其中,关于上述各个模块更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0131]
由此可见,本申请实施例在构造上述字典时,是基于类别标签为dga标签的连通子图来进行字典构造的,并且,在确定上述类别标签为dga标签的连通子图时,并非是基于域名本身的类型来进行确定的,而是基于与域名对应的连通子图的图形统计指标来进行确定的,如此一来,便可以使得在起初收集域名时,不必考虑域名的类型是否为dga域名,也即,即便某个域名是黑客利用更换后的域名生成字典产生的dga域名,也能够将其收集过来并参与到本申请的域名检测字典的构建过程,而不必等到人们已经识别出这个域名是dga域名之后才能够令其参与到字典的构建过程。可见,本申请实施例可以允许在第一时间利用
黑客新产生的域名来构造域名检测字典,从而能够将黑客所使用的更换后的域名生成字典及时地纳入本申请所构造的域名检测字典中来,进而避免新产生的dga域名的类型长期得不到有效的识别。
[0132]
参见图11所示,本申请实施例还公开了一种基于字典的域名检测装置,所述字典为前述字典生成装置输出的字典,所述域名检测装置包括:
[0133]
域名获取模块11,用于获取待检测域名;
[0134]
域名分词模块12,用于对所述待检测域名进行分词,得到待检测单词;
[0135]
域名检测模块13,用于搜索所述字典中是否存在所述待检测单词,并基于搜索结果判断所述待检测域名是否为dga域名。
[0136]
其中,关于上述各个模块更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
[0137]
进一步的,本申请实施例还提供了一种电子设备。图12是根据一示例性实施例示出的电子设备20结构图,图中的内容不能被认为是对本申请的使用范围的任何限制。
[0138]
图12为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的字典生成方法或域名检测方法中的相关步骤。
[0139]
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
[0140]
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统221、计算机程序222及包括域名数据和字典数据在内的数据223等,存储方式可以是短暂存储或者永久存储。
[0141]
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是windows server、netware、unix、linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的字典生成方法或域名检测方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据223还可以包括电子设备20获取到的各种界面数据。
[0142]
进一步的,本申请实施例还公开了一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述任一实施例公开的字典生成方法或域名检测方法的步骤。
[0143]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0144]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执
行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
[0145]
以上对本申请所提供的一种字典生成方法、域名检测方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1