设备类型的识别方法、装置、计算机设备和存储介质转让专利

申请号 : CN202011106539.7

文献号 : CN112016635B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 董志成彭晨晨

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请涉及一种设备类型的识别方法、装置、计算机设备和存储介质。所述方法包括:向目标设备发送端口开闭状态探测包;接收目标设备响应于所述端口开闭状态探测包而反馈的端口开闭状态信息;从所述端口开闭状态信息中提取端口开闭状态特征;通过决策树分类器对所述端口开闭状态特征进行决策分类;根据决策分类所得的结果确定所述目标设备的设备类型。采用本方法能够准确地识别出目标设备的设备类型,从而当目标设备为风险设备时以进行安全防护。

权利要求 :

1.一种设备类型的识别方法,其特征在于,所述方法包括:向目标设备发送端口开闭状态探测包;

接收所述目标设备响应于所述端口开闭状态探测包而反馈的端口开闭状态信息;所述端口开闭状态信息包括至少两个目标设备的各端口处于开放或关闭时的端口开闭状态向量;

将所述至少两个目标设备的端口开闭状态向量组成端口状态矩阵;确定所述端口状态矩阵各行或各列数据的均值;计算所述端口状态矩阵各行或各列数据与对应均值的差值,得到差值矩阵;确定所述差值矩阵的特征值和所述特征值对应的特征向量;按照目标维度从基于所述特征向量构成的特征矩阵中提取子特征矩阵,并将所述子特征矩阵作为端口开闭状态特征;

通过决策树分类器对所述端口开闭状态特征进行决策分类;

根据决策分类所得的结果确定所述目标设备的设备类型。

2.根据权利要求1所述的方法,其特征在于,所述通过决策树分类器对所述端口开闭状态特征进行决策分类包括:从所述决策树分类器的根节点开始,在经过的节点处,基于所述端口开闭状态特征中与所述节点相应的特征属性进行决策分类,直至所述决策树分类器的叶子节点。

3.根据权利要求2所述的方法,其特征在于,所述决策树分类器中包含所述根节点、所述叶子节点和至少一个层级的中间节点;所述从所述决策树分类器的根节点开始,在经过的节点处,基于所述端口开闭状态特征的特征属性进行决策分类,直至所述决策树分类器的叶子节点包括:将所述端口开闭状态特征输入所述决策树分类器;

基于所述端口开闭状态特征中与所述根节点相应的特征属性,确定所述端口开闭状态特征在所述决策树分类器的根节点处输出的第一输出分支;

在与所述第一输出分支对应的中间节点处,基于所述端口开闭状态特征中与所述中间节点相应的特征属性确定第二输出分支;

根据所述第二输出分支,将所述端口开闭状态特征从所述中间节点转移至对应的叶子节点。

4.根据权利要求1所述的方法,其特征在于,所述按照目标维度从基于所述特征向量构成的特征矩阵中提取子特征矩阵包括:将所述特征向量按照所述特征值的大小顺序进行排列,得到所述特征矩阵;

从所述特征矩阵中,依据所述特征值从大到小的顺序提取所述目标维度的子特征矩阵。

5.根据权利要求3所述的方法,其特征在于,所述根据决策分类所得的结果确定所述目标设备的设备类型包括:当所述端口开闭状态特征转移至对应的叶子节点时,读取所述叶子节点所保存的设备类型;

将读取的设备类型作为所述目标设备的设备类型。

6.根据权利要求1所述的方法,其特征在于,所述方法还包括:依据目标通信协议生成用于探测所述目标设备中目标端口或所有端口的端口开闭状态探测包;

所述向目标设备发送端口开闭状态探测包包括:

向所述目标设备的目标端口或所有端口分别发送所述端口开闭状态探测包;其中,发送的所述端口开闭状态探测包,用于指示所述目标设备产生所述目标端口或所述所有端口的端口开闭状态信息并进行反馈。

7.根据权利要求1所述的方法,其特征在于,所述方法还包括:当根据所述设备类型确定所述目标设备为风险设备时,生成网络请求;

向被确定为所述风险设备的所述目标设备持续发送生成的网络请求,以使所述目标设备停止服务。

8.根据权利要求1至7中的任一项所述的方法,其特征在于,所述决策树分类器是对待训练决策树分类器进行模型训练所得的,所述模型训练包括:获取样本设备各端口对应的训练端口开闭状态信息和设备类型标签;

从所述训练端口开闭状态信息提取训练端口开闭状态特征;

将所述训练端口开闭状态特征、所述设备类型标签和所述训练端口开闭状态信息输入至待训练决策树分类器中进行训练;

当通过所述待训练决策树分类器预测的设备类型与所述设备类型标签之间的匹配率达到预设匹配条件时,得到所述决策树分类器。

9.根据权利要求8所述的方法,其特征在于,所述训练端口开闭状态信息为至少两个目标设备的各端口处于开放或关闭时的训练端口开闭状态向量;所述从所述训练端口开闭状态信息提取训练端口开闭状态特征包括:将各所述样本设备的所述训练端口开闭状态向量组成训练端口状态矩阵;

确定所述训练端口状态矩阵中各行或各列数据的均值;

计算所述训练端口状态矩阵中各行或各列数据与对应均值之间的训练差值,得到训练差值矩阵;

确定所述训练差值矩阵的训练特征值和对应的训练特征向量;

从基于所述训练特征向量构成的训练特征矩阵中,按照所述目标维度提取子特征矩阵;

将所述子特征矩阵作为所述训练端口开闭状态特征。

10.根据权利要求9所述的方法,其特征在于,所述从基于所述训练特征向量构成的训练特征矩阵中,按照所述目标维度提取子特征矩阵包括:将所述训练特征向量按照所述训练特征值的大小顺序进行排列,得到所述训练特征矩阵;

依据所述训练特征值从大到小的顺序,从基于所述训练特征向量构成的训练特征矩阵中提取所述目标维度的子特征矩阵。

11.根据权利要求9所述的方法,其特征在于,所述将所述训练端口开闭状态特征、所述设备类型标签和所述训练端口开闭状态信息输入至待训练决策树分类器中进行训练包括:将所述训练端口开闭状态特征、所述设备类型标签和所述训练端口开闭状态信息输入至所述待训练决策树分类器;

以所述训练端口开闭状态信息为属性集,从所述属性集中选择目标属性;

在与所述目标属性对应的目标节点处生成目标分支,并确定所述端口开闭状态特征在所述目标节点的目标分支下的输出值;

当所述输出值达到叶子节点条件时,将通过所述目标分支连接的下一级节点标记为叶子节点。

12.根据权利要求11所述的方法,其特征在于,所述从所述属性集中选取目标属性包括:以基尼指数或信息增益为依据从所述属性集中选取目标属性。

13.一种设备类型的识别装置,其特征在于,所述装置包括:发送模块,用于向目标设备发送端口开闭状态探测包;

接收模块,用于接收目标设备响应于所述端口开闭状态探测包而反馈的端口开闭状态信息;所述端口开闭状态信息包括至少两个目标设备的各端口处于开放或关闭时的端口开闭状态向量;

提取模块,用于将所述至少两个目标设备的端口开闭状态向量组成端口状态矩阵;确定所述端口状态矩阵各行或各列数据的均值;计算所述端口状态矩阵各行或各列数据与对应均值的差值,得到差值矩阵;确定所述差值矩阵的特征值和所述特征值对应的特征向量;

按照目标维度从基于所述特征向量构成的特征矩阵中提取子特征矩阵,并将所述子特征矩阵作为端口开闭状态特征;

分类模块,用于通过决策树分类器对所述端口开闭状态特征进行决策分类;

确定模块,用于根据决策分类所得的结果确定所述目标设备的设备类型。

14.根据权利要求13所述的装置,其特征在于,所述分类模块,还用于从所述决策树分类器的根节点开始,在经过的节点处,基于所述端口开闭状态特征中与所述节点相应的特征属性进行决策分类,直至所述决策树分类器的叶子节点。

15.根据权利要求14所述的装置,其特征在于,所述决策树分类器中包含所述根节点、所述叶子节点和至少一个层级的中间节点;

所述分类模块,还用于将所述端口开闭状态特征输入所述决策树分类器;基于所述端口开闭状态特征中与所述根节点相应的特征属性,确定所述端口开闭状态特征在所述决策树分类器的根节点处输出的第一输出分支;在与所述第一输出分支对应的中间节点处,基于所述端口开闭状态特征中与所述中间节点相应的特征属性确定第二输出分支;根据所述第二输出分支,将所述端口开闭状态特征从所述中间节点转移至对应的叶子节点。

16.根据权利要求13所述的装置,其特征在于,所述提取模块,还用于:将所述特征向量按照所述特征值的大小顺序进行排列,得到特征矩阵;

从所述特征矩阵中,依据所述特征值从大到小的顺序提取目标维度的子特征矩阵。

17.根据权利要求15所述的装置,其特征在于,所述叶子节点中保存了设备类型;所述确定模块,还用于:当所述端口开闭状态特征转移至对应的叶子节点时,读取所述叶子节点所保存的设备类型;

将读取的设备类型作为所述目标设备的类型。

18.根据权利要求13所述的装置,其特征在于,所述装置还包括:生成模块;其中:所述生成模块,用于依据目标通信协议生成用于探测所述目标设备中目标端口或所有端口的端口开闭状态探测包;

所述发送模块,用于向所述目标设备的目标端口或所有端口分别发送所述端口开闭状态探测包;其中,发送的所述端口开闭状态探测包,用于指示所述目标设备产生所述目标端口或所述所有端口的端口开闭状态信息并进行反馈。

19.根据权利要求13所述的装置,其特征在于,所述装置还包括:处理模块;其中:所述处理模块,用于当根据所述设备类型确定所述目标设备为风险设备时,生成网络请求;向被确定为所述风险设备的所述目标设备持续发送生成的网络请求,以使所述目标设备停止服务。

20.根据权利要求13至19中的任一项所述的装置,其特征在于,所述装置还包括:训练模块;其中:所述训练模块,用于获取样本设备各端口对应的训练端口开闭状态信息和设备类型标签;从所述训练端口开闭状态信息提取训练端口开闭状态特征;将所述训练端口开闭状态特征、所述设备类型标签和所述训练端口开闭状态信息输入至待训练决策树分类器中进行训练;当通过所述待训练决策树分类器预测的设备类型与所述设备类型标签之间的匹配率达到预设匹配条件时,得到所述决策树分类器。

21.根据权利要求20所述的装置,其特征在于,所述训练端口开闭状态信息为至少两个目标设备的各端口处于开放或关闭时的训练端口开闭状态向量;所述训练模块,还用于:将各所述样本设备的所述训练端口开闭状态向量组成训练端口状态矩阵;

确定所述训练端口状态矩阵中各行或各列数据的均值;

计算所述训练端口状态矩阵中各行或各列数据与对应均值之间的训练差值,得到训练差值矩阵;

确定所述训练差值矩阵的训练特征值和对应的训练特征向量;

从基于所述训练特征向量构成的训练特征矩阵中,按照所述目标维度提取子特征矩阵;

将所述子特征矩阵作为所述训练端口开闭状态特征。

22.根据权利要求21所述的装置,其特征在于,所述训练模块,还用于:将所述训练特征向量按照所述训练特征值的大小顺序进行排列,得到所述训练特征矩阵;

依据所述训练特征值从大到小的顺序,从基于所述训练特征向量构成的训练特征矩阵中提取所述目标维度的子特征矩阵。

23.根据权利要求21所述的装置,其特征在于,所述训练模块,还用于:将所述训练端口开闭状态特征、所述设备类型标签和所述训练端口开闭状态信息输入至所述待训练决策树分类器;

以所述训练端口开闭状态信息为属性集,从所述属性集中选择目标属性;

在与所述目标属性对应的目标节点处生成目标分支,并确定所述端口开闭状态特征在所述目标节点的目标分支下的输出值;

当所述输出值达到叶子节点条件时,将通过所述目标分支连接的下一级节点标记为叶子节点。

24.根据权利要求23所述的装置,其特征在于,在一个实施例中,所述训练模块,还用于以基尼指数或信息增益为依据从所述属性集中选取目标属性。

25.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12中任一项所述的方法的步骤。

26.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法的步骤。

说明书 :

设备类型的识别方法、装置、计算机设备和存储介质

技术领域

[0001] 本申请涉及人工智能和云技术领域,特别是涉及一种设备类型的识别方法、装置、计算机设备和存储介质。

背景技术

[0002] 随着网络技术的不断发展,各种可以连接网络进行交互的设备应运而生,用户侧的终端可以通过网络连接该设备以进行相应的交互。例如,用户通过智能手机对物联网(Internet of Things,IoT)设备进行控制,或者接收物联网设备采集的信息。
[0003] 在与网络侧待识别的目标设备进行交互之前,通常会对该目标设备进行安全扫描,以识别出该目标设备是否为安全设备。传统的安全扫描方案为:向网络侧的目标设备各端口发送基于不同通信协议的端口请求包,然后接收该目标设备返回的用于表示端口身份的报文数据,然后对该报文数据进行分析,从而确定该目标设备所属的设备类型,如确定该目标设备是否为物联网设备。
[0004] 然而,由于多数设备基于信息安全考虑抹除了端口身份,采用传统的安全扫描方案时,将无法准确地识别出目标设备对应的设备类型。

发明内容

[0005] 基于此,有必要针对上述技术问题,提供一种设备类型的识别方法、装置、计算机设备和存储介质,能够准确地识别出目标设备对应的设备类型。
[0006] 一种设备类型的识别方法,所述方法包括:
[0007] 向目标设备发送端口开闭状态探测包;
[0008] 接收目标设备响应于所述端口开闭状态探测包而反馈的端口开闭状态信息;
[0009] 从所述端口开闭状态信息中提取端口开闭状态特征;
[0010] 通过决策树分类器对所述端口开闭状态特征进行决策分类;
[0011] 根据决策分类所得的结果确定所述目标设备的设备类型。
[0012] 在一个实施例中,所述从所述属性集中选取目标属性包括:
[0013] 以基尼指数或信息增益为依据从所述属性集中选取目标属性。
[0014] 一种设备类型的识别装置,所述装置包括:
[0015] 发送模块,用于向目标设备发送端口开闭状态探测包;
[0016] 接收模块,用于接收目标设备响应于所述端口开闭状态探测包而反馈的端口开闭状态信息;
[0017] 提取模块,用于从所述端口开闭状态信息中提取端口开闭状态特征;
[0018] 分类模块,用于通过决策树分类器对所述端口开闭状态特征进行决策分类;
[0019] 确定模块,用于根据决策分类所得的结果确定所述目标设备的设备类型。
[0020] 在一个实施例中,所述端口开闭状态信息包括至少两个目标设备的各端口处于开放或关闭时的端口开闭状态向量;所述提取模块,还用于:
[0021] 将所述至少两个目标设备的端口开闭状态向量组成端口状态矩阵;
[0022] 确定所述端口状态矩阵各行或各列数据的均值;
[0023] 计算所述端口状态矩阵各行或各列数据与对应均值的差值,得到差值矩阵;
[0024] 确定所述差值矩阵的特征值和所述特征值对应的特征向量;
[0025] 按照目标维度从基于所述特征向量构成的特征矩阵中提取子特征矩阵,并将所述子特征矩阵作为所述端口开闭状态特征。
[0026] 在一个实施例中,所述提取模块,还用于:
[0027] 将所述特征向量按照所述特征值的大小顺序进行排列,得到特征矩阵;
[0028] 从所述特征矩阵中,依据所述特征值从大到小的顺序提取目标维度的子特征矩阵。
[0029] 在一个实施例中,所述分类模块,还用于从所述决策树分类器的根节点开始,在经过的节点处,基于所述端口开闭状态特征中与所述节点相应的特征属性进行决策分类,直至所述决策树分类器的叶子节点。
[0030] 在一个实施例中,所述决策树分类器中包含所述根节点、所述叶子节点和至少一个层级的中间节点;所述分类模块,还用于:
[0031] 将所述端口开闭状态特征输入所述决策树分类器;
[0032] 基于所述端口开闭状态特征中与所述根节点相应的特征属性,确定所述端口开闭状态特征在所述决策树分类器的根节点处输出的第一输出分支;
[0033] 在与所述第一输出分支对应的中间节点处,基于所述端口开闭状态特征中与所述中间节点相应的特征属性确定第二输出分支;
[0034] 根据所述第二输出分支,将所述端口开闭状态特征从所述中间节点转移至对应的叶子节点。
[0035] 在一个实施例中,所述叶子节点中保存了设备类型;所述确定模块,还用于:
[0036] 当所述端口开闭状态特征转移至对应的叶子节点时,读取所述叶子节点所保存的设备类型;
[0037] 将读取的设备类型作为所述目标设备的类型。
[0038] 在一个实施例中,所述装置还包括:生成模块;其中:
[0039] 所述生成模块,用于依据目标通信协议生成用于探测所述目标设备中目标端口或所有端口的端口开闭状态探测包;
[0040] 所述发送模块,用于向所述目标设备的目标端口或所有端口分别发送所述端口开闭状态探测包;其中,发送的所述端口开闭状态探测包,用于指示所述目标设备产生所述目标端口或所述所有端口的端口开闭状态信息并进行反馈。
[0041] 在一个实施例中,所述装置还包括:处理模块;其中:
[0042] 所述处理模块,用于当根据所述设备类型确定所述目标设备为物联网设备时,获取所述目标设备的网络地址;当所述网络地址与预设风险设备的网络地址匹配时,拒绝响应所述目标设备发送的请求;或者,生成网络请求,并向被确定为所述目标设备持续发送生成的网络请求,以使所述目标设备停止服务。
[0043] 在一个实施例中,所述装置还包括:训练模块;其中:
[0044] 所述训练模块,用于获取样本设备各端口对应的训练端口开闭状态信息和设备类型标签;从所述训练端口开闭状态信息提取训练端口开闭状态特征;将所述训练端口开闭状态特征、所述设备类型标签和所述训练端口开闭状态信息输入至待训练决策树分类器中进行训练;当通过所述待训练决策树分类器预测的设备类型与所述设备类型标签之间的匹配率达到预设匹配条件时,得到所述决策树分类器。
[0045] 在一个实施例中,所述训练端口开闭状态信息为至少两个目标设备的各端口处于开放或关闭时的训练端口开闭状态向量;所述训练模块,还用于:
[0046] 将各所述样本设备的所述训练端口开闭状态向量组成训练端口状态矩阵;
[0047] 确定所述训练端口状态矩阵中各行或各列数据的均值;
[0048] 计算所述训练端口状态矩阵中各行或各列数据与对应均值之间的训练差值,得到训练差值矩阵;
[0049] 确定所述训练差值矩阵的训练特征值和对应的训练特征向量;
[0050] 从基于所述训练特征向量构成的训练特征矩阵中,按照目标维度提取子特征矩阵;
[0051] 将所述子特征矩阵作为所述训练端口开闭状态特征。
[0052] 在一个实施例中,所述训练模块,还用于:
[0053] 将所述训练特征向量按照所述训练特征值的大小顺序进行排列,得到所述训练特征矩阵;
[0054] 依据所述训练特征值从大到小的顺序,从基于所述训练特征向量构成的训练特征矩阵中提取所述目标维度的子特征矩阵。
[0055] 在一个实施例中,所述训练差值包括协方差;所述训练模块,还用于:
[0056] 将所述训练端口开闭状态特征、所述设备类型标签和所述训练端口开闭状态信息输入至所述待训练决策树分类器;
[0057] 以所述训练端口开闭状态信息为属性集,从所述属性集中选择目标属性;
[0058] 在与所述目标属性对应的目标节点处生成目标分支,并确定所述端口开闭状态特征在所述目标节点的目标分支下的输出值;
[0059] 当所述输出值达到叶子节点条件时,将通过所述目标分支连接的下一级节点标记为叶子节点。
[0060] 在一个实施例中,所述训练模块,还用于以基尼指数或信息增益为依据从所述属性集中选取目标属性。
[0061] 一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
[0062] 向目标设备发送端口开闭状态探测包;
[0063] 接收目标设备响应于所述端口开闭状态探测包而反馈的端口开闭状态信息;
[0064] 从所述端口开闭状态信息中提取端口开闭状态特征;
[0065] 从决策树分类器的根节点开始,在经过的节点处,基于所述端口开闭状态特征中与所述节点相应的特征属性进行决策分类,直至所述决策树分类器的叶子节点;
[0066] 根据所述叶子节点所表示的设备类型确定所述目标设备的设备类型。
[0067] 一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
[0068] 向目标设备发送端口开闭状态探测包;
[0069] 接收目标设备响应于所述端口开闭状态探测包而反馈的端口开闭状态信息;
[0070] 从所述端口开闭状态信息中提取端口开闭状态特征;
[0071] 从决策树分类器的根节点开始,在经过的节点处,基于所述端口开闭状态特征中与所述节点相应的特征属性进行决策分类,直至所述决策树分类器的叶子节点;
[0072] 根据所述叶子节点所表示的设备类型确定所述目标设备的设备类型。
[0073] 上述设备类型的识别方法、装置、计算机设备和存储介质,在对目标设备进行设备类型的识别时,通过向目标设备发送端口开闭状态探测包,可以获得目标设备反馈的端口开闭状态信息,从而即便目标设备的端口身份被抹除,也不影响端口开闭状态信息的获得。此外,从端口开闭状态信息中提取端口开闭状态特征,通过决策树分类器对端口开闭状态特征进行决策分类,并根据决策分类所得的结果确定目标设备的设备类型,因此只需目标设备的端口开闭状态信息便可利用决策树分类器得到目标设备的设备类型,避免了因目标设备抹除端口身份而导致无法确地识别出目标设备的设备类型的问题。

附图说明

[0074] 图1为一个实施例中设备类型的识别方法的应用环境图;
[0075] 图2为一个实施例中设备类型的识别方法的流程示意图;
[0076] 图3为一个实施例中通过决策树分类器中各节点的结构示意图;
[0077] 图4a为一个实施例中通过节点对端口开闭状态特征进行决策分类的流程示意图;
[0078] 图4b为另一个实施例中通过节点对端口开闭状态特征进行决策分类的流程示意图;
[0079] 图5为一个实施例中模型训练步骤的流程示意图;
[0080] 图6为一个实施例中模型训练和部署训练后的决策树分类器的流程示意图;
[0081] 图7为一个实施例中模型训练和利用训练后的决策树分类器进行设备类型识别的流程示意图;
[0082] 图8为一个实施例中设备类型的识别装置的结构框图;
[0083] 图9为另一个实施例中设备类型的识别装置的结构框图;
[0084] 图10为一个实施例中计算机设备的内部结构图。

具体实施方式

[0085] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0086] 在对本申请进行详细说明之前,首先对本申请所采用的技术进行简单介绍:
[0087] 人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
[0088] 人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
[0089] 机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。通过机器学习的方法可以对目标设备对应的端口开闭状态特征进行分类,从而确定出目标设备的类型。
[0090] 云技术(Cloud technology),是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
[0091] 云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
[0092] 通过将人工智能技术和云技术进行结合,可以提供人工智能云服务,该人工智能云服务一般也被称作是AIaaS(AI as a Service,AI即服务)。这是目前主流的一种人工智能平台的服务方式,具体来说AIaaS平台会把几类常见的AI服务进行拆分,并在云端提供独立或者打包的服务。这种服务模式类似于开了一个AI主题商城:所有的开发者都可以通过API接口的方式来接入使用平台提供的一种或者是多种人工智能服务,部分资深的开发者还可以使用平台提供的AI框架和AI基础设施来部署和运维自已专属的云人工智能服务。在本申请中,将训练后的决策树分类器部署至相应的平台(如用于识别设备类型的检测系统)上,当需要对目标设备进行类型识别时,可以调用该决策树分类器对该目标设备进行设备类型的识别。
[0093] 本申请实施例提供的方案涉及云技术和人工智能的机器学习等技术,具体通过如下实施例进行说明:
[0094] 本申请提供的设备类型的识别方法,可以应用于如图1所示的应用环境中。在该应用环境中,包括终端102、服务器104和目标设备106。终端102向目标设备106直接发送端口开闭状态探测包,或通过服务器104转发端口开闭状态探测包,然后接收目标设备106响应于端口开闭状态探测包而返回的端口开闭状态信息;从决策树分类器的根节点开始,在经过的节点处,基于端口开闭状态特征中与节点相应的特征属性进行决策分类,直至决策树分类器的叶子节点;根据叶子节点所表示的设备类型确定目标设备106的设备类型。
[0095] 其中,终端102可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。
[0096] 服务器104可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群,可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
[0097] 目标设备106可以是网络侧的终端或服务器,该终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等;或者可以是家电设备,以及其它物联网设备。
[0098] 终端102、服务器104和目标设备106之间可以通过蓝牙、USB(Universal Serial Bus,通用串行总线)或者网络等通讯连接方式进行连接,本申请在此不做限制。
[0099] 在一个实施例中,如图2所示,图中提供了一种设备类型的识别方法,以该方法应用于图1中的终端102为例进行说明,包括以下步骤:
[0100] S202,向目标设备发送端口开闭状态探测包。
[0101] 其中,端口开闭状态探测包可以是基于目标通信协议所构建的、用于访问目标设备中的端口的探测包。此外,该端口开闭状态探测包可以是基于目标通信协议生成的探测包,该目标通信协议可以是UDP(User Datagram Protocol,用户数据报协议)、TCP(Transmission Control Protocol,传输控制协议)或其它通信协议中的任一种。端口是目标设备与外界的终端或服务器进行通信的出入口。
[0102] 在一个实施例中,终端可以向一个目标设备发送端口开闭状态探测包,也可以同时多个目标设备发送端口开闭状态探测包,或者周期性向一个或多个目标设备发送端口开闭状态探测包。
[0103] 在一个实施例中,终端向目标设备发送端口开闭状态探测包,指示该目标设备将对应端口的端口开闭状态信息返回给终端。
[0104] 在一个实施例中,终端依据目标通信协议生成用于探测目标设备中目标端口或所有端口的端口开闭状态探测包;向所述目标设备的目标端口或所有端口分别发送端口开闭状态探测包;其中,发送的所述端口开闭状态探测包,用于指示所述目标设备产生所述目标端口或所述所有端口的端口开闭状态信息并进行反馈。
[0105] 具体地,终端依据目标通信协议生成用于探测目标设备中目标端口的端口开闭状态探测包,以使目标设备产生并返回目标端口的端口开闭状态信息;或者;终端根据目标通信协议生成用于探测目标设备各端口的端口开闭状态探测包,以使目标设备产生并返回各端口的端口开闭状态信息。
[0106] 其中,终端可以对目标设备的所有端口都发送端口开闭状态探测包,即发送端口开闭状态探测包的数量与目标设备的端口数量一致;此外,终端也可以只对目标设备的目标端口发送端口开闭状态探测包,即发送端口开闭状态探测包的数量与目标设备的目标端口数量一致。
[0107] 例如,终端基于UDP协议生成端口开闭状态探测包,该端口开闭状态探测包携带端口号;向目标设备的目标端口或所有端口分别发送一个端口开闭状态探测包,若接收端口开闭状态探测包的端口处于开放状态,目标设备的相应端口在接收到端口开闭状态探测包时,会做出反馈,即向终端返回端口开闭状态信息,或将与端口开闭状态探测包对应的其它反馈信息作为端口开闭状态信息返回给端口。若接收端口开闭状态探测包的端口处于关闭(即不开放)状态,目标设备将向终端返回该端口未开放的端口开闭状态信息。
[0108] S204,接收目标设备响应于端口开闭状态探测包而反馈的端口开闭状态信息。
[0109] 其中,端口开闭状态信息可用于表示端口是否处于开放状态的信息,可采用01表示端口是否处于开放状态,如0表示端口处于关闭(即未开放)的状态,1表示端口处于开放的状态。
[0110] 在一个实施例中,当目标设备在接收到终端的端口开闭状态探测包时,向终端返回对应端口是否开闭的端口开闭状态信息。例如,当目标设备的端口处于开放状态时,目标设备返回对应端口处于开放状态的端口开闭状态信息;当目标设备的端口处于关闭(即未开放)状态时,目标设备返回对应端口处于关闭状态的端口开闭状态信息。
[0111] 在另一个实施例中,若目标设备的端口处于开放状态,目标设备在接收到终端的端口开闭状态探测包时,可以做出反馈,向终端返回对应端口处于开放状态的端口开闭状态信息。当目标设备的端口处于关闭状态时,目标设备将不会做出反馈,即不向终端反馈信息。因此,终端可以根据是否接收到目标设备是否反馈端口开闭状态信息判定对应端口是否开放的状态,从而得到目标设备各端口的端口开闭状态信息。从而,不论目标设备的端口是否开放,只需要发送基于某一种通信协议的端口开闭状态探测包即可,根据是否收到该目标设备的反馈,将收到的反馈作为端口开闭状态信息,从而不需要尝试向该目标设备发送各种协议和类型的身份探测包来获得端口身份,以根据端口身份确定目标设备的类型,可以有效地降低端口开闭状态探测包地发送数量,提高了设备类型的识别效率。
[0112] 在一个实施例中,终端在向目标设备发送端口开闭状态探测包之后,会启动定时器进行计时,当在规定的定时时长内未接收到目标设备返回的端口开闭状态信息时,可判定该目标设备相应端口未开放,从而得到端口未开放的端口开闭状态信息。当在规定的定时时长内接收到目标设备返回的端口开闭状态信息时,可判定该目标设备相应端口处于开放的状态,则得到端口开放的端口开闭状态信息。
[0113] S206,从端口开闭状态信息中提取端口开闭状态特征。
[0114] 其中,端口开闭状态特征可以是从端口开闭状态信息中提取的、且维度变小的状态特征。例如,端口开闭状态信息为n维的向量,则端口开闭状态特征为从端口开闭状态信息提取的k维端口开闭状态特征。其中,n大于k,且n和k均为正整数。
[0115] 在一个实施例中,S206具体可以包括:终端对端口开闭状态信息进行降维处理,得到端口开闭状态特征。例如,将端口开闭状态信息中的冗余数据进行去除,从而得到端口开闭状态特征;或者,采用其它方式进行降维。
[0116] 在一个实施例中,当该端口开闭状态信息包括至少两个目标设备的各端口处于开放或关闭时的端口开闭状态向量。S206具体可以包括:终端将至少两个目标设备的端口开闭状态向量组成端口状态矩阵;确定端口状态矩阵各行或各列数据的均值;计算端口状态矩阵各行或各列数据与对应均值的差值,得到差值矩阵;确定差值矩阵的特征值和特征值对应的特征向量;按照目标维度从基于特征向量构成的特征矩阵中提取子特征矩阵,并将子特征矩阵作为端口开闭状态特征。
[0117] 其中,该差值可以是端口状态矩阵中各数据与对应均值两者之差,或者是根据端口状态矩阵中各数据与对应均值计算出来的方差。
[0118] 具体地,终端将至少两个目标设备的端口开闭状态信息按列组成端口状态矩阵;确定端口状态矩阵中各行数据的均值;或者,终端将至少两个目标设备的端口开闭状态信息按行组成端口状态矩阵;确定端口状态矩阵中各列数据的均值。
[0119] 在一个实施例中,上述按照目标维度从基于特征向量构成的特征矩阵中提取子特征矩阵的步骤,具体可以包括:终端将特征向量按照特征值的大小顺序进行排列,得到特征矩阵;从特征矩阵中,依据特征值从大到小的顺序提取目标维度的子特征矩阵。
[0120] 其中,该目标维度小于端口状态矩阵的维度,如端口状态矩阵的维度为n,对应的目标维度为k(k小于n,且k和n均为正整数)。
[0121] 例如,假设有m个目标设备,且每个目标设备需要探测的端口数量为n。对于每个目标设备,则可以获得一个n维的端口开闭状态信息(即端口开闭状态向量),m个目标设备则获得m个n维的端口开闭状态信息。将各端口开闭状态信息按列组成n×m的端口状态矩阵X,该端口状态矩阵X如下所示:
[0122]
[0123] 令 ,则 是半正定对称矩阵( ),该矩阵 对角线上的数据分别为端口状态矩阵X各行数据的方差(即矩阵 为方差矩阵),而 分别表示两个特征的协方差。令 是一组基按行组成的矩阵, 为矩阵 对端口状态矩阵 做基变换后的数据(即降维后的数据),则有 。
[0124]
[0125] 因此,将提取端口特征矩阵转化成寻找一个矩阵 ,使得 是一个对角矩阵,并且将该矩阵 中的行数据按照特征值的大小进行排列(如从大到小依次排列),那么对角矩阵 的前k行就是要寻找的基,用 的前k行组成的矩阵乘以端口状态矩阵 ,从而使得端口状态矩阵 从n维降到了k维,得到k维的端口开闭状态特征。其中,该特征值是矩阵的特征值,该矩阵 是由矩阵 对应的特征向量组成的矩阵。
[0126] 在一个实施例中,在从端口状态矩阵中提取端口开闭状态特征的过程中,终端可以采用极大投影方差法使得端口状态矩阵中各向量的方差最大,采用方差最大的方向投影可以使数据的差异性最大化,因此可以保留更多的端口开闭状态信息。
[0127] 在一个实施例中,终端对端口开闭状态信息进行去中心化处理,得到目标端口开闭状态信息,然后将各目标设备的目标端口开闭状态向量按列或列组成端口状态矩阵;其中,目标端口开闭状态信息的均值为零。此时,由于均值为零,从而端口状态矩阵中各向量的方差最大。
[0128] 例如,端口状态矩阵 为n维端口开闭状态向量的集合,端口开闭状态向量,投影向量u  且限制u的模长为1,即 ,对端口开闭状态向量 进行去中心化处理,得到去中心化后的特征向量 。其中,该特征向量 各特征分量的均值为0,端口状态矩阵 投影后的方差为:
[0129]
[0130]
[0131]
[0132]
[0133] 因此,优化函数为:
[0134]
[0135]
[0136] 通过拉格朗日方法转换为无约束问题,其中,为拉格朗日乘子:
[0137]
[0138] 对上式求导,可得:
[0139]
[0140] 从上式可知,是协方差矩阵S的特征向量,为特征值,同时有:
[0141]
[0142] 也是投影后样本的方差,因此,投影向量 为端口状态矩阵的特征值 对应的特征向量,将这些特征向量按照特征值 从大到小的顺序进行排列,然后选取前k维子矩阵,该k维子矩阵即为端口开闭状态特征。
[0143] 作为一个示例,若对n个目标设备编号0 65535的端口进行探测,终端则可以向目~标设备发送65536×n个端口开闭状态探测包,从而接收到该目标设备返回的65536×n个端口开闭状态信息,将65536×n个端口开闭状态信息按列组合成端口状态矩阵,基于极大投影方差法获得端口状态矩阵对应的端口开闭状态特征。
[0144] S208,通过决策树分类器对端口开闭状态特征进行决策分类。
[0145] 其中,决策树分类器可以指基于决策树构建的分类模型,通过该决策树分类器可以对端口开闭状态特征进行决策分类。决策分类的结果可以是端口开闭状态特征所传递至叶子节点的结果信息,如判断端口开闭状态特征传递至决策树分类器的哪一个叶子节点,该叶子节点的标识即为决策分类的结果;或者,决策分类的结果可以是端口开闭状态特征在非叶子节点处的取值,该取值所传递至叶子节点的结果信息,如判断端口开闭状态特征在决策树分类器中所经历的非叶子节点上的取值,传递至决策树分类器中的哪一个叶子节点,该叶子节点的标识即为决策分类的结果。
[0146] 在一个实施例中,将端口开闭状态特征输入至决策树分类器,通过决策树分类器中的各节点对端口开闭状态特征进行决策分类。
[0147] 在一个实施例中,当端口开闭状态特征输入至决策树分类器时,从决策树分类器的根节点开始,在经过的节点处,基于端口开闭状态特征中与节点相应的特征属性进行决策分类,直至决策树分类器的叶子节点。
[0148] 其中,该决策树分类器中包含根节点、叶子节点和至少一个层级的中间节点。中间节点可以指具有父节点(该父节点可以是根节点或上一层级的中间节点)和子节点(该子节点可以是叶子节点或下一层级的中间节点)的节点,如图3所示,其中图3的左图包含有一个层级的中间节点,右图包含有两个层级的中间节点。
[0149] 其中,节点可用于表示目标设备的相应端口是否开放的条件判断节点,若在某个节点处基于端口开闭状态特征确定该目标设备的相应端口处于开放状态时,则选择端口开闭状态特征在该节点处的输出分支;若在某个节点处基于端口开闭状态特征确定该目标设备的相应端口处于关闭状态时,则选择端口开闭状态特征在该节点处的另一个输出分支。
[0150] 特征属性可以是用于表示目标设备相应端口是否开闭的属性,在该端口开闭状态特征中包含有该特征属性。例如,若端口开闭状态特征为 时,则该端口开闭状态特征的特征属性可以是端口1处于开放状态,且端口2处于关闭状态。
[0151] 在一个实施例中,终端将端口开闭状态特征输入决策树分类器;基于端口开闭状态特征中与根节点相应的特征属性,确定端口开闭状态特征在决策树分类器的根节点处输出的第一输出分支;在与第一输出分支对应的中间节点处,基于端口开闭状态特征中与中间节点相应的特征属性确定第二输出分支;根据第二输出分支,将端口开闭状态特征从中间节点转移至对应的叶子节点。
[0152] 例如,如图4a所示,端口开闭状态特征在输入决策树分类器之后,基于端口开闭状态特征中与根节点相应的特征属性,确定端口开闭状态特征在决策树分类器的根节点处的输出分支a。然后,端口开闭状态特征通过输出分支a流向中间节点1,在中间节点1处,基于端口开闭状态特征中与中间节点1相应的特征属性确定输出分支b;根据输出分支b,将端口开闭状态特征从中间节点转移至对应的叶子节点2。
[0153] 在另一个实施例中,终端将端口开闭状态特征输入决策树分类器;确定端口开闭状态特征在根节点对应的判决条件下的第一取值以及该第一取值的第一输出分支;在与第一输出分支对应的中间节点处,确定端口开闭状态特征在该中间节点对应的判决条件下的第二取值以及该第二取值的第二输出分支。
[0154] 例如,如图4b所示,端口开闭状态特征在输入决策树分类器之后,确定端口开闭状态特征在根节点对应的判决条件下的取值x以及该取值x的输出分支a;在与输出分支a对应的中间节点1处,确定端口开闭状态特征在该中间节点1对应的判决条件下的取值y以及该取值y的输出分支b;根据输出分支b确定对应的叶子节点2,将该取值y转移至该叶子节点2。
[0155] S210,根据决策分类所得的结果确定目标设备的设备类型。
[0156] 在一个实施例中,叶子节点中保存了设备类型;S210具体可以包括:当端口开闭状态特征转移至对应的叶子节点时,终端读取叶子节点所保存的设备类型;将读取的设备类型作为目标设备的设备类型。
[0157] 例如,如图4a所示,当端口开闭状态特征从中间节点转移至对应的叶子节点2。由于叶子节点2保存的类型标识为设备类型b,则通过叶子节点2保存的设备类型b即可确定目标设备的类型为设备类型b。
[0158] 在另一个实施例中,叶子节点中保存了设备类型;S210具体可以包括:终端根据第二输出分支确定对应的叶子节点,将该第二取值转移至该叶子节点;读取叶子节点所保存的设备类型,将读取的设备类型作为目标设备的设备类型。
[0159] 例如,如图4b所示,当根据输出分支b确定对应的叶子节点2时,将该取值y转移至该叶子节点2;读取叶子节点2所保存的设备类型b,将读取的设备类型b作为目标设备的设备类型。
[0160] 在一个实施例中,当确定目标设备的类型时,终端获取该目标设备的(Internet Protocol,互联网协议)地址和/或物理地址,从而在根据该类型确定目标设备为风险设备时,在接收到包含该风险设备的IP地址的数据包时,将该数据包进行隔离,并拒绝响应该数据包对应的数据交互或数据处理。
[0161] 在另一个实施例中,当根据设备类型确定目标设备为物联网设备时,获取目标设备的网络地址;当网络地址与预设风险设备的网络地址匹配时,拒绝响应目标设备发送的请求;或者,生成网络请求,并向被确定为目标设备持续发送生成的网络请求,以使目标设备停止服务。
[0162] 具体地,当根据该类型确定目标设备为风险设备时,终端采用DDoS(Distributed Denial of Service,分布式拒绝服务)方式或CC(ChallengeCollapsar,挑战黑洞)方式不断向该目标设备发送网络请求,以使该目标设备耗尽宽带资源和/或耗尽设备资源,从而避免受到该目标设备的攻击,以及避免其它终端或服务器避免受到该目标设备的攻击。此外,对于被确定为风险设备的目标设备,通过拒绝响应该目标设备的请求,可以有效避免受到攻击。
[0163] 上述实施例中,在对目标设备进行设备类型的识别时,通过向目标设备发送端口开闭状态探测包,可以获得目标设备反馈的端口开闭状态信息,从而即便目标设备的端口身份被抹除,也不影响端口开闭状态信息的获得。此外,从端口开闭状态信息中提取端口开闭状态特征,通过决策树分类器对端口开闭状态特征进行决策分类,并根据决策分类所得的结果确定目标设备的设备类型,因此只需目标设备的端口开闭状态信息便可利用决策树分类器得到目标设备的设备类型,避免了因目标设备抹除端口身份而导致无法确地识别出目标设备的设备类型的问题。
[0164] 在一个实施例中,如图5所示,模型训练的步骤包括:
[0165] S502,获取样本设备各端口对应的训练端口开闭状态信息和设备类型标签。
[0166] 其中,样本设备可以是已确定设备类型的至少两个设备,具体可以是物联网设备(如家电设备)或其它类型的设备。训练端口开闭状态信息可以是样本设备各端口的、用于模型训练的端口开闭状态信息,该端口开闭状态信息可用于表示端口是否处于开放状态的信息,即端口开闭状态信息可用于表示端口开闭状态。在本申请的实施例中,可采用01表示端口是否处于开放状态,如0表示端口处于关闭(即未开放)的状态,1表示端口处于开放的状态。设备类型标签可以是用于标识设备类型的标签。
[0167] 其中,样本设备中包含风险设备和没有风险的设备。对应的,风险设备对应的端口开闭状态信息属于负样本,没有风险的设备对应的端口开闭状态信息属于正样本。
[0168] 在一个实施例中,终端可以向一个样本设备发送端口开闭状态探测包,也可以同时多个样本设备发送端口开闭状态探测包,或者周期性向一个或多个样本设备发送端口开闭状态探测包,从而可以得到一个或多个样本设备的训练端口开闭状态信息。
[0169] 在一个实施例中,终端向样本设备发送端口开闭状态探测包,指示该样本设备将对应端口的训练端口开闭状态信息返回给终端,从而终端获取到样本设备的训练端口开闭状态信息。其中,该端口开闭状态探测包可以是基于目标通信协议生成的探测包,该目标通信协议可以是UDP、TCP或其它通信协议中的任一种。
[0170] 在一个实施例中,终端依据目标通信协议生成用于探测样本设备中目标端口的端口开闭状态探测包,以使样本设备产生并返回目标端口的训练端口开闭状态信息;或者;根据目标通信协议生成用于探测样本设备各端口的端口开闭状态探测包,以使样本设备产生并返回各端口的训练端口开闭状态信息。
[0171] 其中,终端可以对样本设备的所有端口都发送端口开闭状态探测包,即发送端口开闭状态探测包的数量与样本设备的端口数量一致;此外,终端也可以只对样本设备的目标端口发送端口开闭状态探测包,即发送端口开闭状态探测包的数量与样本设备的目标端口数量一致。
[0172] 例如,终端基于UDP协议生成端口开闭状态探测包,该端口开闭状态探测包携带端口号;通过向样本设备的目标端口或所有端口分别发送一个端口开闭状态探测包,若接收端口开闭状态探测包的端口处于开放状态,在接收到端口开闭状态探测包时,会做出相应的反馈,即向终端返回训练端口开闭状态信息,或将与端口开闭状态探测包对应的其它反馈信息作为训练端口开闭状态信息返回给端口。若接收端口开闭状态探测包的端口处于关闭(即不开放)状态,终端接收样本设备发送的端口未开放的训练端口开闭状态信息。
[0173] 在另一个实施例中,当样本设备的端口处于开放状态时,在接收到终端的端口开闭状态探测包时,可以做出反馈,向终端返回对应端口的训练端口开闭状态信息。当样本设备的端口处于关闭时,样本设备将不会做出反馈,不向终端反馈信息。因此,终端可以根据是否接收到样本设备是否反馈训练端口开闭状态信息判定对应端口是否开放的状态,从而得到样本设备各端口的训练端口开闭状态信息。
[0174] 在一个实施例中,终端在向样本设备发送端口开闭状态探测包之后,会启动定时器,当在定时器的定时时长内未接收到样本设备返回的训练端口开闭状态信息时,可判定该样本设备相应端口未开放,则得到端口未开放的训练端口开闭状态信息。当在定时器的定时时长内接收到样本设备返回的训练端口开闭状态信息时,可判定该样本设备相应端口处于开放的状态,则得到端口开放的训练端口开闭状态信息。
[0175] S504,从训练端口开闭状态信息提取训练端口开闭状态特征。
[0176] 在一个实施例中,训练端口开闭状态信息为至少两个目标设备的各端口处于开放或关闭时的训练端口开闭状态向量;S504具体可以包括:终端将各样本设备的训练端口开闭状态向量组成训练端口状态矩阵;确定训练端口状态矩阵中各行或各列数据的均值;计算训练端口状态矩阵中各行或各列数据与对应均值之间的训练差值,得到训练差值矩阵;确定训练差值矩阵的训练特征值和对应的训练特征向量;从基于训练特征向量构成的训练特征矩阵中,按照目标维度提取子特征矩阵;将子特征矩阵作为训练端口开闭状态特征。
[0177] 在一个实施例中,上述从基于训练特征向量构成的训练特征矩阵中,按照目标维度提取子特征矩阵的步骤,具体可以包括:将训练特征向量按照训练特征值的大小顺序进行排列,得到训练特征矩阵;依据训练特征值从大到小的顺序,从基于训练特征向量构成的训练特征矩阵中提取目标维度的子特征矩阵。
[0178] 其中,上述从训练端口开闭状态信息提取训练端口开闭状态特征的步骤,具体可以参考上述实施例中的S206。
[0179] S506,将训练端口开闭状态特征、设备类型标签和训练端口开闭状态信息输入至待训练决策树分类器中进行训练。
[0180] 其中,训练端口开闭状态特征指的是从训练端口开闭状态信息提取的特征,且训练端口开闭状态特征的维度小于训练端口开闭状态信息的维度。此外,通过训练端口开闭状态特征也可以确定样本设备中响应端口的开闭状态。
[0181] 在一个实施例中,S506具体可以包括:终端将训练端口开闭状态特征、设备类型标签和训练端口开闭状态信息输入至待训练决策树分类器;以训练端口开闭状态信息为属性集,从属性集中选择目标属性;在与目标属性对应的目标节点处生成目标分支,并确定端口开闭状态特征在目标节点的目标分支下的输出值;当输出值达到叶子节点条件时,将通过目标分支连接的下一级节点标记为叶子节点。
[0182] 其中,叶子节点条件可以指输出值为空集,对应的,当输出值为空集时,表示输出值达到叶子节点条件。
[0183] 在一个实施例中,上述从属性集中选取目标属性的步骤,具体可以包括:终端以基尼指数或信息增益为依据从属性集中选取目标属性。
[0184] S508,当通过待训练决策树分类器预测的设备类型与设备类型标签之间的匹配率达到预设匹配条件时,得到训练后的决策树分类器。
[0185] 例如,预测的设备类型与设备类型标签之间的匹配率达到a%时,将经过训练后的待训练决策树分类器作为最终的决策树分类器。其中,a可以是100或99等,也可以取其它的数值,在本实施例中不做具体限定。
[0186] 上述实施例中,利用样本设备各端口对应的训练端口开闭状态信息、训练端口开闭状态特征和设备类型标签对待训练决策树分类器进行训练,得到训练后的决策树分类器,而且该决策树分类器基于端口开闭状态信息对应的端口开闭状态特征进行决策分类得到设备类型,从而只需目标设备的端口开闭状态信息便可利用决策树分类器得到目标设备的设备类型,避免了因目标设备抹除端口身份而导致无法确地识别出目标设备的设备类型的问题。
[0187] 作为一个示例,该设备类型识别方法可用于识别目标识别(该目标识别即为待识别的设备)是否为IoT设备,如图6所示,主要识别过程包括:
[0188] (1)获取训练样本
[0189] 其中,该训练样本(包括正样本和负样本),获取的步骤包括:通过向样本设备发送基于UDP协议的探测包,可以实现对分布在0 65535的端口是否开放进行探测,获得各样本~设备返回的用于模型训练的端口开闭状态信息,将各样本设备返回的端口开闭状态信息分别组织为用于表示端口状态的端口开闭状态向量。
[0190] (2)采样PCA(Principal Component Analysis,主成分分析)算法进行预处理。
[0191] 同时考虑到资源优化与模型效率等因素,采样PCA算法对端口开闭状态信息进行数据预处理,得到降维后的端口开闭状态特征。
[0192] (3)决策树分类器的训练。
[0193] 经过预处理后的端口开闭状态特征输入待训练的决策树分类器进行训练,当该决策树分类器的输出收敛时,得到训练后的决策树分类器。
[0194] (4)将该训练后的决策树分类器部署至检测系统进行线上识别。
[0195] 在测试或实际应用过程中,若需要对待识别的目标设备进行设备类型的识别时,可以调用部署在检测系统的决策树分类器进行识别,从而确定该目标设备是否为IoT设备。
[0196] 需要指出的是,在本示例以及后续示例中,在进行模型训练时,训练样本(即用于模型训练的端口开闭状态向量)是从样本设备获得;在测试或应用时,从待识别的目标设备获取端口开闭状态向量。其中,端口开闭状态向量可以是向量化的端口开闭状态信息。
[0197] 作为另一个示例,该设备类型识别方法可用于识别目标识别是否为IoT设备,如图7所示,对以下三部分内容进行阐述:数据预处理、决策树分类器训练和设备类型识别。
[0198] (一)数据预处理
[0199] 对样本设备的端口是否开放进行探测,若端口数为n,则可以对分布在0 n-1(如0~ ~65535)的端口开闭状态进行探测,若端口开放,则标识为1,否则标识为0,从而得到端口开闭状态向量,该端口开闭状态向量是长度为65536个由0/1组成的向量。
[0200] 在各端口开闭状态向量中,往往只在少数几个位数据为1,而大量的数据为0,这将带来几个问题:大量存储空间被浪费、模型计算消耗大大增加和因信息分散导致模型学习效率低。因此,需要对端口开闭状态向量进行预处理,在本实施例中采用PCA算法进行降维处理,将长度为n维的端口开闭状态向量降为k维的端口开闭状态向量,如将长度为65535的端口开闭状态向量压缩至200维的端口开闭状态向量。
[0201] (a)PCA算法介绍
[0202] PCA算法可以把可能具有相关性的高维向量转换为线性无关的低维向量,新的低维向量会尽可能的保留原始高维向量的信息。通过将高维向量转换为低维向量之后,可以解决以下问题:
[0203] 1、降维可以缓解维度灾难问题;
[0204] 2、降维可以在压缩数据的同时,使信息损失最小化;
[0205] 3、低维向量通过可视化更容易理解,而高维向量的数据结构很困难,不容易理解。
[0206] PCA算法的优化目标:将一组n维向量降为k维(0
[0207] 假设,有m个n维端口开闭状态向量,将其排列成n×m的矩阵 (即上述实施例中的端口状态矩阵),令 ,则 是半正定对称矩阵( ),该矩阵 对角线上的数据分别为端口状态矩阵X各行数据的方差(即矩阵 为方差矩阵),而 分别表示 两个特征的协方差。令 是一组基按行组成的矩阵, 为矩阵 对端口状态矩阵做基变换后的数据(即降维后的数据),则有 。
[0208]
[0209] 因此,原优化目标转化成寻找一个矩阵 ,使得 是一个对角矩阵,并且将该矩阵 中的行数据按照特征值的大小进行排列(如从大到小依次排列),那么对角矩阵 的前k行就是要寻找的基,用 的前k行组成的矩阵乘以端口状态矩阵 ,从而使得端口状态矩阵 从n维降到了k维,得到k维的端口开闭状态特征。其中,该特征值是矩阵 的特征值,该矩阵 是由矩阵 对应的特征向量组成的矩阵。
[0210] 对于最大方差的计算方法,可以采用极大投影方差法使得在投影后的空间中数据的方差最大。通过选择数据方差最大的方向进行投影,可以使数据的差异性最大化,因此可以保留更多原始的数据信息。
[0211] 假设,矩阵 为n维端口开闭状态向量的集合,端口开闭状态向量 ,投影向量u  、且限制投影向量u的模长为1,即 。对原始的端口开闭状态向量进行去中心化处理,得到特征向量 。其中,特征向量 各特征分量的均值为0,矩阵 投影后的方差为:
[0212]
[0213]
[0214]
[0215]
[0216] 因此,优化函数为:
[0217]
[0218]
[0219] 通过拉格朗日方法转换为无约束问题,其中,为拉格朗日乘子:
[0220]
[0221] 对上式求导,可得:
[0222]
[0223] 从上式可知,是协方差矩阵S的特征向量,为特征值,同时有:
[0224]
[0225] 也是投影后样本的方差,因此,投影向量 为端口状态矩阵的特征值 对应的特征向量,将这些特征向量按照特征值 从大到小的顺序进行排列,然后选取前k维子矩阵,该k维子矩阵即为降维后的端口开闭状态特征。
[0226] (b)PCA算法的流程
[0227] 假设,有m个n维端口开闭状态向量,则:
[0228] 1、将原始数据按列组成n×m的矩阵 ;
[0229] 2、将 的每一行进行零均值化,即减去这一行的均值;
[0230] 3、求出协方差矩阵: ;
[0231] 4、求出协方差矩阵的特征值及对应的特征向量;
[0232] 5、将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵 ;
[0233] 6、 即为降维到k维后所得的端口开闭状态特征。
[0234] (二)决策树分类器训练
[0235] 划分属性的依据通常为信息增益和基尼指数,经过测试发现基尼指数表现更佳,故选择基尼指数作为最优属性划分依据递归生成决策树分类器。
[0236] 经过PCA算法降维处理后的端口开闭状态特征进入决策树分类器(即决策树模型)进行进一步处理。基于机器学习分类算法,决策树分类器可以自动学习端口分布特征,达到良好识别效果。
[0237] 1)决策树分类器
[0238] 决策树是一个树结构,其每个非叶子节点表示一个特征属性上的测试,每个分支代表这个特征属性在对应属性值上的输出,而每个叶子节点存放一个设备类型。在测试或实际用于时,使用决策树分类器进行决策的过程,从根节点开始测试待分类项(即上述实施例中目标设备的端口开闭状态特征)中相应的特征属性,并按照其值选择输出分支,直至到达叶子节点,将叶子节点存放的设备类型作为决策结果。
[0239] 决策树分类器的训练目的是为了获得一颗泛化能力强,即处理未见示例能力强的决策树,其基本流程如下:
[0240]
[0241] 其中,训练集 中的 指的是不同样本设~
备1 m的、且用于模型训练的端口开闭状态特征, 是样本设备1 m的设备类型标签;
~ ~ ~
属性集 用于表示样本设备的端口是否开放。
[0242] (三)设备类型识别
[0243] 在进行模型训练后,可以得到具有自动判断设备类型能力的决策树分类器。
[0244] 使用决策树分类器对待分类项进行分类,将待分类项输入至决策树分类器,通过决策树分类器的分类处理,可以得到待分类项与设备类型的映射关系。
[0245] 通过上述实施例的方案,可以具有以下技术效果:
[0246] 1)大幅度提升了扫描IOT设备的效率,减少了扫描时间。
[0247] 2)大幅提升了IOT识别准确率,并且提升了IOT识别的覆盖场景。
[0248] 应该理解的是,虽然图2、5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0249] 在一个实施例中,如图8所示,该图提供了一种设备类型的识别装置,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:发送模块802、接收模块804、提取模块806、分类模块808和确定模块810,其中:
[0250] 发送模块802,用于向目标设备发送端口开闭状态探测包;
[0251] 接收模块804,用于接收目标设备响应于端口开闭状态探测包而反馈的端口开闭状态信息;
[0252] 提取模块806,用于从端口开闭状态信息中提取端口开闭状态特征;
[0253] 分类模块808,用于通过决策树分类器对端口开闭状态特征进行决策分类;
[0254] 确定模块810,用于根据决策分类所得的结果确定目标设备的设备类型。
[0255] 在一个实施例中,端口开闭状态信息包括至少两个目标设备的各端口处于开放或关闭时的端口开闭状态向量;提取模块806,还用于:
[0256] 将至少两个目标设备的端口开闭状态向量组成端口状态矩阵;
[0257] 确定端口状态矩阵各行或各列数据的均值;
[0258] 计算端口状态矩阵各行或各列数据与对应均值的差值,得到差值矩阵;
[0259] 确定差值矩阵的特征值和特征值对应的特征向量;
[0260] 按照目标维度从基于特征向量构成的特征矩阵中提取子特征矩阵,并将子特征矩阵作为端口开闭状态特征。
[0261] 在一个实施例中,提取模块806,还用于:
[0262] 将特征向量按照特征值的大小顺序进行排列,得到特征矩阵;
[0263] 从特征矩阵中,依据特征值从大到小的顺序提取目标维度的子特征矩阵。
[0264] 在一个实施例中,确定模块810,还用于从所述决策树分类器的根节点开始,在经过的节点处,基于所述端口开闭状态特征中与所述节点相应的特征属性进行决策分类,直至所述决策树分类器的叶子节点。
[0265] 在一个实施例中,决策树分类器中包含根节点、叶子节点和至少一个层级的中间节点;分类模块808,还用于:
[0266] 将端口开闭状态特征输入决策树分类器;
[0267] 基于端口开闭状态特征中与根节点相应的特征属性,确定端口开闭状态特征在决策树分类器的根节点处输出的第一输出分支;
[0268] 在与第一输出分支对应的中间节点处,基于端口开闭状态特征中与中间节点相应的特征属性确定第二输出分支;
[0269] 根据第二输出分支,将端口开闭状态特征从中间节点转移至对应的叶子节点。
[0270] 在一个实施例中,叶子节点中保存了设备类型;确定模块810,还用于:
[0271] 当端口开闭状态特征转移至对应的叶子节点时,读取叶子节点所保存的设备类型;
[0272] 将读取的设备类型作为目标设备的类型。
[0273] 在一个实施例中,如图9所示,该装置还包括:生成模块812;其中:
[0274] 生成模块812,用于依据目标通信协议生成用于探测目标设备中目标端口或所有端口的端口开闭状态探测包;
[0275] 发送模块802,用于向目标设备的目标端口或所有端口分别发送端口开闭状态探测包;其中,发送的端口开闭状态探测包,用于指示目标设备产生目标端口或所有端口的端口开闭状态信息并进行反馈。
[0276] 上述实施例中,在对目标设备进行设备类型的识别时,通过向目标设备发送端口开闭状态探测包,可以获得目标设备反馈的端口开闭状态信息,从而即便目标设备的端口身份被抹除,也不影响端口开闭状态信息的获得。此外,从端口开闭状态信息中提取端口开闭状态特征,通过决策树分类器对端口开闭状态特征进行决策分类,并根据决策分类所得的结果确定目标设备的设备类型,因此只需目标设备的端口开闭状态信息便可利用决策树分类器得到目标设备的设备类型,避免了因目标设备抹除端口身份而导致无法确地识别出设备的类型的问题。
[0277] 在一个实施例中,如图9所示,该装置还包括:处理模块814;其中:
[0278] 处理模块814,用于当根据设备类型确定目标设备为物联网设备时,获取目标设备的网络地址;当网络地址与预设风险设备的网络地址匹配时,拒绝响应目标设备发送的请求;或者,生成网络请求,并向被确定为目标设备持续发送生成的网络请求,以使目标设备停止服务。
[0279] 上述实施例中,对于被确定为风险设备的目标设备,通过拒绝响应该目标设备的请求,可以有效避免受到攻击;此外,通过持续向被确定为风险设备的目标设备发送网络请求,从而可以耗尽该目标设备的宽带资源和/或设备资源,使目标设备停止服务,从而可以避免终端本身受该目标设备的安全威胁,以及避免其它终端或服务器也可以避免受该目标设备的安全威胁,提高了信息和终端以及服务器的安全。
[0280] 在一个实施例中,如图9所示,该装置还包括:训练模块816;其中:
[0281] 训练模块816,用于获取样本设备各端口对应的训练端口开闭状态信息和设备类型标签;从训练端口开闭状态信息提取训练端口开闭状态特征;将训练端口开闭状态特征、设备类型标签和训练端口开闭状态信息输入至待训练决策树分类器中进行训练;当通过待训练决策树分类器预测的设备类型与设备类型标签之间的匹配率达到预设匹配条件时,得到决策树分类器。
[0282] 在一个实施例中,训练端口开闭状态信息为至少两个目标设备的各端口处于开放或关闭时的训练端口开闭状态向量;训练模块816,还用于:
[0283] 将各样本设备的训练端口开闭状态向量组成训练端口状态矩阵;
[0284] 确定训练端口状态矩阵中各行或各列数据的均值;
[0285] 计算训练端口状态矩阵中各行或各列数据与对应均值之间的训练差值,得到训练差值矩阵;
[0286] 确定训练差值矩阵的训练特征值和对应的训练特征向量;
[0287] 从基于训练特征向量构成的训练特征矩阵中,按照目标维度提取子特征矩阵;
[0288] 将子特征矩阵作为训练端口开闭状态特征。
[0289] 在一个实施例中,训练模块816,还用于:
[0290] 将训练特征向量按照训练特征值的大小顺序进行排列,得到训练特征矩阵;
[0291] 依据训练特征值从大到小的顺序,从基于训练特征向量构成的训练特征矩阵中提取目标维度的子特征矩阵。
[0292] 在一个实施例中,训练差值包括协方差;训练模块816,还用于:
[0293] 将训练端口开闭状态特征、设备类型标签和训练端口开闭状态信息输入至待训练决策树分类器;
[0294] 以训练端口开闭状态信息为属性集,从属性集中选择目标属性;
[0295] 在与目标属性对应的目标节点处生成目标分支,并确定端口开闭状态特征在目标节点的目标分支下的输出值;
[0296] 当输出值达到叶子节点条件时,将通过目标分支连接的下一级节点标记为叶子节点。
[0297] 在一个实施例中,训练模块816,还用于以基尼指数或信息增益为依据从属性集中选取目标属性。
[0298] 上述实施例中,利用样本设备各端口对应的训练端口开闭状态信息、训练端口开闭状态特征和设备类型标签对待训练决策树分类器进行训练,得到训练后的决策树分类器,而且该决策树分类器基于端口开闭状态信息对应的端口开闭状态特征进行决策分类得到设备类型,从而只需目标设备的端口开闭状态信息便可利用决策树分类器得到目标设备的设备类型,避免了因目标设备抹除端口身份而导致无法确地识别出设备的类型的问题。
[0299] 关于设备类型的识别装置的具体限定可以参见上文中对于设备类型的识别方法的限定,在此不再赘述。上述设备类型的识别装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0300] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种设备类型的识别方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0301] 本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0302] 在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
[0303] 在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
[0304] 在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
[0305] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
[0306] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0307] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。