CN116032583A - 一种异常域名检测方法、装置、存储介质及设备 - Google Patents

一种异常域名检测方法、装置、存储介质及设备 Download PDF

Info

Publication number
CN116032583A
CN116032583A CN202211639764.6A CN202211639764A CN116032583A CN 116032583 A CN116032583 A CN 116032583A CN 202211639764 A CN202211639764 A CN 202211639764A CN 116032583 A CN116032583 A CN 116032583A
Authority
CN
China
Prior art keywords
domain name
probability distribution
substring
gram
detected
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.)
Pending
Application number
CN202211639764.6A
Other languages
English (en)
Inventor
李渊
谢鹏程
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software Co Ltd
Hubei Topsec Network Security Technology Co Ltd
Original Assignee
Beijing Topsec Technology Co Ltd
Beijing Topsec Network Security Technology Co Ltd
Beijing Topsec Software Co Ltd
Hubei Topsec Network Security Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Topsec Technology Co Ltd, Beijing Topsec Network Security Technology Co Ltd, Beijing Topsec Software Co Ltd, Hubei Topsec Network Security Technology Co Ltd filed Critical Beijing Topsec Technology Co Ltd
Priority to CN202211639764.6A priority Critical patent/CN116032583A/zh
Publication of CN116032583A publication Critical patent/CN116032583A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Complex Calculations (AREA)

Abstract

本申请实施例提供一种异常域名检测方法、装置、存储介质及设备,该方法中,基于正常域名和异常域名在字符分布上存在显著差异作为出发点,利用N‑Gram方法对待检测域名的字符串进行划分,然后计算划分得到的各目标子串集的概率分布,再计算各目标子串集的概率分布与正常域名的子串集的概率分布之间的JS散度,最后将计算得到的JS散度与预设散度阈值进行对比,以此判定待检测域名是否为异常域名。如此,有效提升了异常域名检测的准确率。

Description

一种异常域名检测方法、装置、存储介质及设备
技术领域
本申请涉及网络信息安全技术领域,具体而言,涉及一种异常域名检测方法、装置、存储介质及设备。
背景技术
在互联网与企业内网环境中,DNS(Domain Name System,域名系统)协议是必不可少的网络通信协议之一。为了访问互联网和内网资源,DNS协议提供域名解析服务,将域名和IP地址进行转换。一般情况下,网络设备和边界防护设备很少对DNS进行过滤分析或屏蔽,因此将数据或指令藏匿于DNS协议中进行传输是一种隐蔽且有效的手段。正是由于这一原因,DNS受到了攻击者的广泛关注,利用DNS协议隐藏数据也成为了攻击者实施诸如垃圾邮件(Spare)、网络钓鱼(Phishing)及点击欺诈(Click Fraud)的关键方式。
相关技术中针对异常域名的检测方案主要是借助域名黑名单来实现,通过判断待检测域名是否存在于域名黑名单,来确定是否限制用户访问,从而保障网络安全性。然而,域名黑名单中只存在已验证过的异常域名,对于未知的异常域名检测准确率较低,容易误报或漏报。
发明内容
本申请实施例的目的在于提供一种异常域名检测方法、装置、存储介质及设备,旨在解决相关技术中针对异常域名的检测方式存在的检测准确率较低,容易误报或漏报的问题。
第一方面,本申请实施例提供的一种异常域名检测方法,包括:
对待检测域名进行N-Gram划分,得到至少两个目标子串集;每个目标子串集中包括多个字符片段;不同目标子串集所包含的字符片段的长度不同;
针对每个目标子串集,根据所述目标子串集中各字符片段出现的频数,计算所述目标子串集的概率分布,并计算所述目标子串集的概率分布与训练集中对应相同字符片段长度的子串集的概率分布之间的JS散度;所述训练集包含多个正常域名;
基于所述JS散度与预设散度阈值的对比结果,判断所述待检测域名是否为异常域名;其中,所述预设散度阈值是基于测试集的子串集的概率分布与训练集的子串集的概率分布之间的JS散度而得到的,所述测试集包含多个正常域名。
在上述实现过程中,基于正常域名和异常域名在字符分布上存在显著差异作为出发点,利用N-Gram方法对待检测域名的字符串进行划分,然后计算划分得到的各目标子串集的概率分布,再计算各目标子串集的概率分布与正常域名的子串集的概率分布之间的JS散度,最后将计算得到的JS散度与预设散度阈值进行对比,以此判定待检测域名是否为异常域名。如此,有效提升了异常域名检测的准确率。
进一步地,在一些实施例中,所述对待检测域名进行N-Gram划分之前,包括:
判断所述待检测域名是否包含目标字符;所述目标字符是收集到的多个正常域名中均不包含的字符;
若判断结果为是,确定所述待检测域名为异常域名。
在上述实现过程中,在对待检测域名进行处理时,首先对待检测域名进行字符判断,将包含非DNS协议常用字符的域名直接判定为异常域名,从而在一定程度上提升异常域名检测效率。
进一步地,在一些实施例中,所述对待检测域名进行N-Gram划分,得到至少两个目标子串集,包括:
通过一个大小为N的滑动窗口对待检测域名进行分割,得到长度为N的多个字符片段,基于得到的字符片段形成目标子串集;N取值为1至7中的至少两个值,不同目标子串集对应不同的N值。
在上述实现过程中,提供一种对待检测域名进行N-Gram划分的具体方式,并且,限定N的最大值为7,均衡检测准确率和计算复杂度,能够取得较为良好的效果。
进一步地,在一些实施例中,所述预设散度阈值基于以下方式获取得到:
将收集到的多个正常域名按照预设比例划分为训练集和测试集;
分别计算所述训练集各子串集的概率分布,以及所述测试集各子串集的概率分布;所述训练集的子串集和所述测试集的子串集是分别对所述训练集和所述测试集进行N-Gram划分而得到的;
计算所述训练集各子串集的概率分布与所述测试集中对应相同字符片段长度的子串集的概率分布之间的JS散度,基于各JS散度获取预设散度阈值。
在上述实现过程中,提供一种获取预设散度阈值的具体方式。
进一步地,在一些实施例中,所述训练集各子串集的概率分布包括所述训练集包含的每个正常域名的子串集的概率分布。
在上述实现过程中,将训练集包含的每个正常域名作为一个单独的个体进行统计计算,可以得到对应于各个gram的多个散度,使得以此设置的预设散度阈值更为合理。
进一步地,在一些实施例中,所述分别对所述训练集和所述测试集进行N-Gram之前,包括:
删除所述训练集中各正常域名的顶级域名和二级域名,并删除所述测试集中各正常域名的顶级域名和二级域名。
在上述实现过程中,删除不影响对于整个域名字符串是否正常的判断的顶级域名和二级域名,有效降低计算复杂度。
进一步地,在一些实施例中,所述基于所述JS散度与预设散度阈值的对比结果,判断所述待检测域名是否为异常域名,包括:
若计算得到的JS散度中,超过所述预设散度阈值的JS散度个数大于不超过所述预设散度阈值的JS散度个数,确定所述待检测域名为异常域名。
在上述实现过程中,判断各个gram的JS散度是否大于对应gram的预设散度阈值,若一半及一半以上的JS散度大于对应gram的预设散度阈值,则判定待检测域名为异常域名,否则判定待检测域名为正常域名,如此,可以准确地检测出异常域名。
第二方面,本申请实施例提供的一种异常域名检测装置,包括:
分割模块,用于对待检测域名进行N-Gram划分,得到至少两个目标子串集;每个目标子串集中包括多个字符片段;不同目标子串集所包含的字符片段的长度不同;
计算模块,用于针对每个目标子串集,根据所述目标子串集中各字符片段出现的频数,计算所述目标子串集的概率分布,并计算所述目标子串集的概率分布与训练集中对应相同字符片段长度的子串集的概率分布之间的JS散度;所述训练集包含多个正常域名;
判断模块,用于基于所述JS散度与预设散度阈值的对比结果,判断所述待检测域名是否为异常域名;其中,所述预设散度阈值是基于测试集的子串集的概率分布与训练集的子串集的概率分布之间的JS散度而得到的,所述测试集包含多个正常域名。
第三方面,本申请实施例提供的一种电子设备,包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面任一项所述的方法的步骤。
第四方面,本申请实施例提供的一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如第一方面任一项所述的方法。
第五方面,本申请实施例提供的一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行如第一方面任一项所述的方法。
本申请公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本申请公开的上述技术即可得知。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种异常域名检测方法的流程图;
图2为本申请实施例提供的一种基于N-Gram与JS散度的DNS异常域名检测方案的工作流程的示意图;
图3为本申请实施例提供的一种异常域名检测装置的框图;
图4为本申请实施例提供的一种电子设备的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
如背景技术记载,相关技术中针对异常域名的检测方式存在着检测准确率较低,容易误报或漏报的问题。基于此,本申请实施例提供一种异常域名检测方案,以解决上述问题。
接下来对本申请实施例进行介绍:
如图1所示,图1是本申请实施例提供的一种异常域名检测方法的流程图,所述方法可以应用于终端或服务器,该终端可以是各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携式计算机和台式计算机等;该服务器可以是单个服务器,也可以是多个服务器组成的分布式服务器集群。该终端或服务器提供数据处理的环境,这一环境包括软件部分和硬件部分,其中,软件部分主要包括操作系统,如Windows、Linux等,硬件部分主要包括计算资源、存储资源等,如CPU(Central Processing Unit,中央处理器)、内存、硬盘等。需要说明的是,该终端/服务器也可以实现成多个软件或软件模块,或者还可以实现成单个软件或软件模块,本申请对此不作限制。
所述方法包括:
在步骤101、对待检测域名进行N-Gram划分,得到至少两个目标子串集;每个目标子串集中包括多个字符片段;不同目标子串集所包含的字符片段的长度不同;
域名,也称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识。正常域名通常是人类可识别、可读的字符串,即表现为有意义的字符串,并且正常域名的设计一般遵循自然语言的语言策略,比如在辅音字符后伴随着元音字符,此外,正常域名通常不进行编码、加密等操作。而针对异常域名,攻击者为了避免在非目的DNS服务器上命中导致不能到达目的DNS服务器的情形出现,往往将域名进行编码或者加密等操作,以施加某种特殊性,从而保证异常域名查询能到达目的DNS服务器,因此,异常域名的字符串不具备上述正常域名的字符串的特点。基于此,本实施例利用N-Gram方法来对待检测域名进行划分,为后续的对比判断奠定基础。
N-Gram是一种基于统计语言模型的算法,它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成长度N的字节片段序列。正常域名与异常域名在字符分布上存在显著的差异,而N-Gram就是一种能够有效反映字符分布差异性的字符划分方法。
在一些实施例中,本步骤可以包括:通过一个大小为N的滑动窗口对待检测域名进行分割,得到长度为N的多个字符片段,基于得到的字符片段形成目标子串集;N取值为1至7中的至少两个值,不同目标子串集对应不同的N值。也就是说,通过大小为N的滑动窗口划分待检测域名中的字符串,当N值为1时,一个字符片段是一个字符,可称为1-gram,所有1-gram组成的集合即为一个目标子串集;而当N值为2时,一个字符片段是由2个字符组成的字符串,可称为2-gram,所有2-gram组成的集合即为一个目标子串集;以此类推,当N值为7时,目标子串集即为7-gram集合。较大的N值对准确率有一定程度的提升,然而也会造成计算复杂度进一步增大,经试验发现,设置N的最大值为7,可以取得较为良好的效果。当然,在其他实施例中,N的取值也可以根据具体场景的需求而采取不同的设置。
另外,在一些实施例中,在本步骤之前可以包括:判断所述待检测域名是否包含目标字符;所述目标字符是收集到的多个正常域名中均不包含的字符;若判断结果为是,确定所述待检测域名为异常域名。这里的目标字符是目前收集到的正常DNS域名数据中基本不存在的特殊字符,即非DNS协议常用字符,如“%”、“$”、“&”等,在对待检测域名进行处理时,首先对待检测域名进行字符判断,将包含非DNS协议常用字符的域名直接判定为异常域名,对于通过字符判断的待检测域名,再执行利用N-Gram方法划分,以及后续的对比判断等步骤。如此,可以在一定程度上提升异常域名检测效率。
在步骤102、针对每个目标子串集,根据所述目标子串集中各字符片段出现的频数,计算所述目标子串集的概率分布,并计算所述目标子串集的概率分布与训练集中对应相同字符片段长度的子串集的概率分布之间的JS散度;所述训练集包含多个正常域名;
在得到待检测域名的若干个目标子串集后,分别对每个目标子串集求概率分布。可选地,目标子串集的概率分布可以是将目标子串集中各字符片段出现的频数,分别除以该目标子串集包含的字符片段的总数而得到的。具体地,DNS常见的字符有64个,若目标子串集包括1-gram集合,则可以分别统计这64个1-gram出现的频数,未出现的1-gram的频数记为0,然后将各个1-gram的频数除以1-gram集合包含的字符的总数,得到的商作为每个1-gram的概率,这些概率值构成了1-gram集合的概率分布;同样地,若目标子串集包括2-gram集合,则可以分别统计4096(即64的二次方)个2gram出现的频数,未出现的2-gram的频数记为0,然后将各个2-gram的频数除以2-gram集合包含的字符的总数,得到的商作为每个2-gram的概率,这些概率值构成了2-gram集合的概率分布;以此类推,对于N=3、4、5、6、7时的目标子串集,采用类似的方法分别进行计算,即可得到对应的概率分布。
由于正常域名的字符串与异常域名的字符串遵循明显不同的概率分布,因此,通过计算目标子串集的概率分布与训练集中对应相同字符片段长度的子串集的概率分布之间的JS散度,衡量待检测域名的字符串与正常域名的字符串在概率分布方面的相似性,以此来判定待检测域名是否为异常域名。JS(Jensen-Shannon)散度是一个用于衡量两个概率分布相似性的度量值,一般地,JS散度是对称的,其取值是0到1之间,两个概率分布相似性越高,则JS散度值越小。假设P,Q是两个概率分布,则这两个概率分布之间的JS散度基于以下公式计算得到:
Figure BDA0004006988730000091
由于JS散度具有对称性,即在计算两个概率分布的散度值时,概率分布的先后顺序对度量值没有影响,因此,在计算任意两个域名或者两个域名集的JS散度时,直接带入上述公式进行计算即可,无需考虑以一定的规则或者顺序来对域名数据进行处理,降低了计算复杂度。
本步骤中提到的训练集包含多个正常域名,这些正常域名可以是从搜索引擎平台收集来的合法域名。考虑到训练集包含多个正常域名,因此,在计算训练集的子串集的概率分布时,可以将训练集所包含的所有正常域名中对应于相同字符片段长度的子串集放在一起进行统计,例如,将所有1-gram放在一起进行统计频数并计算1-gram集合的概率分布,将所有2-gram放在一起进行统计频数并计算2-gram集合的概率分布,以此类推。如此,可以有效减少计算耗时。当然,在其他实施例中,也可以根据具体场景的需求采取其他的计算方式,例如,对于训练集中的每一个正常域名,先统计1-gram的频数,再计算1-gram集合的概率分布,最后将所有域名对应于1-gram集合的概率分布进行求均值计算,得到训练集中对应于N值为1的子串集的概率分布,然后采取相应方法计算训练集中对应于N值为其他数值的子串集的概率分布。
本步骤计算得到的JS散度的个数与目标子串集的个数相同,例如,当N=3、4、5时,则分别计算待检测域名的3-gram集合的概率分布与训练集的3-gram集合的概率分布之间的JS散度,待检测域名的4-gram集合的概率分布与训练集的4-gram集合的概率分布之间的JS散度,以及待检测域名的5-gram集合的概率分布与训练集的5-gram集合的概率分布之间的JS散度。
在步骤103、基于所述JS散度与预设散度阈值的对比结果,判断所述待检测域名是否为异常域名;其中,所述预设散度阈值是基于测试集的子串集的概率分布与训练集的子串集的概率分布之间的JS散度而得到的,所述测试集包含多个正常域名。
本步骤中提到的预设散度阈值是用于与计算的JS散度进行比对,以判定待检测域名是否为异常域名的阈值,同样地,预设散度阈值的个数也与目标子串集的个数相同,沿用前面的例子,当N=3、4、5时,计算得到的3个JS散度按照字符片段长度,分别与N值为3的预设散度阈值、N值为4的预设散度阈值、N值为5的预设散度阈值。该预设散度阈值是基于测试集的子串集的概率分布与训练集的子串集的概率分布之间的JS散度而得到的,这里的测试集与训练集一样,也包含多个正常域名,这些正常域名也可以是从搜索引擎平台收集来的合法域名。
在一些实施例中,该预设散度阈值可以基于以下方式获取得到:将收集到的多个正常域名按照预设比例划分为训练集和测试集;分别计算所述训练集各子串集的概率分布,以及所述测试集各子串集的概率分布;所述训练集的子串集和所述测试集的子串集是分别对所述训练集和所述测试集进行N-Gram划分而得到的;计算所述训练集各子串集的概率分布与所述测试集中对应相同字符片段长度的子串集的概率分布之间的JS散度,基于各JS散度获取预设散度阈值。这里的预设比例可以根据实际场景的需求进行设置,如训练集占80%,测试集占20%等。利用N-Gram方法分别对训练集和测试集中的域名进行分割,再统计各字符片段的频数,计算各子串集的概率分布,然后计算训练集各子串集的概率分布与测试集中对应相同字符片段长度的子串集的概率分布之间的JS散度,即计算训练集的1-gram集合的概率分布与测试集的1-gram集合的概率分布之间的JS散度,训练集的2-gram集合的概率分布与测试集的2-gram集合的概率分布之间的JS散度等,最后基于计算得到的各JS散度获取预设散度阈值。如此,该预设散度阈值可以作为表征两个正常域名的字符串遵循的概率分布的相似性临界值,因而可用于判定待检测域名是否为异常域名。
需要说明的是,收集到的多个正常域名与待检测域名可以是同一个场景中的域名。在实际应用中,不同企业或者网络中对于DNS异常域名的定义可能有所不同,因此,基于在某一场景中收集的正常DNS域名对该场景中的待检测域名进行判断,可以有效提升判断准确率。另外,选择合适的收集正常DNS域名的时间,可以保证在该环境中收集的DNS正常域名具有一定的代表性。
进一步地,前面提到的训练集各子串集的概率分布可以是训练集包含的每个正常域名的子串集的概率分布。也就是说,计算训练集各子串集的概率分布时,可以将训练集包含的每个正常域名作为一个单独的个体进行统计计算,例如,若测试集包含10条域名,则对于每个测试集域名,在N-Gram划分后,计算1-gram集合的概率分布,然后分别计算10个测试集域名各自的1-gram集合的概率分布与训练集的1-gram集合的概率分布之间的JS散度,得到10个JS散度值,根据这10个JS散度值可以确定出对应于N值为1的预设散度阈值。需要说明的是,在设置预设散度阈值时,为了避免阈值设置地较为极端,可以采取这10个JS散度值的均值作为预设散度阈值,也可以将这10个JS散度值从大到小排序后,选取排序在第2位的JS散度值作为预设散度阈值等等。如此,使得设置的预设散度阈值更为合理。当然,在其他实施例中,前面提到的训练集各子串集的概率分布也可以是将训练集包含的所有正常域名作为一个整体而统计计算得到的,之后,可以将训练集各子串集的概率分布和测试集各子串集的概率分布之间的JS散度直接设置为预设散度阈值。
更进一步地,在分别对训练集和测试集进行N-Gram划分之前可以包括:删除所述训练集中各正常域名的顶级域名和二级域名,并删除所述测试集中各正常域名的顶级域名和二级域名。经试验发现,顶级域名和二级域名这两部分通常不影响对于整个域名字符串是否正常的判断,因此,将这两部分删除,可以有效降低计算复杂度。需要说明的是,在对待检测域名进行N-Gram划分之前,也可以删除待检测域名的顶级域名和二级域名,从而进一步提升检测效率。
还有,本步骤中提到的基于所述JS散度与预设散度阈值的对比结果,判断所述待检测域名是否为异常域名可以包括:若计算得到的JS散度中,超过所述预设散度阈值的JS散度个数大于不超过所述预设散度阈值的JS散度个数,确定所述待检测域名为异常域名。也就是说,判断各个gram的JS散度是否大于对应gram的预设散度阈值,若一半及一半以上的JS散度大于对应gram的预设散度阈值,则判定待检测域名为异常域名,否则判定待检测域名为正常域名。如此,可以准确地检测出异常域名。当然,在其他实施例中,也可以根据具体场景的需求采取不同的设置,例如,在一些对异常域名容忍程度较低的场景中,也可以设置若计算得到的JS散度中存在任一JS散度超过对应的预设散度阈值,即判定待检测域名为异常域名,本申请对此不作限制。
本申请实施例,基于正常域名和异常域名在字符分布上存在显著差异作为出发点,利用N-Gram方法对待检测域名的字符串进行划分,然后计算划分得到的各目标子串集的概率分布,再计算各目标子串集的概率分布与正常域名的子串集的概率分布之间的JS散度,最后将计算得到的JS散度与预设散度阈值进行对比,以此判定待检测域名是否为异常域名。如此,有效提升异常域名检测的准确率。
为了对本申请的方案做更为详细的说明,接下来介绍一具体实施例:
异常域名检测是保障网络安全的重要手段。经试验发现,正常DNS域名与异常DNS域名在字符分布上存在显著的差异,基于此,本实施例提供一种基于N-Gram与JS散度的DNS异常域名检测方案,以准确地检测异常DNS域名。
本实施例方案的工作流程如图2所示,包括:
S201、收集正常DNS域名数据;
S202、将收集到的正常DNS域名数据划分为训练集和测试集;
具体地,先删除域名中的顶级域名和二级域名,然后将正常DNS域名数据按照8:2的比例划分为两份,占比较大的一份作为训练集,另一份作为测试集;
S203、分别将训练集和测试集进行N-Gram划分;
具体地,将训练集中的域名划分为N-Gram子字符串,不同的N值得到的子字符串子集分开存储,即将1-gram子字符存储到1-gram集合中,将2-gram子字符串存储到2-gram集合中,以此类推。测试集的N-Gram划分采取相同的方式;本实施例中,N=1、2、3、4、5、6、7;
S204、计算训练集的各个集合的概率分布,以及训练集的各个集合的概率分布;
具体地,对于1-gram集合,分别统计64个1-gram子字符(即DNS常见的64个字符)的频数,未出现的1-gram子字符的频数记为0,然后将各个1-gram子字符的频数除以1-gram子字符的总数,得到的值作为每个1-gram子字符的概率,这些概率值构成1-gram集合的概率分布;对于2-gram,分别统计4096个2-gram子字符串的频数,未出现的2-gram子字符串的频数记为0,然后将各个2-gram子字符串的频数除以2-gram子字符串的总数,得到的值作为每个2-gram子字符串的概率,这些概率值构成2-gram集合的概率分布,以此类推。其中,对于训练集的域名数据,将所有域名作为一个整体进行统计计算,即将所有的1-gram放在一起进行统计频数并计算1-gram集合的概率分布,将所有的2-gram放在一起进行统计频数并计算2-gram集合的概率分布,以此类推;而对于测试集中的域名数据,将每一个域名作为一个单独的个体进行统计计算,即对于每一个域名,分别统计1-gram至7-gram的频数,然后分别计算1-gram集合至7-gram集合的概率分布;
S205、根据训练集的各个集合的概率分布与测试集的各个集合的概率分布之间的JS散度,确定JS散度阈值;
具体地,取测试集的一个域名,计算该域名的1-gram集合的概率分布与训练集的1-gram集合的概率分布之间的JS散度,再取测试集的下一个域名,同样计算该域名的1-gram集合的概率分布与训练集的1-gram集合的概率分布之间的JS散度,如此,得到多个1-gram的JS散度值,利用这些1-gram的JS散度值确定1-gram的JS散度阈值,该JS散度阈值可以是这些1-gram的JS散度值的最大值或者超过一定比例的值,例如,10个测试集域名与训练集1-gram的概率分布的JS散度值分别是0.5824、0.5595、0.5317、0.5485、0.6018、0.6184、0.5578、0.5673、0.4921、0.5527,为了避免阈值设置得较为极端,可以根据这10个JS散度值,将JS散度阈值设置为0.6;相应地,2-gram至7-gram的JS散度阈值采取相同的方式计算得到;
S206、获取待检测域名;
具体地,该待检测域名与收集到的正常DNS域名数据对应相同环境,例如,该待检测域名与前面提到的正常DNS域名数据是用于访问同一个网站的域名;另外,S206的执行顺序并不局限于S205之后,S205的执行结果应用于S210;
S207、判断该待检测域名中是否包含非DNS协议常用字符,若是,执行S212,若否,执行S208;
S208、将该待检测域名进行N-Gram划分后,计算各个集合的概率分布;
具体地,采用S203和S204中的方法计算待检测域名的1-gram集合至7-gram集合的概率分布;
S209、计算待检测域名各个集合的概率分布与训练集的各个集合的概率分布之间的JS散度;
具体地,分别计算待检测域名的1-gram集合的概率分布与训练集的1-gram集合的概率分布之间的JS散度值,待检测域名的2-gram集合的概率分布与训练集的2-gram集合的概率分布之间的JS散度值,以及3-gram、4-gram、5-gram、6-gram、7-gram依次对应的JS散度值;
S210、判断是否存在一半及一半以上的JS散度值大于JS散度阈值,若是,执行S212,若否,执行S211;
具体地,分别将S209得到的1-gram(及2-gram、3-gram……)的JS散度值与S205得到的1-gram(及2-gram、3-gram……)的JS散度阈值进行比较,判断各个gram的JS散度值是否分别大于对应的JS散度阈值;
S211、判定待检测域名为正常域名;
S212、判定待检测域名为异常域名。
本申请实施例的方案,基于正常和异常DNS域名字符分布存在较大差异作为出发点,利用N-gram方法来对域名字符串进行划分,然后计算N-gram字符串的概率分布,最后利用正常异常域名N-gram的概率分布存在较大差异从而导致两者概率分布的JS散度值较大的特点来检测异常域名,因此,具有较高的检测准确率,检测效果有显著的提升。
与前述方法的实施例相对应,本申请还提供异常域名检测装置及其应用的终端的实施例:
如图3所示,图3是本申请实施例提供的一种异常域名检测装置的框图,所述装置包括:
分割模块31,用于对待检测域名进行N-Gram划分,得到至少两个目标子串集;每个目标子串集中包括多个字符片段;不同目标子串集所包含的字符片段的长度不同;
计算模块32,用于针对每个目标子串集,根据所述目标子串集中各字符片段出现的频数,计算所述目标子串集的概率分布,并计算所述目标子串集的概率分布与训练集中对应相同字符片段长度的子串集的概率分布之间的JS散度;所述训练集包含多个正常域名;
判断模块33,用于基于所述JS散度与预设散度阈值的对比结果,判断所述待检测域名是否为异常域名;其中,所述预设散度阈值是基于测试集的子串集的概率分布与训练集的子串集的概率分布之间的JS散度而得到的,所述测试集包含多个正常域名。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
本申请还提供一种电子设备,请参见图4,图4为本申请实施例提供的一种电子设备的结构框图。电子设备可以包括处理器410、通信接口420、存储器430和至少一个通信总线440。其中,通信总线440用于实现这些组件直接的连接通信。其中,本申请实施例中电子设备的通信接口420用于与其他节点设备进行信令或数据的通信。处理器410可以是一种集成电路芯片,具有信号的处理能力。
上述的处理器410可以是通用处理器,包括中央处理器(CPU,Central ProcessingUnit)、网络处理器(NP,Network Processor)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。上述的处理器410可以是微处理器,或者该处理器410也可以是任何常规的处理器等。
存储器430可以是,但不限于,随机存取存储器(RAM,Random Access Memory),只读存储器(ROM,Read Only Memory),可编程只读存储器(PROM,Programmable Read-OnlyMemory),可擦除只读存储器(EPROM,Erasable Programmable Read-Only Memory),电可擦除只读存储器(EEPROM,Electric Erasable Programmable Read-Only Memory)等。存储器430中存储有计算机可读取指令,当所述计算机可读取指令由所述处理器410执行时,电子设备可以执行上述图1方法实施例涉及的各个步骤。
可选地,电子设备还可以包括存储控制器、输入输出单元。
所述存储器430、存储控制器、处理器410、外设接口、输入输出单元各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通信总线440实现电性连接。所述处理器410用于执行存储器430中存储的可执行模块,例如电子设备包括的软件功能模块或计算机程序。
输入输出单元用于提供给用户创建任务以及为该任务创建启动可选时段或预设执行时间以实现用户与服务器的交互。所述输入输出单元可以是,但不限于,鼠标和键盘等。
可以理解,图4所示的结构仅为示意,所述电子设备还可包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。图4中所示的各组件可以采用硬件、软件或其组合实现。
本申请实施例还提供一种存储介质,所述存储介质上存储有指令,当所述指令在计算机上运行时,所述计算机程序被处理器执行时实现方法实施例所述的方法,为避免重复,此处不再赘述。
本申请还提供一种计算机程序产品,所述计算机程序产品在计算机上运行时,使得计算机执行方法实施例所述的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (10)

1.一种异常域名检测方法,其特征在于,包括:
对待检测域名进行N-Gram划分,得到至少两个目标子串集;每个目标子串集中包括多个字符片段;不同目标子串集所包含的字符片段的长度不同;
针对每个目标子串集,根据所述目标子串集中各字符片段出现的频数,计算所述目标子串集的概率分布,并计算所述目标子串集的概率分布与训练集中对应相同字符片段长度的子串集的概率分布之间的JS散度;所述训练集包含多个正常域名;
基于所述JS散度与预设散度阈值的对比结果,判断所述待检测域名是否为异常域名;其中,所述预设散度阈值是基于测试集的子串集的概率分布与训练集的子串集的概率分布之间的JS散度而得到的,所述测试集包含多个正常域名。
2.根据权利要求1所述的方法,其特征在于,所述对待检测域名进行N-Gram划分之前,包括:
判断所述待检测域名是否包含目标字符;所述目标字符是收集到的多个正常域名中均不包含的字符;
若判断结果为是,确定所述待检测域名为异常域名。
3.根据权利要求1所述的方法,其特征在于,所述对待检测域名进行N-Gram划分,得到至少两个目标子串集,包括:
通过一个大小为N的滑动窗口对待检测域名进行分割,得到长度为N的多个字符片段,基于得到的字符片段形成目标子串集;N取值为1至7中的至少两个值,不同目标子串集对应不同的N值。
4.根据权利要求1所述的方法,其特征在于,所述预设散度阈值基于以下方式获取得到:
将收集到的多个正常域名按照预设比例划分为训练集和测试集;
分别计算所述训练集各子串集的概率分布,以及所述测试集各子串集的概率分布;所述训练集的子串集和所述测试集的子串集是分别对所述训练集和所述测试集进行N-Gram划分而得到的;
计算所述训练集各子串集的概率分布与所述测试集中对应相同字符片段长度的子串集的概率分布之间的JS散度,基于各JS散度获取预设散度阈值。
5.根据权利要求4所述的方法,其特征在于,所述训练集各子串集的概率分布包括所述训练集包含的每个正常域名的子串集的概率分布。
6.根据权利要求4所述的方法,其特征在于,所述分别对所述训练集和所述测试集进行N-Gram之前,包括:
删除所述训练集中各正常域名的顶级域名和二级域名,并删除所述测试集中各正常域名的顶级域名和二级域名。
7.根据权利要求1所述的方法,其特征在于,所述基于所述JS散度与预设散度阈值的对比结果,判断所述待检测域名是否为异常域名,包括:
若计算得到的JS散度中,超过所述预设散度阈值的JS散度个数大于不超过所述预设散度阈值的JS散度个数,确定所述待检测域名为异常域名。
8.一种异常域名检测装置,其特征在于,包括:
分割模块,用于对待检测域名进行N-Gram划分,得到至少两个目标子串集;每个目标子串集中包括多个字符片段;不同目标子串集所包含的字符片段的长度不同;
计算模块,用于针对每个目标子串集,根据所述目标子串集中各字符片段出现的频数,计算所述目标子串集的概率分布,并计算所述目标子串集的概率分布与训练集中对应相同字符片段长度的子串集的概率分布之间的JS散度;所述训练集包含多个正常域名;
判断模块,用于基于所述JS散度与预设散度阈值的对比结果,判断所述待检测域名是否为异常域名;其中,所述预设散度阈值是基于测试集的子串集的概率分布与训练集的子串集的概率分布之间的JS散度而得到的,所述测试集包含多个正常域名。
9.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的方法。
10.一种电子设备,其特征在于,包括处理器、存储器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的方法。
CN202211639764.6A 2022-12-19 2022-12-19 一种异常域名检测方法、装置、存储介质及设备 Pending CN116032583A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211639764.6A CN116032583A (zh) 2022-12-19 2022-12-19 一种异常域名检测方法、装置、存储介质及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211639764.6A CN116032583A (zh) 2022-12-19 2022-12-19 一种异常域名检测方法、装置、存储介质及设备

Publications (1)

Publication Number Publication Date
CN116032583A true CN116032583A (zh) 2023-04-28

Family

ID=86071637

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211639764.6A Pending CN116032583A (zh) 2022-12-19 2022-12-19 一种异常域名检测方法、装置、存储介质及设备

Country Status (1)

Country Link
CN (1) CN116032583A (zh)

Similar Documents

Publication Publication Date Title
CN109359439B (zh) 软件检测方法、装置、设备及存储介质
Zhu et al. OFS-NN: an effective phishing websites detection model based on optimal feature selection and neural network
US11089035B2 (en) Techniques for predicting subsequent attacks in attack campaigns
US9692762B2 (en) Systems and methods for efficient detection of fingerprinted data and information
US11470097B2 (en) Profile generation device, attack detection device, profile generation method, and profile generation computer program
CN110034921B (zh) 基于带权模糊hash的webshell检测方法
US8769692B1 (en) System and method for detecting malware by transforming objects and analyzing different views of objects
Chu et al. Protect sensitive sites from phishing attacks using features extractable from inaccessible phishing URLs
US10678914B2 (en) Virus program detection method, terminal, and computer readable storage medium
KR20150038738A (ko) 비밀 정보의 검출
EP2284752B1 (en) Intrusion detection systems and methods
EP2977928B1 (en) Malicious code detection
Naik et al. Fuzzy-import hashing: A static analysis technique for malware detection
CN113381963B (zh) 一种域名检测方法、装置和存储介质
Cheng et al. A DDoS detection method for socially aware networking based on forecasting fusion feature sequence
CN109660517B (zh) 异常行为检测方法、装置及设备
CN112148305A (zh) 一种应用检测方法、装置、计算机设备和可读存储介质
RU2615317C1 (ru) Способ обнаружения кодов вредоносных компьютерных программ в трафике сети передачи данных, в том числе подвергнутых комбинациям полиморфных преобразований
US11563717B2 (en) Generation method, generation device, and recording medium
CN112559595A (zh) 安全事件挖掘方法、装置、存储介质及电子设备
CN116032583A (zh) 一种异常域名检测方法、装置、存储介质及设备
CN115766215A (zh) 一种异常流量检测方法及装置
CN116232673A (zh) 隐蔽通道识别方法、装置、计算机设备及存储介质
Almarshad et al. Detecting zero-day polymorphic worms with jaccard similarity algorithm
CN115412312A (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