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

恶意攻击的溯源方法、装置、服务器及计算机存储介质与流程

2022-11-23 09:47:20 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,特别涉及一种恶意攻击的溯源方法、装置、服务器及计算机存储介质。


背景技术:

2.面对日益复杂且频发的网络攻击,仅仅是能检测和防御网络攻击已经不能满足当前需求,还需要能够溯源追踪到攻击者真实身份。
3.目前,通常采用ip定位技术,从入侵日志、攻击流量等途径获取攻击者的ip,再根据ip锁定攻击者的物理地址。但是,ip定位技术会被一些有经验的黑客攻击者有意识的规避,例如:使用ip代理技术隐藏自己攻击地址,从而使得ip定位技术失效,大大加深的溯源的难度。


技术实现要素:

4.有鉴于此,本技术提供了一种恶意攻击的溯源方法、装置、服务器及计算机存储介质,用于精确地对恶意攻击进行溯源。
5.本技术第一方面提供了一种恶意攻击的溯源方法,包括:
6.获取形成恶意攻击的源代码信息;
7.将所述源代码信息输入至去匿名化模型中,由所述去匿名化模型得到可疑用户集合;其中,所述可疑用户集合包括至少一个可疑用户;所述去匿名化模型由多个源代码信息的训练样本以及所述源代码信息的训练样本对应的真实用户信息,对深度学习网络进行训练得到;
8.分别爬取每一个所述可疑用户的用户信息、以及所述可疑用户持有的代码仓库的仓库信息和代码仓库内容;其中,所述可疑用户持有的代码仓库保存有所述可疑用户参与的项目的源代码;
9.处理每一个所述可疑用户的用户信息、持有的代码仓库的仓库信息和代码仓库内容,得到每一个所述可疑用户的画像。
10.可选的,所述获取形成恶意攻击的源代码信息,包括:
11.获取形成所述恶意攻击的二进制文件;
12.解析所述二进制文件,得到伪代码信息;
13.获取所述伪代码信息对应的源代码信息。
14.可选的,所述将所述源代码信息输入至去匿名化模型中,由所述去匿名化模型得到可疑用户集合之前,还包括:
15.提取所述源代码信息中的词频逆频率特征;
16.其中,所述将所述源代码信息输入至去匿名化模型中,由所述去匿名化模型得到可疑用户集合,包括:
17.将所述词频逆频率特征输入至所述去匿名化模型中,由所述去匿名化模型得到所
述可疑用户集合。
18.可选的,所述分别爬取每一个所述可疑用户的用户信息、以及所述可疑用户持有的代码仓库的仓库信息和代码仓库内容,包括:
19.利用用户信息爬虫,爬取每一个所述可疑用户的个人信息、所述可疑用户参与的组织的组织信息、以及组织内的成员信息;并将爬取得到的每一个所述可疑用户的个人信息、所述可疑用户参与的组织的组织信息、以及组织内的成员信息以预定格式的文件进行保存,得到每一个所述可疑用户的用户信息;
20.利用仓库信息爬虫,爬取每一个所述可疑用户持有的代码仓库的基本信息、以及仓库提交信息;并将爬取得到的每一个所述可疑用户持有的代码仓库的基本信息保存为预定格式的第一文件,将爬取得到的仓库提交信息保存为预定格式的第二文件;其中,所述第一文件和第二文件为所述可疑用户持有的代码仓库的仓库信息;所述可疑用户持有的代码仓库的仓库提交信息为所述用户提交项目的源代码信息的描述信息;
21.利用仓库下载爬虫,爬取每一个所述可疑用户持有的代码仓库的代码仓库内容,并将爬取得到的每一个所述可疑用户持有的代码仓库的代码仓库内容按照编程语言分类。
22.可选的,所述处理每一个所述可疑用户的用户信息、持有的代码仓库的仓库信息和代码仓库内容,得到每一个所述可疑用户的画像,包括:
23.从每一个所述可疑用户的用户信息、持有的代码仓库的仓库信息和代码仓库内容中,筛选出每一个所述可疑用户在画像描述维度下的数据;其中,所述画像描述维度为多个,且每一个画像描述维度下的数据在一个方面描述可疑用户;
24.针对每一个所述可疑用户,在将筛选得到的将所述可疑用户在画像描述维度下的数据和画像描述维度进行对应映射,得到每一个所述可疑用户的画像。
25.可选的,所述去匿名化模型的训练方法,包括:
26.构建训练样本集;其中,所述训练样本集中包括多个训练样本以及每一个所述训练样本对应的真实用户信息;所述训练样本为源代码信息;
27.将所述训练样本输入至深度学习网络模型中,由所述深度学习网络模型得到预测用户信息;
28.将所述预测用户信息与所述真实用户信息的交叉熵作为损失函数;
29.判断所述损失函数是否满足预设的收敛条件;
30.若判断出所述损失函数不满足预设的收敛条件,则对所述深度学习网络模型中的参数进行调整,直至调整后的深度学习网络模型的损失函数满足预设的收敛条件,将所述调整后的深度学习网络模型作为所述去匿名化模型。
31.可选的,所述构建训练样本集,包括:
32.爬取每一个通过网络接口的用户的用户信息;其中,所述用户信息包括所述用户的关注者的信息和所述用户关注的人的信息;
33.根据所述用户的关注者的信息以及所述用户关注的人的信息,构造所述用户对应的用户递归树;
34.分别爬取每一个所述用户递归树中的用户持有的代码仓库的仓库信息;其中,所述代码仓库的仓库信息包括:所述用户持有的代码仓库的基本信息、仓库提交信息以及仓库内容的下载地址;所述用户持有的代码仓库的项目提交信息为所述用户提交项目的源代
码信息的描述信息;
35.从所述仓库内容的下载地址中下载所述用户递归树中的用户持有的代码仓库的仓库内容;其中,下载得到的所述用户递归树中的用户持有的代码仓库的仓库内容,作为所述训练样本。
36.可选的,所述将所述训练样本输入至深度学习网络模型中,由所述深度学习网络模型得到预测用户信息之前,还包括:
37.提取所述训练样本中的词频逆频率特征;
38.其中,将所述训练样本输入至深度学习网络模型中,由所述深度学习网络模型得到预测用户信息,包括:
39.将所述词频逆频率特征输入至深度学习网络模型中,由所述深度学习网络模型得到预测用户信息。
40.可选的,所述深度学习网络模型采用泄露修正线性单元作为激活函数的全连接层、批量标准化层以及softmax函数搭建;或者,所述深度学习网络模型采用泄露修正线性单元作为激活函数的全连接层、批量标准化层以及随机森林算法搭建;
41.所述深度学习网络模型采用自适应矩估计优化器进行训练。
42.本技术第二方面提供了一种恶意攻击的溯源装置,包括:
43.第一获取单元,用于获取形成恶意攻击的源代码信息;
44.第一输入单元,用于将所述源代码信息输入至去匿名化模型中,由所述去匿名化模型得到可疑用户集合;其中,所述可疑用户集合包括至少一个可疑用户;所述去匿名化模型由多个源代码信息的训练样本以及所述源代码信息的训练样本对应的真实用户信息,对深度学习网络模型进行训练得到;
45.第一爬取单元,用于分别爬取每一个所述可疑用户的用户信息、以及所述可疑用户持有的代码仓库的仓库信息和代码仓库内容;其中,所述可疑用户持有的代码仓库保存有所述可疑用户参与的项目的源代码;
46.处理单元,用于处理每一个所述可疑用户的用户信息、持有的代码仓库的仓库信息和代码仓库内容,得到每一个所述可疑用户的画像。
47.可选的,所述第一获取单元包括:
48.二进制文件获取单元,用于获取形成所述恶意攻击的二进制文件;
49.解析单元,用于解析所述二进制文件,得到伪代码信息;
50.第一获取子单元,用于获取所述伪代码信息对应的源代码信息。
51.可选的,所述恶意攻击的溯源装置,还包括:
52.第一提取单元,用于提取所述源代码信息中的词频逆频率特征;
53.其中,所述第一输入单元,用于:
54.将所述词频逆频率特征输入至所述去匿名化模型中,由所述去匿名化模型得到所述可疑用户集合。
55.可选的,所述第一爬取单元,包括:
56.用户信息爬取单元,用于利用用户信息爬虫,爬取每一个所述可疑用户的个人信息、所述可疑用户参与的组织的组织信息、以及组织内的成员信息;并将爬取得到的每一个所述可疑用户的个人信息、所述可疑用户参与的组织的组织信息、以及组织内的成员信息
以预定格式的文件进行保存,得到每一个所述可疑用户的用户信息;
57.仓库信息爬取单元,用于利用仓库信息爬虫,爬取每一个所述可疑用户持有的代码仓库的基本信息、以及仓库提交信息;并将爬取得到的每一个所述可疑用户持有的代码仓库的基本信息保存为预定格式的第一文件,将爬取得到的仓库提交信息保存为预定格式的第二文件;其中,所述第一文件和第二文件为所述可疑用户持有的代码仓库的仓库信息;所述可疑用户持有的代码仓库的仓库提交信息为所述用户提交项目的源代码信息的描述信息;
58.仓库内容爬取单元,用于利用仓库下载爬虫,爬取每一个所述可疑用户持有的代码仓库的代码仓库内容,并将爬取得到的每一个所述可疑用户持有的代码仓库的代码仓库内容按照编程语言分类。
59.可选的,所述处理单元,包括:
60.筛选单元,用于从每一个所述可疑用户的用户信息、持有的代码仓库的仓库信息和代码仓库内容中,筛选出每一个所述可疑用户在画像描述维度下的数据;其中,所述画像描述维度为多个,且每一个画像描述维度下的数据在一个方面描述可疑用户;
61.映射单元,用于针对每一个所述可疑用户,在将筛选得到的将所述可疑用户在画像描述维度下的数据和画像描述维度进行对应映射,得到每一个所述可疑用户的画像。
62.可选的,所述去匿名化模型的训练单元,包括:
63.构建单元,用于构建训练样本集;其中,所述训练样本集中包括多个训练样本以及每一个所述训练样本对应的真实用户信息;所述训练样本为源代码信息;
64.第二输入单元,用于将所述训练样本输入至深度学习网络模型中,由所述深度学习网络模型得到预测用户信息;
65.计算单元,用于将所述预测用户信息与所述真实用户信息的交叉熵作为损失函数;
66.判断单元,用于判断所述损失函数是否满足预设的收敛条件;
67.确定单元,用于若所述判断单元判断出,所述损失函数不满足预设的收敛条件,则对所述深度学习网络模型中的参数进行调整,直至调整后的深度学习网络模型的损失函数满足预设的收敛条件,将所述调整后的深度学习网络模型作为所述去匿名化模型。
68.可选的,所述构建单元,包括:
69.第二爬取单元,用于爬取每一个通过网络接口的用户的用户信息;其中,所述用户信息包括所述用户的关注者的信息和所述用户关注的人的信息;
70.构造单元,用于根据所述用户的关注者的信息以及所述用户关注的人的信息,构造所述用户对应的用户递归树;
71.第三爬取单元,用于分别爬取每一个所述用户递归树中的用户持有的代码仓库的仓库信息;其中,所述代码仓库的仓库信息包括:所述用户持有的代码仓库的基本信息、仓库提交信息以及仓库内容的下载地址;所述用户持有的代码仓库的项目提交信息为所述用户提交项目的源代码信息的描述信息;
72.下载单元,用于从所述仓库内容的下载地址中下载所述用户递归树中的用户持有的代码仓库的仓库内容;其中,下载得到的所述用户递归树中的用户持有的代码仓库的仓库内容,作为所述训练样本。
73.可选的,所述恶意攻击的溯源装置,还包括:
74.第二提取单元,用于提取所述训练样本中的词频逆频率特征;
75.其中,所述第二输入单元,用于:
76.将所述词频逆频率特征输入至深度学习网络模型中,由所述深度学习网络模型得到预测用户信息。
77.可选的,所述深度学习网络模型采用泄露修正线性单元作为激活函数的全连接层、批量标准化层以及softmax函数搭建;或者,所述深度学习网络模型采用泄露修正线性单元作为激活函数的全连接层、批量标准化层以及随机森林算法搭建;
78.所述深度学习网络模型采用自适应矩估计优化器进行训练。
79.本技术第三方面提供了一种服务器,包括:
80.一个或多个处理器;
81.存储装置,其上存储有一个或多个程序;
82.当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如第一方面任意一项所述的方法。
83.本技术第四方面提供了一种计算机存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如第一方面任意一项所述的方法。
84.由以上方案可知,本技术提供的一种恶意攻击的溯源方法、装置、服务器及计算机存储介质中,通过将源代码信息输入至去匿名化模型中,由去匿名化模型得到可疑用户集合;其中,可疑用户集合包括至少一个可疑用户;去匿名化模型由多个源代码信息的训练样本以及源代码信息的训练样本对应的真实用户信息,对深度学习网络模型进行训练得到;然后,分别爬取每一个可疑用户的用户信息、以及可疑用户持有的代码仓库的仓库信息和代码仓库内容;其中,可疑用户持有的代码仓库保存有可疑用户参与的项目的源代码;最终,处理每一个可疑用户的用户信息、持有的代码仓库的仓库信息和代码仓库内容,得到每一个可疑用户的画像。从而达到精确地对恶意攻击进行溯源的目的。
附图说明
85.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
86.图1为本技术实施例提供的一种恶意攻击的溯源方法的具体流程图;
87.图2为本技术实施例提供的一种将二进制文件转化为源代码信息的方法的流程图;
88.图3为现有技术中relu的函数图像;
89.图4为采用adam优化器对深度学习网络模型进行训练时的损失函数图像;
90.图5为采用adam优化器对深度学习网络模型进行训练过程中的精确度图像;
91.图6为本技术实施例提供的一种深度学习网络模型的结构示意图;
92.图7为本技术实施例提供的一种最终的去匿名化模型的示意图;
93.图8为不同参数下随机森林分类层的准确率示意图;
94.图9为本技术实施例提供的一种去匿名化模型的训练方法的流程图;
95.图10为本技术实施例提供的一种构建训练样本集的具体流程图;
96.图11为本技术实施例提供的一种获取得到训练样本的整体结构示意图;
97.图12为不同的tf-idf特征数量对分类精度的影响的示意图;
98.图13为本技术实施例提供的一种分别爬取每一个可疑用户的用户信息、以及可疑用户持有的代码仓库的仓库信息和代码仓库内容的方法的流程图;
99.图14为本技术实施例提供的一种生成可疑用户的画像的方法的流程图;
100.图15为本技术实施例提供的一种可疑用户的画像的示意图;
101.图16为本技术另一实施例提供的一种恶意攻击的溯源装置的示意图;
102.图17为本技术另一实施例提供的一种实现恶意攻击的溯源方法的服务器的示意图。
具体实施方式
103.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
104.需要注意,本技术中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系,而术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
105.本技术实施例提供了一种恶意攻击的溯源方法,如图1所示,具体包括以下步骤:
106.s101、获取形成恶意攻击的源代码信息。
107.其中,源代码信息可以是在形成本次恶意攻击时,服务器获取的形成本次恶意攻击,所残留的源代码信息;也可以是截取形成本次恶意攻击的部分源代码信息;也可以是由取证人员上传至服务器的形成本次恶意攻击,所残留的源代码信息;也可以是由取证人员上传至服务器的,形成本次恶意攻击的部分源代码信息等,此处不做限定。
108.如若只能获取形成恶意攻击的二进制文件,那么,步骤s101的一种实施方式,如图2所示,具体包括:
109.s201、获取形成恶意攻击的二进制文件。
110.其中,源代码信息可以是在形成本次恶意攻击时,服务器获取的形成本次恶意攻击,所残留的二进制文件;也可以是截取形成本次恶意攻击的部分二进制文件;也可以是由取证人员上传至服务器的形成本次恶意攻击,所残留的二进制文件;也可以是由取证人员上传至服务器的,形成本次恶意攻击的部分二进制文件等,此处不做限定。
111.s202、解析二进制文件,得到伪代码信息。
112.具体的,解析获取得到的二进制文件,得到形成二级制文件的伪代码信息。
113.s203、获取伪代码信息对应的源代码信息。
114.将伪代码信息转化为对应的、可以实现的源代码信息。
115.s102、将源代码信息输入至去匿名化模型中,由去匿名化模型得到可疑用户集合。
116.其中,可疑用户集合包括至少一个可疑用户;去匿名化模型由多个源代码信息的训练样本以及源代码信息的训练样本对应的真实用户信息,对深度学习网络模型进行训练得到。
117.需要说明的是,本技术采用的深度学习网络模型可以是但不限于,采用泄露修正线性单元(leakyrelu)作为激活函数的全连接层(fully-connected)、批量标准化层(batch normalization)以及softmax函数搭建;所述深度学习网络模型采用泄露修正线性单元作为激活函数的全连接层、批量标准化层以及随机森林算法搭建等。
118.例如:采用5个泄露修正线性单元作为激活函数的全连接层与3个批量标准化层搭建深度学习网络模型,其中,全连接层的神经元数为1024,最后再添加一层softmax函数。
119.在构建深度学位网络模型的网络层时可以采用但不限于tensorflow框架。
120.目前,修正线性单元(relu)是深度学习中使用的激活函数,它的数学表达式为:
121.relu(x)=max(0,x);
122.如图3所示,是relu的函数图像,可以看出只有输入超过阈值时,神经元才会激活,在使用梯度下降法进行优化时,收敛速度相比现有的sigmoid和tanh函数要更快。但是当输入为负时,梯度将永远是0,神经元也会停止训练。因此,为了解决relu函数的在这个问题,在relu函数的负半区间引入一个泄露值,从而得到泄露修正线性单元(leakyrelu)函数:
[0123][0124]
可以看出,leakyrelu的输出对负值输入有很小的坡度,由于导数不总是为0,这能减少静默神经元的出现,允许基于梯度的学习。因此,本技术选择leakyrelu函数作为除最后一层外,每一层的激活函数。
[0125]
在训练深度学习网络模型时,标准化输入可以提高训练的速度,通常在用的方法是对训练集进行归一化,即将原始数据减去均值μ后,再除以方差σ2。但是,标准化的输入只是对输入进行了处理,随着深度学习网络模型的深度加深,隐藏层的输入分布逐渐发生偏移,从而导致每层学习到的特征分布被破坏,最终导致训练收敛变慢。为了解决该问题,本技术采用在每个全连接层后都增加一个batch normalization层。
[0126]
其中,batch normalization层引入了可学习重构参数γ、β,让网络可以学习恢复原始网络所要学习的特征分布,batch normalization网络层的前向传到过程公式为:
[0127][0128][0129]
[0130][0131]
其中,h为防止除零引入的极小量,j为mini-batch的值,j={x
1...m
}。
[0132]
深度学习网络模型在训练的过程中可以是但不限于,采用自适应矩估计(adaptive moment estimation,adam)优化器进行训练。adam相对于sgd,rmsprop等优化器占用更少的内存,同时收敛的速度更快。可以将adam学习步长lr设置为0.001,batch的大小设为32,迭代次数epoch为1000。如图4所示为采用adam优化器对深度学习网络模型进行训练时的损失函数图像,图5为采用adam优化器对深度学习网络模型进行训练过程中的精确度图像。
[0133]
同时,为了提高去匿名化模型的对可以用户集合识别的准确度,在将源代码信息输入至去匿名化模型中,由去匿名化模型得到可疑用户集合之前,还可以先对源代码信息进行预处理,可以是但不限于采用词频逆文本频率指数(term frequency

inverse document frequency,tf-idf)算法对源代码信息进行数据预处理,从而提取源代码信息中的词频逆频率特征,之后,再将词频逆频率特征输入至去匿名化模型中,由去匿名化模型得到可疑用户集合。
[0134]
其中,tf-idf算法用以评估一个字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时也会随着它在语料库中出现的频率成反比下降。
[0135]
如图6所示,为深度学习网络模型的结构示意图,在搭建好深度学习网络模型后,使用深度学习网络模型对训练样本进行预测,根据深度学习网络模型产生的判断结果判断是否可以将深度学习网络模型作为最终的去匿名化模型。
[0136]
如图7所示,为最终的去匿名化模型的示意图,首先将代码文件,即源代码文件经过tf-idf进行数据预处理,提取得到源代码信息中的词频逆频率特征,之后,再将词频逆频率特征输入至深度神经网络中提取特征,最终,可以通过但不限于通过softmax函数层、随机森林分类层等,识别可能是源代码的至少一个作者,即可疑用户集合。其中,在使用随机森林分类层时,使用的框架是scikit-learn。
[0137]
需要说明的是,基于多次的实验结果,如图8所示,可以看出设置随机森林的子树个数为200时分类的准确率能达到最高。
[0138]
可选的,在本技术的另一实施例中,去匿名化模型的训练方法的一种实施方式,如图9所示,包括:
[0139]
s901、构建训练样本集。
[0140]
其中,训练样本集中包括多个训练样本以及每一个训练样本对应的真实用户信息;训练样本为源代码信息。
[0141]
需要说明的是,训练样本集中的多个训练样本以及每一个训练样本对应的真实用户信息,可以通过但不限于通过爬虫的方式在网站上、平台上等进行爬取得到。
[0142]
可选的,在本技术的另一实施例中,步骤s901的一种实施方式,如图10所示,包括:
[0143]
s1001、爬取每一个通过网络接口的用户的用户信息。
[0144]
其中,用户信息包括用户的关注者的信息和用户关注的人的信息。
[0145]
以在github上爬取用户的用户信息为例,通过用户信息爬虫,爬取通过github的
rest api接口“https://api.github.com/users/[用户名]”,请求得到json字典形式的某个github用户的相关信息,包括用户名(login)、个人简介(bio)、关注者(followers)、关注的人(following)等。
[0146]
可以理解的是,每请求一次github api就可得到一名用户的用户信息,之后将github api用户信息中有用的条目格式化并保存到数据库中。
[0147]
s1002、根据用户的关注者的信息以及用户关注的人的信息,构造用户对应的用户递归树。
[0148]
s1003、分别爬取每一个用户递归树中的用户持有的代码仓库的仓库信息。
[0149]
其中,代码仓库的仓库信息包括:用户持有的代码仓库的基本信息、仓库提交信息以及仓库内容的下载地址;用户持有的代码仓库的项目提交信息为用户提交项目的源代码信息的描述信息。
[0150]
继续以在github进行爬取信息为例,利用仓库信息爬虫用户信息爬虫获取到的用户信息中取出代码仓库数量大于0的用户,通过github的rest api接口“https://api.github.com/users/[用户名]/repos”,请求得到列表形式的某个github用户所持有的代码仓库(repository)的详细信息,包括仓库名(name)、项目提交信息(commits_url)、下载链接(archive_url)等。
[0151]
需要说明的是,每请求一次github api就可得到最多100个仓库的信息,通过url参数page和per_page可以控制每次返回的仓库数量。之后将上述表格中有用的条目格式化并保存到数据库中。
[0152]
s1004、从仓库内容的下载地址中下载用户递归树中的用户持有的代码仓库的仓库内容。
[0153]
其中,下载得到的用户递归树中的用户持有的代码仓库的仓库内容,作为训练样本。
[0154]
需要说明的是,从仓库内容的下载方式可以是但不限于tarball、zipball等,此处不做限定,采用tarball的方式进行下载时,保存为tar.gz格式,采用zipball的方式进行下载时,保存为zip格式。
[0155]
可以理解的是,从仓库内容的下载地址中下载用户递归树中的用户持有的代码仓库的仓库内容的耗时较长,因此,可以采用异步的方式,同时限制了并发下载的线程数量,保证能在最优的时间内将远程的代码仓库给下载到本地。在下载完成代码仓库后,在本地生成一个以该仓库名为名字的zip文件,再通过解压、筛选代码文件的操作,将其他不需要的文件删除,仅保留所占空间相对较小的源代码信息,从而更节省爬虫后台的磁盘空间。
[0156]
如图11所示,为获取得到训练样本的整体结构示意图,首先通过用户信息爬虫通过github api爬取得到了用户a的用户信息,其中有用户a的following和followers,根据用户的关注者的信息以及用户关注的人的信息,构造用户对应的用户递归树,将用户递归树中的用户去重后,得到用户a的信息队列,将用户a的信息队列异步存储至用户表中,并将用户表中的用户进行筛选后得到最终的用户队列;然后,仓库信息爬虫对最终的用户队列中的每一个用户持有的代码仓库的仓库信息,将仓库信息去重后,得到仓库信息队列,将仓库信息队列异步存储至仓库表中,并将仓库信息队列中的仓库信息进行筛选后,得到最终的仓库信息队列;从仓库内容的下载地址中下载用户递归树中的用户持有的代码仓库的仓
库内容,即训练样本,对训练样本进行筛选后,形成仓库代码队列,最终,训练样本按照编程语言进行分类后进行存储。
[0157]
s902、将训练样本输入至深度学习网络模型中,由深度学习网络模型得到预测用户信息。
[0158]
为了提高训练后的深度学习网络模型的准确度,在将训练样本输入至深度学习网络模型中,由深度学习网络模型得到预测用户信息之前,还可以先对训练样本进行预处理,可以是但不限于采用词频逆文本频率指数(term frequency

inverse document frequency,tf-idf)算法对训练样本进行数据预处理,从而提取训练样本中的词频逆频率特征。
[0159]
其中,tf-idf算法用以评估一个字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时也会随着它在语料库中出现的频率成反比下降。
[0160]
将训练样本输入至tf-idf模型中,输出的每份代码的向量表示如下:
[0161]
[tf-idf(t1,di,d),tf-idf(t2,di,d),

,tf-idf(tn,di,d)];
[0162]
其中,n是训练样本集d中训练样本的总数。但是,如果训练样本集中有几千甚至上万份代码文件,将会导致所输出的特征向量的维度过大。因此,以在训练样本集中出现频率最高的k个词作为初始特征。该模块使用scikit-learn机器学习库中countvectorizer和tfidftransformer类实现了tf-idf模型。
[0163]
需要说明的是,k的值应随着代码的数量的变化进行调整,以611个作者每人9份c 代码的情况为例,如图12所示,通过实验证明k取3000时深度学习网络模型能达到最高的准确率。
[0164]
s903、将预测用户信息与真实用户信息的交叉熵作为损失函数。
[0165]
s904、判断损失函数是否满足预设的收敛条件。
[0166]
其中,预设的收敛条件是技术人员等进行预先设置的,并且是可以根据实际的应用情况,应用场景等进行调整的,此处不做限定。
[0167]
具体的,若判断出损失函数不满足预设的收敛条件,则执行步骤s905;若判断出损失函数满足预设的收敛条件,则执行步骤s906。
[0168]
s905、对深度学习网络模型中的参数进行调整。
[0169]
s906、将深度学习网络模型作为去匿名化模型。
[0170]
可以理解的是,本实施例在实施的过程中,也可以采用预设一个最大训练轮数的方式,持续训练深度学习网络模型直至达到最大训练轮数,将达到最大训练轮数的深度学习网络模型作为去匿名化模型。
[0171]
s103、分别爬取每一个可疑用户的用户信息、以及可疑用户持有的代码仓库的仓库信息和代码仓库内容。
[0172]
其中,可疑用户持有的代码仓库保存有可疑用户参与的项目的源代码。
[0173]
可选的,在本技术的另一实施例中,步骤s103的一种实施方式,如图13所示,具体包括:
[0174]
s1301、利用用户信息爬虫,爬取每一个可疑用户的个人信息、可疑用户参与的组织的组织信息、以及组织内的成员信息;并将爬取得到的每一个可疑用户的个人信息、可疑
用户参与的组织的组织信息、以及组织内的成员信息以预定格式的文件进行保存,得到每一个可疑用户的用户信息。
[0175]
其中,可疑用户的个人信息至少包括用户名、用户id、用户头像、用户主页、用户的个人简介等;可疑用户参与的组织的组织信息至少包括组织名、组织id、组织头像、组织主页、组织简介等;组织内的成员信息至少包括:成员名、成员id、成员头像、成员主页、成员个人简介等。
[0176]
由于,有的用户可能参与了一些github中的组织,与组织内的成员共同协作开发一些项目。因此,通过github组织信息可以发掘目标用户更深一层的交际关系,他们在现实生活中可能互为好友、同事,共同维护着若干个项目,所以,可能会拥有同样的或者相似的编程习惯等。
[0177]
需要说明的是,可以是但不限于将爬取得到的每一个可疑用户的个人信息、可疑用户参与的组织的组织信息、以及组织内的成员信息格式化为json文件,如:user.json,得到每一个可疑用户的用户信息,并将其保存到本地供前端向用户展示。
[0178]
s1302、利用仓库信息爬虫,爬取每一个可疑用户持有的代码仓库的基本信息、以及仓库提交信息;并将爬取得到的每一个可疑用户持有的代码仓库的基本信息保存为预定格式的第一文件,将爬取得到的仓库提交信息保存为预定格式的第二文件。
[0179]
其中,第一文件和第二文件为可疑用户持有的代码仓库的仓库信息,其中至少包括仓库名、仓库id、仓库简介、仓库主页、仓库收藏数量等;可疑用户持有的代码仓库的仓库提交信息为用户提交项目的源代码信息的描述信息,其中,至少包括提交项目时的提交者、提交时间、提交内容的等。
[0180]
由于,一个仓库可能存在着多名贡献者,他们共同参与了该项目的开发与维护,通过对该用户的所有仓库贡献者信息的爬取,将该用户和其他贡献者相联系,并结合用户组织成员信息,从中可以归纳出与该用户关系最为密切的相关的github用户。
[0181]
其中,用来对仓库贡献者信息进行爬取请求的url形式可以为但不限于:https://api.github.com/repos/[用户名]/[仓库名]/contributers?page=1&per_page=100。可以理解的是,为了更精确地进行归纳统计,对于一些公共的大项目,因此,只取对仓库贡献最多的前一百名贡献者;git hub api还会默认按照贡献次数将这些贡献者进行降序排列,根据排列顺序这些排名靠前的贡献者更有可能与目标用户存在关系。
[0182]
需要说明的是,可以是但不限于将爬取得到的每一个可疑用户持有的代码仓库的基本信息格式化为json文件,如:repos.json;将爬取得到的仓库提交信息格式化为json文件,如:commits.json,并保存到本地供前端向用户展示。
[0183]
s1303、利用仓库下载爬虫,爬取每一个可疑用户持有的代码仓库的代码仓库内容,并将爬取得到的每一个可疑用户持有的代码仓库的代码仓库内容按照编程语言分类。
[0184]
s104、处理每一个可疑用户的用户信息、持有的代码仓库的仓库信息和代码仓库内容,得到每一个可疑用户的画像。
[0185]
在得到每一个可疑用户的画像后,可以通过可以用户的画像辅助相关部门对利用恶意代码进行网络攻击的黑客或者组织进行溯源分析。
[0186]
可选的,在本技术的另一实施例中,步骤s104的一种实施方式,如图14所示,具体包括:
[0187]
s1401、从每一个可疑用户的用户信息、持有的代码仓库的仓库信息和代码仓库内容中,筛选出每一个可疑用户在画像描述维度下的数据。
[0188]
其中,画像描述维度为多个,且每一个画像描述维度下的数据在一个方面描述可疑用户。
[0189]
如图15所示,为可疑用户的画像的示意图,其中,github用户分析统计内容,及上述的可疑用户的画像,其中包含了用户基本信息、提取github pages、组织信息、仓库信息、函数、相关者、用户总提交次数、提交月份统计、提交星期统计、提交时间点统计、函数stats_blank、工作时间端统计、习惯的工作时间、编程语言统计、使用最多的语言、编程风格统计等。具体的,从每一个可疑用户的用户信息、持有的代码仓库的仓库信息和代码仓库内容中,筛选出每一个可疑用户在上述画像描述维度下的数据。
[0190]
s1402、针对每一个可疑用户,在将筛选得到的将可疑用户在画像描述维度下的数据和画像描述维度进行对应映射,得到每一个可疑用户的画像。
[0191]
由以上方案可知,本技术提供了一种恶意攻击的溯源方法,通过将源代码信息输入至去匿名化模型中,由去匿名化模型得到可疑用户集合;其中,可疑用户集合包括至少一个可疑用户;去匿名化模型由多个源代码信息的训练样本以及源代码信息的训练样本对应的真实用户信息,对深度学习网络模型进行训练得到;然后,分别爬取每一个可疑用户的用户信息、以及可疑用户持有的代码仓库的仓库信息和代码仓库内容;其中,可疑用户持有的代码仓库保存有可疑用户参与的项目的源代码;最终,处理每一个可疑用户的用户信息、持有的代码仓库的仓库信息和代码仓库内容,得到每一个可疑用户的画像。从而达到精确地对恶意攻击进行溯源的目的。
[0192]
本技术另一实施例提供了一种恶意攻击的溯源装置,如图16所示,具体包括:
[0193]
第一获取单元1601,用于获取形成恶意攻击的源代码信息。
[0194]
可选的,在本技术的另一实施例中,第一获取单元1601的一种实施方式,包括:
[0195]
二进制文件获取单元,用于获取形成恶意攻击的二进制文件。
[0196]
解析单元,用于解析二进制文件,得到伪代码信息。
[0197]
第一获取子单元,用于获取伪代码信息对应的源代码信息。
[0198]
本技术上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,如图2所示,此处不再赘述。
[0199]
第一输入单元1602,用于将源代码信息输入至去匿名化模型中,由去匿名化模型得到可疑用户集合。
[0200]
其中,可疑用户集合包括至少一个可疑用户;去匿名化模型由多个源代码信息的训练样本以及源代码信息的训练样本对应的真实用户信息,对深度学习网络模型进行训练得到。
[0201]
第一爬取单元1603,用于分别爬取每一个所述可疑用户的用户信息、以及可疑用户持有的代码仓库的仓库信息和代码仓库内容。
[0202]
其中,可疑用户持有的代码仓库保存有可疑用户参与的项目的源代码。
[0203]
可选的,在本技术的另一实施例中,第一爬取单元1603的一种实施方式,包括:
[0204]
用户信息爬取单元,用于利用用户信息爬虫,爬取每一个可疑用户的个人信息、可疑用户参与的组织的组织信息、以及组织内的成员信息;并将爬取得到的每一个可疑用户
的个人信息、可疑用户参与的组织的组织信息、以及组织内的成员信息以预定格式的文件进行保存,得到每一个可疑用户的用户信息。
[0205]
仓库信息爬取单元,用于利用仓库信息爬虫,爬取每一个可疑用户持有的代码仓库的基本信息、以及仓库提交信息;并将爬取得到的每一个可疑用户持有的代码仓库的基本信息保存为预定格式的第一文件,将爬取得到的仓库提交信息保存为预定格式的第二文件。
[0206]
其中,第一文件和第二文件为可疑用户持有的代码仓库的仓库信息;可疑用户持有的代码仓库的仓库提交信息为用户提交项目的源代码信息的描述信息。
[0207]
仓库内容爬取单元,用于利用仓库下载爬虫,爬取每一个可疑用户持有的代码仓库的代码仓库内容,并将爬取得到的每一个可疑用户持有的代码仓库的代码仓库内容按照编程语言分类。
[0208]
本技术上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,如图13所示,此处不再赘述。
[0209]
处理单元1604,用于处理每一个可疑用户的用户信息、持有的代码仓库的仓库信息和代码仓库内容,得到每一个可疑用户的画像。
[0210]
本技术上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,如图1所示,此处不再赘述。
[0211]
可选的,在本技术的另一实施例中,处理单元1604的一种实施方式,包括:
[0212]
筛选单元,用于从每一个可疑用户的用户信息、持有的代码仓库的仓库信息和代码仓库内容中,筛选出每一个可疑用户在画像描述维度下的数据。
[0213]
其中,画像描述维度为多个,且每一个画像描述维度下的数据在一个方面描述可疑用户。
[0214]
映射单元,用于针对每一个可疑用户,在将筛选得到的将可疑用户在画像描述维度下的数据和画像描述维度进行对应映射,得到每一个可疑用户的画像。
[0215]
本技术上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,如图14所示,此处不再赘述。
[0216]
可选的,在本技术的另一实施例中,去匿名化模型的训练单元的一种实施方式,包括:
[0217]
构建单元,用于构建训练样本集。
[0218]
其中,训练样本集中包括多个训练样本以及每一个训练样本对应的真实用户信息;训练样本为源代码信息。
[0219]
第二输入单元,用于将训练样本输入至深度学习网络模型中,由深度学习网络模型得到预测用户信息。
[0220]
计算单元,用于将预测用户信息与真实用户信息的交叉熵作为损失函数。
[0221]
判断单元,用于判断损失函数是否满足预设的收敛条件。
[0222]
确定单元,用于若判断单元判断出,损失函数不满足预设的收敛条件,则对深度学习网络模型中的参数进行调整,直至调整后的深度学习网络模型的损失函数满足预设的收敛条件,将调整后的深度学习网络模型作为去匿名化模型。
[0223]
本技术上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,
如图9所示,此处不再赘述。
[0224]
可选的,在本技术的另一实施例中,构建单元的一种实施方式,包括:
[0225]
第二爬取单元,用于爬取每一个通过网络接口的用户的用户信息。
[0226]
其中,用户信息包括用户的关注者的信息和用户关注的人的信息。
[0227]
构造单元,用于根据用户的关注者的信息以及用户关注的人的信息,构造用户对应的用户递归树。
[0228]
第三爬取单元,用于分别爬取每一个用户递归树中的用户持有的代码仓库的仓库信息。
[0229]
其中,代码仓库的仓库信息包括:用户持有的代码仓库的基本信息、仓库提交信息以及仓库内容的下载地址;用户持有的代码仓库的项目提交信息为用户提交项目的源代码信息的描述信息。
[0230]
下载单元,用于从仓库内容的下载地址中下载用户递归树中的用户持有的代码仓库的仓库内容。
[0231]
其中,下载得到的用户递归树中的用户持有的代码仓库的仓库内容,作为训练样本。
[0232]
本技术上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,如图10所示,此处不再赘述。
[0233]
可选的,在本技术的另一实施例中,恶意攻击的溯源装置的一种实施方式,还包括:
[0234]
第一提取单元,用于提取源代码信息中的词频逆频率特征。
[0235]
其中,第一输入单元1602,用于:
[0236]
将词频逆频率特征输入至去匿名化模型中,由去匿名化模型得到可疑用户集合。
[0237]
本技术上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,此处不再赘述。
[0238]
可选的,在本技术的另一实施例中,恶意攻击的溯源装置的一种实施方式,还包括:
[0239]
第二提取单元,用于提取训练样本中的词频逆频率特征。
[0240]
其中,第二输入单元,用于:
[0241]
将词频逆频率特征输入至深度学习网络模型中,由深度学习网络模型得到预测用户信息。
[0242]
本技术上述实施例公开的单元的具体工作过程,可参见对应的方法实施例内容,此处不再赘述。
[0243]
可选的,深度学习网络模型采用泄露修正线性单元作为激活函数的全连接层、批量标准化层以及softmax函数搭建;或者,深度学习网络模型采用泄露修正线性单元作为激活函数的全连接层、批量标准化层以及随机森林算法搭建;深度学习网络模型采用自适应矩估计优化器进行训练。
[0244]
由以上方案可知,本技术提供了一种恶意攻击的溯源装置,通过第一输入单元1602将第一获取单元1601获取得到的源代码信息输入至去匿名化模型中,由去匿名化模型得到可疑用户集合;其中,可疑用户集合包括至少一个可疑用户;去匿名化模型由多个源代
码信息的训练样本以及源代码信息的训练样本对应的真实用户信息,对深度学习网络模型进行训练得到;然后,第一爬取单元1603分别爬取每一个可疑用户的用户信息、以及可疑用户持有的代码仓库的仓库信息和代码仓库内容;其中,可疑用户持有的代码仓库保存有可疑用户参与的项目的源代码;最终,处理单元1604处理每一个可疑用户的用户信息、持有的代码仓库的仓库信息和代码仓库内容,得到每一个可疑用户的画像。从而达到精确地对恶意攻击进行溯源的目的。
[0245]
本技术另一实施例提供了一种服务器,如图17所示,包括:
[0246]
一个或多个处理器1701。
[0247]
存储装置1702,其上存储有一个或多个程序。
[0248]
当所述一个或多个程序被所述一个或多个处理器1701执行时,使得所述一个或多个处理器1701实现如上述实施例中任意一项所述的方法。
[0249]
本技术另一实施例提供了一种计算机存储介质,其上存储有计算机程序,其中,计算机程序被处理器执行时实现如上述实施例中任意一项所述的方法。
[0250]
在本技术公开的上述实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本公开的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0251]
另外,在本公开各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,直播设备,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0252]
专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献