基于域名字符串统计特征的DGA生成域名的检测方法与流程

文档序号:11657389阅读:576来源:国知局

本发明涉及网络安全技术领域,尤其涉及一种基于域名字符串统计特征的dga生成域名的检测方法。



背景技术:

dns作为实现域名和ip地址映射的分布式系统,是当前互联网中重要的基础设施之一。进行间谍活动、勒索破坏、僵尸网络的恶意软件和c&c进行通信过程中,通常会避免使用确定的ip地址以避免c&c迁移后导致的通信失连。而固定的域名也容易导致形成可察觉的软件指纹。且域名一旦被列人黑名单,软件的远控即失效。在这种背景下domain-flux技术(sharifnyar,abadim.dfbotkiller:domain-fluxbotnetdetectionbasedonthehistoryofgroupactivitiesandfailuresindnstraffic[j].digitalinvestigation,2015,12(12):15-26.)得到了广泛应用,它采用域名生成算法dga,通过特定的参数(如网络时间,热门话题等)定期自动生成大量的随机域名。实施远控的c&c控制者通过相同的种子获得相同的域名池,并选取其中的一部分域名注册为c&c服务器的域名。恶意程序在域名池中随机挑选域名进行dns解析,一旦解析成功便可获得c&c服务器的ip地址并与之建立连接。由于其他一些实施apt攻击和botnet控制的软件也大量使用这一手段。所以针对dga生成域名的dns请求的发现,成为一种间接的恶意软件检测方法。当前这方面的主要方法如下:

第一种是随机森林的dga域名检测方法(王红凯,张旭东等.基于随机森林的dga域名检测方法:cn105577660a[p].2015),该方法主要使用了域名长度、域名信息上、域名语音性、域名中元音字符数、域名中数字字符数、域名中重复字母数、域名中连续数字字符数、域名中非元音连续字符数、域名中n元语言模型在白明代中得分以及域名中n元语言模型在单词字典中的得分。该方法采用的特征数量多,且存在很多区分能力不强的低阶特征,训练的时间长效率低。

第二种基于域名特征的c&c域名识别方法(唐力,岳扶天,周海燕.基于域名特征的c&c域名识别方法,cn105072214a[p].2015),该方法陈述的主要特点是对给定的域名生成用于判定域名类别的量化指标,并简单举例该指标可以报考元音字母占比、域名中的拼音出现次数等。方法的技术特征不明显,其陈述的训练和学习方法为该领域的一般技术,无法精确高效地区分正常域名和dga生成的域名。

第三种实现恶意域名识别的方法及装置(侯伟,曲武,周涛.一种实现恶意域名识别的方法及装置,cn105024969a[p].2014),该发明主要声明了一种动态特征的恶意域名可信判断模型,这个动态特征集合包括与ip相关的特征、和/或权威服务器主域名一致率。其方法是主要是基于恶意软件的dns请求的概率,而其中的域名相关的统计特征采用的是比较简单的字符和数字特征,被作为静态特征进行过滤黑名单的设定。该方法由于需要用到dns请求的通信行为的特征,因此复杂度较高。



技术实现要素:

本发明的目的在于提供一种复杂度低、精度高的基于域名字符串统计特征的dga生成域名的检测方法。

实现本发明目的的技术解决方案为:一种基于域名字符串统计特征的dga生成域名的检测方法,包括以下步骤:

步骤1,收集整理并构建正常的标准域名集合,将其中超过三个字符的二级或者三级域名取出,构成由字母、数字和连字符组成的域名字符串sni,i=1,2,…,n;所述域名字符串sni的集合sdn作为后续特征矢量构造的数据基础;

步骤2,收集整理并构建正常的域名集合,将其中超过三个字符的二级或者三级域名取出,构成由字母、数字和连字符组成的域名字符串lnj,j=1,2,…,nl的集合ldn;收集整理恶意软件dga算法生成的域名集合,将其中超过三个字符的二级或者三级域名取出,构成由字母、数字和连字符组成的域名字符串dnk,k=1,2,…,nd的集合ddn;

步骤3,提取ldn中所有lnj和ddn中所有dnk的统计特征,得到ldn中所有lnj的特征矢量集合lv、ddn中所有dnk的特征矢量集合dv,lv中具有nl个六维的特征矢量,dv中具有nd个六维的特征矢量;

步骤4,对lv中的特征矢量添加标记1,对dv中的特征矢量添加标记-1,分别作为正样本和负样本构成测试集合训练分类器,通过分类器实现对恶意软件dga生成域名的检测。

进一步地,步骤3所述特征矢量具体如下:

v(x)=[sdr(x),scr(x),dsim(x),tsim(x),v2dc(x),c2dc(x)]

其中,x为ldn中所有lnj或ddn中所有dnk;

sdr(x)、scr(x)、dsim(x)、tsim(x)、v2dc(x)、c2dc(x)分别为连续数字占比、连续二辅字占比、随机相邻双字平均相似指数、随机相邻三字平均相似指数、单元音字母到二字符平均转移概率、单辅音字母到二字符平均转移概率。

进一步地,步骤3所述连续数字占比sdr(x)=num_2dp(x)/len(x),其中,num_2dp(x)为域名中所有两个或两个以上连续数字的总长度,len(x)为域名长度;

所述连续二辅字占比scr(x)=num_2cp(x)/len(x),其中,num_2dp(x)为域名中所有两个或两个以上连续辅音字母的总长度,len(x)为域名长度。

进一步地,步骤3所述随机相邻双字平均相似指数dsim(x)为:

dsim(x)=1/m×∑y∈psdn(|sd(x)∩sd(y)|/|sd(x)∪sd(y)|)

其中,psdn是从sdn集合中随机选择的包含m个域名的子集,函数sd(x/y)表示将x/y分成的相邻的双字母组成的集合,|sd(x)∩sd(y)|是集合sd(x)和集合sd(y)的交集中元素的个数;|sd(x)∪sd(y)|是集合sd(x)和集合sd(y)的并集中元素的个数;

所述随机相邻三字平均相似指数tsim(x)为:

tsim(x)=1/m×∑y∈psdn(|td(x)∩td(y)|/|td(x)∪td(y)|)

其中,函数td(x/y)表示将x/y分成的相邻的三字母组成的集合,|td(x)∩td(y)|是集合td(x)和集合td(y)的交集中元素的个数;|td(x)∪td(y)|是集合td(x)和集合td(y)的并集中元素的个数。

进一步地,步骤3所述单元音字母到二字符平均转移概率v2dc(x)具体如下:

根据sdn中合法标准域名sn,统计得到单元音字母到任意二字符转移概率p(y,z|x),对域名字符串x,设x具有后续二个字符元音x的集合为vx,vx的元素个数为mv,且元音x的后续字符分别为y(x)、z(x),则单元音字母到二字符平均转移概率v2dc(x)为:

v2dc(x)=1/mv×∑y∈vxp(y(x),z(x)|x)

所述单辅音字母到二字符平均转移概率c2dc(x)具体如下:

根据sdn中合法域名sn,统计得到单辅音字母到任意二字符转移概率p(y,z|x’),对域名字符串x,设x具有后续二个字符辅音x’的集合为cx,cx的元素个数为mc,且辅音x’的后续字符分别为y(x’),z(x’),则单辅音字母到二字符平均转移概率c2dc(x)为:

c2dc(x)=1/mc×∑y∈cxp(y(x’),z(x’)|x’)

本发明与现有技术相比,其显著优点为:(1)采用,特征提取+分类器训练分类的模式,实现了对恶意程序dga自动生成域名的检测;(2)所用的特征均直接提取自域名字符串的统计量,无须使用dns请求的相关通信行为方面的特征;(3)所用的连续数字占比、连续二辅字占比、随机相邻双字平均相似指数、随机相邻三字平均相似指数、单元音字母到二字符平均转移概率、单辅音字母到二字符平均转移概率特征均能敏感地区分正常域名和dga生成的域名,所提方案的维度较低,实施训练和检测的计算复杂度低。

附图说明

图1为本发明基于域名字符串统计特征的dga生成域名的检测方法的流程图。

具体实施方式

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

本发明基于域名字符组合的统计异常性,从域名字符串提取了六种统计量并在此基础上利用统计学习方法训练分类器,来实现对恶意软件dga动态生成域名的检测,具体步骤如下:

步骤1,收集整理并构建正常的标准域名集合,将其中超过三个字符的二级或者三级域名取出,构成由字母、数字和连字符组成的域名字符串sni,i=1,2,…,n;所述域名字符串sni的集合sdn作为后续特征矢量构造的数据基础;

步骤2,收集整理并构建正常的域名集合,将其中超过三个字符的二级或者三级域名取出,构成由字母、数字和连字符组成的域名字符串lnj,j=1,2,…,nl的集合ldn;收集整理恶意软件dga算法生成的域名集合,将其中超过三个字符的二级或者三级域名取出,构成由字母、数字和连字符组成的域名字符串dnk,k=1,2,…,nd的集合ddn;

步骤3,提取ldn中所有lnj和ddn中所有dnk的统计特征,得到ldn中所有lnj的特征矢量集合lv、ddn中所有dnk的特征矢量集合dv,lv中具有nl个六维的特征矢量,dv中具有nd个六维的特征矢量;

所述特征矢量具体如下:

v(x)=[sdr(x),scr(x),dsim(x),tsim(x),v2dc(x),c2dc(x)]

其中,x为ldn中所有lnj或ddn中所有dnk;

sdr(x)、scr(x)、dsim(x)、tsim(x)、v2dc(x)、c2dc(x)分别为连续数字占比、连续二辅字占比、随机相邻双字平均相似指数、随机相邻三字平均相似指数、单元音字母到二字符平均转移概率、单辅音字母到二字符平均转移概率。

(1)所述连续数字占比sdr(x)=num_2dp(x)/len(x),其中,num_2dp(x)为域名中所有两个或两个以上连续数字的总长度,len(x)为域名长度。

(2)所述连续二辅字占比scr(x)=num_2cp(x)/len(x),其中,num_2dp(x)为域名中所有两个或两个以上连续辅音字母的总长度,len(x)为域名长度。

(3)所述随机相邻双字平均相似指数dsim(x)为:

dsim(x)=1/m×∑y∈psdn(|sd(x)∩sd(y)|/|sd(x)∪sd(y)|)

其中,psdn是从sdn集合中随机选择的包含m个域名的子集,函数sd(x/y)表示将x/y分成的相邻的双字母组成的集合,|sd(x)∩sd(y)|是集合sd(x)和集合sd(y)的交集中元素的个数;|sd(x)∪sd(y)|是集合sd(x)和集合sd(y)的并集中元素的个数。

(4)所述随机相邻三字平均相似指数tsim(x)为:

tsim(x)=1/m×∑y∈psdn(|td(x)∩td(y)|/|td(x)∪td(y)|)

其中,函数td(x/y)表示将x/y分成的相邻的三字母组成的集合,|td(x)∩td(y)|是集合td(x)和集合td(y)的交集中元素的个数;|td(x)∪td(y)|是集合td(x)和集合td(y)的并集中元素的个数。

(5)所述单元音字母到二字符平均转移概率v2dc(x)具体如下:

根据sdn中合法标准域名sn,统计得到单元音字母到任意二字符转移概率p(y,z|x),对域名字符串x,设x具有后续二个字符元音x的集合为vx,vx的元素个数为mv,且元音x的后续字符分别为y(x)、z(x),则单元音字母到二字符平均转移概率v2dc(x)为:

v2dc(x)=1/mv×∑y∈vxp(y(x),z(x)|x)

(6)所述单辅音字母到二字符平均转移概率c2dc(x)具体如下:

根据sdn中合法域名sn,统计得到单辅音字母到任意二字符转移概率p(y,z|x’),对域名字符串x,设x具有后续二个字符辅音x’的集合为cx,cx的元素个数为mc,且辅音x’的后续字符分别为y(x’),z(x’),则单辅音字母到二字符平均转移概率c2dc(x)为:

c2dc(x)=1/mc×∑y∈cxp(y(x’),z(x’)|x’)

步骤4,对lv中的特征矢量添加标记1,对dv中的特征矢量添加标记-1,分别作为正样本和负样本构成测试集合训练分类器,通过分类器实现对恶意软件dga生成域名的检测。

实施例1

图1为本发明的具体检测实施过程,下面分别介绍:

步骤1,从alexa(www.alexa.com)上收集排名前200k的合法域名,随机选择其中的100k,将其中的其中超过三个字符的二级或者三级域名取出,构成域名中包含字母、数字和连字符组成的域名字符串sni,i=1,2,…,n,n=105;所述域名字符串sni的集合sdn作为后续特征矢量构造的数据基础;

步骤2,从alexa(www.alexa.com)上收集的排名前200k的合法域名中随机选择其中的100k,将其中的其中超过三个字符的二级或者三级域名取出,构成由字母、数字和连字符组成的域名字符串lnj,j=1,2,…,nl,nl=105的集合ldn;收集confickerc、cryptolocker、zeus、corebot、matsnu、gameoverzeus和gameoverzeus变种newgameoverzeus等七种恶意程序的dga域名集合,将其中的其中超过三个字符的二级或者三级域名取出,构成由字母、数字和连字符组成的域名字符串dnk,k=1,2,…,nd,nd=105的集合ddn。

步骤3,提取ldn中所有lnj和ddn中所有dnk的统计特征,得到ldn中所有lnj的特征矢量集合lv、ddn中所有dnk的特征矢量集合dv,lv中具有nl个六维的特征矢量,dv中具有nd个六维的特征矢量,所述特征矢量具体如下:

v(x)=[sdr(x),scr(x),dsim(x),tsim(x),v2dc(x),c2dc(x)]

其中,x为ldn中所有lnj或ddn中所有dnk;

sdr(x)、scr(x)、dsim(x)、tsim(x)、v2dc(x)、c2dc(x)分别为连续数字占比、连续二辅字占比、随机相邻双字平均相似指数、随机相邻三字平均相似指数、单元音字母到二字符平均转移概率、单辅音字母到二字符平均转移概率,其中:

1)域名x连续数字占比:

sdr(x)=num_2dp(x)/len(x)

其中,num_2dp(x)为域名中所有两个或两个以上连续数字的总长度,len(x)为域名长度。

2)连续二辅音字符占比:

scr(x)=num_2cp(x)/len(x)

其中,num_2dp(x)为域名中所有两个或两个以上连续辅音字母的总长度,len(x)为域名长度。

3)随机相邻双字平均相似指数

dsim(x)=1/m×∑y∈psdn(|sd(x)∩sd(y)|/|sd(x)∪sd(y)|)

其中,psdn是从sdn集合中随机选择的包含m,m=50000个域名的子集。函数sd(x/y)表示将x/y分成的相邻的双字母组成的集合。|sd(x)∩sd(y)|是集合sd(x)和集合sd(y)的交集中元素的个数;|sd(x)∪sd(y)|是集合sd(x)和集合sd(y)的并集中元素的个数;

4)随机相邻三字平均相似指数

tsim(x)=1/m×∑y∈psdn(|td(x)∩td(y)|/|td(x)∪td(y)|)

其中,其中,函数td(x/y)表示将x/y分成的相邻的三字母组成的集合,|td(x)∩td(y)|是集合td(x)和集合td(y)的交集中元素的个数;|td(x)∪td(y)|是集合td(x)和集合td(y)的并集中元素的个数;

5)单元音字母到二字符平均转移概率

根据sdn中合法标准域名sn,统计得到单元音字母到任意二字符转移概率p(y,z|x),对域名字符串x,设x具有后续二个字符元音x的集合为vx,vx的元素个数为mv,且元音x的后续字符分别为y(x)、z(x),则单元音字母到二字符平均转移概率v2dc(x)为:

v2dc(x)=1/mv×∑y∈vxp(y(x),z(x)|x)

6)单辅音字母到二字符平均转移概率

根据sdn中大量的合法域名sn,统计得到单辅音字母到任意二字符转移概率p(y,z|x’),如果出现转移概率为0的情况,则赋一个很小的值ε.对域名字符串x,设其具有后续二个字符辅音x’集合为cx,cx的元素个数为mc,且辅音x’的后续字符分别为y(x’),z(x’),则单辅音字母到二字符平均转移概率c2dc(x)为:

c2dc(x)=1/mc×∑y∈cxp(y(x’),z(x’)|x’)

步骤4,通过上述计算,我们得到ldn和ddn中lni和dni的矢量集合lv和dv,lv中具有nl个六维的矢量,dv中具有nd个六维的矢量。分别为其添加标记1和-1,作为正样本和负样本,利用基于rbf核的svm分类器采用的进行训练,其中惩罚参数c=128.0,rbf核函数参数gamma=2.0。具体采用libsvm的相关函数库,通过交叉验证可以训练得到model文件。值得指出的其他的诸如神经网络、决策树、极限学习机和其他学习算法也可以用于本检测方法。

步骤5,利用学习的model文件,可以利用libsvm的predict函数对需要检测的域名字符串进行检测。如图1所示,检测器支持对在线抓取数据的检测和离线的存储下来的批量的域名字符串的检测。

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