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

面向物联网设备的分布式DGA域名检测方法及系统

2022-07-30 22:56:55 来源:中国专利 TAG:

面向物联网设备的分布式dga域名检测方法及系统
技术领域
1.本发明属于网络安全技术领域,尤其涉及一种面向物联网设备的分布式dga域名检测方法及系统。


背景技术:

2.目前,随着物联网技术的广泛应用,路由器、网络摄像头和智能家居设备等物联网设备得到广泛的普及,极大的提高了日常生活便利度。但是,这些设备由于成本原因安全防护能力较弱,导致极易被僵尸网络入侵造成隐私泄露和财产损失。dga(域名生成算法)是僵尸网络中常用的黑名单逃避手段,该算法能够生成随机字符串,并将生成的字符串与顶级域名拼接生成大量dga域名,僵尸网络使用dga域名建立c&c通信,由于黑名单更新速度远不及dga域名生成速度,使得黑名单无法用于阻断通信。因此,通过dga域名检测模型发现dga域名来及时阻断僵尸网络的c&c通信。
3.现有的dga域名检测方法可以分为两种:(1)基于特征工程的机器学习方法来检测dga域名,通过对dga域名提取特征并训练机器学习分类器完成检测。然而,提取特征过程耗时耗力,并且由于dga家族众多且更新频繁,特征工程很难覆盖到所有的家族,容易被攻击者绕过,导致分类效果不佳。(2)基于深度学习方法检测dga域名,研究人员使用深度神经网络将域名转换为高维特征以完成分类,并取得了较好的效果。但是,该方法需要大量的数据集来训练模型,并且,由于物联网设备空余的算力和存储资源有限,难以部署深度学习环境训练模型。
4.因此,需要寻求一种方法,在保护物联网设备域名隐私的情况下,利用多台算力及存储资源有限的物联网设备共同完成dga检测模型的训练,且该训练方法无需人为提取特征且具有较高的准确率。
5.通过上述分析,现有技术存在的问题及缺陷为:
6.(1)现有的基于特征工程与机器学习的dga检测方法提取特征耗时耗力,且存在特征提取不全,易被绕过等问题。
7.(2)现有的基于深度学习的dga检测算法由于数据集、算力和存储资源的限制,不能很好的应用于物联网设备。
8.(3)现有技术中缺少适用于物联网的分布式dga检测方法,难以利用不同物联网设备的算力共同训练模型。


技术实现要素:

9.针对现有技术存在的问题,本发明提供了一种面向物联网设备的分布式dga域名检测方法、系统、介质、设备及终端。
10.本发明是这样实现的,一种面向物联网设备的分布式dga域名检测系统,所述面向物联网设备的分布式dga域名检测方法包括:以flask为通信框架,通过物联网主机聚合物联网节点上训练的孪生深度森林层级及层级准确率来分布式训练基于孪生深度森林的dga
检测模型。通过采集物联网设备上网卡中的dns流量,并从中解析到dns请求的域名数据,基于离线训练的模型对数据处理得到的域名数据进行物联网设备实时dga检测。
11.进一步,所述面向物联网设备的分布式dga域名检测方法包括以下步骤:
12.步骤一,在多个物联网设备中选择性能最好的一台作为主机,其余设备作为节点,主机将承担额外的聚合过程,选择性能好的物联网设备作为主机能尽量减少训练时间;
13.步骤二,将每个节点上的训练集中的正常域名数据与dga域名数据通过配对来扩充数据,通过配对能够增大正常域名数据与dga域名数据的区别,使分类模型得到更加充分的训练;
14.步骤三,每个节点将配对后的数据进行预处理,包括域名长度对齐及字典转换,该步骤将训练数据转换为统一长度的数字序列,以便模型处理;
15.步骤四,每个节点对使用预处理后的数据进行滑动窗口扫描,将扫描到的数据训练一个随机森林和一个完全随机森林,并将两个森林发送至主机。该步骤用于自动化提取数据的局部特征和顺序特征,以便后续更好的分类;
16.步骤五,主机将各节点发送的随机森林与完全随机森林分别聚合成一个大的随机随机森林和完全随机森林,并下发给所有节点,通过聚合,将所有节点基于本地训练的森林模型组合起来,从而涵盖了更多的分类特征,增加了模型的鲁棒性和分类能力;
17.步骤六,每个节点更新随机森林和完全随机森林后将训练集转换为类向量并拼接成变换特征f1;
18.步骤七,每个基于变换特征逐层构建级联森林,使用变换特征训练完每一层后,将该层森林发送至主机聚合,聚合完成后,主机再下发给所有节点,所有节点更新该层级联森林,直到完成整个级联森林构建,通过级联森林中层级的构建,整个模型的鲁棒性和分类能力进一步提升;
19.步骤八,每个节点基于分布式训练得到的模型独立检测dga域名。
20.进一步,所述步骤二中的域名配对方法的具体配对规则包括:
21.正常域名样本集s1,样本量为n1,dga域名样本集s2,样本量为n2,同类域名配对的样本,对应标签为0,异类域名配对的样本,对应标签为1;基于随机下采样解决样本的不平衡,正常域名样本集相互配对的下采样系数为p1,dga样本集相互配对下采样系数为p2,同类样本中正常域名对与dga域名对相同,类样本量为n1*n1*p1=n2*n2*p2,则p2=(n1*n1*p1)/(n2*n2),正常域名样本集与dga样本集配对的下采样系数为p3,异类样本量与同类样本量相同,根据n1*n1*p1 n2*n2*p2=n1*n2*p3,计算出异类样本采样系数p3=(n1*n1*p1*2)/(n1*n2);按照采样系数p1,p2,p3对正常域名样本集与dga样本集随机下采样配对得到数据集x,划分为训练集x
train
与验证集x
valid

22.进一步,所述步骤七中的级联森林每层包含2个随机森林与2个完全随机森林,训练的当前层数为k,k初始值为1,第k层的变换特征为fk,准确率阈值为t。
23.进一步,所述步骤七中的逐层构建级联森林包括:
24.(1)所有的节点使用fk训练第k层级联森林,训练完成后将该层级联森林发送给主机,主机聚合所有节点发送来的级联森林,组合成新的级联森林发送给所有节点;
25.(2)所有节点接收并更新级联森林,在本地验证集上验证得到当前模型准确率并发送给主机,主机将所有节点的准确率求和得到当前分布式模型的准确率acck;当k大于0,
判断acc
k-acc
k-1
是否小于阈值t,若小于,则跳转至步骤(3);否则,将fk经过随机下采样后与训练集经过第k层级联森林的类向量拼接得到f
k 1
,k=k 1,并跳转至步骤(1);
26.(3)完成级联森林构建。
27.进一步,所述步骤八中的基于模型检测方法包括:
28.在训练集中精心挑选n条正常域名与n条dga域名组成参考域名集,待测域名与参考域名集中所有域名配对组成样本对,将所有样本对输入训练的模型中,统计的样本对中被预测为同类和异类的个数得到待测样本的最终类别。
29.本发明的另一目的在于提供一种应用所述的面向物联网设备的分布式dga域名检测方法的面向物联网设备的分布式dga域名检测系统,所述面向物联网设备的分布式dga域名检测系统包括:
30.离线训练模块,用于训练分布式dga检测算法,其中使用flask框架作为分布式i-sdf算法的通信框架,传输节点与主机之间的森林与准确率;
31.数据采集模块,用于采集物联网设备上网卡中的dns流量,采集到的流量用于后续检测;
32.数据处理模块,用于处理dns流量,并从中解析到dns请求的域名数据;
33.模型检测模块,用于基于离线训练模块中的模型对数据处理模块得到的域名数据dga检测。
34.本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
35.训练分布式dga检测算法,使用flask框架作为分布式i-sdf算法的通信框架,传输节点与主机之间的森林与准确率;采集物联网设备上网卡中的dns流量,采集到的流量用于后续检测;处理dns流量,并从中解析到dns请求的域名数据;基于离线训练的模型对数据处理得到的域名数据dga检测。
36.本发明的另一目的在于提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
37.训练分布式dga检测算法,使用flask框架作为分布式i-sdf算法的通信框架,传输节点与主机之间的森林与准确率;采集物联网设备上网卡中的dns流量,采集到的流量用于后续检测;处理dns流量,并从中解析到dns请求的域名数据;基于离线训练的模型对数据处理得到的域名数据dga检测。
38.本发明的另一目的在于提供一种信息数据处理终端,所述信息数据处理终端用于实现所述的面向物联网设备的分布式dga域名检测系统。
39.结合上述的技术方案和解决的技术问题,请从以下几方面分析本发明所要保护的技术方案所具备的优点及积极效果为:
40.第一、针对上述现有技术存在的技术问题以及解决该问题的难度,紧密结合本发明的所要保护的技术方案以及研发过程中结果和数据等,详细、深刻地分析本发明技术方案如何解决的技术问题,解决问题之后带来的一些具备创造性的技术效果。具体描述如下:
41.本发明在保护设备域名隐私的前提下,完成了例如路由器、摄像头、智能家居等算力及存储空间有限的物联网设备的分布式dga检测问题,能够及时发现和阻断这些设备感
染僵尸网络的c&c通信。
42.第二,把技术方案看做一个整体或者从产品的角度,本发明所要保护的技术方案具备的技术效果和优点,具体描述如下:
43.本发明的分布式dga域名检测方法能够解决路由器、摄像头、智能家居等物联网设备的dga域名检测,从而及时发现和阻断感染的僵尸网络的c&c通信,避免造成信息泄漏和财产损失,可应用于物联网设备检测dga生成的域名。
44.第三,作为本发明的权利要求的创造性辅助证据,还体现在以下几个重要方面:
45.(1)本发明的技术方案转化后的预期收益和商业价值为:
46.本发明可作为商用物联网ids的关键组件,能够满足路由器、网络摄像头和智能家居设备等算力资源较低的物联网设备的dga检测需求,有效阻止物联网设备收到僵尸网络的入侵。本发明的技术方案相较于传统的检测方案有更高的准确率、隐私性更强且无需额外计算资源。
47.(2)本发明的技术方案填补了国内外业内技术空白:
48.目前,国内对低算力物联网设备搭建dga检测系统的研究较少,也缺少对应的隐私保护方案,本发明中的面向物联网的分布式dga检测算法填补了国内对于低算力物联网设备隐私保护下的分布式dga检测算法研究的空白。
附图说明
49.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
50.图1是本发明实施例提供的面向物联网设备的分布式dga域名检测方法的流程图;
51.图2是本发明实施例提供的面向物联网设备的分布式dga检测算法配对及预处理示意图;
52.图3是本发明实施例提供的面向物联网设备的分布式dga检测算法模型训练示意图;
53.图4是本发明实施例提供的面向物联网设备的分布式dga检测系统架构图;
54.图5是本发明实施例提供的为不同数据规模下本发明实施例中分布式训练的模型和对比算法模型的f1-score对比图;
55.图6是本发明实施例提供的系统运行结果图;
具体实施方式
56.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
57.针对现有技术存在的问题,本发明提供了一种面向物联网设备的分布式dga域名检测方法及系统,下面结合附图对本发明作详细的描述。
58.一、解释说明实施例。为了使本领域技术人员充分了解本发明如何具体实现,该部
分是对权利要求技术方案进行展开说明的解释说明实施例。
59.实施例1
60.针对现有技术存在的问题,本发明提供了一种面向物联网设备的分布式dga检测算法。
61.一方面,本发明实施例提供了一种面向物联网设备的分布式dga检测算法,所述算法包括以下步骤:
62.步骤一,在多个物联网设备中选择性能最好的一台作为主机,其余设备作为节点。
63.步骤二,将每个节点上的训练集中的正常域名数据与dga域名数据通过配对来扩充数据。
64.步骤三,每个节点将配对后的数据进行预处理,包括域名长度对齐及字典转换。
65.步骤四,每个节点对使用预处理后的数据进行滑动窗口扫描,将扫描到的数据训练一个随机森林和一个完全随机森林,并将这两个森林发送至主机。
66.步骤五,主机将各节点发送的随机森林与完全随机森林分别聚合成一个大的随机随机森林和完全随机森林,并下发给所有节点。
67.步骤六,每个节点更新随机森林和完全随机森林后将训练集转换为类向量并拼接成变换特征f1。
68.步骤七,每个基于变换特征逐层构建级联森林,使用变换特征训练完每一层后,将该层森林发送至主机聚合,聚合完成后,主机再下发给所有节点,所有节点更新该层级联森林,直到完成整个级联森林构建。
69.步骤八,每个节点基于分布式训练得到的模型独立检测dga域名。
70.本发明实施例提供的步骤二中所描述的域名配对方法,其具体配对规则为:正常域名样本集s1,样本量为n1,dga域名样本集s2,样本量为n2,同类域名配对的样本,对应标签为0,异类域名配对的样本,对应标签为1。基于随机下采样解决样本的不平衡,正常域名样本集相互配对的下采样系数为p1,dga样本集相互配对下采样系数为p2,同类样本中正常域名对与dga域名对相同,即同类样本量为n1*n1*p1=n2*n2*p2,则p2=(n1*n1*p1)/(n2*n2),正常域名样本集与dga样本集配对的下采样系数为p3,异类样本量与同类样本量相同,根据n1*n1*p1 n2*n2*p2=n1*n2*p3,计算出异类样本采样系数p3=(n1*n1*p1*2)/(n1*n2)。按照采样系数p1,p2,p3对正常域名样本集与dga样本集随机下采样配对得到数据集x,划分为训练集x
train
与验证集x
valid

71.本发明实施例提供的步骤七中所描述的逐层构建级联森林,其具体过程为:级联森林每层包含2个随机森林与2个完全随机森林,训练的当前层数为k,k初始值为1,第k层的变换特征为fk,准确率阈值为t。
72.(1)所有的节点使用fk训练第k层级联森林,训练完成后将该层级联森林发送给主机,主机聚合所有节点发送来的级联森林,组合成新的级联森林发送给所有节点。
73.(2)所有节点接收并更新级联森林,在本地验证集上验证得到当前模型准确率并发送给主机,主机将所有节点的准确率求和得到当前分布式模型的准确率acck。当k大于0,判断acc
k-acc
k-1
是否小于阈值t,若小于,则跳转至步骤(3);否则,将fk经过随机下采样后与训练集经过第k层级联森林的类向量拼接得到f
k 1
,k=k 1,跳转至步骤(1)。
74.(3)完成级联森林构建。
75.本发明实施例提供的步骤八中所描述的基于模型检测,其具体检测方法为:在训练集中精心挑选n条正常域名与n条dga域名组成参考域名集,待测域名与参考域名集中所有域名配对组成样本对,将所有样本对输入训练的模型中,统计的样本对中被预测为同类和异类的个数得到待测样本的最终类别。
76.另一方面,本发明实施例提供了一种面向物联网设备的分布式dga检测系统,所述系统包含以下模块:
77.离线训练模块,该模块用于训练分布式dga检测算法,其中使用flask框架作为分布式i-sdf算法的通信框架,用于传输节点与主机之间的森林与准确率。
78.数据采集模块,该模块用于采集物联网设备上网卡中的dns流量,采集到的流量用于后续检测。
79.数据处理模块,该模块用于处理dns流量,并从中解析到dns请求的域名数据。
80.模型检测模块,该模块基于离线训练模块中的模型对数据处理模块得到的域名数据dga检测。
81.本发明在保护设备域名隐私的前提下,完成了例如路由器、摄像头、智能家居等算力及存储空间有限的物联网设备的分布式dga检测问题,能够及时发现和阻断这些设备感染僵尸网络的c&c通信。
82.实施例2
83.如图1所示,本发明实施例提供的面向物联网设备的分布式dga域名检测方法包括以下步骤:
84.s101:在多个物联网设备中选择性能最好的一台作为主机,其余设备作为节点。假设有路由器、摄像头和智能电视三款设备,其中智能电视的处理器性能及存储性能综合最高,选择该设备为主机,其余两台设备为节点。
85.s102:将各个节点上的训练集中的正常域名数据与dga域名数据通过配对来扩充数据,各个节点均有正常域名样本集s1,样本量为5000,dga域名样本集s2,样本量为4000,同类域名配对的样本,对应标签为0,异类域名配对的样本,对应标签为1。基于随机下采样解决样本的不平衡,正常域名样本集相互配对的下采样系数为1.0*10-4
,由p2=(n1*n1*p1)/(n2*n2),求得dga样本集相互配对下采样系数p2=1.5625*10-4
,由p3=(n1*n1*p1*2)/(n1*n2),求得正常域名样本集与dga样本集配对的下采样系数为p3=5.0*10-4
,按照采样系数p1,p2,p3对正常域名样本集与dga样本集随机下采样配对得到数据集x,配对后数据集总计10000对,按照9∶1划分为训练集x
train
与验证集x
valid

86.s103:各个节点分别将配对后的数据进行预处理,包括域名长度对齐及字典转换,配对的域名首尾拼接,统计数据集中域名拼接后的最大长度为98,如果拼接后的长度小于98,则在两个域名之间填充符号α。最后将填充后的域名的对经过字典d转换为数字序列。d的定义如下:
87.d={
′a′
:1,
′b′
:2,
′c′
:3,
′d′
:4,
′e′
:5,
′f′
:6,
′g′
:7,
′h′
:8,
′i′
:9,
′j′
:10,
′k′
:11,

l

:12,
′m′
:13,
′n′
:14,
′o′
:15,

p

:16,
′q′
:17,
′r′
:18,
′s′
:19,

t

:20,
′u′
:21,
′v′
:22,
′w′
:23,

x

:24,
′y′
:25,
′z′
:26,
′‑′
:27,

_

:28,
′1′
:29,
′2′
:30,
′3′
:31,
′4′
:32,
′5′
:33,
′6′
:34,
′7′
:35,
′8′
:36,
′9′
:37,
′0′
:38,

.

:39,

α

:0};
88.如图2所示,正常域名“google.com”与dga域名“ibymtpyd.info”经过配对、拼接、
预处理后得到数字序列{7,15,15,7,5,39,3,15,13,0,0,

,0,0,9,2,25,13,20,16,25,4,39,9,14,6,5}。
89.分布式算法训练示意图如图3所示,包括步骤s104~s107:
90.s104:各个节点分别对使用预处理后的数据进行滑动窗口扫描,如图2所示,使用长度5的滑动窗口进行扫描得到的数字序列训练一个随机森林和一个完全随机森林,每个森林中包含50棵树,并将这两个森林包装成json包通过flink框架发送至主机。
91.s105:主机将各节点发送的随机森林与完全随机森林解析后,将其聚合成一个包含有100棵树的随机森林和完全随机森林,并包装成json包通过flink下发给各个节点。
92.s106:各个节点分别更新随机森林和完全随机森林后将训练集转换为类向量并拼接成变换特征f1。
93.s107:级联森林每层包含2个随机森林与2个完全随机森林,训练的当前层数为k,k初始值为1,第k层的变换特征为fk,准确率阈值为0。
94.s108:各个节点分别使用fk训练第k层级联森林。训练完成后将该层级联森林发送给主机,主机聚合各个节点发送来的级联森林,组合成新的级联森林发送给各个节点。
95.s109:各个节点接收并更新级联森林,在本地验证集上验证得到当前模型准确率并发送给主机,主机将所有节点的准确率求和得到当前分布式模型的准确率acck。
96.s110:当k大于0,判断acc
k-acc
k-1
是否小于0,若小于,跳转至步骤s111;否则,将fk经过随机下采样后与训练数据经过第k层级联森林的类向量wk拼接得到f
k 1
,k=k 1,跳转到步骤s108。
97.s111:完成级联森林构建,至此完成整个dga检测算法模型构建。主机及各个节点都可以基于分布式训练得到的dga检测模型独立完成dga检测。
98.如图4所示,本发明实施例提供的面向物联网设备的分布式dga检测系统包含以下模块:
99.离线训练模块,该模块用于训练分布式dga检测算法,其中使用flask框架作为分布式i-sdf算法的通信框架,用于传输节点与主机之间的森林与准确率。
100.数据采集模块,该模块使用tcpdump采集物联网设备上网卡中的dns流量,具体命令为:tcpdump-i eth0-nt-x port domain-w dns-dump.pcap-v,将采集到的流量存储在dns-dump.pcap文件中用于后续检测。
101.数据处理模块,该模块用于处理dns流量,并从中解析到dns请求的域名数据。使用flink框架对数据采集模块采集到的流数据进行处理,根据dns协议解析dns报文中的查询问题区域,再解析其中的查询名即可获得dns请求的域名数据。
102.模型检测模块,将模块基于离线训练模块中的模型使用sklearn2pmml将模型转换为pmml格式,使用flink调用pmml模型,其中包括载入工具类pmmlutils载入模型,及构建评估器的过程,然后使用flink算子调用模型,对前面输入的domain预测,并将预测数据保存至文件中以供分析。
103.实施例3
104.如图1所示,本发明实施例提供的面向物联网设备的分布式dga域名检测方法包括以下步骤:
105.s101:在多个物联网设备中选择性能最好的一台作为主机,其余设备作为节点。假
设有路由器、摄像头和智能电视三款设备,其中智能电视的处理器性能及存储性能综合最高,选择该设备为主机,其余两台设备为节点。
106.s102:将各个节点上的训练集中的正常域名数据与dga域名数据通过配对来扩充数据,各个节点均有正常域名样本集s1,样本量为10000,dga域名样本集s2,样本量为10000,同类域名配对的样本,对应标签为0,异类域名配对的样本,对应标签为1。基于随机下采样解决样本的不平衡,正常域名样本集相互配对的下采样系数为3.0*10-4
,由p2=(n1*n1*p1)/(n2*n2),求得dga样本集相互配对下采样系数p2=3.0*10-4
,由p3=(n1*n1*p1*2)/(n1*n2),求得正常域名样本集与dga样本集配对的下采样系数为p3=6.0*10-4
,按照采样系数p1,p2,p3对正常域名样本集与dga样本集随机下采样配对得到数据集x,配对后数据集总计120000对,按照9∶1划分为训练集x
train
与验证集x
valid

107.s103:各个节点分别将配对后的数据进行预处理,包括域名长度对齐及字典转换,配对的域名首尾拼接,统计数据集中域名拼接后的最大长度为98,如果拼接后的长度小于98,则在两个域名之间填充符号α。最后将填充后的域名的对经过字典d转换为数字序列。d的定义如下:
108.d={'a':1,'b':2,'c':3,'d':4,'e':5,'f':6,'g':7,'h':8,'i':9,'j':10,'k':11,'l':12,'m':13,'n':14,'o':15,'p':16,'q':17,'r':18,'s':19,'t':20,'u':21,'v':22,'w':23,'x':24,'y':25,'z':26,'-':27,'_':28,'1':29,'2':30,'3':31,'4':32,'5':33,'6':34,'7':35,'8':36,'9':37,'0':38,'.':39,'α':0};
109.如图2所示,正常域名“google.com”与dga域名“ibymtpyd.info”经过配对、拼接、预处理后得到数字序列{7,15,15,7,5,39,3,15,13,0,0,

,0,0,9,2,25,13,20,16,25,4,39,9,14,6,5}。
110.分布式算法训练示意图如图3所示,包括步骤s104~s107:
111.s104:各个节点分别对使用预处理后的数据进行滑动窗口扫描,分别使用长度分别为[5,10,15]的滑动窗口进行扫描得到的数字序列训练三个随机森林和三个完全随机森林,每个森林中包含50棵树,并将这两个森林包装成json包通过flink框架发送至主机。
[0112]
s105:主机将各节点发送的随机森林与完全随机森林解析后,将其聚合成3三个分别包含有100棵树的随机森林和完全随机森林,并包装成json包通过flink下发给各个节点。
[0113]
s106:各个节点分别更新随机森林和完全随机森林后将训练集转换为类向量并拼接成变换特征f1。
[0114]
s107:级联森林每层包含2个随机森林与2个完全随机森林,训练的当前层数为k,k初始值为1,第k层的变换特征为fk,准确率阈值为0。
[0115]
s108:各个节点分别使用fk训练第k层级联森林。训练完成后将该层级联森林发送给主机,主机聚合各个节点发送来的级联森林,组合成新的级联森林发送给各个节点。
[0116]
s109:各个节点接收并更新级联森林,在本地验证集上验证得到当前模型准确率并发送给主机,主机将所有节点的准确率求和得到当前分布式模型的准确率acck。
[0117]
s110:当k大于0,判断acc
k-acc
k-1
是否小于0,若小于,跳转至步骤s111;否则,将fk经过随机下采样后与训练数据经过第k层级联森林的类向量wk拼接得到f
k 1
,k=k 1,跳转到步骤s108。
[0118]
s111:完成级联森林构建,至此完成整个dga检测算法模型构建。主机及各个节点都可以基于分布式训练得到的dga检测模型独立完成dga检测。
[0119]
如图4所示,本发明实施例提供的面向物联网设备的分布式dga检测系统包含以下模块:
[0120]
离线训练模块,该模块用于训练分布式dga检测算法,其中使用flask框架作为分布式i-sdf算法的通信框架,用于传输节点与主机之间的森林与准确率。
[0121]
数据采集模块,该模块使用tcpdump采集物联网设备上网卡中的dns流量,具体命令为:tcpdump-i eth0-nt-x port domain-w dns-dump.pcap-v,将采集到的流量存储在dns-dump.pcap文件中用于后续检测。
[0122]
数据处理模块,该模块用于处理dns流量,并从中解析到dns请求的域名数据。使用flink框架对数据采集模块采集到的流数据进行处理,根据dns协议解析dns报文中的查询问题区域,再解析其中的查询名即可获得dns请求的域名数据。
[0123]
模型检测模块,将模块基于离线训练模块中的模型使用sklearn2pmml将模型转换为pmml格式,使用flink调用pmml模型,其中包括载入工具类pmmlutils载入模型,及构建评估器的过程,然后使用flink算子调用模型,对前面输入的domain预测,并将预测数据保存至文件中以供分析。
[0124]
二、应用实施例。为了证明本发明的技术方案的创造性和技术价值,该部分是对权利要求技术方案进行具体产品上或相关技术上的应用实施例。
[0125]
实施例1:
[0126]
现有三台树莓派4b设备作为应用实施平台,设备的cpu均为arm cortex-a72 1.5ghz,操作系统为raspbian,其中一台内存为4gb,其余两台为2gb。为方便描述,分别称为树莓派1(4gb),树莓派2和树莓派3。在这三台设备上安装环境,使用的主要软件包括:jdk 1.8,python 3.7,flink 1.12.7,deep-forest 0.1.6,numpy 1.17.2,sklearn 0.21.3。将三台设备分别分发10000条dga域名数据与10000条正常数据作为训练数据。
[0127]
s101:在这三台设备中选择内存为4gb的树莓派作为主机及节点,其余两台内存为2gb的树莓配作为节点。
[0128]
s102:将各个节点上的训练集中的正常域名数据与dga域名数据通过配对来扩充数据,各个节点均有正常域名样本集s1,样本量为10000,dga域名样本集s2,样本量为10000,同类域名配对的样本,对应标签为0,异类域名配对的样本,对应标签为1。基于随机下采样解决样本的不平衡,正常域名样本集相互配对的下采样系数为3.0*10-4
,由p2=(n1*n1*p1)/(n2*n2),求得dga样本集相互配对下采样系数p2=3.0*10-4
,由p3=(n1*n1*p1*2)/(n1*n2),求得正常域名样本集与dga样本集配对的下采样系数为p3=6.0*10-4
,按照采样系数p1,p2,p3对正常域名样本集与dga样本集随机下采样配对得到数据集x,配对后数据集总计120000对,按照9∶1划分为训练集x
train
与验证集x
valid

[0129]
s103:各个节点分别将配对后的数据进行预处理,包括域名长度对齐及字典转换,配对的域名首尾拼接,统计数据集中域名拼接后的最大长度为100,如果拼接后的长度小于100,则在两个域名之间填充符号α。最后将填充后的域名的对经过字典d转换为数字序列。d的定义如下:
[0130]
d={
′a′
:1,
′b′
:2,
′c′
:3,
′d′
:4,
′e′
:5,
′f′
:6,
′g′
:7,
′h′
:8,
′i′
:9,
′j′
:10,
′k′

11,

l

:12,
′m′
:13,
′n′
:14,
′o′
:15,

p

:16,
′q′
:17,
′r′
:18,
′s′
:19,

t

:20,
′u′
:21,
′v′
:22,
′w′
:23,

x

:24,
′y′
:25,
′z′
:26,
′‑′
:27,

_

:28,
′1′
:29,
′2′
:30,
′3′
:31,
′4′
:32,
′5′
:33,
′6′
:34,
′7′
:35,
′8′
:36,
′9′
:37,
′0′
:38,

.

:39,

α

:0};
[0131]
s104:树莓派1-3分别对使用预处理后的数据进行滑动窗口扫描,分别使用长度分别为5的滑动窗口进行扫描得到的数字序列训练一个随机森林和一个完全随机森林,每个森林中包含100棵树。在flink配置文件中添加三台设备的ip地址及端口号,分别为(树莓派1:192.168.0.5:8080,树莓派2:192.168.0.6:8080,树莓派3:192.168.0.7:8080)。树莓派2和树莓派3将训练好的两个森林包装成json包通过flink框架发送至树莓派1。
[0132]
s105:树莓派1将树莓派2和树莓派3发送的随机森林与完全随机森林解析后,与本地训练的随机森林和完全随机森林聚合成一个分别包含有300棵树的随机森林和完全随机森林,聚合过程先创建新森林,再将训练过的森林中的树分类器复制到新的森林。将聚合后的森林打包成json包通过flink下发给树莓派2和树莓派3。
[0133]
s106:树莓派2和树莓派3解析后更新随机森林和完全随机森林后将训练集转换为类向量并拼接成变换特征f1。
[0134]
s107:各个节点初始化级联森林,级联森林每层包含2个随机森林与2个完全随机森林,训练的当前层数为k,k初始值为1,第k层的变换特征为fk,准确率阈值为0。
[0135]
s108:树莓派2和树莓派3使用fk训练第k层级联森林。训练完成后将该层级联森林通过flink框架发送给树莓派1,树莓派1聚合树莓派2和树莓派3发送来的级联森林,组合成新的级联森林发送给树莓派2和树莓派3。
[0136]
s109:树莓派2和树莓派3接收并更新级联森林,在本地验证集上验证得到当前模型准确率并发送给树莓派1,主机将所有节点的准确率求和得到当前分布式模型的准确率acck。
[0137]
s110:当k大于0,判断acc
k-acc
k-1
是否小于0,若小于,跳转至步骤s111;否则,将fk经过随机下采样后与训练数据经过第k层级联森林的类向量wk拼接得到f
k 1
,k=k 1,跳转到步骤s108。
[0138]
s111:完成级联森林构建,至此完成整个dga检测算法模型构建,将模型保存在本地。所有树莓派都可以基于分布式训练得到的dga检测模型独立完成dga检测。
[0139]
如图4所示,本发明实施例提供的面向物联网设备的分布式dga检测系统包含以下模块:
[0140]
离线训练模块,该模块用于训练分布式dga检测算法,其中使用flask框架作为分布式i-sdf算法的通信框架,用于传输节点与主机之间的森林与准确率。
[0141]
数据采集模块,该模块使用tcpdump采集物联网设备上网卡中的dns流量,具体命令为:tcpdump-i eth0-nt-x port domain-w dns-dump.pcap-v,将采集到的流量存储在dns-dump.pcap文件中用于后续检测。
[0142]
数据处理模块,该模块用于处理dns流量,并从中解析到dns请求的域名数据。使用flink框架对数据采集模块采集到的流数据进行处理,根据dns协议解析dns报文中的查询问题区域,再解析其中的查询名即可获得dns请求的域名数据。
[0143]
模型检测模块,将模块基于离线训练模块中的模型使用sklearn2pmml将模型转换为pmml格式,使用flink调用pmml模型,其中包括载入工具类pmmlutils载入模型,及构建评
估器的过程,然后使用flink算子调用模型,对前面输入的domain预测,并将预测数据保存为dga_detect_result.out中以供分析。
[0144]
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、cd或dvd-rom的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
[0145]
三、实施例相关效果的证据。本发明实施例在研发或者使用过程中取得了一些积极效果,和现有技术相比的确具备很大的优势,下面内容结合试验过程的数据、图表等进行描述。
[0146]
如图5所示为不同数据规模下本发明实施例中分布式训练的模型和对比算法模型的f1-score对比图。横坐标e代表训练集数据规模大小,纵坐标为f1-score,用于衡量模型精度。由图中可以看出,由于孪生深度森林模型及分布式框架的使用,本发明实施例中分布式训练的模型在不同数据规模下都大幅领先其他算法训练的模型。
[0147]
如图6所示为本发明实施例的系统运行结果图,图中使用了ping方法来模拟通信,图中启动检测器后,执行了ping kwtoestnessbiophysicalohax.com,该域名为banjori家族的dga域名,之后执行了ping www.baidu.com,该域名为正常域名,通过获取程序打印的结果日志,可以看到dga检测系统成功检测出了这两个域名。
[0148]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。
再多了解一些

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

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

相关文献