一种基于N-Gram的恶意域名检测方法与流程

文档序号:17660007发布日期:2019-05-15 22:19阅读:986来源:国知局
一种基于N-Gram的恶意域名检测方法与流程

本发明涉及网络安全领域,尤其涉及一种基于n-gram的恶意域名检测方法。



背景技术:

域名系统(domainnamesystem,dns)作为互联网中实现网络域名与ip地址相互转化的一种基础服务,得到了广泛应用,如电子商务、即时通行、网络媒体等。几乎所有的互联网应用都需要使用dns提供的服务对域名进行解析,实现资源的定位。因而,很多网络安全设施都会允许dns协议类型的数据包通过。正是由于这一原因,dns受到了攻击者的广泛关注。如分布式拒绝服务(distributeddenialofservice,ddos)、垃圾邮件(spare)、网络钓鱼(phishing)以及点击欺诈(clickfraud)等。

现有恶意域名检测方法大多是借助域名黑名单,通过明确地允许与不允许来限制用户的访问,从而实现安全性的效果。但域名黑名单的建立、维护与更新,存在开销大和实时性差的缺点,且域名黑名单中只存在已验证过的恶意域名,对于未知的恶意域名检测准确率较低,误报与漏报率较高。



技术实现要素:

为克服现有恶意域名检测方法的不足,有效地提高恶意域名的检测效率,本发明提出一种基于n-gram的恶意域名检测方法。

本发明的技术方案是这样实现的:

一种基于n-gram的恶意域名检测方法,包括步骤:

s1,合法域名子串集构造,选择访问频次较高的合法域名,在去除顶级域名后,利用n-gram方法将域名按层进行分割,形成合法域名子串集;

s2,合法域名子串权值计算,根据子串在对合法域名进行n-gram分割时出现的频次,给合法域名子串集中子串赋予权值,将域名词法特征的提取转化为数值计算;

s3,待测域名信誉值计算,将待测域名进行n-gram分割,将得到的子串按照合法域名子串权值计算待测域名的信誉值;

s4,恶意域名检测,根据待测域名信誉值的大小和预设判定条件,判断待测域名是否为恶意域名。

进一步地,步骤s1中所述的访问频次较高的合法域名是alexa中排名前100,000的合法域名,所述的去除顶级域名是由于合法顶级域名数量少、长度短、知名度高,很容易识别,且顶级域名部分很少出现恶意域名,恶意域名经常出现在二级、三级或者四级域名中,所述的n-gram方法是通过一个大小为n的滑动窗口对域名中的字符串进行分割,得到长度为n的多个子串,每个子串称为一个gram,所述的域名进行n-gram分割所得的域名子串个数统计是将alexa中排名前100,000的合法域名,在去除顶级域名后,利用n-gram方法将域名按层分割得到域名子串,每级域名分割得到的子串个数计算如公式(1)所示。

count(j)=l-n+1(1)

其中,count(j)(j=2,…,n)表示某域名第j级域名被分割后包含的域名子串数量,n表示某一域名的最大级数,l表示第j级域名长度,n表示滑动窗口大小,取值范围为{n∈n*|3≤n≤7}。

进一步地,步骤s2中所述的子串权值计算是将n-gram分割得到的合法域名子串构造成无重复子串的合法域名子串集,并计算子串集中域名子串的权值,将域名词法特征的提取转化为数值计算。域名子串权值计算如公式(2)所示。

wn-gram(i)=log2(cn-gram(i)/n)(2)

其中,wn-gram(i)表示当n=3,4,5,6,7时,序号为i的域名子串的权值,cn-gram(i)表示序号为i的域名子串在alexa中排名前100,000的合法域名被分割后得到的子串中出现的总次数。

进一步地,步骤s3中所述的待测域名信誉值计算是在去除待测域名的顶级域名后,利用n-gram方法将待测域名按层分割为n=3,4,5,6,7的多个域名子串,并按照域名子串在合法域名子串集中对应的权值,计算待测域名的信誉值。信誉值计算如公式(3)所示。

其中,rv(l)表示序号为l的待测域名信誉值,{l∈n*|l>0},wn-gram(i)表示当滑动窗口n=3,4,5,6,7时,经待测域名分割而来的序号为i的域名子串的权值,m表示待测域名l在滑动窗口n=3,4,5,6,7时,分割域名得到的子串总数。

进一步地,步骤s4中所述的预设判定条件是通过计算alexa排名前100,000的合法域名中最小的80个域名信誉值的平均值作为预设判定条件,所述的恶意域名检测是根据待测域名的信誉值和预设判定条件,判断待测域名是否为恶意域名。

本发明的有益效果在于,与现有技术相比,本发明具有检测时间开销小,检测准确率高、误报与漏报率低的优点,为恶意域名的检测提供了一种新思路,丰富了恶意域名的检测手段。

附图说明

图1为本发明一种基于n-gram的恶意域名检测方法流程图;

图2为本发明一种基于n-gram的恶意域名检测方法的系统结构示意图;

图3为本发明一种基于n-gram的恶意域名检测方法详细的流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的一种基于n-gram的恶意域名检测方法总体原理示意如图1和图2所示,本发明的技术方案思路是:通过选择高频次正常访问域名为合法域名样本集,利用n-gram方法对合法域名样本集中的域名按层进行分割,并按照域名子串重复出现频次给子串赋予权值。然后,将待测域名进行n-gram分割,并对照所得子串与合法域名子串集中的子串,得出待测域名是否为恶意域名。

如图3所示,本发明的一种基于n-gram的恶意域名检测方法,详细包括步骤

s1:合法域名子串集构建,选择访问频次较高的合法域名,在去除顶级域名后,利用n-gram方法将域名按层进行分割,形成合法域名子串集,其中,所述的访问频次较高的合法域名是alexa中排名前100,000的合法域名,所述的去除顶级域名是由于合法顶级域名数量少、长度短、知名度高,很容易识别,且顶级域名部分很少出现恶意域名,恶意域名经常出现在二级、三级或者四级域名中,所述的n-gram方法是通过一个大小为n的滑动窗口对域名中的字符串进行分割,得到长度为n的多个子串,每个子串称为一个gram,所述的域名进行n-gram分割所得的域名子串个数统计是将alexa中前100,000的合法域名,在去除顶级域名后,利用n-gram方法将域名按层分割得到域名子串,每级域名分割得到的子串个数计算如公式(1)所示。

count(j)=l-n+1(1)

其中,count(j)(j=2,…,n)表示某域名第j级域名被分割后包含的域名子串数量,n表示某一域名的最大级数,l表示第j级域名长度,n表示滑动窗口大小,取值范围为{n∈n*|3≤n≤7}。

s2:合法域名子串权值计算,根据子串在对合法域名进行n-gram分割时出现的频次,给合法域名子串集中子串赋予权值,将域名词法特征的提取转化为数值计算。域名子串权值计算如公式(2)所示。

wn-gram(i)=log2(cn-gram(i)/n)(2)

其中,wn-gram(i)表示当n=3,4,5,6,7时,序号为i的域名子串的权值,cn-gram(i)表示序号为i的域名子串在alexa中排名前100,000的合法域名被分割后得到的子串中出现的总次数。

s3:待测域名信誉值计算,利用n-gram方法将待测域名按层分割为n=3,4,5,6,7的多个域名子串,并按照域名子串在合法域名子串集中对应的权值,计算待测域名的信誉值。信誉值计算如公式(3)所示。

其中,rv(l)表示序号为l的待测域名信誉值,{l∈n*|l>0},wn-gram(i)表示当滑动窗口n=3,4,5,6,7时,经待测域名分割而来的序号为i的域名子串的权值,m表示待测域名l在滑动窗口n=3,4,5,6,7时,分割域名得到的子串总数。

s4:恶意域名检测,通过计算alexa排名前100,000的合法域名中最小的80个域名信誉值的平均值作为预设判定条件,并将计算得到的待测域名信誉值与预设判定条件进行比较,当待测域名的信誉值小于该预设判定条件时,则判定该域名为恶意域名,否则为合法域名。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1