一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

恶意域名检测方法、装置、电子设备及存储介质与流程

2022-04-02 05:41:46 来源:中国专利 TAG:


1.本技术涉及安全技术领域,具体而言,涉及一种恶意域名检测方法、装置、电子设备及存储介质。


背景技术:

2.随着互联网技术的不断发展,网络安全问题也日益突出。目前,通过域名生成算法(domain generation algorithm,dga)可以快速地生成大量的dga域名,通过dga域名可以构建鲁棒性较好的僵尸网络。攻击者利用僵尸网络,可以向网络中的设备发起网络攻击。
3.为了提高网络安全性,需要对dga域名进行检测,目前常用的检测技术是基于正则表达式或黑白名单来检测,但是由于dga域名容易生成且变化较快,所以,使用预先设置的正则表达式或黑白名单对dga域名的检测方式误报率高。


技术实现要素:

4.本技术实施例的目的在于提供一种恶意域名检测方法、装置、电子设备及存储介质,用以改善现有技术中的域名检测方法误报率高、准确度低的问题。
5.第一方面,本技术实施例提供了一种种恶意域名检测方法,所述方法包括:
6.获取待检测域名;
7.对所述待检测域名进行分词,获得多个分词;
8.将所述多个分词输入fasttext模型中,通过所述fasttext模型检测所述待检测域名是否为恶意域名,获得检测结果。
9.在上述实现过程中,该方法通过获取待检测域名的多个分词,将多个分词输入fasttext模型中,通过fasttext模型检测待检测域名是否为恶意域名,获得检测结果,由于fasttext模型使用浅层的神经网络即可实现文本分类功能,在文本分类任务中,浅层网络往往能取得和深度网络相媲美的精度,所以采用fasttext模型来进行恶意域名的检测,能够达到深度网络所能实现的检测精度,相比于现有方式中基于正则表达式或黑白名单的检测方式,本方案的检测精度更高。
10.可选地,所述fasttext模型包括输入层、隐藏层和输出层,所述多个分词作为所述输入层的输入,所述输入层用于将所述多个分词转换为对应的词向量,所述隐藏层用于对所述词向量进行叠加平均处理,所述输出层用于基于所述隐藏层的处理结果输出对所述待检测域名的检测结果。fasttext模型结合了自然语言处理的思路和神经网络的分层思想,所以能够更好地提取各个分词之间的关联关系,并且能够达到神经网络的预测精度。
11.可选地,所述对所述待检测域名进行分词,获得多个分词,包括:
12.采用n-grama模型对所述待检测域名进行分词,获得多个分词。如此能够更好地对待检测域名进行分词,以利于fasttext模型能够更准确地分析各个分词排列顺序的合理性以及对下一个分词出现的约束信息,具有更大的辨别力,进而提高恶意域名的检测精度。
13.可选地,所述对所述待检测域名进行分词,获得多个分词,包括:
14.采用n-grama模型对所述待检测域名进行分词,获得多个初始分词;
15.采用数据关联分析法分析其各个初始分词之间的关联关系;
16.根据各个初始分词之间的关联关系筛选出具有强关联关系的多个分词。
17.在上述实现过程中,采用数据关联分析法挖掘各个初始分词之间的关联关联,并筛选出具有强关联关系的分词,如此可以进一步提高fasttext模型提取各个具有强关联关系的分词之间的关联关系,提高检测精度。
18.可选地,所述对所述待检测域名进行分词,获得多个分词,包括:
19.采用n-grama模型对所述待检测域名进行分词,获得多个初始分词;
20.将所述多个初始分词按照设定组合方式进行组合,获得组合后的多个分词;
21.其中,所述fasttext模型的输入数据包括所述多个初始分词和所述组合后的多个分词。
22.在上述实现过程中,将多个初始分词进行组合,这样可以增加输入fasttext模型的数据量,使得fasttext模型可以利用更多的数据来检测恶意域名,提高检测精度。
23.可选地,在获取待检测域名之后,对所述待检测域名进行分词,获得多个分词之前,所述方法还包括:
24.将所述待检测域名与预先存储的多个恶意域名进行相似度计算,获得所述待检测域名与各个恶意域名之间的相似度;
25.若所述相似度大于设定相似度的数量超过设定比例,则确定所述待检测域名为可疑域名,并执行步骤:对所述待检测域名进行分词。
26.在上述实现过程中,预先将待检测域名与多个恶意域名进行相似度计算,在待检测域名为可疑域名时才进行后续的检测,这样可以减少后续fasttext模型的检测量,在网络中有大量域名需要检测时,这样可以提高检测效率。
27.可选地,所述将所述待检测域名与预先存储的多个恶意域名进行相似度计算,获得所述待检测域名与各个恶意域名之间的相似度,包括:
28.计算所述待检测域名的模糊哈希值,以及计算预先存储的各个恶意域名的模糊哈希值;
29.将所述待检测域名的模糊哈希值与各个恶意域名的模糊哈希值进行相似度比较,获得所述待检测域名与各个恶意域名之间的相似度。
30.在上述实现过程中,模糊哈希值能够更准确地比较两个字符串之间的相似度,因为针对域名的某个分片中数据的增加、修改、删除等变化,只会影响该分片的哈希,对全局的影响不大,所以对最后相似度的影响也不大,即便是改动连续几个字符,或者作多处改动,模糊哈希算法依然可能作出有效的判断,进而通过比较域名之间的模糊哈希值能够更准确地判断两个域名之间的相似度。
31.第二方面,本技术实施例提供了一种恶意域名检测装置,所述装置包括:
32.域名获取模块,用于获取待检测域名;
33.分词模块,用于对所述待检测域名进行分词,获得多个分词;
34.检测模块,用于将所述多个分词输入fasttext模型中,通过所述fasttext模型检测所述待检测域名是否为恶意域名,获得检测结果。
35.可选地,所述fasttext模型包括输入层、隐藏层和输出层,所述多个分词作为所述
输入层的输入,所述输入层用于将所述多个分词转换为对应的词向量,所述隐藏层用于对所述词向量进行叠加平均处理,所述输出层用于基于所述隐藏层的处理结果输出对所述待检测域名的检测结果。
36.可选地,所述分词模块,用于采用n-grama模型对所述待检测域名进行分词,获得多个分词。
37.可选地,所述分词模块,用于采用n-grama模型对所述待检测域名进行分词,获得多个初始分词;采用数据关联分析法分析其各个初始分词之间的关联关系;根据各个初始分词之间的关联关系筛选出具有强关联关系的多个分词。
38.可选地,所述分词模块,用于采用n-grama模型对所述待检测域名进行分词,获得多个初始分词;将所述多个初始分词按照设定组合方式进行组合,获得组合后的多个分词;其中,所述fasttext模型的输入数据包括所述多个初始分词和所述组合后的多个分词。
39.可选地,所述装置还包括:
40.预检测模块,用于将所述待检测域名与预先存储的多个恶意域名进行相似度计算,获得所述待检测域名与各个恶意域名之间的相似度;若所述相似度大于设定相似度的数量超过设定比例,则确定所述待检测域名为可疑域名。
41.可选地,所述预检测模块,用于计算所述待检测域名的模糊哈希值,以及计算预先存储的各个恶意域名的模糊哈希值;将所述待检测域名的模糊哈希值与各个恶意域名的模糊哈希值进行相似度比较,获得所述待检测域名与各个恶意域名之间的相似度。
42.第三方面,本技术实施例提供一种电子设备,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如上述第一方面提供的所述方法中的步骤。
43.第四方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时运行如上述第一方面提供的所述方法中的步骤。
44.本技术的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术实施例了解。本技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
45.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
46.图1为本技术实施例提供的一种恶意域名检测方法的流程图;
47.图2为本技术实施例提供的一种fasttext模型的结构示意图;
48.图3为本技术实施例提供的一种恶意域名检测装置的结构框图;
49.图4为本技术实施例提供的一种用于执行恶意域名检测方法的电子设备的结构示意图。
具体实施方式
50.下面将结合本技术实施例中附图,对本技术实施例中的技术方案进行清楚、完整地描述。
51.需要说明的是,本发明实施例中的术语“系统”和“网络”可被互换使用。“多个”是指两个或两个以上,鉴于此,本发明实施例中也可以将“多个”理解为“至少两个”。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
52.本技术实施例提供一种恶意域名检测方法,该方法通过获取待检测域名的多个分词,将多个分词输入fasttext模型中,通过fasttext模型检测待检测域名是否为恶意域名,获得检测结果,由于fasttext模型使用浅层的神经网络即可实现文本分类功能,在文本分类任务中,浅层网络往往能取得和深度网络相媲美的精度,相比于现有方式中基于正则表达式或黑白名单的检测方式,本方案的检测精度更高。并且,fasttext模型深度又没有深度学习模型深,检测过程较为简单,时间更短,所以相比于深度学习模型,本技术中采用fasttext模型来进行恶意域名的检测,能够确保精度的情况下,缩短检测时间。
53.请参照图1,图1为本技术实施例提供的一种恶意域名检测方法的流程图,该方法包括如下步骤:
54.步骤s110:获取待检测域名。
55.其中,待检测域名可以是指任何需要进行恶意域名检测的域名,如可以将安全防护设备接收到的任意域名均作为待检测域名,然后按照后续步骤进行恶意域名的检测,以识别出接收到的恶意域名,进而可以提前避免恶意域名对网络安全造成威胁的情况,如对恶意域名进行拦截,或者采用其他防护措施对恶意域名进行处理。
56.步骤s120:对所述待检测域名进行分词,获得多个分词。
57.对待检测域名进行分词的方法可以采用任何分词方法,如word2vec分词法,或采用n-grama模型对待检测域名进行分词,获得多个分词。
58.由于正常域名和恶意域名之间的差异主要体现在域名的字符组成上,所以本技术实施例中可以采用n-grama模型对待检测域名进行分词,在分词时可以根据划分粒度的不同,可以分为词粒度的n-gram特征和字符粒度的n-gram特征,n-gram是一种基于统计语言模型的算法,它的基本思想是将文本里面的内容按照字节进行大小为n的滑动窗口操作,形成长度是n的字节片段序列。每一个字节片段称为gram,形成gram列表,即这个文本的向量特征空间,列表中的每一种gram就是一个特征向量维度。本技术实施例中可采用字符粒度unigram(一元分词,把待检测域名从头到尾每一个字符组成一个词语)、bigram(二元分词,把待检测域名从头到尾每两个字符组成一个词语)和trigram(三元分词,把待检测域名从头到尾每三个字符组成一个词语)的方式进行分词,将待检测域名分词后的字符当作独立的词语,待检测域名分词后的所有字符词语当作一个句子,用于分析待检测域名字符排列顺序的合理性,对下一个词出现的约束信息更多,具有更大的辨别力。
59.例如待检测域名为google.cn,然后提取该域名的unigram特征、bigram特征以及trigram特征,按照划分窗口n=1、n=2以及n=3进行划分,可以得到[“g”,“o”,“o”,“g”,“l”,“e”,“$g”,“go”,“oo”,“og”,“gl”,“le”,“e$”,“$go”,“goo”,“oog”,“ogl”,“gle”,“le
$”]的分词集合,其中$字符用来标识域名的开头和结尾。
[0060]
步骤s130:将所述多个分词输入fasttext模型中,通过所述fasttext模型检测所述待检测域名是否为恶意域名,获得检测结果。
[0061]
将上述按照相应的分词法对待检测域名进行分词后,将获得的多个分词输入fasttext模型,以通过fasttext模型基于多个分词对待检测域名进行恶意域名的检测。在一些实施方式中,如图2所示,fasttext模型包括输入层、隐藏层和输出层,多个分词(xi表示一个分词)可作为输入层的输入,输入层用于将多个分词转换为对应的词向量,隐藏层用于对词向量进行叠加平均处理,输出层用于基于隐藏层的处理结果输出对待检测域名的检测结果,检测结果可以为待检测域名所属的类别,类别如恶意域名和正常域名。
[0062]
在某些文本分类任务中类别很多,计算线性分类器的复杂度高。为了改善运行时间,fasttext模型使用了层次softmax技巧。层次softmax技巧建立在哈夫曼编码的基础上,对标签进行编码,能够极大地缩小模型预测结果的数量。fasttext模型也利用了类别(class)不均衡这个事实(一些类别出现次数比其他的更多),通过使用huffman法建立用于表征类别的树形结构。因此,频繁出现类别的树形结构的深度要比不频繁出现类别的树形结构的深度要小,这也进一步使得该模型的计算效率更高。
[0063]
下面对fasttext模型的训练过程进行简单介绍。
[0064]
训练过程中,可以从网络上获取大量的恶意域名和正常域名作为训练样本,如可以从alexa网站选取排名前100万的域名,将这部分数据标记为正样本,另一部分数据是从安全实验室获取的dga种子文件,包含了大概40多种恶意域名家族的dga数据,将近120万条数据,将这部分数据标记为负样本。这些正样本和负样本可以通过上述的n-grama模型进行分词处理,获得的多个分词可以按照6:4的比例划分训练集和测试集,负样本的划分还需要考虑域名家族信息,保证所有类型的域名的特征都出现在训练集中。按照fasttext模型的要求构建输入数据,将上一步划分的训练集和测试集分别按照格式:“__label__ 标签\t 分词后的片段列表”保存在fasttext_train.txt和fasttext_test.txt文件中,比如fasttext_train.txt文件中部分数据如下:
[0065]
__lable__abnormal c h k r f m w s i h a i t l j$c ch hk kr rf fm mw ws si ih ha ai it tl lj j$$ch chk hkr krf rfm fmw mws wsi sih iha hai ait itl tlj lj$;
[0066]
__lable__normal g o o g l e$g go oo og gl le e$$go goo oog ogl gle le$;
[0067]
其中,abnormal是负样本的标签,normal是正样本的标签。
[0068]
然后可使用fasttext提供的模型训练函数train_supervised来训练模型,其中,模型训练函数如下所示:
[0069]
classifier=fasttext.train_supervised("fasttext_train.txt");
[0070]
其中,输入参数fasttext_train.txt是上述构建的包含标签的训练集的文本文件,函数返回在该训练集上训练好的模型对象classifier。
[0071]
然后可使用模型保存函数将模型对象保存到指定的文件中,如classifier.save_model("fasttext.model.bin"),其中,输入参数fasttext.model.bin是保存的文件名称,可以指定存放路径默认会保存在当前目录下。
[0072]
由此可见,fasttext模型最大的特点是模型简单,只有一层的隐藏层以及输出层,因此训练速度非常快,在普通的cpu上可以实现分钟级别的训练,比深度学习模型的训练要快几个数量级。fasttext模型结合了自然语言处理的思路和神经网络的分层思想,构建了一个快速文本分类器的方案,所以能够确保检测精度的情况下,也能提高预测效率。
[0073]
在训练完fasttext模型后,可以采用以下过程对训练好的fasttext模型的性能进行测试。
[0074]
首先加载模型:classifier=fasttext.load_model("fasttext.model.bin"),其中,fasttext_test.txt为测试数据,格式和fasttext_train.txt一致。将测试集输入fasttext模型中,得到模型在测试集上的准确率和召回率,如下所示:
[0075]
result=classifier.test("fasttext_test.txt");
[0076]
其中,result.precision为模型的精确度,result.recall为模型的召回率。
[0077]
若模型的精确度或召回率不满足设定要求,则可再使用新的训练集对fasttext模型重新进行训练,直至训练完成的fasttext模型的精确度和召回率满足设定要求。
[0078]
下面通过实验数据比较fasttext模型和其它模型在训练时间上的区别,如采用支持向量机(support vector machine,svc)和长短期记忆(long short-term memory,lstm)两种模型进行恶意域名检测的模型训练,同fasttext模型做横向对比,其中svc是机器学习模型,lstm是深度学习模型,下表是汇集了3种方式训练出的模型在相同数据集和机器条件下的初步分类情况,通过表中的评估指标可以看出采用fasttext模型的同深度学习模型的分类效果相当,两者均大于机器学习模型。
[0079]
模型准确率精确率召回率svc0.94440.91660.9583lstm0.97240.97080.9891fasttext0.97450.96220.9965
[0080]
另外,实验表明,模型训练时间方面fasttext》lstm》svc,机器学习和深度学习的模型训练的用时均超过1小时以上,采用fasttext模型的用时只需要几分钟,在保证检测效果的同时大大的缩短了训练模型所需时长。所以,采用fasttext模型进行恶意域名的预测可以同时确保高预测精度和低预测时长。
[0081]
在使用fasttext模型对待检测域名进行检测时,如使用模型的预测函数对待检测域名"jmowysfox.org"做分类预测,若预测分类标签为normal时,说明该待检测域名是正常域名;若预测分类标签为abnormal时,说明该待检测域名是恶意域名。
[0082]
预测过程如pre=classifier.predict("j m o w y s f o x.o r g$j jm mo ow wy ys sf fo ox x..o or rg g$$jm jmo mow owy wys ysf sfo fox ox.x.o.or org rg$")。
[0083]
其中,pre表示检测结果,如获得的检测结果为:(('__label__abnormal'),array([0.99966717])),表示检测结果为abnormal,说明待检测域名"jmowysfox.org"是恶意域名,0.99966717表示待检测域名是恶意域名的概率。
[0084]
在一些其他实施方式中,为了进一步提高检测精度,fasttext模型中的隐藏层还可以设置为多层,如两层或三层等,从而可以通过隐藏层来提取更多输入分词中的隐藏特征,进而提高预测精度。可以理解地,在隐藏层为多层时,其模型的训练过程和预测过程更
上述过程类似,在此不再过多赘述。
[0085]
在上述实现过程中,通过获取待检测域名的多个分词,将多个分词输入fasttext模型中,通过fasttext模型检测待检测域名是否为恶意域名,获得检测结果,由于fasttext模型使用浅层的神经网络即可实现文本分类功能,在文本分类任务中,浅层网络往往能取得和深度网络相媲美的精度,所以采用fasttext模型来进行恶意域名的检测,能够达到深度网络所能实现的检测精度,相比于现有方式中基于正则表达式或黑白名单的检测方式,本方案的检测精度更高。
[0086]
在上述实施例的基础上,为了进一步挖掘各个分词之间的关联关系,以进一步提高fasttext模型的预测精度,还可以先采用n-grama模型对待检测域名进行分词,获得多个初始分词,然后可采用数据关联分析法分析各个初始分词之间的关联关系,根据各个初始分词之间的关联关系筛选出具有强关联关系的多个分词。
[0087]
其中,采用n-grama模型对待检测域名进行分词的方式可以参考上述实施例中的相关描述,在此不再过多赘述。各个初始分词之间的关联关系可以理解为是两个初始分词中出现第一个初始分词时会出现第二个初始分词的概率。其概率可以通过事先统计的事务集来获得,事务集是指大量的恶意域名所构成的结合,每个域名可称为一个事务,一个事务包含多个项,一个项即可指一个分词。
[0088]
下面先对数据关联分析法中出现的几个概念进行介绍:
[0089]
关联规则(即关联关系):用来发现各个初始分词之间的联系,关联规则是形如x

y的蕴涵式,其中,x和y分别称为关联规则的先导和后继。
[0090]
支持度:关联规则x

y的支持度记为supp(x

y),表示项集x和y在事务集中出现的频次占比。
[0091]
置信度:也可称为可信度,关联规则x

y的置信度可记作conf(x

y),是项集x和y在事务集中出现次数与项集x在事务集中出现次数的比值。
[0092]
提升度表示在一条事务中有项集x的情况下,同时有项集y的概率,其反应了关联规则中项集x和项集y的相关性。
[0093]
强关联规则(即强关联关系):用来表示有价值的关联规则。
[0094]
例如,对于关联规则{go}

{o}其隐含的意思为在出现分词“go”的情况下会出现分词“o”的概率,若概率较大,则称该关联规则为强关联规则,表示在出现分词“go”的情况下大概率后续会出现分词“o”。
[0095]
所以,在对待检测域名进行分词,获得多个初始分词后,可以通过事务集来计算每两个相邻的初始分词之间的支持度、置信度或提升度等数据,然后可根据这些数据来判断两个相邻的初始分词之间是否具有强关联规则(即强关联关系),例如,若两个相邻的初始分词的支持度大于设定支持度阈值时,则认为这两个相邻的初始分词具有强关联关系,或者若两个相邻的初始分词的置信度大于设定置信度阈值,则认为这两个相邻的初始分词具有强关联关系,或者若两个相邻的初始分词的提升度大于提升度阈值,则认为这两个相邻的初始分词具有强关联关系。当然,可以是支持度、置信度和提升度这三者中的至少一者满足条件即可认为两个相邻的初始分词具有强关联关系。
[0096]
或者,也可以不仅仅是对两个相邻的初始分词进行关联关系分析,也可以对任意两个初始分词进行关联关系分析,其分析方式类似,如此可以筛选出具有强关联关系的多
个初始分词,这些初始分词即可作为输入fasttext模型中的多个分词,从而可以通过数据关联分析法来初步分析各个分词之间的关联关系,然后将具有强关联关系的分词输入fasttext模型中,通过fasttext模型来进一步分析这些具有强关联关系的分词之间是否存在某种联系,从而可进一步提高恶意域名检测的准确度。
[0097]
在另一些实施方式中,为了增加输入fasttext模型的数据量,以使得fasttext模型能够基于更多的数据量来检测恶意域名,还可以在采用n-grama模型对待检测域名进行分词,获得多个初始分词后,将多个初始分词按照设定组合方式进行组合,获得组合后的多个分词。
[0098]
其中,设定组合方式可以时如至少每两个相邻的初始分词进行组合,或者将多个初始分词中至少任意两个初始分词进行组合,当然也可以有其他组合方式,如还可以将上述通过数据关联分析法筛选出来的具有强关联关系的多个初始分词进行两两相邻组合或任意组合等。如此这样组合后可获得大量组合后的分词,然后可将组合后的分词以及多个初始分词均输入fasttext模型,使得fasttext模型的输入数据量更多,这样fasttext模型可以通过分析大量数据中的隐含关系,来分析待检测域名中各个分词之间的排列顺序的合理性,进而fasttext模型可以利用更多的数据来检测恶意域名,提高检测精度。
[0099]
在上述实施例的基础上,为了减少fasttext模型的预测工作量,还可以在获得待检测域名后,对待检测域名进行初步检测,如将待检测域名与预先存储的多个恶意域名进行相似度计算,获得待检测域名与各个恶意域名之间的相似度,若相似度大于设定相似度的数量超过设定比例,则确定待检测域名为可疑域名,然后对待检测域名进行后续的分词处理。
[0100]
当然,还可以将待检测域名先与预先构建的正常域名库中的各个正常域名进行比对,如果待检测域名与某个正常域名比对一致时,则表示该待检测域名为正常域名,此时可不对该待检测域名进行后续处理,从而对于本来是正常域名的待检测域名,则无需利用fasttext模型进行检测了,减少了fasttext模型的检测数量,提高了检测效率。若待检测域名与正常域名库中的各个正常域名均不一致时,则再将其与各个恶意域名进行相似度比较。
[0101]
预先统计有大量的恶意域名,如果数据库中有1000个恶意域名,则将待检测域名分别与每个恶意域名进行相似度比较,如果相似度大于设定相似度的数量超过设定比例,则认为待检测域名为可疑的恶意域名,如设定相似度设置为80%(设定相似度的值可以根据实际需求灵活设置),设定比例设置为60%(设定比例的值也可以根据实际需求灵活设置),所以,若相似度大于80%的数量超过60%,即表示有超过600个恶意域名与待检测域名的相似度大于80%,此时可认为待检测域名很大可能为恶意域名,即为可疑域名。
[0102]
在上述实现过程中,预先将待检测域名与多个恶意域名进行相似度计算,在待检测域名为可疑域名时才进行后续的检测,这样可以减少后续fasttext模型的检测量,在网络中有大量域名需要检测时,这样可以提高检测效率。
[0103]
在上述实施例中计算待检测域名与恶意域名之间的相似度时,可以将待检测域名与恶意域名转换为词向量,然后比较两个词向量之间的余弦相似度或欧式距离等,如此可获得两个域名之间的相似度。
[0104]
或者,还可以计算待检测域名的模糊哈希值,以及计算各个恶意域名的模糊哈希
值,然后将待检测域名的模糊哈希值与各个恶意域名的模糊哈希值进行相似度比较,获得待检测域名与各个恶意域名之间的相似度。
[0105]
计算待检测域名和各个恶意域名的模糊哈希值,可以利用当前比较成熟的基于文本分割的分片哈希算法(context triggered piecewise hashing,ctph)进行处理,计算出文件的一个模糊哈希值。
[0106]
算法如下:
[0107]
1、分片:在域名中读取一部分内容,给弱哈希算法计算,得到一个哈希值。通常逐字节读取固定长度的内容,就像网络协议中的滑动窗口一样在域名中以固定窗口滑动,每次都对窗口内的内容计算。因此,为了便捷,通常采用滚动哈希算法(rolling hashing)。这里的滚动哈希是指,比如原来已经计算了abcdef的哈希值h1,接下来要计算bcdefg的哈希值,不需要完全重新计算,只需要h1

x(a) y(g)即可,其中x、y是两个函数,即只需要相应增减差量对哈希值的影响即可。这种哈希大大可以加快分片判断的速度。
[0108]
常用的alder-32[4]算法、crc32算法均可作为分片用的弱哈希算法。除了弱哈希算法还需要一个分片触发值n,由它来控制分片条件。
[0109]
为了避免分片数量太小导致整个域名只触发一次分片条件,或者没有触发分片这种情况,可以根据域名的长度和域名的实际内容来决定如何分片。
[0110]
2、每片求hash值
[0111]
这对分片后的每片,可用传统的算法如md5计算哈希值,也可以用fowler-noll-vo hash[5]这样的哈希算法来求哈希值。
[0112]
3、连接哈希值
[0113]
将每片的哈希值连接在一起,即可得到整个域名的模糊哈希值。如果分片条件参数n对不同域名有不同的值,还需要将n纳入模糊哈希值中。
[0114]
所以,可以按照上述的方式计算待检测域名和各个恶意域名的模糊哈希值,然后将待检测域名的模糊哈希值与恶意域名的模糊哈希值进行相似度比较,其相似度比较的方式可以采用海明距离或最小编辑距离等距离算法来计算出距离值,可以此距离值来评估相似度。
[0115]
在上述实现过程中,模糊哈希值能够更准确地比较两个字符串之间的相似度,因为针对域名的某个分片中数据的增加、修改、删除等变化,只会影响该分片的哈希,对全局的影响不大,所以对最后相似度的影响也不大,即便是改动连续几个字符,或者作多处改动,模糊哈希算法依然可能作出有效的判断,进而通过比较域名之间的模糊哈希值能够更准确地判断两个域名之间的相似度。
[0116]
请参照图3,图3为本技术实施例提供的一种恶意域名检测装置200的结构框图,该装置200可以是电子设备上的模块、程序段或代码。应理解,该装置200与上述图1方法实施例对应,能够执行图1方法实施例涉及的各个步骤,该装置200具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。
[0117]
可选地,所述装置200包括:
[0118]
域名获取模块210,用于获取待检测域名;
[0119]
分词模块220,用于对所述待检测域名进行分词,获得多个分词;
[0120]
检测模块230,用于将所述多个分词输入fasttext模型中,通过所述fasttext模型
检测所述待检测域名是否为恶意域名,获得检测结果。
[0121]
可选地,所述fasttext模型包括输入层、隐藏层和输出层,所述多个分词作为所述输入层的输入,所述输入层用于将所述多个分词转换为对应的词向量,所述隐藏层用于对所述词向量进行叠加平均处理,所述输出层用于基于所述隐藏层的处理结果输出对所述待检测域名的检测结果。
[0122]
可选地,所述分词模块220,用于采用n-grama模型对所述待检测域名进行分词,获得多个分词。
[0123]
可选地,所述分词模块220,用于采用n-grama模型对所述待检测域名进行分词,获得多个初始分词;采用数据关联分析法分析其各个初始分词之间的关联关系;根据各个初始分词之间的关联关系筛选出具有强关联关系的多个分词。
[0124]
可选地,所述分词模块220,用于采用n-grama模型对所述待检测域名进行分词,获得多个初始分词;将所述多个初始分词按照设定组合方式进行组合,获得组合后的多个分词;其中,所述fasttext模型的输入数据包括所述多个初始分词和所述组合后的多个分词。
[0125]
可选地,所述装置200还包括:
[0126]
预检测模块,用于将所述待检测域名与预先存储的多个恶意域名进行相似度计算,获得所述待检测域名与各个恶意域名之间的相似度;若所述相似度大于设定相似度的数量超过设定比例,则确定所述待检测域名为可疑域名。
[0127]
可选地,所述预检测模块,用于计算所述待检测域名的模糊哈希值,以及计算预先存储的各个恶意域名的模糊哈希值;将所述待检测域名的模糊哈希值与各个恶意域名的模糊哈希值进行相似度比较,获得所述待检测域名与各个恶意域名之间的相似度。
[0128]
需要说明的是,本领域技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再重复描述。
[0129]
请参照图4,图4为本技术实施例提供的一种用于执行恶意域名检测方法的电子设备的结构示意图,所述电子设备可以包括:至少一个处理器310,例如cpu,至少一个通信接口320,至少一个存储器330和至少一个通信总线340。其中,通信总线340用于实现这些组件直接的连接通信。其中,本技术实施例中设备的通信接口320用于与其他节点设备进行信令或数据的通信。存储器330可以是高速ram存储器,也可以是非易失性的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器330可选的还可以是至少一个位于远离前述处理器的存储装置。存储器330中存储有计算机可读取指令,当所述计算机可读取指令由所述处理器310执行时,电子设备执行上述图1所示方法过程。
[0130]
可以理解,图4所示的结构仅为示意,所述电子设备还可包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。图4中所示的各组件可以采用硬件、软件或其组合实现。
[0131]
本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,执行如图1所示方法实施例中电子设备所执行的方法过程。
[0132]
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如,包括:获取待检测域名;对所述待检测域名进行分词,获得多个分词;将所述多个分词输入fasttext模型中,通过所
述fasttext模型检测所述待检测域名是否为恶意域名,获得检测结果。
[0133]
综上所述,本技术实施例提供一种恶意域名检测方法、装置、电子设备及存储介质,该方法通过获取待检测域名的多个分词,将多个分词输入fasttext模型中,通过fasttext模型检测待检测域名是否为恶意域名,获得检测结果,由于fasttext模型使用浅层的神经网络即可实现文本分类功能,在文本分类任务中,浅层网络往往能取得和深度网络相媲美的精度,所以采用fasttext模型来进行恶意域名的检测,能够达到深度网络所能实现的检测精度,相比于现有方式中基于正则表达式或黑白名单的检测方式,本方案的检测精度更高。
[0134]
在本技术所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0135]
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0136]
再者,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0137]
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
[0138]
以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献