CN110162970A - 一种程序处理方法、装置以及相关设备 - Google Patents

一种程序处理方法、装置以及相关设备 Download PDF

Info

Publication number
CN110162970A
CN110162970A CN201910016615.6A CN201910016615A CN110162970A CN 110162970 A CN110162970 A CN 110162970A CN 201910016615 A CN201910016615 A CN 201910016615A CN 110162970 A CN110162970 A CN 110162970A
Authority
CN
China
Prior art keywords
vector
node
program
sample
feature vectors
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910016615.6A
Other languages
English (en)
Inventor
于洋
关塞
陈洁远
曾凡
李家昌
聂利权
阮华
万志颖
王伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910016615.6A priority Critical patent/CN110162970A/zh
Publication of CN110162970A publication Critical patent/CN110162970A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Abstract

本发明实施例公开了一种程序处理方法、装置以及相关设备,方法包括:获取多个样本程序,并获取与每个样本程序分别对应的行为参数值,根据与每个样本程序分别对应的行为参数值,确定与每个样本程序分别对应的样本特征向量;将样本特征向量划分为多个向量集合,根据每个样本特征向量与向量集合之间的关联关系,确定与每个样本特征向量分别对应的样本行为状态;根据样本行为状态,确定与每个样本程序分别对应的安全标签;根据多个样本程序和每个样本程序分别对应的安全标签,生成程序识别模型。采用本发明,可以自动地为样本程序设置对应的标签,以增加带标签的样本程序数量,提高识别模型的准确率。

Description

一种程序处理方法、装置以及相关设备
技术领域
本发明涉及计算机技术领域,尤其涉及一种程序处理方法、装置以及相关设备。
背景技术
Internet(互联网)的发展和普及改变了人们的生活方式和工作方式,人们的生活和工作变成更加便利和高效,社会进入了信息化时代。随着社会信息化程度的不断提高,工业、国防、教育、金融等社会各行各业的信息越来越依赖计算机和互联网。然而,恶意程序直接威胁着个人、企业的利益,数据显示,84%的网民都遭受过恶意程序所带来的网络攻击。因此,对恶意程序的识别具有重要的社会价值。
现有技术对恶意程序的识别主要基于有监督的方法,即利用大量带有标签的正常程序和带有标签的恶意程序训练一个识别模型,该识别模型可以拟合恶意程序和正常程序的数据分布,进而对后续未知的程序进行识别,参与模型训练的样本程序的数量会直接决定识别模型的准确率。
但是,每一个参与训练的样本程序都需要由人工验证是正常程序或者是恶意程序后,再手动为该程序设置对应的标签,造成为程序设置标签的效率低、带标签的样本程序的数量少,进而导致识别模型的识别准确率低下。
发明内容
本发明实施例提供一种程序处理方法、装置以及相关设备,可以自动并准确地为样本程序设置对应的标签,以增加带标签的样本程序数量,提高识别模型的准确率。
本发明实施例一方面提供了一种程序处理方法,包括:
获取多个样本程序,并获取与每个样本程序分别对应的行为参数值,根据与所述每个样本程序分别对应的行为参数值,确定与所述每个样本程序分别对应的样本特征向量;
将所述样本特征向量划分为多个向量集合,根据每个样本特征向量与所述向量集合之间的关联关系,确定与所述每个样本特征向量分别对应的样本行为状态;
根据所述样本行为状态,确定与所述每个样本程序分别对应的安全标签;所述安全标签包括正常标签和异常标签;
根据所述多个样本程序和每个样本程序分别对应的安全标签,生成程序识别模型;所述程序识别模型是用于识别目标程序的安全类型。
其中,还包括:
当接收到程序识别请求时,根据所述程序识别请求获取所述目标程序,并获取与所述目标程序对应的行为参数值,根据与所述目标程序对应的行为参数值,确定目标特征向量;
基于所述程序识别模型,对所述目标特征向量进行识别处理,得到与所述目标特征向量相匹配的安全标签,将所述程序识别模型识别的安全标签所指示的安全类型确定为与所述目标程序对应的安全类型。
其中,所述获取与每个样本程序分别对应的行为参数值,根据与所述每个样本程序分别对应的行为参数值,确定与所述每个样本程序分别对应的样本特征向量,包括:
获取与样本程序对应的多个原始参数值,在所述多个原始参数值中,提取表征程序操作行为的原始参数值,作为条件参数值;
将处于目标数值范围内的条件参数值调整为与所述目标数值范围相匹配的目标数值,将所述目标数值确定为与所述样本程序对应的行为参数值,将与所述样本程序对应的行为参数值组合为所述样本特征向量。
其中,所述将所述样本特征向量划分为多个向量集合,根据每个样本特征向量与所述向量集合之间的关联关系,确定与所述每个样本特征向量分别对应的样本行为状态,包括:
获取与所述多个样本特征向量相关联的目标孤立森林,提取所述目标孤立森林中的目标孤立树中的第一节点对应的节点记录,作为第一记录;
将所述多个样本特征向量作为第一辅助向量,根据所述第一记录,将所述第一辅助向量划分为所述向量集合;所述向量集合包括待划分向量集合;
提取所述第二节点对应的节点记录,作为第二记录;所述第二节点是在所述目标孤立树中所述第一节点的子节点;
将所述第二节点作为所述第一节点,并将所述第二记录作为所述第一记录,并将所述待划分向量集合中包含的样本特征向量作为所述第一辅助向量;
当所述第二节点中不存在节点记录时,统计和样本特征向量之间存在关联关系的向量集合的数量,根据所统计的向量集合的数量确定所述样本特征向量在所述目标孤立树中的高度;
根据所述样本特征向量在每个目标孤立树中的高度,确定与所述样本特征向量对应的样本行为状态。
其中,还包括:
获取多个训练程序,并获取与每个训练程序分别对应的行为参数值,根据与所述每个训练程序分别对应的行为参数值,确定多个训练特征向量;
从所述多个训练特征向量中提取一组训练特征向量,作为基向量,根据所述基向量和所述基向量所包含的所有行为参数属性,构建目标孤立树;
从所述多个训练特征向量中提取下一组训练特征向量,作为所述基向量;
当基于多组所述基向量分别构建得到的所述目标孤立树的数量大于第一数量阈值时,将所有目标孤立树确定为所述目标孤立森林。
其中,所述根据所述基向量和所述基向量所包含的所有行为参数属性,构建目标孤立树,包括:
创建节点树,根据所述基向量生成第三节点,并将所述第三节点添加至所述节点树;
将所述基向量确定为第二辅助向量,从所述第二辅助向量所包含的所有行为参数属性中,选择一个行为参数属性,作为节点属性,根据所有第二辅助向量中的节点属性的行为参数值,确定节点属性值;
将所述节点属性和节点属性值组合为节点记录添加至所述第三节点,根据所述节点属性和所述节点属性值,将所述第二辅助向量划分为第一子向量和第二子向量,根据所述第一子向量和所述第二子向量分别生成第四节点,将所述第四节点作为所述第三节点的子节点添加至所述节点树;
将所述第四节点确定为所述第三节点,并将所述第一子向量和所述第二子向量均确定为所述第二辅助向量;
当所述节点树满足收敛条件时,将所述节点树确定为所述目标孤立树。
其中,所述将所述样本特征向量划分为多个向量集合,根据每个样本特征向量与所述向量集合之间的关联关系,确定与所述每个样本特征向量分别对应的样本行为状态,包括:
从所述多个样本特征向量中选择一组样本特征向量,作为中心向量;
根据所述多个样本特征向量和所述中心向量之间的距离,将所述多个样本特征向量划分为多个特征簇;
在每个特征簇中所包含的所有样本特征向量中,分别选择位于中心的样本特征向量,作为所述中心向量;
当所述每个特征簇中所包含的样本特征向量保持不变时,将所述多个特征簇确定为所述多个向量集合;
将与样本特征向量之间存在关联关系的向量集合的中心向量,作为目标中心向量,计算所述样本特征向量和所述目标中心向量之间的中心距离;
根据与所述样本特征向量对应的中心距离,确定与所述样本特征向量对应的样本行为状态。
其中,所述根据所述样本行为状态,确定与所述每个样本程序分别对应的安全标签,包括:
检测与样本特征向量对应的样本行为状态;
当所述样本行为状态属于异常状态时,确定所述样本特征向量对应的样本程序的安全标签为异常标签;
当所述样本行为状态属于正常状态时,确定所述样本特征向量对应的样本程序的安全标签为正常标签。
其中,所述根据所述多个样本程序和每个样本程序分别对应的安全标签,生成程序识别模型,包括:
获取所述多个样本特征向量,从所述多个样本特征向量中提取一组样本特征向量作为决策向量,从所述决策向量所包含的所有行为参数属性中,选择多个行为参数属性作为决策属性;
根据所述决策属性、所述决策向量、所述决策向量对应的安全标签,构建目标决策树;
从所述多个样本特征向量中提取下一组样本特征向量,作为所述决策向量;
当基于多组所述决策向量分别构建得到的所述目标决策树的数量大于第二数量阈值时,将所有目标决策树确定为所述程序识别模型。
其中,所述根据所述决策属性、所述决策向量、所述决策向量对应的安全标签,构建目标决策树,包括:
创建决策树,根据所述决策向量和所述决策向量对应的安全标签,计算各决策属性对应的信息增益,将信息增益最大的决策属性作为第一属性;
根据所述第一属性生成第五节点,将所述第五节点添加至所述决策树;
将所述决策向量确定为第三辅助向量,根据所述第三辅助向量中的第一属性对应的行为参数值,将所述第三辅助向量划分为多个待处理向量集合;
将所述待处理向量集合中包含的决策向量作为目标子向量;
根据所述目标子向量和所述目标子向量对应的安全标签,计算各决策属性对应的信息增益,将信息增益最大的决策属性作为第二属性;
根据所述第二属性生成第六节点,将所述第六节点作为所述第五节点的子节点添加至所述决策树,将所述目标子向量中的第一属性对应的行为参数值添加至所述第六节点;
将所述第二属性确定为所述第一属性,将所述第六节点确定为所述第五节点,并将所述目标子向量确定为所述第三辅助向量;
当所述待处理向量集合中所包含的样本特征向量的安全标签相同时,根据所述待处理向量集合中相同的安全标签,生成所述决策树的叶子节点,将所述待处理向量集合中的决策向量的第一属性对应的行为参数值添加至所述叶子节点,并将所述决策树确定为所述目标决策树。
其中,所述基于所述程序识别模型,对所述目标特征向量进行识别处理,得到与所述目标特征向量相匹配的安全标签,包括:
将所述目标特征向量遍历所述进程识别模型中所有目标决策树,确定所述目标特征向量在每个目标决策树中的安全标签;
根据所有目标决策树确定的安全标签,统计属于正常标签的数量之和,作为正常数量,并统计属于异常标签的数量之和,作为异常数量;
若所述正常数量大于所述异常数量,则确定与所述目标特征向量相匹配的安全标签是正常标签;
若所述正常数量小于或等于所述异常数量,则确定与所述目标特征向量相匹配的安全标签是异常标签。
其中,所述根据所述多个样本程序和每个样本程序分别对应的安全标签,生成程序识别模型之前,还包括:
获取多组初始模型参数,在所述多组初始模型参数中选择一组初始模型参数,作为训练参数;
将所述多个样本程序划分为多个程序集合,从所述多个程序集合中提取一个程序集合作为第一集合,其余程序集合作为第二集合;
根据所述训练参数、所述第二集合中的样本程序和所述第二集合中的样本程序分别对应的安全标签,训练异常检测模型;
基于所述异常检测模型,对所述第一集合中的样本程序进行识别处理,得到预测安全标签,根据所述第一集合中的样本程序的安全标签和所述预测安全标签,计算预测误差;
当每个程序集合均被确定为所述第一集合时,将多个预测误差的均值作为所述训练参数的识别误差;
从所述多组初始模型参数中选择下一组初始模型参数,作为所述训练参数;
当每组初始模型参数均被确定为所述训练参数时,将识别误差最低的训练参数作为目标模型参数;所述目标模型参数用于生成所述程序识别模型。
本发明实施例一方面提供了一种程序处理装置,包括:
第一获取模块,用于获取多个样本程序;
第二获取模块,用于获取与每个样本程序分别对应的行为参数值,根据与所述每个样本程序分别对应的行为参数值,确定与所述每个样本程序分别对应的样本特征向量;
分数确定模块,用于将所述样本特征向量划分为多个向量集合,根据每个样本特征向量与所述向量集合之间的关联关系,确定与所述每个样本特征向量分别对应的样本行为状态;
标签确定模块,用于根据所述样本行为状态,确定与所述每个样本程序分别对应的安全标签;所述安全标签包括正常标签和异常标签;
模型生成模块,用于根据所述多个样本程序和每个样本程序分别对应的安全标签,生成程序识别模型;所述程序识别模型是用于识别目标程序的安全类型。
其中,还包括:
第三获取模块,用于当接收到程序识别请求时,根据所述程序识别请求获取所述目标程序,并获取与所述目标程序对应的行为参数值,根据与所述目标程序对应的行为参数值,确定目标特征向量;
识别模块,用于基于所述程序识别模型,对所述目标特征向量进行识别处理,得到与所述目标特征向量相匹配的安全标签;
所述第三获取模块,还用于将所述程序识别模型识别的安全标签所指示的安全类型确定为与所述目标程序对应的安全类型。
其中,所述第二获取模块,包括:
参数获取单元,用于获取与样本程序对应的多个原始参数值,在所述多个原始参数值中,提取表征程序操作行为的原始参数值,作为条件参数值;
数值调整单元,用于将处于目标数值范围内的条件参数值调整为与所述目标数值范围相匹配的目标数值,将所述目标数值确定为与所述样本程序对应的行为参数值,将与所述样本程序对应的行为参数值组合为所述样本特征向量。
其中,所述分数确定模块,包括:
提取单元,用于获取与所述多个样本特征向量相关联的目标孤立森林,提取所述目标孤立森林中的目标孤立树中的第一节点对应的节点记录,作为第一记录;
所述提取单元,还用于将所述多个样本特征向量作为第一辅助向量,根据所述第一记录,将所述第一辅助向量划分为所述向量集合;所述向量集合包括待划分向量集合;
所述提取单元,还用于提取所述第二节点对应的节点记录,作为第二记录;所述第二节点是在所述目标孤立树中所述第一节点的子节点;
所述提取单元,还用于将所述第二节点作为所述第一节点,并将所述第二记录作为所述第一记录,并将所述待划分向量集合中包含的样本特征向量作为所述第一辅助向量;
向量统计单元,用于当所述第二节点中不存在节点记录时,统计和样本特征向量之间存在关联关系的向量集合的数量,根据所统计的向量集合的数量确定所述样本特征向量在所述目标孤立树中的高度;
所述向量统计单元,还用于根据所述样本特征向量在每个目标孤立树中的高度,确定与所述样本特征向量对应的样本行为状态。
其中,还包括:
向量确定模块,用于获取多个训练程序,并获取与每个训练程序分别对应的行为参数值,根据与所述每个训练程序分别对应的行为参数值,确定多个训练特征向量;
所述向量确定模块,还用于从所述多个训练特征向量中提取一组训练特征向量,作为基向量;
构建模块,用于根据所述基向量和所述基向量所包含的所有行为参数属性,构建目标孤立树;
所述向量确定模块,还用于从所述多个训练特征向量中提取下一组训练特征向量,作为所述基向量;
所述向量确定模块,还用于当基于多组所述基向量分别构建得到的所述目标孤立树的数量大于第一数量阈值时,将所有目标孤立树确定为所述目标孤立森林。
其中,所述构建模块,包括:
创建单元,用于创建节点树,根据所述基向量生成第三节点,并将所述第三节点添加至所述节点树;
选择单元,用于将所述基向量确定为第二辅助向量,从所述第二辅助向量所包含的所有行为参数属性中,选择一个行为参数属性,作为节点属性,根据所有第二辅助向量中的节点属性的行为参数值,确定节点属性值;
所述选择单元,还用于将所述节点属性和节点属性值组合为节点记录添加至所述第三节点,根据所述节点属性和所述节点属性值,将所述第二辅助向量划分为第一子向量和第二子向量,根据所述第一子向量和所述第二子向量分别生成第四节点,将所述第四节点作为所述第三节点的子节点添加至所述节点树;
所述选择单元,还用于将所述第四节点确定为所述第三节点,并将所述第一子向量和所述第二子向量均确定为所述第二辅助向量;
所述选择单元,还用于当所述节点树满足收敛条件时,将所述节点树确定为所述目标孤立树。
其中,所述分数确定模块,包括:
向量确定单元,用于从所述多个样本特征向量中选择一组样本特征向量,作为中心向量;
划分单元,用于根据所述多个样本特征向量和所述中心向量之间的距离,将所述多个样本特征向量划分为多个特征簇;
所述划分单元,还用于在每个特征簇中所包含的所有样本特征向量中,分别选择位于中心的样本特征向量,作为所述中心向量;
所述划分单元,还用于当所述每个特征簇中所包含的样本特征向量保持不变时,将所述多个特征簇确定为所述多个向量集合;
所述划分单元,还用于将与样本特征向量之间存在关联关系的向量集合的中心向量,作为目标中心向量,计算所述样本特征向量和所述目标中心向量之间的中心距离;
所述划分单元,还用于根据与所述样本特征向量对应的中心距离,确定与所述样本特征向量对应的样本行为状态。
其中,所述标签确定模块,包括:
检测单元,用于检测与样本特征向量对应的样本行为状态;
标签确定单元,用于当所述样本行为状态属于异常状态时,确定所述样本特征向量对应的样本程序的安全标签为异常标签;
所述标签确定单元,还用于当所述样本行为状态属于正常状态时,确定所述样本特征向量对应的样本程序的安全标签为正常标签。
其中,所述模型生成模块,包括:
向量获取单元,用于获取所述多个样本特征向量,从所述多个样本特征向量中提取一组样本特征向量作为决策向量,从所述决策向量所包含的所有行为参数属性中,选择多个行为参数属性作为决策属性;
构建单元,用于根据所述决策属性、所述决策向量、所述决策向量对应的安全标签,构建目标决策树;
所述向量获取单元,还用于从所述多个样本特征向量中提取下一组样本特征向量,作为所述决策向量;
所述向量获取单元,还用于当基于多组所述决策向量分别构建得到的所述目标决策树的数量大于第二数量阈值时,将所有目标决策树确定为所述程序识别模型。
其中,所述构建单元,包括:
创建子单元,用于创建决策树,根据所述决策向量和所述决策向量对应的安全标签,计算各决策属性对应的信息增益,将信息增益最大的决策属性作为第一属性;
添加子单元,用于根据所述第一属性生成第五节点,将所述第五节点添加至所述决策树;
划分子单元,用于将所述决策向量确定为第三辅助向量,根据所述第三辅助向量中的第一属性对应的行为参数值,将所述第三辅助向量划分为多个待处理向量集合;
所述划分子单元,还用于将所述待处理向量集合中包含的决策向量作为目标子向量;
所述划分子单元,还用于根据所述目标子向量和所述目标子向量对应的安全标签,计算各决策属性对应的信息增益,将信息增益最大的决策属性作为第二属性;
所述划分子单元,还用于根据所述第二属性生成第六节点,将所述第六节点作为所述第五节点的子节点添加至所述决策树,将所述目标子向量中的第一属性对应的行为参数值添加至所述第六节点;
所述划分子单元,还用于将所述第二属性确定为所述第一属性,将所述第六节点确定为所述第五节点,并将所述目标子向量确定为所述第三辅助向量;
所述划分子单元,还用于当所述待处理向量集合中所包含的样本特征向量的安全标签相同时,根据所述待处理向量集合中相同的安全标签,生成所述决策树的叶子节点,将所述待处理向量集合中的决策向量的第一属性对应的行为参数值添加至所述叶子节点,并将所述决策树确定为所述目标决策树。
其中,所述识别模块,包括:
遍历单元,用于将所述目标特征向量遍历所述进程识别模型中所有目标决策树,确定所述目标特征向量在每个目标决策树中的安全标签;
标签统计单元,用于根据所有目标决策树确定的安全标签,统计属于正常标签的数量之和,作为正常数量,并统计属于异常标签的数量之和,作为异常数量;
所述标签统计单元,还用于若所述正常数量大于所述异常数量,则确定与所述目标特征向量相匹配的安全标签是正常标签;
所述标签统计单元,还用于若所述正常数量小于或等于所述异常数量,则确定与所述目标特征向量相匹配的安全标签是异常标签。
其中,还包括:
第四获取模块,用于获取多组初始模型参数,在所述多组初始模型参数中选择一组初始模型参数,作为训练参数;
提取模块,用于将所述多个样本程序划分为多个程序集合,从所述多个程序集合中提取一个程序集合作为第一集合,其余程序集合作为第二集合;
训练模块,用于根据所述训练参数、所述第二集合中的样本程序和所述第二集合中的样本程序分别对应的安全标签,训练异常检测模型;
计算模块,用于基于所述异常检测模型,对所述第一集合中的样本程序进行识别处理,得到预测安全标签,根据所述第一集合中的样本程序的安全标签和所述预测安全标签,计算预测误差;
所述计算模块,还用于当每个程序集合均被确定为所述第一集合时,将多个预测误差的均值作为所述训练参数的识别误差;
所述计算模块,还用于从所述多组初始模型参数中选择下一组初始模型参数,作为所述训练参数;
所述计算模块,还用于当每组初始模型参数均被确定为所述训练参数时,将识别误差最低的训练参数作为目标模型参数;所述目标模型参数用于生成所述程序识别模型。
本发明实施例一方面提供了一种电子设备,包括:处理器和存储器;
所述处理器和存储器相连,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如本发明实施例中的方法。
本发明实施例一方面提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如本发明实施例中的方法。
本发明实施例通过将样本程序的行为参数值作为表征该样本程序特征的特征向量,将特征向量划分为多个集合,根据每个特征向量和集合之间的关联关系,可以确定出每个样本特征向量的行为状态,由行为状态可以确定每个特征向量对应样本程序的标签,进而可以基于大量带标签的样本程序训练识别模型,以用于后续识别未知类型的程序。将样本程序的行为参数值作为特征向量,可以准确地表达样本程序的特征,进而增加后续基于该特征向量所得到标签的准确性;同时,根据每个样本程序和对应向量集合之间的关联关系,可以确定每个样本向量的行为状态,自动化地为对应的样本程序设置对应的标签,相比人工设置标签,可以提高设置标签的效率,扩大带标签的样本程序数量;进一步地,使用大量携带标签的样本程序所得到的识别模型相比使用少量携带标签的样本程序所得到的识别模型,具有更高的识别准确率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种程序处理的系统架构图;
图2a-图2b是本发明实施例提供的一种程序处理的场景示意图;
图2c是本发明实施例提供的一种程序处理的界面示意图;
图3是本发明实施例提供的一种程序处理方法的流程示意图;
图4是本发明实施例提供的另一种程序处理方法的流程示意图;
图5是本发明实施例提供的一种生成程序识别模型的流程示意图;
图6是本发明实施例提供的一种构建目标决策树的示意图;
图7是本发明实施例提供的另一种程序处理方法的流程示意图;
图8是本发明实施例提供的一种构建目标孤立树的示意图;
图9a-图9b是本发明实施例提供的一种确定样本行为状态的示意图;
图10是本发明实施例提供的另一种程序处理方法的流程示意图;
图11是本发明实施例提供的另一种确定样本行为状态的示意图;
图12是本发明实施例提供的一种程序处理装置的结构示意图;
图13是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,是本发明实施例提供的一种程序处理的系统架构图。服务器10f通过交换机10e和通信总线10d与用户终端集群建立连接,用户终端集群可包括:用户终端10a、用户终端10b、...、用户终端10c。数据库10g中存储了多个未知安全类型的程序,以及与每个程序相关联的可执行文件,其中安全类型包括正常类型和恶意类型。服务器10f从数据库10g中提取出多个未知安全类型的程序,作为样本程序,采用无监督学习的方式,为每个样本程序设置对应的标签,标签可以包括正常标签和恶意标签。服务器10f基于多个携带标签的样本程序,采用有监督学习的方式,训练识别模型,并存储该识别模型。服务器10f可以基于训练好的识别模型监控用户终端集群中各用户终端中是否存在恶意程序,当检测到存在恶意程序时,服务器10f向对应的用户终端发送警告信号;或者当服务器10f接收到来自终端集群中的用户终端的识别请求时,基于识别模型识别上述识别请求所对应的待识别程序是恶意程序或者是正常程序,服务器10f将识别到的结果发送至对应的用户终端。当然,也可以由服务器10f将训练好的识别模型发送至用户终端集群中各用户终端,由用户终端监控本地程序的安全类型。
由于为无标签的程序设置标签,以及训练识别模型需要涉及大量的运算,因此服务器10f可以采用分布式架构,将数据/模型进行切分,通过多个工作节点、分布式地优化模型训练,最后将模型进行聚合,且上述程序可以是Linux系统、Window系统或者Unix系统等中的应用程序,或系统程序等。下述以Linux系统中的进程为例,基于大量无标签的样本进程训练进程识别模型。其中,用户终端可以包括手机、平板电脑、笔记本电脑、掌上电脑、智能音响、移动互联网设备(MID,mobile internet device)、POS(Point Of Sales,销售点)机、可穿戴设备(例如智能手表、智能手环等)等。
请参见图2a-图2b,是本发明实施例提供的一种程序处理的场景示意图。获取n个无标签的进程,以及获取每个进程对应的可执行文件,其中可执行文件是程序编译后得到的文件,进程是运行该程序后在内存中的实例。从每个进程的可执行文件中,提取表征进程业务行为的行为参数值,将提取到的多个行为参数值组合为对应进程的特征向量,每个进程都存在对应的特征向量。行为参数值可以包括:进程打开的文件数量、进程参数的数量、文件MD5(Message Digest Algorithm MD5,摘要算法)值库中是否存在文件MD5值和进程可执行文件的MD5值是相同(使用数值0或1来分别表示存在或者不存在)等。
至此,就获得了多个进程,以及每个进程对应的特征向量。接下来,异常分数计算模块计算每个特征向量的异常分数。异常分数计算模块可以是基于聚类的方式计算异常分数;也可以是基于孤立森林的方式计算异常分数。基于聚类方式计算异常分数的过程是:根据所有特征向量之间的相似性,对所有特征向量进行聚类处理,得到多个特征簇,其中一个特征簇中包含的是相似的特征向量;根据每个特征向量和所属特征簇的中心向量之间的距离,确定每个特征向量的异常分数。基于孤立森林方式计算异常分数的过程是:每个特征向量依次遍历孤立森林中的每一个孤立树,确定每个特征向量在每个孤立树中的高度;根据在所有孤立树中的高度的平均值,确定每个特征向量的异常分数。
需要说明的是,除了上述两种方式计算异常分数,还可以基于距离的方式,基于密度的方式等计算每个特征向量的异常分数。
设置分数阈值,将高于异常分数阈值的特征向量的行为状态,设置为异常状态;将低于或者等于异常分数阈值的特征向量的行为状态,设置为正常状态。将行为状态是异常状态的特征向量对应的进程,作为恶意进程,并为恶意进程设置异常标签;将行为状态是正常状态的特征向量对应的进程,作为正常进程,为正常进程设置正常标签。n个进程都存在对应的标签,根据n的进程以及对应的标签,可以采用有监督学习的方式训练检测模型20a,该检测模型20a可以拟合正常进程的数据分别和恶意进程的数据分布,建立进程的特征信息和标签之间的映射关系。检测模型20a训练好后,后续就可以直接对未知的进程进行检测。其中,基于有监督学习的方式训练检测模型20a可以采用决策森林、k近邻、朴素贝叶斯等。
如图2b所示,服务器中存储了提前训练好的检测模型20a。用户终端将待检测进程,以及与待检测进程相关的可执行文件发送至服务器用于检测该进程的安全类型。服务器获取待检测进程的特征信息,基于检测模型20a识别与待检测进程的特征信息匹配的标签20b为:异常。服务器将检测到的标签20b发送至用户终端,并提示用户终端该进程为恶意进程。
请参见图2c,是本发明实施例提供的一种程序处理的界面示意图。以程序中的进程为例,监控平台训练进程检测模型,以监控运行在服务器集群(包括服务器1、服务器2、...、服务器n)中的多个进程的安全性。如界面20c所示,用户点击界面中的“性能升级”按钮,监控平台从服务器集群中拷贝部分进程作为样本进程,以及拷贝每个样本进程对应的可执行文件。监控平台基于上述样本进程和对应的可执行文件,训练进程检测模型(训练的具体过程可以参见图2a-图2b对应实施例的描述,且进程检测模型训练完成后,监控平台可以删除所有的样本进程,以及所有的可执行文件)。进程检测模型训练完毕后,如界面20d所示,用户点击界面中的“开始扫描”按钮,监控平台可以持续不间断地,基于进程检测模型对服务器集群中的每个进程进行检测,并将检测结果显示在屏幕中(如界面20e所示)。用户也可以设置定时扫描,监控平台间隔一段时间对服务器集群中的每个进程进行检测,以降低资源损耗。用户也可以设置定时升级,监控平台间隔一段时间重新从服务器集群中拷贝新数据,用于训练检测模型。
其中,获取特征向量、为程序(如上述图2a-图2b实施例中的进程)设置标签、训练程序识别模型(如上述图2a-图2b实施例中的检测模型20a)的具体过程可以参见以下图3至图11所对应的实施例。
进一步地,请参见图3,是本发明实施例提供的一种程序处理方法的流程示意图。如图3所示,程序处理方法可以包括:
步骤S101,获取多个样本程序,并获取与每个样本程序分别对应的行为参数值,根据与所述每个样本程序分别对应的行为参数值,确定与所述每个样本程序分别对应的样本特征向量。
具体的,终端(如上述图1实施例中的服务器10f)获取多个安全类型未知的程序作为样本程序,程序可以包括系统程序、应用程序、进程或者线程等。下述以一个样本程序为例进行说明终端如何确定一个样本程序对应的样本特征向量。在样本程序的可执行文件中,终端提取样本程序的多个原始参数值,原始参数值包括程序的静态属性值和动态属性值,例如,程序的身份标识就属于静态属性值,程序的最近一次修改时间就属于动态属性值。在多个原始参数值中,终端提取条件参数值,条件参数值是表示程序操作行为的条件参数的取值,条件参数也可以称为行为参数属性。行为参数属性可以包括下述表1中所展示的多种属性:
表1
其中,文件MD5值库中包含大量的文件MD5值,表1中的编号为4、8、9的行为参数属性所对应的场景是同一个程序部署在多个机器上。上述表1中的16种行为参数属性中,对最后的分类结果影响较大的行为参数属性可以参见下述表2中所展示的多种行为参数属性,下述表2还包括每种行为参数属性的影响分数,16种行为参数属性的影响分数之和等于1。影响分数的计算方式是通过随机森林对各行为参数属性打分得到的。
表2
通过表2中的行为参数属性和影响分数可知,行为参数属性中的文件MD5值库中是否存在和可执行文件的MD5值相同的文件MD5值具有最大影响分数,说明该行为参数属性具有更好的特征区分性。
当行为参数属性表示的是数量时,那么对应的条件参数值就是大于或等于0的整数;当行为参数属性表示的是逻辑判断结果时,那么对应的条件参数值就是0或者1(可以将逻辑判断结果为是时,将对应的条件参数值设置为1;将逻辑判断结果为否时,将对应的条件参数值设置为0),因此就会造成行为参数属性的取值(条件参数值)之间的差异比较大,不利于后续对样本程序特征的表达。为了使行为参数属性的取值都在范围较小的区间内,终端可以基于桶方法将连续的条件参数值转换为离散的数值,转换后的数值称为行为参数值,此处采用桶方法只是改变行为参数属性的取值,对每个行为参数属性所对应的行为意义并没有发生任何变化。
基于桶方法将连续的条件参数值转换为离散的行为参数数值的具体过程为:终端检测所有的条件参数值,将处于目标数值范围内的条件参数值调整为与目标数值范围相匹配的目标数值,即调整得到的目标数值就是行为参数值。举例来说,目标数值的范围是2-100,与上述目标数值范围相匹配的目标数值是3,若行为参数属性是:程序打开文件的数量;对应该行为参数属性的取值(条件参数值)为40。由于条件参数值40在目标数值范围内,因此就将条件参数值40调整为3,数值3就是行为参数值,那么调整后行为参数属性仍旧是:程序打开文件的数量;对应的行为参数值是:3。
最后按照预设的目标顺序,终端将多个行为参数值组合和向量,称为特征向量,即是程序的特征表示,对应于样本程序的特征向量,称为样本特征向量。对多个样本程序而言,都可以按照上述方式,得到每个样本程序分别对应的样本特征向量。
步骤S102,将所述样本特征向量划分为多个向量集合,根据每个样本特征向量与所述向量集合之间的关联关系,确定与所述每个样本特征向量分别对应的样本行为状态。
具体的,终端根据样本特征向量之间的相似性,将多个样本特征向量划分为多个集合,称为向量集合。一般来说,属于同一个向量集合中的两个样本特征向量之间的相似性要大于或等于属于不同向量集合中的两个样本特征向量之间的相似性。两个样本特征向量之间的相似性可以用它们之间的距离进行度量,若距离越近,说明相似性越大;若距离越远,说明相似性越小。距离的计算公式可以为下述公式(1):
其中,X和Y分别表示两个样本特征向量,Xi和Yi表示分别表示两个样本特征向量的第i维取值(也可以理解为第i个行为参数属性的行为参数值)。公式(1)是欧式距离的计算公式,还可以采用曼哈顿距离、马氏距离、切比雪夫距离等距离度量方式作为两个样本特征向量之间的距离。
对一个样本特征向量来说,在上述向量集合中,终端确定与样本特征向量之间存在关联关系的向量集合。与样本特征向量之间存在关联关系的向量集合是指该样本特征向量所属于的向量集合,若是采用聚类的方式将所有样本特征向量划分为多个向量集合,那么一个样本特征向量就只对应一个存在关联关系的向量集合;若是采用树的方式将所有样本特征向量划分为多个向量集合,那么一个样本特征向量就可以对应多个存在关联关系的向量集合。终端根据上述确定的与样本特征向量之间存在关联关系的集合,确定该样本特征向量对应的行为状态,称为样本行为状态,样本行为状态包括正常状态和异常状态。
对多个样本特征向量来说,分别确定与每个样本特征向量之间存在关联关系的向量集合,根据存在关联关系的向量集合,分别确定每个样本特征向量的样本行为状态。
步骤S103,根据所述样本行为状态,确定与所述每个样本程序分别对应的安全标签;所述安全标签包括正常标签和异常标签。
具体的,每个样本特征向量都存在对应的样本行为状态,对一个样本特征向量来说,终端检测对应的样本行为状态,若样本行为状态为异常状态,则终端确定该样本特征向量对应的样本程序的安全标签为异常标签,同时该样本特征向量对应的安全标签也为异常标签。若样本行为状态为正常状态,则终端确定该样本特征向量对应的样本程序的安全标签为正常标签,同时该样本特征向量对应的安全标签也为正常标签。可以知道,安全标签包括正常标签和异常标签,安全标签是用于标识对应样本程序的安全类型,正常标签对应的安全类型就是正常类型,正常类型的程序是不存在任何安全威胁的程序;异常标签对应的安全类型是异常类型,异常类型的程序是存在安全威胁的,可能会损害用户利益(例如,泄露终端中的信息)的程序。
步骤S104,根据所述多个样本程序和每个样本程序分别对应的安全标签,生成程序识别模型;所述程序识别模型是用于识别目标程序的安全类型。
具体的,终端确定了每个样本程序对应的安全标签后,提取每个样本程序的特征信息,基于每个样本程序的特征信息和每个样本程序的安全标签,可以采用有监督学习方式,训练分类模型,称为程序识别模型(如上述图2a所对应实施例中的检测模型20a)。有监督学习可以理解为,就是找到每个样本程序的特征信息和对应安全标签之间的映射关系,该映射关系就是分类模型。后续在应用分类模型时,采用同样的方式提取待检测程序(如上述图2a所对应实施例中的待检测进程)的特征信息,然后直接利用上述映射关系(分类模型)可以直接检测出与待检测程序的特征信息相匹配的安全标签,检测出来的安全标签也就是待检测程序的安全标签,进而可以确待检测程序的安全类型。
基于有监督学习训练程序识别模型可以包括:K-近邻、决策森林、朴素贝叶斯、逻辑回归、深度学习的编码等方式。为了提高训练程序识别模型的效率,以及更好的表示每个样本程序的特征,终端仍旧可以将上述样本特征向量作为样本程序的特征信息用于表示每个样本程序,当然也可以提取样本程序的其他特征信息,用于表示该样本程序。
可选的,无论采用哪种方式训练程序识别模型,终端都需要提前设置程序识别模型的超参数,超参数一般是由人工根据以往的经验来设置的,这样就会造成不同的超参数训练出来的程序识别模型的效果差异较大。
为了提高模型的泛化能力,可以采用K折验证来提前确定程序识别模型的超参数(超参数是在模型训练前由人工设定的参数)。K折验证就是在一组超参数下,终端将携带安全标签的程序划分为K个集合,K-1个集合当做训练集合在上述超参数下训练模型,剩余的一个集合当做测试集合用于测试上述模型分类的误差,当K个集合中的每一个集合都被当做了测试集合,可以得到K个误差,终端将K个误差的平均值作为当前一组超参数的误差。上述是得到一组超参数的误差,同样的方式,可以得到多组不同超参数的误差。将误差最小的那一组超参数作为程序识别模型的超参数。这样可以就训练程序识别模型之前,就选择出较好的模型超参数。
K折验证确定程序识别模型的模型参数具体过程为:终端获取多组模型参数,作为初始模型参数,例如,当基于决策森林训练程序识别模型时,那么初始模型参数可以包括决策森林包含决策树的数量、每个决策树中对应样本行为属性的数量等。终端在多组初始模型参数中选择一组初始模型参数,作为训练参数。将所有的样本程序划分为多个集合,称为程序集合,每个程序集合中包含的样本程序的数量相同或者相近。从多个程序集合选择一个程序集成作为第一集合,其余的程序集合作为第二集合。在上述选择出来的训练参数下,终端根据第二集合中的样本程序和该样本程序对应的安全标签,训练分类模型,称为异常检测模型。基于训练出来的异常检测模型,识别第一集合中的样本程序,得到异常检测模型输出的预测安全标签。根据第一集合中的样本程序的安全标签(本身携带的安全标签)和异常检测模型输出的预测安全标签,计算出预测误差。在多个程序集合中,再重新选择一个程序集合作为第一集合,在同一组训练参数下,再训练异常检测模型,再次计算预测误差。当每个程序集合都被当做了第一集合,将多个预测误差的均值作为选择出来的训练参数的识别误差。这样基于K折验证确定了一组初始模型参数的识别误差,再重新选择一组初始模型参数,作为训练参数,再利用K折验证的方式确定重新选择出来的训练参数的识别误差。当所有的初始模型参数都被确定为训练参数时,终端将识别误差最低的训练参数(初始模型参数)作为目标模型参数,后续可以基于该目标模型参数训练程序识别模型,也就是再基于目标模型参数在所有的样本程序上,训练程序识别模型。这样就可以保证后续训练程序识别模型时,模型超参数取值的合理性。
请参见图4,是本发明实施例提供的另一种程序处理方法的流程示意图。程序处理方法包括:数据预处理模块、聚类打标签模块和分类和预测模块。获取初始程序数据,并获取初始程序的特征(原始参数值),将上述表1中16种行为参数属性的取值(行为参数值),作为程序特征。按照桶方法,转换程序特征的数值,得到16维的桶特征向量(特征向量)。采用孤立森林异常检测算法或者聚类算法,根据16维的桶特征向量为对应的程序设置对应的标签(采用孤立森林异常检测算法为对应的程序设置对应的标签的具体过程可以参见下述图7对应实施例的描述;采用聚类算法为对应的程序设置对应的标签的具体过程可以参见下述图10对应实施例的描述)。基于带标签的程序采用随机森林算法训练分类模型,训练好的分类模型可以用于后续识别未知安全类型的程序(采用随机森林算法训练分类模型的具体过程可以参见下述图5对应实施例的描述)。
进一步地,请参见图5,是本发明实施例提供的一种生成程序识别模型的流程示意图。如图5所示,生成程序识别模型的具体过程包括如下步骤S201-步骤S204,且步骤S201-步骤S204为图3所对应实施例中步骤S104的一个具体实施例:
下述步骤S201-步骤S204是以有监督学习中的决策森林的方式训练程序识别模型,且为了提高训练程序识别模型的效率,以及更好的表示每个样本程序的特征,将上述样本特征向量作为样本程序的特征信息用于表示每个样本程序。
步骤S201,获取所述多个样本特征向量,从所述多个样本特征向量中提取一组样本特征向量作为决策向量,从所述决策向量所包含的所有行为参数属性中,选择多个行为参数属性作为决策属性;
具体的,终端获取多个样本特征向量,从所有样本特征向量中按照有放回地抽样方式,每次抽取一个样本特征向量,抽取多次,得到一组样本特征向量,称为决策向量,其中抽取的次数等于所有样本特征向量的个数。可以知道,按照有放回地抽样方式,得到的一组决策向量中可能有重复的样本特征向量。终端从决策向量所包含的所有行为参数属性中,随机选择多个行为参数属性作为决策属性,决策向量中的行为参数值就是行为参数属性的取值,行为参数属性的数量就等于每个决策向量所包含的行为参数的数量,且随机选择的决策属性(行为参数属性)的数量要小于决策向量所包含的所有行为参数属性的数量。
步骤S202,根据所述决策属性、所述决策向量、所述决策向量对应的安全标签,构建目标决策树。
具体的,终端创建虚拟树,称为决策树,此时决策树中还不包含任何节点。终端计算各决策属性对应的信息增益,信息增益的计算公式可以为下述公式(2),信息增益是指分裂前父节点包含的样本特征向量D的数据复杂度减去分裂后子节点包含的样本特征向量Dj的数据复杂度之和:
Gain(A)=Info(D)-InfoA(D) (2)
其中Gain(A)表示决策属性A的信息增益,Info(D)表示分裂前父节点包含的样本特征向量的数据复杂度,InfoA(D)表示按照决策属性A分裂后子节点对应的样本特征向量的数据复杂度之和,其中Info(D)的计算方式可以参见公式(3):
InfoA(D)的计算方式可以参见公式(4):
其中,m表示分裂前父节点中样本特征向量D的安全标签的类型数量,pi表示分裂前父节点中样本特征向量D中第i种安全标签出现的概率;n表示分裂前父节点中样本特征向量D被分裂为n个子节点对应的样本特征向量Dj
终端将信息增益最大的决策属性作为第一属性,此处是采用信息增益作为选择第一属性的条件,还可以采用信息增益率、基尼系数等作为选择第一属性的条件。根据第一属性生成节点,称为第五节点,并将第五节点添加至决策树,此时决策树中就包括了第五节点,且此时的第五节点也是决策树的根节点,该节点中记录了信息增益最大的第一属性。
终端将所有决策向量作为第三辅助向量,根据第三辅助向量中第一属性的取值(行为参数值)将第三辅助向量划分为多个集合,称为待处理向量集合,其中待处理向量集合的数量就等于第三辅助向量中第一属性的取值的种类数量,也就是说,每个待处理向量集合中的样本特征向量的第一属性的取值都相同。终端将每个待处理向量集合中包含的决策向量均作为目标子向量,对一个待处理向量集合来说,终端根据该待处理向量集合中目标子向量和目标子向量对应的安全标签,再次基于公式(2)、公式(3)和公式(4),计算各决策属性对应的信息增益,同样将信息增益最大的决策属性作为第二属性。根据第二属性生成节点,称为第六节点,并将第六节点作为第五节点的子节点添加至决策树中,该将目标子向量中决策向量的第一属性的行为参数值添加至第六节点,此时决策树就包括了第五节点和第六节点,且第六节点是第五节点的子节点,第六节点中记录了信息增益最大的第二属性,以及第一属性的取值(也就是第五节点分裂为第六节点的分裂条件)。
对其余的待处理向量集合来说,都生成对应的第六节点,将每个第六节点均作为第五节点的子节点,添加至决策树中,所有的第六节点之间均为兄弟节点。上述描述了生成决策树中一对父节点,和子节点的过程。若决策树还没有达到收敛条件,就可以按照上述方式将子节点作为新的父节点,不断的分裂新的子节点。
终端再将第二属性作为第一属性,将第六节点作为第五节点,并将目标子向量确定为第三辅助向量。再次根据新的第三辅助向量中新的第一属性(前述中的第二属性)的取值将第三辅助向量划分为多个集合,同样称为待处理向量集合。将每个待处理向量集合中包含的决策向量均作为目标子向量,再次计算各决策属性对应的信息增益,同样将信息增益最大的决策属性作为第二属性。终端根据第二属性生成节点,称为第六节点,并将第六节点作为新的第五节点的子节点添加至决策树中,将新的目标子向量中新的第一属性的行为参数值添加至第六节点,不断地递归,不断地在决策树上从上至下的构建节点。当待处理向量集合中所包含的样本特征向量的安全标签相同时,也就是说相邻两次选择出来的信息增益的最大的决策属性都相同时,说明不能再分裂新的节点了,根据包含相同的安全标签生成决策树的叶子节点,该叶子节点记录了相同的安全标签,终端再将该待处理向量集合中所包含的决策向量最后一次分裂的第一属性的行为参数值添加至该叶子节点,至此,一棵决策树(一个分类器)就构造完成,将构造完成的决策树作为目标决策树。上述可知,决策树中的根节点只记录了行为参数属性,非根节点非叶子节点记录了行为参数属性以及行为参数属性的取值(分裂条件),叶子节点记录了安全标签(包括正常标签和异常标签)以及行为参数属性的取值。
步骤S203,从所述多个样本特征向量中提取下一组样本特征向量,作为所述决策向量。
具体的,步骤S202是构造一棵目标决策树,而决策森林是包括多棵目标决策树,因此终端继续从所有样本特征向量中按照有放回地抽样方式,每次抽取一个样本特征向量,抽取多次,再次得到一组样本特征向量,称为决策向量。终端继续从决策向量所包含的所有行为参数属性中,随机选择多个行为参数属性作为决策属性。终端基于选择出来的决策向量以及个决策向量对应的安全标签,再次训练一棵目标决策。不断地循环,每次循环都生成一棵目标决策树,由于每次选择出来的决策向量都是随机抽取的,且都不是全部的样本特征向量,这样可以保证每一个目标决策树都不相同,不会出现过拟合的情况。
步骤S204,当基于多组所述决策向量分别构建得到的所述目标决策树的数量大于第二数量阈值时,将所有目标决策树确定为所述程序识别模型。
具体的,当构建的目标决策树的数量大于预设的第二数量阈值时,将所有的目标决策树确定为程序识别模型。
可选的,上述步骤是构建程序识别模型的过程,接下来说明如何基于多个目标决策树的程序识别模型对待检测的程序进行识别。当终端接收到程序识别请求时,根据该程序识别请求确定待识别的程序,称为目标程序(如上述图2b对应实施例中的待检测进程)。同样地,终端获取表征目标程序操作行为的行为参数值,同样按照预设的目标顺序,将所有的行为参数值组合为特征向量,对应于目标程序的特征向量称为目标特征向量(目标特征向量对应的行为参数属性,和样本特征向量对应的行为参数属性不论是数量还是种类都是相同的)。
终端将目标特征向量遍历进程识别模型中的每一个目标决策树,即是终端将目标决策树的根节点作为父节点,由于父节点中记录了行为参数属性,在父节点的所有子节点中,确定行为参数值。根据上述确定的行为参数属性以及行为参数值,以及目标特征向量中该行为参数属性的取值,确定下一个访问的子节点,其中下一个访问的子节点中记录的行为参数值和目标特征向量中该行为参数属性的取值相同。再将子节点作为父节点,不断地递归,不断地确定下一个访问的节点,即是遍历目标决策树,最后访问的叶子节点所记录的安全标签,就是该目标决策树输出的安全标签(识别结果)。
按照上述方式,终端将目标特征向量遍历每一个目标决策树,每一个目标决策树都会输出一个安全标签。在程序识别模型中的所有目标决策树都输出了安全标签后,在所有输出结果中,终端统计属于正常标签的数量之和,作为正常数量;并统计属于异常标签的数量之和,作为异常数量,若正常数量大于异常数量,则说明与目标特征向量向匹配的安全标签(如上述图2b对应实施例中的安全标签20b)是正常标签;若正常数量小于或等于异常数量,则与说明目标特征向量向匹配的安全标签是异常标签。目标特征向量的安全标签即是目标程序的安全标签,若目标特征向量的安全标签是正常标签,说明目标程序的安全类型是正常类型,即目标程序是正常程序;若目标特征向量的安全标签是异常标签,说明目标程序的安全类型是异常类型,即目标程序是恶意程序(异常程序)。也可以理解为,每一个目标决策树都是一个弱分类器,多个目标决策树(多个弱分类器)组合在一起后,就是一个强分类器,强分类器的分类效果要大大强于若分类器,这种思想也属于集成学习。
请参见图6,是本发明实施例提供的一种构建目标决策树的示意图。如图6所示,现有6个样本程序分别对应的样本特征向量(分别为向量1、向量2、...、向量6),每个样本特征向量包括5个行为参数属性(分别为属性A、属性B、...、属性E),同时,每个样本特征向量还对应一个安全标签。终端按照有放回地随机抽样方式,每次抽取一个样本特征向量,总共抽取6次,可以得到6个决策向量,以及每个决策向量对应的安全标签。可以知道,由于是有放回地随机抽样,因此决策向量中的可能包含多个相同的样本特征向量,例如向量1和向量4就被抽样2次,向量3、向量6的样本特征向量就只被抽样1次。在上述抽取出来的6个决策向量中的5个行为参数属性中,再随机选取4个行为参数属性(选取属性A、属性C、属性D和属性E),作为决策属性。即先是行采样确定决策向量,再列采样确定决策属性。
在4个决策属性中,利用公式(2)、公式(3)、公式(4)计算各决策属性的信息增益。首先计算决策属性A的信息增益:
因此,决策属性A的信息增益为:0.91-0.67=0.24;采用相似的计算方式,可以依次计算得到决策属性C的信息增益为:0.91-0=0.91;决策属性D的信息增益为:0.91-0.45=0.46;决策属性E的信息增益为:0.91-0.80=0.11。因此,信息增益最大的即是决策属性C(属性C也是第一属性),可以创建根节点,根节点中记录了属性C。根据决策属性C的取值(行为参数值),把取值相同的决策向量划为一个待处理向量集合,即是将决策向量3、和决策向量6(对应属性C=1)划分为一个待处理向量集合;将决策向量1(对应属性C=2)划分为一个待处理向量集合;将决策向量4(对应属性C=3)划分为一个待处理向量集合。
对包含决策向量3、和决策向量6的待处理向量集合来说,由于包含的决策向量只对应一种安全标签,因此不必再分裂了,可以直接生成叶子节点,叶子节点中记录了决策向量3、和决策向量6的安全标签:正常,再将该集合中第一属性的取值即“属性C=1”(即是分裂条件)记录在叶子节点中,该叶子节点“正常,属性C=1”也是根节点的子节点。
对包含决策向量1的待处理向量集合来说,由于包含的决策向量只存在一种安全标签,也是直接生成叶子节点,叶子节点中记录了决策向量1的安全标签:异常,再将该集合中第一属性的取值即“属性C=2”(即是分裂条件)记录在叶子节点中,将叶子节点“异常,属性C=2”作为根节点的子节点,该叶子节点也是前述叶子节点“正常,属性C=1”的兄弟节点。
对包含决策向量4的待处理向量集合来说,由于包含的决策向量只存在一种安全标签,也是直接生成叶子节点,叶子节点中记录了决策向量4的安全标签:正常,再将该集合中第一属性的取值即“属性C=3”(即是分裂条件)记录在叶子节点中,将叶子节点“正常,属性C=3”作为根节点的子节点,该叶子节点也是前述2个叶子节点的兄弟节点。
这样就完整的构造出了一个目标决策树30d,可以再次进行行采样和列采用,再次构造目标决策树。多个目标决策树就是决策森林,决策森林就是一个程序识别模型。在识别阶段,终端基于目标决策树30d的识别过程为:目标向量1对应6个行为参数属性(分别为属性A、属性B、...、属性E)的取值分别为(1,1,1,2,3),在目标决策树中确定根节点记录的属性为:属性C,在目标向量1中确定属性C的取值为:1,在根节点的所有子节点中,确定属性C=1对应节点“正常,属性C=1”,且该节点已经是叶子节点,将该叶子节点记录的安全标签进行输出,即目标向量1遍历目标决策树30d后,目标决策树输出的结果安全标签为:正常标签。
若在前述构建目标决策树的例子中,第一次计算信息增益最大的属性E(第一属性),即根节点记录的是属性E,那么根据属性E的取值可以将决策向量1、决策向量3、决策向量4划分为一个待处理向量集合,将剩余的决策向量6作为一个待处理向量集合。对包含决策向量6的待处理向量集合来说,可以生成叶子节点1“正常,属性E=1”,该叶子节点1是根节点的子节点。对包含决策向量1、决策向量3、决策向量4的待处理向量集合来说,再确定信息增益最大的属性,若确定的属性是属性C(第二属性),就生成节点1,节点1中记录属性C,以及属性E=2(该待处理向量集合中第一属性的取值),将节点1作为根节点的子节点。根据属性C的取值,将决策向量1、决策向量3和决策向量4划分为3个待处理集合,一个决策向量就对应一个待处理集合。对包含决策向量1的待处理集合来说,可以生成叶子节点2“异常,属性C=2”,该叶子节点2是节点1的子节点。对包含决策向量3的待处理集合来说,可以生成叶子节点3“正常,属性C=1”,该叶子节点3是节点1的子节点。对包含决策向量4的待处理集合来说,可以生成叶子节点3“正常,属性C=3”,该叶子节点4也是节点1的子节点,且叶子节点2、叶子节点3和叶子节点4为兄弟节点。
将样本程序的行为参数值作为特征向量,可以准确地表达样本程序的特征,进而增加后续基于该特征向量所得到标签的准确性;同时,根据每个样本程序和对应向量集合之间的关联关系,可以确定每个样本向量的行为状态,自动化地为对应的样本程序设置对应的标签,相比人工设置标签,可以提高设置标签的效率,扩大带标签的样本程序数量;进一步,使用大量携带标签的样本程序所得到的识别模型具有较高的识别准确率。
进一步地,请参见图7,是本发明实施例提供的另一种程序处理方法的流程示意图。如图7所示,程序处理方法可以包括:
步骤S301,获取多个样本程序,并获取与每个样本程序分别对应的行为参数值,根据与所述每个样本程序分别对应的行为参数值,确定与所述每个样本程序分别对应的样本特征向量。
其中,步骤S301的具体实现方式可以参见上述图3对应实施例中的步骤S101,这里不再进行赘述。
步骤S302,获取与所述多个样本特征向量相关联的目标孤立森林,提取所述目标孤立森林中的目标孤立树中的第一节点对应的节点记录,作为第一记录。
具体的,终端获取训练好的、与样本特征向量相关联的目标孤立森林,此处的相关联是指训练目标孤立森林时,所使用训练特征向量中的行为参数属性和样本特征向量中的行为参数属性相同。目标孤立森林中包括多个目标孤立树,下述步骤以一个目标孤立树为例进行说明。终端提取目标孤立树中的节点(称为第一节点)对应的节点记录,作为第一记录,可以知道,第一次提取的是根节点对应的节点记录。
步骤S303,将所述多个样本特征向量作为第一辅助向量,根据所述第一记录,将所述第一辅助向量划分为所述向量集合;所述向量集合包括待划分向量集合。
具体的,终端将所有样本特征向量作为第一辅助向量,根据第一记录中记录的行为参数属性(称为节点属性)和行为参数值(称为节点属性值),将节点属性的行为参数值大于节点属性值的第一辅助向量组合为一个集合,称为向量集合;将节点属性的行为参数值小于节点属性值的第一辅助向量也组合为向量集合,上述向量集合包括待划分集合。节点属性的行为参数值等于节点属性值的第一辅助向量不生成任何集合,该第一辅助向量可以停止执行后续步骤。
步骤S304,提取所述第二节点对应的节点记录,作为第二记录;所述第二节点是在所述目标孤立树中所述第一节点的子节点。
具体的,终端在目标孤立树中,提取与第一节点的子节点(称为第二节点)对应的节点记录,称为第二记录。
步骤S305,将所述第二节点作为所述第一节点,并将所述第二记录作为所述第一记录,并将所述待划分向量集合中包含的样本特征向量作为所述第一辅助向量。
具体的,按照前述方式递归,即终端将第二记录作为新的第一记录,将第二节点作为新的第一节点,将待划分向量集合中包含的样本特征向量作为第一辅助向量。对一个待划分向量集合来说,终端再次根据新的第一记录(前述中的第二记录)中记录的行为参数属性(称为节点属性)和行为参数值(称为节点属性值),将节点属性的行为参数值大于节点属性值的新的第一辅助向量再组合为向量集合;将节点属性的行为参数值小于节点属性值的新的第一辅助向量再次组合为向量集合,上述向量集合包括待划分集合。递归地将多个样本特征向量划分为多个向量集合,可以知道是的,同一个样本特征向量可能属于多个不同的向量集合。需要说明的是,即使向量集合中只包括一个样本特征向量,只要第二节点中还存在节点记录,包含一个样本特征向量的向量集合也要一直生成新的向量集合,多个向量集合中包含的样本特征向量可以是相同的。当提取的第二节点中不存在节点记录了,或者,样本特征向量的节点属性对应的行为参数值和节点属性值相同,就可以停止生成新的向量集合。
步骤S306,当所述第二节点中不存在节点记录时,统计和样本特征向量之间存在关联关系的向量集合的数量,根据所统计的向量集合的数量确定所述样本特征向量在所述目标孤立树中的高度。
具体的,当第二节点中不包含节点记录时,说明向量集合生成完毕。对一个样本特征向量而言,终端将包含该样本特征向量的向量集合作为与该样本特征向量存在关联关系的向量集合。终端统计包含该样本特征向量的向量集合的数量,即是统计与该样本特征向量存在关联关系的向量集合的数量,将统计出来的数量作为该样本特征向量在一个目标孤立树中的高度。上述过程也可以理解为:样本特征向量遍历目标孤立树,终端确定在样本特征向量在目标孤立树中的高度。
步骤S307,根据所述样本特征向量在每个目标孤立树中的高度,确定与所述样本特征向量对应的样本行为状态。
具体的,上述步骤是确定多个样本特征向量在一棵目标孤立树中的高度,由于目标孤立森林包括多个目标孤立树,因此可以确定多个样本特征向量在每个目标孤立树中的高度。对每个样本特征向量而言,终端可以采用公式(5)根据多个高度,计算每个样本特征向量的样本异常分数:
其中,x表示样本特征向量,表示构造目标孤立树时训练样本的数量;E(h(x))表示样本特征向量x在目标孤立森林中的所有目标孤立树中的平均高度;为训练样本的数量为时,路径长度的平均值。其中,H(i)为调和数,该值可以被估计为In(i)+0.577。
从公式(5)可以看出,当E(h(x))→0时,S→1,即样本特征向量x的样本异常分数接近1。当时,S→0,即样本特征向量x的样本异常分数接近0。当样本特征向量时,S→0.5,即x的样本异常分数接近0.5。
获取异常分数阈值,若样本异常分数大于该异常分数阈值,那么对应的样本特征向量的样本行为状态是异常状态;若样本异常分数小于或等于该异常分数阈值,那么对应的样本特征向量的样本行为状态是正常状态。样本异常分数也可以解释为:对应样本特征向量的样本程序是异常程序的概率。样本异常分数越高,对应的样本程序属于异常程序的概率就越高;样本异常分数越低,对应的样本程序属于异常程序的概率就越低。
举例来说,样本程序A对应样本特征向量A,若确定样本特征向量A的样本异常分数为0.8,且预设的异常分数阈值是0.5,由于样本特征向量A的样本异常分数要大于异常分数阈值(0.8>0.5),因此可以判定样本特征向量A的样本行为状态是异常状态。
可选的,由于异常分数阈值会直接决定一个样本特征向量的行为状态是正常状态或者是异常状态,因此异常分数阈值的具体取值就非常重要。为了提高为样本程序设置安全标签的准确率,终端需要合理设置异常分数阈值。在样本程序中加入已知安全标签的程序,已知安全标签是指提前知道程序的安全标签,且已知的安全标签是程序的真实标签,根据上述步骤可以确定已知安全标签的程序的样本异常分数。终端可以根据该样本异常分数确定异常分数阈值。为了尽一步准确地确定样本异常分数阈值,终端可以提取已知安全标签的程序中属于异常程序的样本异常分数,根据提取出来的样本异常分数设置异常分数阈值。
可选的,在基于目标孤立森林计算每个样本特征向量的样本异常分数之前,终端就需要构建好目标孤立森林。下面对构建目标孤立森林的具体的过程进行描述:终端获取多个训练程序,训练程序的安全标签(安全类型)可以是已知的也可以是未知的。同样地,终端分别提取表征训练程序的操作行为的参数值,作为行为参数值,行为参数值也可以理解为行为参数属性的取值。将多个行为参数值,按照预设的目标顺序,组合为向量,称为训练特征向量(训练特征向量对应的行为参数属性,和样本特征向量对应的行为参数属性不论是数量还是种类都是相同的),每个训练程序都存在对应的训练特征向量。终端从多个训练特征向量中随机选择一组训练特征向量,作为基向量,当然基向量的数量是小于训练特征向量的,且基向量的数量就等于公式(5)中的构造目标孤立树时训练样本的数量基于基向量,和基向量对应的行为参数属性,终端构建孤立树,称为目标孤立树。这样就构建了一棵目标孤立树,后续可以继续在所有训练特征向量中再随机选择一组训练特征向量,作为基向量,继续构建目标孤立树。当构建的目标孤立树的数量大于预设的第一数量阈值时,将构建的所有目标孤立树确定为目标孤立森林。
基于基向量和基向量对应的行为参数属性,构建一棵孤立树的具体过程为:终端创建虚拟树,称为节点树。终端根据所有的基向量,生成节点,称为第三节点。将第三节点添加至节点树。此时,节点树中就包含第三节点。终端将所有基向量确定为第二辅助向量,从第二辅助向量所包含的所有行为参数属性中,随机选择一个行为参数属性,作为节点属性。在所有第二辅助向量的节点属性对应的最大行为参数值和所有第二辅助向量的节点属性对应的最小行为参值之间,终端随机选择一个数值,作为节点属性值。将上述节点属性和节点属性值组合为为节点记录,并添加至第三节点中。将节点属性对应的行为参数值小于节点属性值的第二辅助向量,作为第一子向量;将节点属性对应的行为参数值大于节点属性值的第二辅助向量,作为第二子向量。根据第一子向量生成第四节点,根据第二子向量生成第四节点。将上述两个第四节点均作为第三节点的子节点添加至节点树,且上述两个第四节点为兄弟节点。优选的,终端将第一子向量对应的第四节点作为第三节点的左子节点,将第二子向量对应的第四节点作为第三节点的右子节点。这样就构造了节点树的一个2叉分支,小于节点属性值的基向量被划分在左子树,大于节点属性值的基向量被划分在右子树。继续递归,不断地构造2叉分支,生成2叉树,即将第四节点作为新的第三节点,将第一子向量和第二子向量均作为新的第二辅助向量。
对第一子向量对应的新的第二辅助向量来说,终端从新的第二辅助向量(就是前述中的第一子向量)所包含的所有行为参数属性中,再随机选择一个行为参数属性,作为新的节点属性。在所有新的第二辅助向量的新的节点属性对应的最大行为参数值和所有新的第二辅助向量的新的节点属性对应的最小行为参值之间,终端随机选择一个数值,作为新的节点属性值。再将上述节点属性和节点属性值组合为为节点记录,添加至新的第三节点(就是前述中的第一子向量对应的第四节点)中。终端将节点属性对应的行为参数值小于节点属性值的新的第二辅助向量,作为新的第一子向量;将节点属性对应的行为参数值大于节点属性值的新的第二辅助向量,作为新的第二子向量。再生成新的第四节点,并将新生成的第四节点作为第三节点的子节点添加至节点树中,优选的,终端将新的第一子向量对应的新的第四节点作为第三节点的左子节点,将新的第二子向量对应的新的第四节点作为第三节点的右子节点。不断地递归,当节点树的高度达到高度阈值时,或者是第一子向量和第二子向量只包含一个训练特征向量时(即是不可再分),说明节点树满足收敛条件。满足收敛条件后,终端节点树确定为目标孤立树。上述可知,目标孤立树中的除叶子节点以外的节点都包括节点记录。
在训练目标孤立森林之前,同样可以基于K折验证提前确定模型超参数,再基于该模超参数训练目标孤立森林。由于需要验证模型的性能,因此在此处需要提前知道所有训练特征向量对应的安全标签。目标孤立森林的模型超参数可以包括:每个目标孤立树的高度、构造目标孤立树时训练特征向量的数量的取值、目标孤立森林中包含的目标孤立树的数量。和K折验证确定程序识别模型的模型参数类似,首先终端将所有的训练特征向量划分为K组,并提前预设多组模型参数,随机选择一组模型参数A,终端基于该选择出来的模型参数A,和K-1组训练特征向量,训练辅助孤立森林。终端基于剩余的1组训练特征向量验证上述辅助孤立森林在模型参数A中的识别误差。采用这种方式,让每一组训练特征向量都被当做测试集,可以得到模型参数A下,K个识别误差的均值。终端再随机选择一模型参数B,同样地使用K折验证确定在模型参数B下,K个识别误差的均值。不断的循环,最后将识别误差的均值最小的模型参数作为训练目标孤立森林的模型超参数。终端后续可以基于确定的模型超参数训练目标孤立森林,也就是再基于确定的模型超参数在所有的训练特征向量上,训练目标孤立森林。
请参见图8,是本发明实施例提供的一种构建目标孤立树的示意图。如图所示,现有6个训练程序分别对应的训练特征向量(分别为向量1、向量2、...、向量6),每个训练特征向量包含5个行为参数属性(属性A、属性B、...、属性E)。从6个训练特征向量中随机选择5个训练特征向量(选择向量1、向量3、向量4、向量5、向量6),作为基向量。将上述5个训练特征向量均作为第二辅助向量,根据第二辅助向量生成节点40c(第三节点),将节点40c添加至节点树40z中。从上述5个行为参数属性中,随机选取行为参数属性A,作为节点属性,第二辅助向量中属性A的取值范围为:0-1,在上述范围内,随机选择一个数值0.2,作为节点属性值。将“(属性A,0.2)”组合为节点记录添加至节点40c中。将属性A的取值小于0.2的第二辅助向量作为第一子向量,即向量1和向量4是第一子向量。将属性A的取值大于0.2的第二辅助向量作为第二子向量,即向量3、向量5和向量6是第二子向量。
根据上述第一子向量(向量1和向量4)生成节点40d(第四节点),将节点40d作为节点40c的左子节点添加至节点树40z中;根据上述第二子向量(向量3、向量5和向量6)生成节点40e(第四节点),将节点40e作为节点40c的右子节点添加至节点树40z中。当然,也可以将节点40d作为节点40c的右子节点;将节点40e作为节点40c的左子节点。
对节点树40z的左子树进行处理,将上述第一子向量再确定为第二辅助向量,即是将向量1和向量4作为第二辅助向量,将节点40d作为新的第三节点。从上述5个行为参数属性中,随机选取行为参数属性C,作为节点属性,新的第二辅助向量(向量1和向量4)中属性C的取值范围为:2-3,在上述范围内,随机选择一个数值2.5,作为节点属性值。将“(属性C,2.5)”组合为节点记录添加至节点40d(第三节点)中。将属性C的取值小于2.5的第二辅助向量又作为第一子向量,即向量1是第一子向量。将属性C的取值大于2.5的第二辅助向量作为第二子向量,即向量4是第二子向量。根据第一子向量(即是向量1)生成节点40f(第四节点),根据第二子向量(即是向量4)生成节点40g(第四节点)。将节点40f和节点40g分别作为节点40d的左右子节点。由于上述第一子向量和第二子向量都只包含一个训练特征向量了,不能再划分了,相当于节点树40z的左子树就构建完毕。
对节点树40z的右子树进行处理,将向量3、向量5和向量6再作为第二辅助向量,将节点40e作为新的第三节点。从上述5个行为参数属性中,随机选取行为参数属性E,作为节点属性,第二辅助向量(向量3、向量5和向量6)中属性E的取值范围为:1-2,在上述范围内,随机选择数值1.3,作为节点属性值。将“(属性E,1.3)”组合为节点记录添加至节点40e(第三节点)中。将属性E的取值小于1.3的第二辅助向量又作为第一子向量,即向量6是第一子向量。将属性E的取值大于1.3的第二辅助向量作为第二子向量,即向量3、向量5是第二子向量。根据第一子向量即是向量6生成节点40h(第四节点),根据第二子向量即是向量3、向量5生成节点40k(第四节点),将节点40h和节点40k分别作为节点40e的左右子节点。由于上述第一子向量(向量6)只包含一个训练特征向量了,不能再划分了,向量6就划分结束。
又将训练向量3、训练向量5作为第二辅助向量,将节点40k作为新的第三节点。从上述5个行为参数属性中,随机选取行为参数属性D,作为节点属性,第二辅助向量(向量3、向量5)中属性D的取值范围为:2-3,在上述范围内,随机选择数值1.3,作为节点属性值。将“(属性D,2.3)”组合为节点记录添加至节点40k(第三节点)中。将属性D的取值小于2.3的第二辅助向量又作为第一子向量,即向量5是第一子向量。将属性D的取值大于2.3的训练特征向量又作为第二子向量,即向量3是第二子向量。根据第一子向量即是向量5生成节点40x(第四节点),根据第二子向量即是向量3生成节点40y(第四节点)。将节点40x和节点40y分别作为节点40k的左右子节点。由于上述第一子向量和第二子向量都只包含一个训练特征向量了,不能再划分了,相当于节点树的右子树就构建完毕。至此,就构建节点树就构建完成,将节点树40z作为目标孤立树40z即可。
请参见图9a-图9b,是本发明实施例提供的一种确定样本行为状态的示意图。基于训练好的目标孤立树40z确定样本特征向量在上述目标孤立树中的高度,进而确定上述样本特征向量的样本行为状态。如同8a所示,现有3个样本特征向量(向量7、向量8和向量9)。提取目标孤立树40z的根节点(第一节点)中的节点记录:(属性A,0.2),该节点记录也是第一记录。根据第一记录因此将行为参数属性A大于0.2的样本特征向量划分为一个向量集合,如图9b所示,可以得到由向量7、向量8、向量9组合而成的向量集合50a。由于不存在行为参数属性A小于0.2的样本特征向量,此时只有一个向量集合50a。对向量集合50a来说,继续从根节点的右子节点40e(第二节点)中,提取节点记录:(属性E,1.3)(构建目标孤立树时,是将大于节点属性值的训练特征向量划分为右子树,将小于节点属性值的训练特征向量划分为左子树,因此此处是提取右子树中的节点),该节点记录也是第二记录。将第二节点作为新的第一节点,将第二记录作为新的第一记录。根据新的第一记录,将行为参数属性E小于1.3的集合50a中的样本特征向量划分为向量集合50c(向量集合50c中包括向量9)。将行为参数属性E大于1.3的集合50a中的样本特征向量划分为向量集合50b(向量集合50b中包括样向量7和向量8)。
对向量集合50c来说,由于节点40e(新的第一节点)的左子节点40h中不包含节点记录,对于集合50c就不必再生成新的向量集合,当然若节点40e的左子节点40h还包括节点记录,即使集合50c中只有一个样本特征向量,仍旧继续生成新的向量集合。
对向量集合50b来说,提取节点40e(第一节点)中右子节点40k(第二节点)中的节点记录:(属性D,2.3),该记录也是第二记录。将上述第二节点作为新的第一节点,将第二记录作为新的第一记录。根据新的第一记录,将行为参数属性D小于2.3的集合50b中的样本特征向量划分为向量集合50d(向量集合50d中向量7),将行为参数属性D大于2.3的集合50b中的样本特征向量划分为向量集合50e(向量集合50e中包括向量8)。对向量集合50d来说,由于节点40k的左子节点40x中不包含节点记录,对于集合50d就不必再生成新的向量集合,同样地,对向量集合50e来说,节点40k的右子节点40y中不包含节点记录,对于集合50e也不必再生成新的向量集合。因此,与向量7存在关联关系的是向量集合50a、向量集合50b和向量集合50d;与向量8存在关联关系的是向量集合50a、向量集合50b和向量集合50e;与向量9存在关联关系的是向量集合50a、向量集合50c。因此,样本特征向量7在目标孤立树40z中的高度是3、样本特征向量8在目标孤立树40z中的高度是3、样本特征向量9在目标孤立树40z中的高度是2。
上述过程也可以理解为:样本特征向量7遍历目标孤立树40z,依次访问节点40c,访问节点40e,访问节点40k和访问节点40x,因此样本特征向量7在目标孤立树40z中的高度为3;
样本特征向量8遍历目标孤立树40z,依次访问节点40c,访问节点40e,访问节点40k和访问节点40y,因此样本特征向量8在目标孤立树40z中的高度为3;样本特征向量9遍历目标孤立树40z,依次访问节点40c,访问节点40e,访问节点40h,因此样本特征向量9在目标孤立树40z中的高度为2。
根据每个样本特征向量对应的高度,基于公式(5)可以确定每个样本特征向量的样本异常分数,进而确定样本行为状态。
步骤S308,根据所述样本行为状态,确定与所述每个样本程序分别对应的安全标签;所述安全标签包括正常标签和异常标签。
步骤S309,根据所述多个样本程序和每个样本程序分别对应的安全标签,生成程序识别模型;所述程序识别模型是用于识别目标程序的安全类型。
其中,步骤S308-步骤S309的具体实现方式可以参见上述图3对应实施例中的步骤S101-步骤S104,这里不再进行赘述。
将样本程序的行为参数值作为特征向量,可以准确地表达样本程序的特征,进而增加后续基于该特征向量所得到标签的准确性;同时,根据每个样本程序和对应向量集合之间的关联关系,可以确定每个样本向量的行为状态,自动化地为对应的样本程序设置对应的标签,相比人工设置标签,可以提高设置标签的效率,扩大带标签的样本程序数量;进一步,使用大量携带标签的样本程序所得到的识别模型具有较高的识别准确率。
进一步地,请参见图10,是本发明实施例提供的另一种程序处理方法的流程示意图。如图10所示,程序处理方法可以包括:
步骤S401,获取多个样本程序,并获取与每个样本程序分别对应的行为参数值,根据与所述每个样本程序分别对应的行为参数值,确定与所述每个样本程序分别对应的样本特征向量。
其中,步骤S401的具体实现方式可以参见上述图3对应实施例中的步骤S101,这里不再进行赘述。
步骤S402,从所述多个样本特征向量中选择一组样本特征向量,作为中心向量。
具体的,终端从所有样本特征向量中随机选择多个样本特征向量,作为中心向量。
步骤S403,根据所述多个样本特征向量和所述中心向量之间的距离,将所述多个样本特征向量划分为多个特征簇。
具体的,终端计算每个样本特征向量和每个中心向量之间的距离,可以采用上述公式(1)中的欧式距离作为两个样本特征向量之间的距离。终端将每个样本特征向量分别划分至距离最近的中心向量所对应的特征簇,这样每个样本特征向量可以对应一个特征簇。可以知道的是,特征簇的数量和中心向量的数量是相等的。
步骤S404,在每个特征簇中所包含的所有样本特征向量中,分别选择位于中心的样本特征向量,作为所述中心向量。
具体的,对一个特征簇来说,在该特征簇所包含的所有样本特征向量中,终端选择位于中心的样本特征向量,再次作为中心向量。在特征簇中位于中心的样本特征向量是指该样本特征向量距离特征簇中其余样本特征向量最近。对多个特征簇来说,每个特征簇都存在对应的新的中心向量。终端继续计算所有样本特征向量和新的中心向量之间的距离,继续确定新的特征簇,又确定新的中心向量。不断地循环,不断地将相似的样本特征向量聚为一类。
步骤S405,当所述每个特征簇中所包含的样本特征向量保持不变时,将所述多个特征簇确定为所述多个向量集合。
具体的,当每个特征簇中所包含的样本特征向量保持不变时,或者循环的次数达到次数阈值时,终端停止聚类,并将每个特征簇确定为向量集合。
步骤S406,将与样本特征向量之间存在关联关系的向量集合的中心向量,作为目标中心向量,计算所述样本特征向量和所述目标中心向量之间的中心距离;
具体的,对一个样本特征向量来说,终端提取该样本特征向量所属向量集合中的中心向量,作为目标中心向量。计算该样本特征向量和目标中心向量之间的距离,作为中心距离,同样可以采用上述公式(1)中的欧式距离作为两个样本特征向量之间的距离。对多个样本特征向量而言,终端都可以分别计算样本特征向量和所属向量集合中的中心向量之间的中心距离。
步骤S407,根据与所述样本特征向量对应的中心距离,确定与所述样本特征向量对应的样本行为状态。
具体的,终端根据每个样本特征向量对应的中心距离,可以采用下述公式(6)分别确定每个样本特征向量对应的样本异常分数。
其中,d(x)表示样本特征向量x的中心距离,dmax表示特征向量x所属特征簇中,距中心向量最远的样本特征向量和该中心向量之间的距离。
若样本特征向量的中心距离大,那么该样本特征向量的样本异常分数就高;若样本特征向量的中心距离小,那么该样本特征向量的样本异常分数就低。
同样地,检测每个样本特征向量的样本异常分数,若样本异常分数大于该异常分数阈值,那么对应的样本特征向量的样本行为状态是异常状态;若样本异常分数小于或等于该异常分数阈值,那么对应的样本特征向量的样本行为状态是正常状态。
步骤S408,根据所述样本行为状态,确定与所述每个样本程序分别对应的安全标签;所述安全标签包括正常标签和异常标签。
步骤S409,根据所述多个样本程序和每个样本程序分别对应的安全标签,生成程序识别模型;所述程序识别模型是用于识别目标程序的安全类型。
其中,步骤S408-步骤S409的具体实现方式可以参见上述图3对应实施例中的步骤S103-步骤S104,这里不再进行赘述。
请参见图11,是本发明实施例提供的另一种确定样本行为状态的示意图。现有6个样本特征向量(向量1、向量2、...、向量6),从上述6个向量中随机选择向量1和向量4作为作为中心向量。剩余的4个向量分别计算和向量1和向量4之间的距离,将4个向量划分到最近中心向量所属于的特征簇中。可以得到,向量1、向量2和向量3属于同一个特征簇;向量4、向量5和向量6属于同一个特征簇。从向量1、向量2和向量3中选择位于中心的向量2,又作为中心向量。从向量4、向量5和向量6中择位于中心的向量6,又作为中心向量。又计算其余4个向量分别和向量2、向量6之间的距离,可以得到向量1、向量2和向量4属于同一个特征簇;向量3、向量5和向量6属于同一个特征簇。若此时迭代次数达到阈值,停止聚类。对向量1、向量2和向量4对应的特征簇来说,中心向量(目标中心向量)是向量2,向量1和向量4分别计算与向量2的距离,根据公式(5)确定每个向量的异常分数。对向量3、向量5和向量6对应的特征簇来说,中心向量(目标中心向量)是向量6,向量3和向量5分别计算与向量6的距离,根据公式(5)再确定每个向量的异常分数。根据每个向量的异常分数,以及异常分数阈值,确定每个向量的行为状态。
将样本程序的行为参数值作为特征向量,可以准确地表达样本程序的特征,进而增加后续基于该特征向量所得到标签的准确性;同时,根据每个样本程序和对应向量集合之间的关联关系,可以确定每个样本向量的行为状态,自动化地为对应的样本程序设置对应的标签,相比人工设置标签,可以提高设置标签的效率,扩大带标签的样本程序数量;进一步,使用大量携带标签的样本程序所得到的识别模型具有较高的识别准确率。
进一步的,请参见图12,是本发明实施例提供的一种程序处理装置的结构示意图。如图12所示,程序处理装置可以应用于上述图3-图11对应实施例中的终端,程序处理装置1可以包括:第一获取模块11、第二获取模块12、分数确定模块13、标签确定模块14和模型生成模块15。
第一获取模块11,用于获取多个样本程序;
第二获取模块12,用于获取与每个样本程序分别对应的行为参数值,根据与所述每个样本程序分别对应的行为参数值,确定与所述每个样本程序分别对应的样本特征向量;
分数确定模块13,用于将所述样本特征向量划分为多个向量集合,根据每个样本特征向量与所述向量集合之间的关联关系,确定与所述每个样本特征向量分别对应的样本行为状态;
标签确定模块14,用于根据所述样本行为状态,确定与所述每个样本程序分别对应的安全标签;所述安全标签包括正常标签和异常标签;
模型生成模块15,用于根据所述多个样本程序和每个样本程序分别对应的安全标签,生成程序识别模型;所述程序识别模型是用于识别目标程序的安全类型。
其中,第一获取模块11、第二获取模块12、分数确定模块13、标签确定模块14和模型生成模块15的具体功能实现方式可以参见上述图3对应实施例中的步骤S101-步骤S104,这里不再进行赘述。
请参见图12,程序处理装置1可以包括:第一获取模块11、第二获取模块12、分数确定模块13、标签确定模块14、模型生成模块15,还可以包括:第三获取模块16、识别模块17。
第三获取模块16,用于当接收到程序识别请求时,根据所述程序识别请求获取所述目标程序,并获取与所述目标程序对应的行为参数值,根据与所述目标程序对应的行为参数值,确定目标特征向量;
识别模块17,用于基于所述程序识别模型,对所述目标特征向量进行识别处理,得到与所述目标特征向量相匹配的安全标签;
所述第三获取模块16,还用于将所述程序识别模型识别的安全标签所指示的安全类型确定为与所述目标程序对应的安全类型。
其中,第三获取模块16、识别模块17的具体功能实现方式可以参见上述图5对应实施例中的步骤S204,这里不再进行赘述。
请参见图12,第二获取模块12可以包括:参数获取单元121、数值调整单元122。
参数获取单元121,用于获取与样本程序对应的多个原始参数值,在所述多个原始参数值中,提取表征程序操作行为的原始参数值,作为条件参数值;
数值调整单元122,用于将处于目标数值范围内的条件参数值调整为与所述目标数值范围相匹配的目标数值,将所述目标数值确定为与所述样本程序对应的行为参数值,将与所述样本程序对应的行为参数值组合为所述样本特征向量。
其中,参数获取单元121、数值调整单元122的具体功能实现方式可以参见上述图3对应实施例中的步骤S101,这里不再进行赘述。
请参见图12,分数确定模块13可以包括:提取单元131、向量统计单元132。
提取单元131,用于获取与所述多个样本特征向量相关联的目标孤立森林,提取所述目标孤立森林中的目标孤立树中的第一节点对应的节点记录,作为第一记录;
所述提取单元131,还用于将所述多个样本特征向量作为第一辅助向量,根据所述第一记录,将所述第一辅助向量划分为所述向量集合;所述向量集合包括待划分向量集合;
所述提取单元131,还用于提取所述第二节点对应的节点记录,作为第二记录;所述第二节点是在所述目标孤立树中所述第一节点的子节点;
所述提取单元,还用于将所述第二节点作为所述第一节点,并将所述第二记录作为所述第一记录,并将所述待划分向量集合中包含的样本特征向量作为所述第一辅助向量;
向量统计单元132,用于当所述第二节点中不存在节点记录时,统计和样本特征向量之间存在关联关系的向量集合的数量,根据所统计的向量集合的数量确定所述样本特征向量在所述目标孤立树中的高度;
所述向量统计单元132,还用于根据所述样本特征向量在每个目标孤立树中的高度,确定与所述样本特征向量对应的样本行为状态。
其中,提取单元131、向量统计单元132的具体功能实现方式可以参见上述图7对应实施例中的步骤S302-步骤S307,这里不再进行赘述。
请参见图12,程序处理装置1可以包括:第一获取模块11、第二获取模块12、分数确定模块13、标签确定模块14、模型生成模块15、第三获取模块16、识别模块17,还可以包括:向量确定模块18、构建模块19。
向量确定模块18,用于获取多个训练程序,并获取与每个训练程序分别对应的行为参数值,根据与所述每个训练程序分别对应的行为参数值,确定多个训练特征向量;
所述向量确定模块18,还用于从所述多个训练特征向量中提取一组训练特征向量,作为基向量;
构建模块19,用于根据所述基向量和所述基向量所包含的所有行为参数属性,构建目标孤立树;
所述向量确定模块18,还用于从所述多个训练特征向量中提取下一组训练特征向量,作为所述基向量;
所述向量确定模块18,还用于当基于多组所述基向量分别构建得到的所述目标孤立树的数量大于第一数量阈值时,将所有目标孤立树确定为所述目标孤立森林。
其中,向量确定模块18、构建模块19的具体功能实现方式可以参见上述图7对应实施例中的步骤S307,这里不再进行赘述。
请参见图12,构建模块19可以包括:创建单元191、选择单元192。
创建单元191,用于创建节点树,根据所述基向量生成第三节点,并将所述第三节点添加至所述节点树;
选择单元192,用于将所述基向量确定为第二辅助向量,从所述第二辅助向量所包含的所有行为参数属性中,选择一个行为参数属性,作为节点属性,根据所有第二辅助向量中的节点属性的行为参数值,确定节点属性值;
所述选择单元192,还用于将所述节点属性和节点属性值组合为节点记录添加至所述第三节点,根据所述节点属性和所述节点属性值,将所述第二辅助向量划分为第一子向量和第二子向量,根据所述第一子向量和所述第二子向量分别生成第四节点,将所述第四节点作为所述第三节点的子节点添加至所述节点树;
所述选择单元192,还用于将所述第四节点确定为所述第三节点,并将所述第一子向量和所述第二子向量均确定为所述第二辅助向量;
所述选择单元192,还用于当所述节点树满足收敛条件时,将所述节点树确定为所述目标孤立树。
其中,创建单元191、选择单元192的具体功能实现方式可以参见上述图7对应实施例中的步骤S307,这里不再进行赘述。
请参见图12,分数确定模块13可以包括:向量确定单元133、划分单元134。
向量确定单元133,用于从所述多个样本特征向量中选择一组样本特征向量,作为中心向量;
划分单元134,用于根据所述多个样本特征向量和所述中心向量之间的距离,将所述多个样本特征向量划分为多个特征簇;
所述划分单元134,还用于在每个特征簇中所包含的所有样本特征向量中,分别选择位于中心的样本特征向量,作为所述中心向量;
所述划分单元134,还用于当所述每个特征簇中所包含的样本特征向量保持不变时,将所述多个特征簇确定为所述多个向量集合;
所述划分单元134,还用于将与样本特征向量之间存在关联关系的向量集合的中心向量,作为目标中心向量,计算所述样本特征向量和所述目标中心向量之间的中心距离;
所述划分单元134,还用于根据与所述样本特征向量对应的中心距离,确定与所述样本特征向量对应的样本行为状态。
其中,向量确定单元133、划分单元134的具体功能实现方式可以参见上述图10对应实施例中的步骤S402-步骤S407,这里不再进行赘述。
应当理解,终端在通过提取单元131、向量统计单元132确定样本行为状态时,将不通过向量确定单元133、划分单元134确定样本行为状态;反之,终端在通过向量确定单元133、划分单元134确定样本行为状态时,将不通过提取单元131、向量统计单元132确定样本行为状态。
请参见图12,标签确定模块14可以包括:检测单元141、标签确定单元142。
检测单元141,用于检测与样本特征向量对应的样本行为状态;
标签确定单元142,用于当所述样本行为状态属于异常状态时,确定所述样本特征向量对应的样本程序的安全标签为异常标签;
所述标签确定单元142,还用于当所述样本行为状态属于正常状态时,确定所述样本特征向量对应的样本程序的安全标签为正常标签。
其中,检测单元141、标签确定单元142的具体功能实现方式可以参见上述图5对应实施例中的步骤S204,这里不再进行赘述。
请参见图12,模型生成模块15可以包括:向量获取单元151、构建单元152。
向量获取单元151,用于获取所述多个样本特征向量,从所述多个样本特征向量中提取一组样本特征向量作为决策向量,从所述决策向量所包含的所有行为参数属性中,选择多个行为参数属性作为决策属性;
构建单元152,用于根据所述决策属性、所述决策向量、所述决策向量对应的安全标签,构建目标决策树;
所述向量获取单元151,还用于从所述多个样本特征向量中提取下一组样本特征向量,作为所述决策向量;
所述向量获取单元151,还用于当基于多组所述决策向量分别构建得到的所述目标决策树的数量大于第二数量阈值时,将所有目标决策树确定为所述程序识别模型。
其中,向量获取单元151、构建单元152的具体功能实现方式可以参见上述图5对应实施例中的步骤S201-步骤S204,这里不再进行赘述。
请参见图12,构建单元152可以包括:创建子单元1521、添加子单元1522、划分子单元1523。
创建子单元1521,用于创建决策树,根据所述决策向量和所述决策向量对应的安全标签,计算各决策属性对应的信息增益,将信息增益最大的决策属性作为第一属性;
添加子单元1522,用于根据所述第一属性生成第五节点,将所述第五节点添加至所述决策树;
划分子单元1523,用于将所述决策向量确定为第三辅助向量,根据所述第三辅助向量中的第一属性对应的行为参数值,将所述第三辅助向量划分为多个待处理向量集合;
所述划分子单元1523,还用于将所述待处理向量集合中包含的决策向量作为目标子向量;
所述划分子单元1523,还用于根据所述目标子向量和所述目标子向量对应的安全标签,计算各决策属性对应的信息增益,将信息增益最大的决策属性作为第二属性;
所述划分子单元1523,还用于根据所述第二属性生成第六节点,将所述第六节点作为所述第五节点的子节点添加至所述决策树,将所述目标子向量中的第一属性对应的行为参数值添加至所述第六节点;
所述划分子单元1523,还用于将所述第二属性确定为所述第一属性,将所述第六节点确定为所述第五节点,并将所述目标子向量确定为所述第三辅助向量;
所述划分子单元1523,还用于当所述待处理向量集合中所包含的样本特征向量的安全标签相同时,根据所述待处理向量集合中相同的安全标签,生成所述决策树的叶子节点,将所述待处理向量集合中的决策向量的第一属性对应的行为参数值添加至所述叶子节点,并将所述决策树确定为所述目标决策树。
其中,创建子单元1521、添加子单元1522、划分子单元1523的具体功能实现方式可以参见上述图5对应实施例中的步骤S202,这里不再进行赘述。
请参见图12,识别模块17可以包括:遍历单元171、标签统计单元172。
遍历单元171,用于将所述目标特征向量遍历所述进程识别模型中所有目标决策树,确定所述目标特征向量在每个目标决策树中的安全标签;
标签统计单元172,用于根据所有目标决策树确定的安全标签,统计属于正常标签的数量之和,作为正常数量,并统计属于异常标签的数量之和,作为异常数量;
所述标签统计单元172,还用于若所述正常数量大于所述异常数量,则确定与所述目标特征向量相匹配的安全标签是正常标签;
所述标签统计单元172,还用于若所述正常数量小于或等于所述异常数量,则确定与所述目标特征向量相匹配的安全标签是异常标签。
其中,遍历单元171、标签统计单元172的具体功能实现方式可以参见上述图5对应实施例中的步骤S204,这里不再进行赘述。
请参见图12,程序处理装置1可以包括:第一获取模块11、第二获取模块12、分数确定模块13、标签确定模块14、模型生成模块15、第三获取模块16、识别模块17、向量确定模块18、构建模块19,还可以包括:第四获取模块20、提取模块21、训练模块22、计算模块23。
第四获取模块20,用于获取多组初始模型参数,在所述多组初始模型参数中选择一组初始模型参数,作为训练参数;
提取模块21,用于将所述多个样本程序划分为多个程序集合,从所述多个程序集合中提取一个程序集合作为第一集合,其余程序集合作为第二集合;
训练模块22,用于根据所述训练参数、所述第二集合中的样本程序和所述第二集合中的样本程序分别对应的安全标签,训练异常检测模型;
计算模块23,用于基于所述异常检测模型,对所述第一集合中的样本程序进行识别处理,得到预测安全标签,根据所述第一集合中的样本程序的安全标签和所述预测安全标签,计算预测误差;
所述计算模块23,还用于当每个程序集合均被确定为所述第一集合时,将多个预测误差的均值作为所述训练参数的识别误差;
所述计算模块23,还用于从所述多组初始模型参数中选择下一组初始模型参数,作为所述训练参数;
所述计算模块23,还用于当每组初始模型参数均被确定为所述训练参数时,将识别误差最低的训练参数作为目标模型参数;所述目标模型参数用于生成所述程序识别模型。
其中,第四获取模块20、提取模块21、训练模块22、计算模块23的具体功能实现方式可以参见上述图3对应实施例中的步骤S104,这里不再进行赘述。
进一步地,请参见图13,是本发明实施例提供的一种电子设备的结构示意图。上述图3-图11对应实施例中的终端可以为电子设备1000,如图13所示,所述电子设备1000可以包括:用户接口1002、处理器1004、编码器1006以及存储器1008。信号接收器1016用于经由蜂窝接口1010、WIFI接口1012、...、或NFC接口1014接收或者发送数据。编码器1006将接收到的数据编码为计算机处理的数据格式。存储器1008中存储有计算机程序,处理器1004被设置为通过计算机程序执行上述任一项方法实施例中的步骤。存储器1008可包括易失性存储器(例如,动态随机存取存储器DRAM),还可以包括非易失性存储器(例如,一次性可编程只读存储器OTPROM)。在一些实例中,存储器1008可进一步包括相对于处理器1004远程设置的存储器,这些远程存储器可以通过网络连接至电子设备1000。用户接口1002可以包括:接收机1018和显示器1020。
在图13所示的电子设备1000中,处理器1004可以用于调用存储器1008中存储计算机程序,以实现:
获取多个样本程序,并获取与每个样本程序分别对应的行为参数值,根据与所述每个样本程序分别对应的行为参数值,确定与所述每个样本程序分别对应的样本特征向量;
将所述样本特征向量划分为多个向量集合,根据每个样本特征向量与所述向量集合之间的关联关系,确定与所述每个样本特征向量分别对应的样本行为状态;
根据所述样本行为状态,确定与所述每个样本程序分别对应的安全标签;所述安全标签包括正常标签和异常标签;
根据所述多个样本程序和每个样本程序分别对应的安全标签,生成程序识别模型;所述程序识别模型是用于识别目标程序的安全类型。
应当理解,本发明实施例中所描述的电子设备1000可执行前文图3到图11所对应实施例中对所述程序处理方法的描述,也可执行前文图12所对应实施例中对所述程序处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本发明实施例还提供了一种计算机存储介质,且所述计算机存储介质中存储有前文提及的程序处理装置1所执行的计算机程序,且所述计算机程序包括程序指令,当所述处理器执行所述程序指令时,能够执行前文图3到图11所对应实施例中对所述程序处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本发明所涉及的计算机存储介质实施例中未披露的技术细节,请参照本发明方法实施例的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (15)

1.一种程序处理方法,其特征在于,包括:
获取多个样本程序,并获取与每个样本程序分别对应的行为参数值,根据与所述每个样本程序分别对应的行为参数值,确定与所述每个样本程序分别对应的样本特征向量;
将所述样本特征向量划分为多个向量集合,根据每个样本特征向量与所述向量集合之间的关联关系,确定与所述每个样本特征向量分别对应的样本行为状态;
根据所述样本行为状态,确定与所述每个样本程序分别对应的安全标签;所述安全标签包括正常标签和异常标签;
根据所述多个样本程序和每个样本程序分别对应的安全标签,生成程序识别模型;所述程序识别模型是用于识别目标程序的安全类型。
2.根据权利要求1所述的方法,其特征在于,还包括:
当接收到程序识别请求时,根据所述程序识别请求获取所述目标程序,并获取与所述目标程序对应的行为参数值,根据与所述目标程序对应的行为参数值,确定目标特征向量;
基于所述程序识别模型,对所述目标特征向量进行识别处理,得到与所述目标特征向量相匹配的安全标签,将所述程序识别模型识别的安全标签所指示的安全类型确定为与所述目标程序对应的安全类型。
3.根据权利要求1所述的方法,其特征在于,所述获取与每个样本程序分别对应的行为参数值,根据与所述每个样本程序分别对应的行为参数值,确定与所述每个样本程序分别对应的样本特征向量,包括:
获取与样本程序对应的多个原始参数值,在所述多个原始参数值中,提取表征程序操作行为的原始参数值,作为条件参数值;
将处于目标数值范围内的条件参数值调整为与所述目标数值范围相匹配的目标数值,将所述目标数值确定为与所述样本程序对应的行为参数值,将与所述样本程序对应的行为参数值组合为所述样本特征向量。
4.根据权利要求1所述的方法,其特征在于,所述将所述样本特征向量划分为多个向量集合,根据每个样本特征向量与所述向量集合之间的关联关系,确定与所述每个样本特征向量分别对应的样本行为状态,包括:
获取与所述多个样本特征向量相关联的目标孤立森林,提取所述目标孤立森林中的目标孤立树中的第一节点对应的节点记录,作为第一记录;
将所述多个样本特征向量作为第一辅助向量,根据所述第一记录,将所述第一辅助向量划分为所述向量集合;所述向量集合包括待划分向量集合;
提取所述第二节点对应的节点记录,作为第二记录;所述第二节点是在所述目标孤立树中所述第一节点的子节点;
将所述第二节点作为所述第一节点,并将所述第二记录作为所述第一记录,并将所述待划分向量集合中包含的样本特征向量作为所述第一辅助向量;
当所述第二节点中不存在节点记录时,统计和样本特征向量之间存在关联关系的向量集合的数量,根据所统计的向量集合的数量确定所述样本特征向量在所述目标孤立树中的高度;
根据所述样本特征向量在每个目标孤立树中的高度,确定与所述样本特征向量对应的样本行为状态。
5.根据权利要求4所述的方法,其特征在于,还包括:
获取多个训练程序,并获取与每个训练程序分别对应的行为参数值,根据与所述每个训练程序分别对应的行为参数值,确定多个训练特征向量;
从所述多个训练特征向量中提取一组训练特征向量,作为基向量,根据所述基向量和所述基向量所包含的所有行为参数属性,构建目标孤立树;
从所述多个训练特征向量中提取下一组训练特征向量,作为所述基向量;
当基于多组所述基向量分别构建得到的所述目标孤立树的数量大于第一数量阈值时,将所有目标孤立树确定为所述目标孤立森林。
6.根据权利要求5所述的方法,其特征在于,所述根据所述基向量和所述基向量所包含的所有行为参数属性,构建目标孤立树,包括:
创建节点树,根据所述基向量生成第三节点,并将所述第三节点添加至所述节点树;
将所述基向量确定为第二辅助向量,从所述第二辅助向量所包含的所有行为参数属性中,选择一个行为参数属性,作为节点属性,根据所有第二辅助向量中的节点属性的行为参数值,确定节点属性值;
将所述节点属性和节点属性值组合为节点记录添加至所述第三节点,根据所述节点属性和所述节点属性值,将所述第二辅助向量划分为第一子向量和第二子向量,根据所述第一子向量和所述第二子向量分别生成第四节点,将所述第四节点作为所述第三节点的子节点添加至所述节点树;
将所述第四节点确定为所述第三节点,并将所述第一子向量和所述第二子向量均确定为所述第二辅助向量;
当所述节点树满足收敛条件时,将所述节点树确定为所述目标孤立树。
7.根据权利要求1所述的方法,其特征在于,所述将所述样本特征向量划分为多个向量集合,根据每个样本特征向量与所述向量集合之间的关联关系,确定与所述每个样本特征向量分别对应的样本行为状态,包括:
从所述多个样本特征向量中选择一组样本特征向量,作为中心向量;
根据所述多个样本特征向量和所述中心向量之间的距离,将所述多个样本特征向量划分为多个特征簇;
在每个特征簇中所包含的所有样本特征向量中,分别选择位于中心的样本特征向量,作为所述中心向量;
当所述每个特征簇中所包含的样本特征向量保持不变时,将所述多个特征簇确定为所述多个向量集合;
将与样本特征向量之间存在关联关系的向量集合的中心向量,作为目标中心向量,计算所述样本特征向量和所述目标中心向量之间的中心距离;
根据与所述样本特征向量对应的中心距离,确定与所述样本特征向量对应的样本行为状态。
8.根据权利要求1所述的方法,其特征在于,所述根据所述样本行为状态,确定与所述每个样本程序分别对应的安全标签,包括:
检测与样本特征向量对应的样本行为状态;
当所述样本行为状态属于异常状态时,确定所述样本特征向量对应的样本程序的安全标签为异常标签;
当所述样本行为状态属于正常状态时,确定所述样本特征向量对应的样本程序的安全标签为正常标签。
9.根据权利要求2所述的方法,其特征在于,所述根据所述多个样本程序和每个样本程序分别对应的安全标签,生成程序识别模型,包括:
获取所述多个样本特征向量,从所述多个样本特征向量中提取一组样本特征向量作为决策向量,从所述决策向量所包含的所有行为参数属性中,选择多个行为参数属性作为决策属性;
根据所述决策属性、所述决策向量、所述决策向量对应的安全标签,构建目标决策树;
从所述多个样本特征向量中提取下一组样本特征向量,作为所述决策向量;
当基于多组所述决策向量分别构建得到的所述目标决策树的数量大于第二数量阈值时,将所有目标决策树确定为所述程序识别模型。
10.根据权利要求9所述的方法,其特征在于,所述根据所述决策属性、所述决策向量、所述决策向量对应的安全标签,构建目标决策树,包括:
创建决策树,根据所述决策向量和所述决策向量对应的安全标签,计算各决策属性对应的信息增益,将信息增益最大的决策属性作为第一属性;
根据所述第一属性生成第五节点,将所述第五节点添加至所述决策树;
将所述决策向量确定为第三辅助向量,根据所述第三辅助向量中的第一属性对应的行为参数值,将所述第三辅助向量划分为多个待处理向量集合;
将所述待处理向量集合中包含的决策向量作为目标子向量;
根据所述目标子向量和所述目标子向量对应的安全标签,计算各决策属性对应的信息增益,将信息增益最大的决策属性作为第二属性;
根据所述第二属性生成第六节点,将所述第六节点作为所述第五节点的子节点添加至所述决策树,将所述目标子向量中的第一属性对应的行为参数值添加至所述第六节点;
将所述第二属性确定为所述第一属性,将所述第六节点确定为所述第五节点,并将所述目标子向量确定为所述第三辅助向量;
当所述待处理向量集合中所包含的样本特征向量的安全标签相同时,根据所述待处理向量集合中相同的安全标签,生成所述决策树的叶子节点,将所述待处理向量集合中的决策向量的第一属性对应的行为参数值添加至所述叶子节点,并将所述决策树确定为所述目标决策树。
11.根据权利要求9所述的方法,其特征在于,所述基于所述程序识别模型,对所述目标特征向量进行识别处理,得到与所述目标特征向量相匹配的安全标签,包括:
将所述目标特征向量遍历所述进程识别模型中所有目标决策树,确定所述目标特征向量在每个目标决策树中的安全标签;
根据所有目标决策树确定的安全标签,统计属于正常标签的数量之和,作为正常数量,并统计属于异常标签的数量之和,作为异常数量;
若所述正常数量大于所述异常数量,则确定与所述目标特征向量相匹配的安全标签是正常标签;
若所述正常数量小于或等于所述异常数量,则确定与所述目标特征向量相匹配的安全标签是异常标签。
12.根据权利要求1所述的方法,其特征在于,所述根据所述多个样本程序和每个样本程序分别对应的安全标签,生成程序识别模型之前,还包括:
获取多组初始模型参数,在所述多组初始模型参数中选择一组初始模型参数,作为训练参数;
将所述多个样本程序划分为多个程序集合,从所述多个程序集合中提取一个程序集合作为第一集合,其余程序集合作为第二集合;
根据所述训练参数、所述第二集合中的样本程序和所述第二集合中的样本程序分别对应的安全标签,训练异常检测模型;
基于所述异常检测模型,对所述第一集合中的样本程序进行识别处理,得到预测安全标签,根据所述第一集合中的样本程序的安全标签和所述预测安全标签,计算预测误差;
当每个程序集合均被确定为所述第一集合时,将多个预测误差的均值作为所述训练参数的识别误差;
从所述多组初始模型参数中选择下一组初始模型参数,作为所述训练参数;
当每组初始模型参数均被确定为所述训练参数时,将识别误差最低的训练参数作为目标模型参数;所述目标模型参数用于生成所述程序识别模型。
13.一种程序处理装置,其特征在于,包括:
第一获取模块,用于获取多个样本程序;
第二获取模块,用于获取与每个样本程序分别对应的行为参数值,根据与所述每个样本程序分别对应的行为参数值,确定与所述每个样本程序分别对应的样本特征向量;
分数确定模块,用于将所述样本特征向量划分为多个向量集合,根据每个样本特征向量与所述向量集合之间的关联关系,确定与所述每个样本特征向量分别对应的样本行为状态;
标签确定模块,用于根据所述样本行为状态,确定与所述每个样本程序分别对应的安全标签;所述安全标签包括正常标签和异常标签;
模型生成模块,用于根据所述多个样本程序和每个样本程序分别对应的安全标签,生成程序识别模型;所述程序识别模型是用于识别目标程序的安全类型。
14.一种电子设备,其特征在于,包括:处理器和存储器;
所述处理器和存储器相连,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如权利要求1-12任一项所述的方法。
15.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-12任一项所述的方法。
CN201910016615.6A 2019-01-08 2019-01-08 一种程序处理方法、装置以及相关设备 Pending CN110162970A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910016615.6A CN110162970A (zh) 2019-01-08 2019-01-08 一种程序处理方法、装置以及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910016615.6A CN110162970A (zh) 2019-01-08 2019-01-08 一种程序处理方法、装置以及相关设备

Publications (1)

Publication Number Publication Date
CN110162970A true CN110162970A (zh) 2019-08-23

Family

ID=67644839

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910016615.6A Pending CN110162970A (zh) 2019-01-08 2019-01-08 一种程序处理方法、装置以及相关设备

Country Status (1)

Country Link
CN (1) CN110162970A (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110533108A (zh) * 2019-09-02 2019-12-03 四川长虹电器股份有限公司 一种基于孤立森林算法的销量异常值检测方法
CN110765459A (zh) * 2019-10-18 2020-02-07 北京天融信网络安全技术有限公司 一种恶意脚本检测方法、装置和存储介质
CN110807488A (zh) * 2019-11-01 2020-02-18 北京芯盾时代科技有限公司 一种基于用户对等组的异常检测方法及装置
CN111160647A (zh) * 2019-12-30 2020-05-15 第四范式(北京)技术有限公司 一种洗钱行为预测方法及装置
CN111338683A (zh) * 2020-02-04 2020-06-26 北京邮电大学 一种算法类程序代码分类方法、装置、设备及介质
CN111507382A (zh) * 2020-04-01 2020-08-07 北京互金新融科技有限公司 样本文件的聚类方法及装置、电子设备
CN111598186A (zh) * 2020-06-05 2020-08-28 腾讯科技(深圳)有限公司 基于纵向联邦学习的决策模型训练方法、预测方法及装置
CN112508095A (zh) * 2020-12-07 2021-03-16 中国平安人寿保险股份有限公司 一种样本处理方法、装置、电子设备及存储介质
CN112990330A (zh) * 2021-03-26 2021-06-18 国网河北省电力有限公司营销服务中心 用户用能异常数据检测方法及设备
CN113469322A (zh) * 2020-03-31 2021-10-01 杭州海康威视数字技术股份有限公司 确定模型的可执行程序的方法、装置、设备及存储介质
CN115242534A (zh) * 2021-03-17 2022-10-25 北京安天网络安全技术有限公司 异常节点识别方法、安全查询方法和装置

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110533108A (zh) * 2019-09-02 2019-12-03 四川长虹电器股份有限公司 一种基于孤立森林算法的销量异常值检测方法
CN110765459A (zh) * 2019-10-18 2020-02-07 北京天融信网络安全技术有限公司 一种恶意脚本检测方法、装置和存储介质
CN110807488A (zh) * 2019-11-01 2020-02-18 北京芯盾时代科技有限公司 一种基于用户对等组的异常检测方法及装置
CN111160647A (zh) * 2019-12-30 2020-05-15 第四范式(北京)技术有限公司 一种洗钱行为预测方法及装置
CN111160647B (zh) * 2019-12-30 2023-08-22 第四范式(北京)技术有限公司 一种洗钱行为预测方法及装置
CN111338683A (zh) * 2020-02-04 2020-06-26 北京邮电大学 一种算法类程序代码分类方法、装置、设备及介质
CN113469322A (zh) * 2020-03-31 2021-10-01 杭州海康威视数字技术股份有限公司 确定模型的可执行程序的方法、装置、设备及存储介质
CN113469322B (zh) * 2020-03-31 2023-07-18 杭州海康威视数字技术股份有限公司 确定模型的可执行程序的方法、装置、设备及存储介质
CN111507382B (zh) * 2020-04-01 2023-05-05 北京互金新融科技有限公司 样本文件的聚类方法及装置、电子设备
CN111507382A (zh) * 2020-04-01 2020-08-07 北京互金新融科技有限公司 样本文件的聚类方法及装置、电子设备
CN111598186A (zh) * 2020-06-05 2020-08-28 腾讯科技(深圳)有限公司 基于纵向联邦学习的决策模型训练方法、预测方法及装置
CN112508095A (zh) * 2020-12-07 2021-03-16 中国平安人寿保险股份有限公司 一种样本处理方法、装置、电子设备及存储介质
CN115242534A (zh) * 2021-03-17 2022-10-25 北京安天网络安全技术有限公司 异常节点识别方法、安全查询方法和装置
CN115242534B (zh) * 2021-03-17 2024-01-02 北京安天网络安全技术有限公司 节点状态安全查询方法、系统和装置
CN112990330A (zh) * 2021-03-26 2021-06-18 国网河北省电力有限公司营销服务中心 用户用能异常数据检测方法及设备
CN112990330B (zh) * 2021-03-26 2022-09-20 国网河北省电力有限公司营销服务中心 用户用能异常数据检测方法及设备

Similar Documents

Publication Publication Date Title
CN110162970A (zh) 一种程序处理方法、装置以及相关设备
CN111181939B (zh) 一种基于集成学习的网络入侵检测方法及装置
CN109766872B (zh) 图像识别方法和装置
CN109615116A (zh) 一种电信诈骗事件检测方法和检测系统
CN111475680A (zh) 检测异常高密子图的方法、装置、设备及存储介质
CA3066029A1 (en) Image feature acquisition
CN109818961B (zh) 一种网络入侵检测方法、装置和设备
CN109327480B (zh) 一种多步攻击场景挖掘方法
CN109447180A (zh) 一种基于大数据和机器学习的电信诈骗上当人发现方法
CN106485146B (zh) 一种信息处理方法及服务器
CN109903053B (zh) 一种基于传感器数据进行行为识别的反欺诈方法
CN107169106A (zh) 视频检索方法、装置、存储介质及处理器
CN110047506B (zh) 一种基于卷积神经网络和多核学习svm的关键音频检测方法
CN109670306A (zh) 基于人工智能的电力恶意代码检测方法、服务器及系统
CN111401105B (zh) 一种视频表情识别方法、装置及设备
CN111586728B (zh) 一种面向小样本特征的异构无线网络故障检测与诊断方法
CN110414433A (zh) 图像处理方法、装置、存储介质和计算机设备
CN111986027A (zh) 基于人工智能的异常交易处理方法、装置
CN110716957B (zh) 类案可疑对象智能挖掘分析方法
CN115438102A (zh) 时空数据异常识别方法、装置和电子设备
CN115577357A (zh) 一种基于堆叠集成技术的Android恶意软件检测方法
CN109934352B (zh) 智能模型的自动进化方法
CN116136897A (zh) 信息处理方法以及装置
CN116523711A (zh) 基于人工智能的教育监管系统及其方法
CN116865994A (zh) 一种基于大数据的网络数据安全预测方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination