Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD AND SYSTEM FOR PROGRAM IDENTIFICATION BASED ON MACHINE LEARNING
Document Type and Number:
WIPO Patent Application WO/2012/071989
Kind Code:
A1
Abstract:
A method and system for program identification based on machine learning, the method includes: analyzing an unknown program input, extracting characteristics of the unknown program; roughly classifying for the unknown program according to the extracted characteristics; estimating by inputting the unknown program to a corresponding decision-making machine generated by training according to a result of the rough classification; outputting an identification result of the unknown program, wherein the identification result is a malicious program or non-malicious program. The embodiment of the invention adopts machine learning technology, achieves the decision-making machine for identifying malicious programs by analyzing a large number of program samples and can save a lot of manpower and improve identification efficiency for malicious programs by using the decision-making machine; furthermore, can find the inherent laws of programs based on data mining for massive programs, prevent malicious programs that has not happened and make malicious programs difficult to avoid killing.

Inventors:
ZHOU HONGYI (CN)
DONG YI (CN)
ZHOU HUI (CN)
Application Number:
PCT/CN2011/082416
Publication Date:
June 07, 2012
Filing Date:
November 18, 2011
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
BEIJING QIHOO TECH CO LTD (CN)
ZHOU HONGYI (CN)
DONG YI (CN)
ZHOU HUI (CN)
International Classes:
G06F21/56
Foreign References:
CN101593253A2009-12-02
CN101944167A2011-01-12
CN101599113A2009-12-09
US20090113128A12009-04-30
Attorney, Agent or Firm:
UNITALEN ATTORNEYS AT LAW (CN)
北京集佳知识产权代理有限公司 (CN)
Download PDF:
Claims:
权 利 要 求

1、 一种基于机器学习的程序识别方法, 其特征在于, 包括:

分析输入的未知程序, 提取所述未知程序的特征;

根据所提取的特征对所述未知程序进行粗分类;

根据所述粗分类的结果,将所述未知程序输入对应的训练产生的决策机中 进行判断;

输出对所述未知程序的识别结果, 其中, 所述识别结果为恶意程序或非恶 意程序。

2、 根据权利要求 1所述的方法, 其特征在于,

所述提取所述未知程序的特征;根据所提取的特征对所述未知程序进行粗 分类, 包括: 提取所述未知程序中的类行为特征, 其中, 所述类行为特征包括 导入表库特征和导入表应用程序编程接口 API特征;根据所提取的类行为特征 对所述未知程序进行粗分类;

或者,

所述提取所述未知程序的特征,根据所提取的特征对所述未知程序进行粗 分类, 包括: 提取所述未知程序中的 PE文件的结构特征; 根据所提取的 PE 文件的结构特征对所述未知程序进行粗分类。

3、 根据权利要求 2所述的方法, 其特征在于,

所述导入表库特征包括:

网络类特征、 高级 WIN32应用程序接口类特征、 系统内核类特征、 操作 系统用户界面相关应用程序接口类特征、操作系统应用程序共用图像用户界面 模块类特征、 操作系统硬件提取层模块类特征、 虚拟机相关模块类特征、 标准 C运行库程序类特征、 对象链接和嵌入相关模块类特征、操作系统进程状态支 持模块类特征、 操作系统 32位外壳动态链接库文件类特征、 地址动态链接库 文件类特征;

4、 根据权利要求 2所述的方法, 其特征在于,

所述 PE文件的结构特征包括至少一种下述特征: PE文件头特征、 PE标 准头特征、 PE可选头特征、 数据目录特征、 常用节表特征。

5、 根据权利要求 1至 4任一项所述的方法, 其特征在于, 当包括多个决策机时,所述将所述未知程序输入对应的训练产生的决策机 中进行判断包括:

将所述未知程序分别输入对应的训练产生的一个或多个决策机中进行判 断; 根据预先设置的每种特征分类在每个决策机中的权重,将每个决策机对所 述未知程序进行判断的结果进行加权计算;

所述输出对未知程序的识别结果具体为:根据所述加权计算的结果输出对 所述未知程序的识别结果。

6、 根据权利要求 5所述的方法, 其特征在于, 所述根据预先设置的每种 特征分类在每个决策机中的权重,将每个决策机对所述未知程序进行判断的结 果进行加权计算, 包括:

根据预先设置的每种 PE文件的结构特征分类在每个决策机中的权重, 将 每个决策机对所述未知程序进行判断的结果进行加权计算;

或者,

根据预先设置的每种类行为特征分类在每个决策机中的权重,将每个决策 机对所述未知程序进行判断的结果进行加权计算。

7、 根据权利要求 1至 6任一项所述的方法, 其特征在于, 还包括: 输入提取到的海量程序, 其中, 所述海量程序中包括恶意程序和非恶意程 序;

从所输入的每个程序文件中提取特征, 并对所提取的特征进行粗分类; 根据所述粗分类的结果,将不同类别的特征使用不同的训练模型进行训练 以生成用于识别恶意程序的决策机或决策机集合。

8、 根据权利要求 7所述的方法, 其特征在于, 所述从所输入的每个程序 中提取特征, 并对所提取的特征进行粗分类; 根据所述粗分类的结果, 将不同 类别的特征使用不同的训练模型进行训练以生成用于识别恶意程序的决策机 或决策机集合, 包括:

从所输入的每个程序中提取 PE文件的结构特征, 并对所提取的 PE文件 的结构特征进行粗分类; 根据所述粗分类的结果, 将不同类别的 PE文件的结 构特征使用不同的训练模型进行训练以生成用于识别恶意程序的决策机或决 策机集合;

或者, 从所输入的每个程序中提取类行为特征,并对所提取的类行为特征进行粗 分类; 根据所述粗分类的结果,将不同类别的类行为特征使用不同的训练模型 进行训练以生成用于识别恶意程序的决策机或决策机集合。

9、 根据权利要求 7或 8所述的方法, 其特征在于, 所述从所输入的每个 程序中提取特征包括:

分析每个程序文件, 从所述程序文件中抽取预先定义的特征;

根据所抽取的特征生成特征向量, 以及每个特征向量的黑白属性。

10、 根据权利要求 7或 8所述的方法, 其特征在于, 所述从所输入的每个 程序文件中提取特征包括: 征; 根据所抽取的 PE文件的结构特征生成特征向量, 以及每个特征向量的黑 白属性;

或者,

分析每个程序文件,从所述程序文件中抽取预先定义的类行为特征; 根据 所抽取的类行为特征生成特征向量, 以及每个特征向量的黑白属性。

11、 根据权利要求 7至 10任一项所述的方法, 其特征在于,

所述对所提取的特征进行粗分类具体为:

根据已知编译器的入口指令序列判定编译生成相应程序的编译器类型,根 据编译器类型、 文件类型和 /或加壳类型确定对应程序的粗分类结果。

12、 根据权利要求 7至 11任一项所述的方法, 其特征在于,

使用向量机对决策机对进行训练, 或者, 使用决策树对决策机进行训练。

13、 根据权利要求 5至 12任一项所述的方法, 其特征在于, 所述训练模 型为带编码的训练模型、 或压缩的训练模型。

14、 一种基于机器学习的程序识别装置, 其特征在于, 包括:

提取单元, 用于分析输入的未知程序, 提取所述未知程序的特征; 分类单元, 用于根据所提取的特征对所述未知程序进行粗分类; 判断单元, 用于根据所述粗分类的结果,将所述未知程序输入对应的训练 产生的决策机中进行判断;

输出单元, 用于输出所述未知程序的识别结果, 所述识别结果为恶意程序 或非恶意程序。 15、 根据权利要求 14所述的装置, 其特征在于,

所述提取单元具体用于, 分析输入的未知程序,提取所述未知程序中的类 特征; 所述分类单元具体用于,根据所提取的类行为特征对所述未知程序进行 粗分类;

或者,

所述提取单元具体用于, 分析输入的未知程序, 提取所述未知程序中的 PE文件的结构特征; 所述分类单元具体用于,用于根据所提取的 PE文件的结 构特征对所述未知程序进行粗分类。

16、 根据权利要求 15所述的装置, 其特征在于,

所述提取单元具体用于, 提取所述未知程序中的至少一种下述特征: PE 文件头特征、 PE标准头特征、 PE可选头特征、数据目录特征、 常用节表特征; 或者,

所述提取单元具体用于,提取所述未知程序中的导入表库特征和所述导入 表 API特征, 所述导入表库特征包括: 网络类特征、 高级 WIN32应用程序接 口类特征、 系统内核类特征、 操作系统用户界面相关应用程序接口类特征、 操 作系统应用程序共用图像用户界面模块类特征、操作系统硬件提取层模块类特 征、 虚拟机相关模块类特征、 标准 C运行库程序类特征、 对象链接和嵌入相 关模块类特征、 操作系统进程状态支持模块类特征、 操作系统 32位外壳动态 链接库文件类特征、地址动态链接库文件类特征;所述导入表 API特征为从所 述导入表库中选取的函数特征。

17、 根据权利要求 14所述的装置, 其特征在于, 所述判断单元包括: 程序输入单元, 用于当包括多个决策机时,将未知程序分别输入对应的多 个训练产生的决策机中进行判断;

加权计算单元, 用于根据预先设置的每种特征分类在每个决策机中的权 重, 将每个决策机对所述未知程序进行判断的结果进行加权计算;

所述输出单元,具体用于根据所述加权计算的结果输出对所述未知程序的 识别结果。

18、 根据权利要求 14所述的装置, 其特征在于, 还包括:

输入单元, 用于输入提取到的海量程序, 所述海量程序中包括恶意程序和 非恶意程序;

提取单元, 用于从所输入的每个程序中提取特征;

分类单元, 用于对所提取的特征进行粗分类;

生成单元, 用于根据所述分类的结果, 将不同类别的特征使用不同的训练 模型进行训练以生成用于识别恶意程序的决策机或决策机集合。

19、 根据权利要求 18所述的装置, 其特征在于, 所述提取单元包括: 程序文件分析单元, 用于分析每个程序文件,从所述程序文件中抽取预先 定义的特征;

向量属性生成单元, 用于根据所抽取的特征生成特征向量, 以及每个特征 向量的黑白属性。

20、 根据权利要求 18所述的装置, 其特征在于,

所述分类单元具体用于,根据已知编译器的入口指令序列判定编译生成相 应程序的编译器类型, 根据编译器类型、 文件类型和 /或加壳类型确定对应程 序的粗分类结果。

21、 根据权利要求 17至 20任一项所述的装置, 其特征在于

所述特征包括: PE文件的结构特征和 /或类行为特征, 其中, 所述类行为 特征包括导入表库特征和导入表应用程序编程接口 API特征。

Description:
基于机器学习的程序识别方法及装置

本申请要求于 2010 年 12 月 31 日提交中国专利局、 申请号为

201010620202.8、 发明名称为 "基于机器学习的程序识别方法及装置" 的中国 专利申请、 以及于 2010 年 12 月 31 日提交中国专利局、 申请号为 201010620959.7、 发明名称为 "基于机器学习的程序识别方法及装置" 的中国 专利申请、 以及于 2010 年 11 月 29 日提交中国专利局、 申请号为

201010565513.9、 发明名称为 "基于机器学习的程序识别方法及装置" 的中国 专利申请的优先权, 其全部内容通过引用结合在本申请中。 技术领域

本申请涉及计算机技术领域,特别是涉及一种 基于机器学习的程序识别方 法及装置。 背景技术

恶意程序是一类特殊的程序,它们通常在用户 不知晓也未授权的情况下潜 入到用户的计算机系统中, 对用户系统进行攻击。

恶意程序可以包括病毒、 后门程序、 木马程序、 宏病毒、 引导区病毒、 脚 本病毒等。 在查杀恶意病毒之前, 首先要对恶意程序进行识别, 以查杀病毒为 例,现有技术中主要通过字符串特征码和筒单 的人工总结进行查杀, 所查杀的 病毒也均是已知的病毒, 难以对新型病毒进行查杀。

发明人在对现有技术的研究过程中发现,现有 技术基本上采用字符串特征 码和人工规则的启发式通杀,这种识别恶意程 序的方式严重依赖于病毒分析师 的能力, 需要分析师针对已有样本进行人工分析, 找出相应的特征, 因此需要 大量经验丰富的人员才能满足解决问题的需求 , 并且由于技术复杂,人工处理 的结果将导致效率低效; 现有技术中只能处理已知的问题, 不能对可能发生的 问题进行防范, 因此具有一定的滞后性; 由于现有技术基于筒单的特征或规则 进行查杀, 因此很容易被病毒作者免杀。 发明内容

本申请实施例提供了一种基于机器学习的程序 识别方法及装置,以解决现 有技术中在识别恶意程序时效率不高, 具有滞后性的问题。

为解决上述技术问题, 本发明实施例提供以下技术方案: 一种基于机器学习的程序识别方法, 包括:

分析输入的未知程序, 提取所述未知程序的特征;

根据所提取的特征对所述未知程序进行粗分类 ;

根据所述粗分类的结果,将所述未知程序输入 对应的训练产生的决策机中 进行判断;

输出对所述未知程序的识别结果, 其中, 所述识别结果为恶意程序或非恶 意程序。

可选的, 所述提取所述未知程序的特征; 根据所提取的特征对所述未知程 序进行粗分类, 包括: 提取所述未知程序中的类行为特征, 其中, 所述类行为 特征包括导入表库特征和导入表应用程序编程 接口 API特征;根据所提取的类 行为特征对所述未知程序进行粗分类;

或者,

所述提取所述未知程序的特征,根据所提取的 特征对所述未知程序进行粗 分类, 包括: 提取所述未知程序中的 PE文件的结构特征; 根据所提取的 PE 文件的结构特征对所述未知程序进行粗分类。

可选的, 所述导入表库特征包括:

网络类特征、 高级 WIN32应用程序接口类特征、 系统内核类特征、 操作 系统用户界面相关应用程序接口类特征、操作 系统应用程序共用图像用户界面 模块类特征、 操作系统硬件提取层模块类特征、 虚拟机相关模块类特征、 标准 C运行库程序类特征、 对象链接和嵌入相关模块类特征、操作系统进 程状态支 持模块类特征、 操作系统 32位外壳动态链接库文件类特征、 地址动态链接库 文件类特征; 可选的,所述 PE文件的结构特征包括至少一种下述特征: PE文件头特征、 PE标准头特征、 PE可选头特征、 数据目录特征、 常用节表特征。

可选的, 当包括多个决策机时, 所述将所述未知程序输入对应的训练产生 的决策机中进行判断包括:

将所述未知程序分别输入对应的训练产生的一 个或多个决策机中进行判 断; 根据预先设置的每种特征分类在每个决策机中 的权重,将每个决策机对所 述未知程序进行判断的结果进行加权计算; 所述输出对未知程序的识别结果具体为:根据 所述加权计算的结果输出对 所述未知程序的识别结果。

可选的, 所述根据预先设置的每种特征分类在每个决策 机中的权重,将每 个决策机对所述未知程序进行判断的结果进行 加权计算, 包括:

根据预先设置的每种 PE文件的结构特征分类在每个决策机中的权重 将 每个决策机对所述未知程序进行判断的结果进 行加权计算;

或者,

根据预先设置的每种类行为特征分类在每个决 策机中的权重,将每个决策 机对所述未知程序进行判断的结果进行加权计 算。

可选的, 还包括:

输入提取到的海量程序, 其中, 所述海量程序中包括恶意程序和非恶意程 序;

从所输入的每个程序文件中提取特征, 并对所提取的特征进行粗分类; 根据所述粗分类的结果,将不同类别的特征使 用不同的训练模型进行训练 以生成用于识别恶意程序的决策机或决策机集 合。

可选的, 所述从所输入的每个程序中提取特征, 并对所提取的特征进行粗 分类; 根据所述粗分类的结果,将不同类别的特征使 用不同的训练模型进行训 练以生成用于识别恶意程序的决策机或决策机 集合, 包括:

从所输入的每个程序中提取 PE文件的结构特征, 并对所提取的 PE文件 的结构特征进行粗分类; 根据所述粗分类的结果, 将不同类别的 PE文件的结 构特征使用不同的训练模型进行训练以生成用 于识别恶意程序的决策机或决 策机集合;

或者,

从所输入的每个程序中提取类行为特征,并对 所提取的类行为特征进行粗 分类; 根据所述粗分类的结果,将不同类别的类行为 特征使用不同的训练模型 进行训练以生成用于识别恶意程序的决策机或 决策机集合。

可选的, 所述从所输入的每个程序中提取特征包括:

分析每个程序文件, 从所述程序文件中抽取预先定义的特征;

根据所抽取的特征生成特征向量, 以及每个特征向量的黑白属性。

可选的, 所述从所输入的每个程序文件中提取特征包括 : 征; 根据所抽取的 PE文件的结构特征生成特征向量, 以及每个特征向量的黑 白属性;

或者,

分析每个程序文件,从所述程序文件中抽取预 先定义的类行为特征; 根据 所抽取的类行为特征生成特征向量, 以及每个特征向量的黑白属性。

可选的, 所述对所提取的特征进行粗分类具体为:

根据已知编译器的入口指令序列判定编译生成 相应程序的编译器类型,根 据编译器类型、 文件类型和 /或加壳类型确定对应程序的粗分类结果。

可选的, 使用向量机对决策机对进行训练, 或者, 使用决策树对决策机进 行训练。

可选的, 所述训练模型为带编码的训练模型、 或压缩的训练模型。

一种基于机器学习的程序识别装置, 包括:

提取单元, 用于分析输入的未知程序, 提取所述未知程序的特征; 分类单元, 用于根据所提取的特征对所述未知程序进行粗 分类; 判断单元, 用于根据所述粗分类的结果,将所述未知程序 输入对应的训练 产生的决策机中进行判断;

输出单元, 用于输出所述未知程序的识别结果, 所述识别结果为恶意程序 或非恶意程序。

可选的, 所述提取单元具体用于, 分析输入的未知程序, 提取所述未知程 接口 API特征;所述分类单元具体用于,根据所提取 的类行为特征对所述未知 程序进行粗分类;

或者,

所述提取单元具体用于, 分析输入的未知程序, 提取所述未知程序中的

PE文件的结构特征; 所述分类单元具体用于,用于根据所提取的 PE文件的结 构特征对所述未知程序进行粗分类。

可选的, 所述提取单元具体用于,提取所述未知程序中 的至少一种下述特 征: PE文件头特征、 PE标准头特征、 PE可选头特征、 数据目录特征、 常用 节表特征; 或者,

所述提取单元具体用于,提取所述未知程序中 的导入表库特征和所述导入 表 API特征, 所述导入表库特征包括: 网络类特征、 高级 WIN32应用程序接 口类特征、 系统内核类特征、 操作系统用户界面相关应用程序接口类特征、 操 作系统应用程序共用图像用户界面模块类特征 、操作系统硬件提取层模块类特 征、 虚拟机相关模块类特征、 标准 C运行库程序类特征、 对象链接和嵌入相 关模块类特征、 操作系统进程状态支持模块类特征、 操作系统 32位外壳动态 链接库文件类特征、地址动态链接库文件类特 征;所述导入表 API特征为从所 述导入表库中选取的函数特征。

可选的, 所述判断单元包括:

程序输入单元, 用于当包括多个决策机时,将未知程序分别输 入对应的多 个训练产生的决策机中进行判断;

加权计算单元, 用于根据预先设置的每种特征分类在每个决策 机中的权 重, 将每个决策机对所述未知程序进行判断的结果 进行加权计算;

所述输出单元,具体用于根据所述加权计算的 结果输出对所述未知程序的 识别结果。

可选的, 还包括:

输入单元, 用于输入提取到的海量程序, 所述海量程序中包括恶意程序和 非恶意程序;

提取单元, 用于从所输入的每个程序中提取特征;

分类单元, 用于对所提取的特征进行粗分类;

生成单元, 用于根据所述分类的结果, 将不同类别的特征使用不同的训练 模型进行训练以生成用于识别恶意程序的决策 机或决策机集合。

可选的, 所述提取单元包括:

程序文件分析单元, 用于分析每个程序文件,从所述程序文件中抽 取预先 定义的特征;

向量属性生成单元, 用于根据所抽取的特征生成特征向量, 以及每个特征 向量的黑白属性。

可选的, 所述分类单元具体用于,根据已知编译器的入 口指令序列判定编 译生成相应程序的编译器类型, 根据编译器类型、 文件类型和 /或加壳类型确 定对应程序的粗分类结果。

可选的, 所述特征包括: PE文件的结构特征和 /或类行为特征, 其中, 所 述类行为特征包括导入表库特征和导入表应用 程序编程接口 API特征。

由上可见,本申请实施例在识别未知程序的类 型时,提取未知程序的特征, 并根据所提取的特征对未知程序进行分类,根 据分类的结果,将未知程序输入 对应的训练产生的决策机中进行判断,输出未 知程序的识别结果。本申请采用 机器学习技术, 通过对大量程序样本进行分析, 得到识别恶意程序的决策机, 通过该决策机的使用可以节省大量的人力,提 高对恶意程序的识别效率;并且, 在基于对海量程序进行数据挖掘的基础上, 可以发现程序的内在规律,对未发 生的恶意程序进行预防, 使得恶意程序难以被免杀。 附图说明

为了更清楚地说明本发明实施例和现有技术中 的技术方案,下面将对实施 例和现有技术描述中所需要使用的附图作筒单 地介绍,显而易见地, 下面描述 中的附图仅仅是本发明的一些实施例, 对于本领域普通技术人员来讲,在不付 出创造性劳动性的前提下, 还可以根据这些附图获得其他的附图。

图 1为本申请生成识别程序类型的决策机的一个 施例流程图;

图 2A 为本申请实施例生成识别程序类型的决策机的 一个应用实例示意 图;

图 2B为本申请实施例对程序类型进行识别的一个 用实例示意图; 图 3为本申请基于机器学习的程序识别方法的一 实施例流程图; 图 4A为本申请基于机器学习的程序识别方法的另 个实施例流程图; 图 4B为本申请实施例对程序类型进行识别的一个 用实例示意图; 图 5为本申请基于机器学习的程序识别装置的一 实施例框图;

图 6为本申请基于机器学习的程序识别装置的另 个实施例框图; 图 7为本申请生成识别程序类型的决策机的另一 实施例流程图; 图 8 为本申请实施例生成识别程序类型的决策机的 另一个应用实例示意 图;

图 9为本申请基于机器学习的程序识别方法的另 个实施例流程图; 图 10为本申请实施例对程序类型进行识别的另一 应用实例示意图; 图 11为本申请基于机器学习的程序识别装置的另 个实施例框图; 图 12为本申请基于机器学习的程序识别装置的另 个实施例框图; 图 13为本申请生成识别程序类型的决策机的另一 实施例流程图; 图 14为本申请实施例生成识别程序类型的决策机 另一个应用实例示意 图;

图 15为本申请基于机器学习的程序识别方法的另 个实施例流程图; 图 16为本申请实施例对程序类型进行识别的另一 应用实例示意图; 图 17为本申请基于机器学习的程序识别装置的另 个实施例框图; 图 18为本申请基于机器学习的程序识别装置的另 个实施例框图。 具体实施方式

本申请如下实施例提供一种基于机器学习的程 序识别方法及装置。本申请 采用 MLD ( Machine Learning Detection, 机器学习识别)技术, 通过对大量程 序样本进行分析,得到识别恶意程序的模型, 通过该模型可以提高对恶意程序 的识别效率, 对未发生的恶意程序进行预防, 使得恶意程序难以被免杀。

为了使本技术领域的人员更好地理解本申请实 施例中的技术方案,并使本 申请实施例的上述目的、特征和优点能够更加 明显易懂, 下面结合附图对本申 请实施例中技术方案作进一步详细的说明。 参见图 1 , 为本申请生成识别程序类型的决策机的一个实 施例流程图: 步骤 101: 输入提取到的海量程序, 该海量程序中包括恶意程序和非恶意 程序。

步骤 102: 从所输入的每个程序中提取特征, 并对所提取的特征进行粗分 类。

具体的, 分析每个程序文件, 从程序文件中抽取预先定义的特征, 根据所 抽取的特征生成特征向量, 以及每个特征向量的黑白属性。

根据已知编译器的入口指令序列判定编译生成 相应程序的编译器类型,可 根据编译器类型、 文件类型和 /或加壳类型等确定对应程序的粗分类结果。

其中, 粗分类例如可将输入程序按照文件特性, 编译器类型和 /或加壳类 型等分成驱动文件, VB,VC,DELPHI,UPX, UPACK,NSPACK,ASPACK等不同 的类别, 进而进行针对性的训练。

步骤 103: 根据粗分类的结果, 将不同类别的特征使用不同的训练模型进 行训练以生成用于识别恶意程序的决策机或决 策机集合。 机对决策机进行训练, 或可使用决策树对决策机进行训练。训练模型 可以为带 编码的训练模型、 或压缩的训练模型。

或者根据分类的结果,将不同类别的特征使用 不同的决策机进行训练, 生 成用于识别恶意程序的训练模型或训练模型集 合。其中, 不同的决策机使用相 同或不同的方式对特征进行训练, 包括: 使用支持向量机的决策机进行训练, 或使用决策树的决策机进行训练; 训练模型可以为带编码的训练模型、或压缩 的训练模型。 参见图 2A, 为本申请生成识别程序类型的决策机的另一实 施例流程图: 步骤 201: 输入提取到的海量程序, 该海量程序中包括恶意程序和非恶意 程序。

步骤 202: 分析每个程序文件, 从程序文件中抽取预先定义的特征。

步骤 203: 根据所抽取的特征生成特征向量, 以及每个特征向量的黑白属 性。

不同的特征分类中包含不同数量的具体特征, 以特征分类是编译器为例, 其中可以具体包括的编译器特征为: VC4、 VC5、 VC6、 VC7、 VC8、 Delphi, BC。 本申请实施例中, 可以为每一个特征分类分配一个分类标识, 例如, 编 译器的分类标识为 "1" , 对于具体的每个编译器特征, 可以为其进一步分配特 征标识, 例如, VC4的特征标识为 "1"、 VC5的特征标识为 "2"、 VC6的特 征标识为 "3"、 VC7的特征标识为 "4"、 VC8的特征标识为 "5"、 Delphi的 特征标识为 "6"、 BC的特征标识为 "7"。

则在根据所抽取的特征生成特征向量时,特征 向量中的每一个特征的数组 都用其分类标识和特征标识进行表征, 例如, 所抽取的特征为编译器特征

"VC5" , 则其对应的分类标识为 "1" , 特征标识为 "2" , 因此特征向量中对 应该 "VC5" 的信息表示为 "1:2" ; 同理, 属于其它特征分类的具体特征也用 上述形式表示,如下所示,为从某个程序中提 取到了 4个特征的特征向量示例: 1:0 2:121 100:12345678 5000: 365。

特征向量的黑白属性用于表示包含该特征向量 中的特征的程序属于恶意 程序还是非恶意程序, 其中属性为 "白", 则对应非恶意程序, 属性为 "黑", 则对应恶意程序; 进一步, 可以为白属性定义标识为 "0" , 黑属性定义标识为 "1"。则在为每个程序生成特征向量后, 可以根据特征向量包含的信息为其分 配属性标识, 例如, 为上述特征向量 "1:0 2:121 100:12345678 5000: 365" 分配属性标识为白属性 "0" , 则相应的信息可以表示为 "0 1:0 2:121 100:12345678 5000: 365"。

上述表示方法也可以直接用数组表示, 在数组第 n 个位置的值即为第 n 个特征的值。

步骤 204: 根据已知编译器的入口指令序列判定编译生成 相应程序的编译 器类型, 可根据编译器类型、 文件类型、 加壳类型等确定对应程序的粗分类结 果。 其中, 粗分类例如可将输入程序按照文件特性, 编译器类型和 /或加壳类 型等分成驱动文件, VB,VC,DELPHI,UPX, UPACK,NSPACK, ASPACK等不同 的类别, 进而可进行针对性的训练。

步骤 205: 根据粗分类的结果, 将不同类别的向量矩阵使用预选的训练模 型进行训练以生成用于识别恶意程序的决策机 。

或者,根据分类的结果,将不同类别的向量矩 阵使用预选的决策机进行训 练, 生成用于识别恶意程序的训练模型。 参见图 2B, 为本申请实施例生成识别程序类型的决策机的 应用实例示意 图:

其中, 若干 PE文件即为所输入的海量可执行程序文件, 包括恶意程序和 非恶意程序,根据特征分类的不同包含了 k个决策机, 以及对应 k个决策机的 k个训练模型。 分析可执行程序文件后, 抽取相应的特征, 生成一个相应的特 征向量, 根据已经抽取到的特征, 进行特征粗分类, 例如, 可以依据加壳的类 别将特征分成 UPX、 NSPack、 ASPack、 UPack、 PECompact等, 根据粗分类 的结果,将不同类别的程序文件的特征向量和 黑白属性使用不同的训练模型进 行训练, 得到相应的决策机。 本实施例中进行粗分类时, 根据已知编译器的入 口指令序列判定编译生成相应程序的编译器类 型,进而根据编译器类型确定对 应程序的粗分类结果。该粗分类方法速度较快 , 经过统计只需要反汇编 16步, 即可达到良好区分度,并且准确度较高,通用 性好,大多数情况下不易被混淆; 并且可以实现扩展。

应用该实例生成识别程序类型的决策机的详细 过程与图 2A所述流程的描 述一致, 在此不再赘述。

或者, 若干 PE文件即为所输入的海量可执行程序文件, 包括恶意程序和 非恶意程序,根据特征分类的不同包含了 k个决策机, 以及对应 k个决策机的 k个训练模型。 分析可执行程序文件后, 抽取相应的特征, 将所抽取的特征放 入一个相应的特征向量之内, 根据已经抽取到的特征, 进行特征分类, 例如, 可以依据加壳的类别将特征分成 UPX、 NSPack、 ASPack、 UPack、 PECompact 等,根据分类的结果,将不同类别的程序文件 的特征向量和黑白属性使用不同 的决策机进行训练, 得到相应的训练模型。 本实施例中进行分类时, 根据已知 编译器的入口指令序列判定编译生成相应程序 的编译器类型。该分类方法速度 较快, 经过统计只需要反汇编 16步, 即可达到良好区分度, 并且准确度较高, 通用性好, 大多数情况下不易被混淆; 并且可以实现扩展。 参见图 3, 为本申请基于机器学习的程序识别方法的第一 实施例流程图: 步骤 301: 分析输入的未知程序, 提取未知程序的特征。

步骤 302: 根据所提取的特征对未知程序进行粗分类。

其中, 粗分类例如可将未知程序按照文件特性, 编译器类型和 /或加壳类 型等分成驱动文件, VB,VC,DELPHI,UPX, UPACK,NSPACK, ASPACK等不同 的类别, 进而可进行针对性的识别。

步骤 303: 根据粗分类的结果, 将未知程序输入对应的的训练产生的决策 机中进行判断。

或者根据粗分类的结果,将未知程序输入已生 成的训练模型及相应的决策 机中进行判断。

步骤 304: 输出未知程序的识别结果, 该识别结果为恶意程序或非恶意程 序。 见图 4A, 为本申请识别程序类型的方法的第二实施例流 程图, 该实施 例示出了当有多个决策机时的识别过程:

步骤 401: 分析输入的未知程序, 提取未知程序的特征。

步骤 402: 根据所提取的特征对未知程序进行粗分类。

其中, 粗分类例如可将未知程序按照文件特性, 编译器类型和 /或加壳类 型等分成驱动文件, VB,VC,DELPHI,UPX, UPACK,NSPACK,ASPACK等不同 的类别, 进而可进行针对性的识别。

步骤 403: 根据粗分类的结果, 将未知程序分别输入对应的多个训练产生 的决策机中进行判断。

步骤 404: 根据预先设置的每种特征分类在每个决策机中 的权重, 将每个 决策机对未知程序进行判断的结果进行加权计 算。

或者,根据粗分类的结果,将未知程序分别输 入多个已生成的训练模型及 相应的决策机中进行判断;根据预先设置的每 种特征分类在每个训练模型中的 权重,将每个训练模型及相应的决策机对未知 程序进行判断的结果进行加权计 算。

步骤 405: 根据加权计算的结果输出对未知程序的识别结 果, 该识别结果 为恶意程序或非恶意程序。 参见图 4B, 为本申请实施例对程序类型进行识别的应用实 例示意图: 其中, H殳 PE文件即为所输入的未知程序文件, 根据特征分类的不同包 含了 k个决策机, 以及对应 k个决策机的 k个训练模型。 分析 PE文件后, 抽 取相应的特征, 生成一个相应的特征向量(或将所抽取的特征 放入一个相应的 特征向量之内), 根据已经抽取到的特征, 进行特征粗分类, 例如, 可以依据 加壳的类别将特征分成 UPX、 NSPack、 ASPack、 UPack、 PECompact等, 或 者, 据编译器的类型可以分为 VC4、 VC5、 VC6、 VC7、 VC8、 Delphi, BC等, 根据分类的结果, 使用不同的决策机 (和训练模型 )进行相应的判断, 根据相 应决策机(和模型)得出的判断结果, 依分类的权重加权得到评分结果, 由评 分结果确定该文件是否是恶意程序或正常程序 。

例如, 假设每种分类使用 K种训练模型产生 k个决策机, 分类一共有 m 种, 分别为分类 1, 2, ..., m, 第 i种分类预先设定的权重是(w^ wc ..., w lk ) , 则相应的样本类别 i的决策机判别的结果是( , r l2 , r lk ), 由此得到的综合 结果为 (w^ wn ..., w lk ) * ( r n , r l2 , ..., r lk X 可以预先设置一个结果判断阈值, 当判断结果小于该阈值则确定未知程序为非恶 意程序, 当判断结果大于该阈 值, 则确定未知程序为恶意程序。

或者, 4 设决策机一共有 k个,分类一共有 m种,分别为分类 1, 2, ..., m, 第 i种分类预先设定的权重是( w l2 , w lk ) , 则相应的样本类别 i的决策 机判别的结果是( , r l2 , r lk ), 由此得到的综合结果为 ( Wll , w l2 , w lk ) * ( , , ..., )。 可以预先设置一个结果判断阈值, 当判断结果小于该阈值则 确定未知程序为非恶意程序, 当判断结果大于该阈值, 则确定未知程序为恶意 程序。

与本申请上述基于机器学习的程序识别方法的 实施例相对应,本申请还提 供了基于机器学习的程序识别装置的实施例。

参见图 5 , 为本申请基于机器学习的程序识别装置的实施 例框图: 该装置包括:提取单元 510、分类单元 520、判断单元 530和输出单元 540。 其中, 提取单元 510, 用于分析输入的未知程序, 提取所述未知程序的特 征;

分类单元 520, 用于根据所提取的特征对所述未知程序进行粗 分类; 判断单元 530, 用于根据所述粗分类的结果, 将所述未知程序输入对应的 训练生成的决策机中进行判断;

或者, 判断单元 530, 用于根据所述粗分类的结果, 将所述未知程序输入 已生成的训练模型及相应的决策机中进行判断 ;

输出单元 540, 用于输出所述未知程序的识别结果, 所述识别结果为恶意 程序或非恶意程序。

具体的, 判断单元 530可以包括(图 5中未示出): 程序输入单元, 用于 当包括多个决策机时,将未知程序分别输入对 应的多个训练产生的决策机中进 行判断; 加权计算单元, 用于根据预先设置的每种特征分类在每个决策 机中的 权重,将每个决策机对所述未知程序进行判断 的结果进行加权计算; 所述输出 单元 540, 具体用于根据所述加权计算的结果输出对所述 未知程序的识别结 果。

或者, 判断单元 530可以包括(图 5中未示出): 程序输入单元, 用于当 包括多个训练模型时,将未知程序分别输入多 个已生成的训练模型及相应的决 策机中进行判断; 加权计算单元, 用于根据预先设置的每种特征分类在每个训 练模型中的权重,将每个训练模型及相应的决 策机对所述未知程序进行判断的 结果进行加权计算; 所述输出单元 540, 具体用于根据所述加权计算的结果输 出对所述未知程序的识别结果。

参见图 6, 为本申请在生成识别程序类型的决策机时的装 置实施例框图: 该装置包括:输入单元 610、提取单元 620、分类单元 630和生成单元 640。 其中, 输入单元 610, 用于输入提取到的海量程序, 所述海量程序中包括 恶意程序和非恶意程序;

提取单元 620, 用于从所输入的每个程序中提取特征;

分类单元 630, 用于对所提取的特征进行粗分类;

生成单元 640, 用于根据所述粗分类的结果, 将不同类别的特征使用不同 的训练模型进行训练, 生成用于识别恶意程序的决策机或决策机集合 。

或者, 生成单元 640用于根据所述分类的结果,将不同类别的特 征使用不 同的决策机进行训练, 生成用于识别恶意程序的训练模型或训练模型 集合。

具体的, 提取单元 620可以包括(图 6中未示出):

程序文件分析单元, 用于分析每个程序文件,从所述程序文件中抽 取预先 定义的特征; 向量属性生成单元, 用于根据所抽取的特征生成特征向量, 以及 每个特征向量的黑白属性。

具体的,分类单元 630用于根据已知编译器的入口指令序列判定编 译生成 相应程序的编译器类型, 可根据编译器类型、 文件类型和 /或加壳类型等确定 对应程序的粗分类结果。

其中, 粗分类例如可将输入程序按照文件特性, 编译器类型和 /或加壳类 型等分成驱动文件, VB,VC,DELPHI,UPX, UPACK,NSPACK,ASPACK等不同 的类别。 通过对以上实施方式的描述可知, 本申请实施例在识别未知程序的类型 时, 提取未知程序的特征, 并根据所提取的特征对未知程序进行分类, 根据分 类的结果,将未知程序输入对应的训练产生的 决策机中进行判断(或将未知程 序输入已生成的训练模型及相应的决策机中进 行判断 ), 输出未知程序的识别 结果。 本申请采用机器学习技术, 通过对大量程序样本进行分析, 得到识别恶 意程序的决策机或模型,通过该决策机或模型 的使用可以节省大量的人力,提 高对恶意程序的识别效率; 并且, 在基于对海量程序进行数据挖掘的基础上, 可以发现程序的内在规律,对未发生的恶意程 序进行预防,使得恶意程序难以 被免杀。

为便于更好的理解和实施本发明实施例的技术 方案,下面以利用未知程序 中的 PE文件的结构特征、 类行为特征等来识别未知程序为例进行描述, 当然 在实际应用中,还可利用未知程序的其它特征 来识别未知程序是恶意程序或非 恶意程序, 而这些通过比对这些特征, 可识别出未知程序是恶意程序或非恶意 程序。 参见图 7, 为本申请生成识别程序类型的决策机的另一实 施例流程图: 步骤 701: 输入提取到的海量程序, 该海量程序中包括恶意程序和非恶意 程序。

步骤 702: 从所输入的每个程序中提取 PE文件的结构特征, 并对所提取 的 PE文件结构的特征进行粗分类。

具体的, 分析每个程序文件, 从程序文件中抽取预先定义的 PE文件结构 的特征, 根据所抽取的 PE文件结构的特征生成特征向量, 以及每个特征向量 的黑白属性。

根据已知编译器的入口指令序列判定编译生成 相应程序的编译器类型,可 根据编译器类型、 文件类型和 /或加壳类型等确定对应程序的粗分类结果。

其中, 粗分类例如可将输入程序按照文件特性, 编译器类型和 /或加壳类 型等分成驱动文件, VB,VC,DELPHI,UPX, UPACK,NSPACK,ASPACK等不同 的类别。

下面具体介绍一下 PE文件结构: PE文件结构是一个很复杂的结构,其中 一些基本结构包含了大量 PE信息,可以基于这些 PE信息提取 PE文件的结构 特征。

本申请实施例中, 一种常用 PE基本结构如下所示:

IMAGE—FILE—HEADER STRUCT

Machine WORD

NumberOfSections WORD TimeDateStamp DWORD

PointerToSymbolTable DWORD

NumberOfSymbols DWORD

SizeOfOptionalHeader WORD

Characteristics WORD

IMAGE—FILE—HEADER ENDS

IMAGE_OPTIONAL_HEADER32 STRUCT

Magic WORD

Maj orLinker Version BYTE

MinorLinkerVersion BYTE

SizeOfCode DWORD

SizeOflnitializedData DWORD

SizeOfUninitializedData DWORD

AddressOfEntryPoint DWORD

BaseOfCode DWORD

BaseOfData DWORD

ImageBase DWORD

SectionAlignment DWORD

FileAlignment DWORD

Maj orOperatingSystemVersion WORD

MinorOperatingSystemVersion WORD

Maj orlmage Version WORD

MinorlmageVersion WORD

Maj orSubsystemVersion WORD

MinorSubsystemVersion WORD

Win32 Version Value DWORD

SizeOflmage DWORD

SizeOfHeaders DWORD

CheckSum DWORD Subsystem WORD

DllCharacteristics WORD

SizeOfStackReserve DWORD

SizeOfStackCommit DWORD

SizeOfHeapReserve DWORD

SizeOfHeapCommit DWORD

LoaderFlags DWORD

NumberOfRvaAndSizes DWORD

DataDirectory IMAGE—DATA—DIRECTORY 16 dup(<>)

IMAGE OPTIONAL HEADER32 ENDS

MAGE—DATA—DIRECTORY STRUCT

VirtualAddress DWORD

isize DWORD

IMAGE DATA DIRECTORY ENDS

IMAGE SECTION HEADER STRUCT

Namel db 8 dup()

union Misc

PhysicalAddress dd

VirtualSize dd

ends

VirtualAddress dd

SizeOfRawData dd

PointerToRawData dd

PointerToRelocations dd

PointerToLinenumbers dd

NumberOfRelocations dw

NumberOfLinenumbers dw

Characteristics dd IMAGE_SECTION_HEADER ENDS 以上 PE文件基本结构包含了丰富的 PE信息, 通过对大量的样本程序的 分析可知, 在 PE文件的文件结构这一次层次上, 正常程序和恶意程序存在 ^艮 大的区别, 通过对样本程序进行数据挖掘, 针对 PE结构可以选取的 PE文件 的结构特征可以包括: PE文件头特征、 PE标准头特征、 PE可选头特征、 数 据目录特征、 常用节表特征等等。

下面分别介绍上述 PE文件的结构特征:

1、 PE文件头特征 (IMAGE_FILE_HEADER) , 具体包括如下特征:

NumberOfSections

TimeDateStamp

Characteristics & IMAGE—FILE RELOCS—STRIPPED

Characteristics & IMAGE—FILE DLL

Characteristics & IMAGE—FILE BYTES_REVERSED_LO

Characteristics & IMAGE—FILE BYTES_REVERSED_HI

Characteristics & IMAGE—FILE LOCAL—SYMS—STRIPPED

Characteristics & IMAGE—FILE LINE—NUMS—STRIPPED

Characteristics & IMAGE—FILE .LARGE—ADDRESS—AWARE

Characteristics & IMAGE—FILE NET_RUN_FROM_SWAP

Characteristics & IMAGE—FILE REMOVABLE_RUN_FROM_SWAP Characteristics & IMAGE FILE DEBUG STRIPPED

2、 PE 标准头特征 (IMAGE_OPTIONAL_HEADER32 的 BaseOfData 以 上), 具体包括如下特征:

Maj orLinker Version

MinorLinkerVersion

SizeOfCode

SizeOflnitializedData

SizeOfUninitializedData

AddressOfEntryPoint BaseOfCode

BaseOfData

3、PE可选头特征 (IMAGE_OPTIONAL_HEADER32 ),具体包括如下特征: ImageBase

SectionAlignment

FileAlignment

MajorOperatingSystemVersion

MinorOperatingSystemVersion

Maj orlmage Version

Minorlmage Version

MajorSubsystemVersion

MinorSubsystemVersion

SizeOflmage

SizeOfHeaders

CheckSum

Subsystem

SizeOfStackReserve

SizeOfStackCommit

DllCharacteristics & MAGE_DLLCHARACTERISTICS_DYNAMIC_BASE

DllCharacteristics & AGE_DLLCHARACTERISTICS_NO_ISOLATION DllCharacteristics & IMAGE_DLLCHARACTERISTICS_NO_SEH

DllCharacteristics & IMAGE_DLLCHARACTERISTICS_WDM_DRIVER DllCharacteristics&IMAGE_DLLCHARACTERISTICS_TERMINAL_SER V WARE

4、数据目录特征(1^^ 0 _0?11€^ _1¾ 0 1 32 ),具体包括如下特征: DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].Size

DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size

DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE].Size DataDirectory[IMAGE. DIRECTORY— .ENTRY. SECURITY]. Size

DataDirectory[IMAGE. DIRECTORY— .ENTRY. BASERELOC].Size DataDirectory[IMAGE. DIRECTORY— .ENTRY. DEBUG] .Size

DataDirectory[IMAGE. DIRECTORY— .ENTRY. TLS].Size

DataDirectory [IMAGE. DIRECTORY. —ENTRY. LOAD_CONFIG].Size DataDirectory[IMAGE. DIRECTORY— .ENTRY. BOUND—IMPORT] .Size DataDirectory[IMAGE. DIRECTORY— .ENTRY. IAT].Size

DataDirectory[IMAGE. DIRECTORY— .ENTRY. DELAY—IMPORT] .Size DataDirectory[IMAGE. DIRECTORY ENTRY COM—DESCRIPTOR] .Siz

5、 常用节表特征, 具体包括如下特征:

代码节的节表特征;

数据节的节表特征;

资源节的节表特征;

其中, 可以对上述每个节表 Characteristics按位展开, 每个展开位作为一 个特征。

步骤 703: 根据粗分类的结果, 将不同类别的特征使用不同的训练模型进 行训练以生成用于识别恶意程序的决策机或决 策机集合。 机对决策机进行训练, 或可使用决策树对决策机进行训练。训练模型 可以为带 编码的训练模型、 或压缩的训练模型。

或者根据分类的结果将不同类别的特征使用不 同的决策机进行训练,生成 用于识别恶意程序的训练模型或训练模型集合 。其中, 不同的决策机使用相同 或不同的方式对特征进行训练, 包括: 使用支持向量机的决策机进行训练, 或 使用决策树的决策机进行训练; 训练模型可以为带编码的训练模型、或压缩的 训练模型。 参见图 8, 为本申请实施例生成识别程序类型的决策机的 应用实例示意 图: 其中, 若干 PE文件即为所输入的海量可执行程序文件, 包括恶意程序和 非恶意程序, 根据 PE文件的结构特征的特征分类的不同包含了 k个决策机, 以及对应 k个决策机的 k个训练模型。 分析可执行程序文件后, 抽取相应的 PE文件的结构特征,生成一个相应的特征向量 或将所抽取的 PE文件的结构 特征放入一个相应的特征向量之内), 根据已经抽取到的特征, 进行特征粗分 类, 例如, 可以依据前述实施例中的描述分为 PE文件头特征分类、 PE标准头 特征分类、 PE可选头特征分类、 数据目录特征分类、 常用节表特征分类, 根 据分类的结果,将不同类别的程序文件的特征 向量和黑白属性使用不同的训练 模型 (或决策机)进行训练, 得到相应的决策机(或训练模型)。

举例来说, 不同的特征分类中包含不同数量的具体特征, 以特征分类是常 用节表特征为例, 其中可以具体包括的节表特征为: 代码节的节表特征, 数据 节的节表特征, 资源节的节表特征。 本申请实施例中, 可以为每一个特征分类 分配一个分类标识, 例如, 常用节表特征的分类标识为 "1" , 对于具体的每个 常用节表特征, 可以为其进一步分配特征标识, 例如, 代码节的节表特征的特 征标识为 "1" , 数据节的节表特征的特征标识为 "2" , 资源节的节表特征的特 征标识为 "3"。 在根据所抽取的特征生成特征向量时, 特征向量中的每一个特 征的数组都用其分类标识和特征标识进行表征 , 例如, 所抽取的特征为常用节 表特征中的 "代码节的节表特征", 则其对应的分类标识为 "1" , 特征标识为 "1" , 因此特征向量中对应该 "代码节的节表特征" 的信息表示为 "1:1" ; 同 理, 属于其它特征分类的具体特征也用上述形式表 示, 如下所示, 为从某个程 序中提取到了 4个特征的特征向量示例: 1:0 2:121 100: 12345678 5000: 365。

特征向量的黑白属性用于表示包含该特征向量 中的特征的程序属于恶意 程序还是非恶意程序, 其中属性为 "白", 则对应非恶意程序, 属性为 "黑", 则对应恶意程序; 进一步, 可以为白属性定义标识为 "0" , 黑属性定义标识为 "1"。 则在为每个程序生成特征向量后, 可以根据特征向量包含的信息为其分 配属性标识, 例如, 为上述特征向量 "1:0 2:121 100:12345678 5000: 365" 分配属性标识为白属性 "0" , 则相应的信息可以表示为 " 0 1:0 2:121 100:12345678 5000: 365"。 上述表示方法也可以直接用数组表示, 在数组第 n个位置的值即为第 n个特征的值。 参见图 9, 为本申请基于机器学习的程序识别方法的一个 实施例流程图: 步骤 901: 分析输入的未知程序, 提取所述未知程序中的 PE文件的结构 特征。

如前述图 7所示实施例的描述可知, 该 PE文件的结构特征包括至少一种 下述特征: PE文件头特征、 PE标准头特征、 PE可选头特征、 数据目录特征、 常用节表特征。

步骤 902:根据所提取的 PE文件的结构特征对所述未知程序进行粗分类 步骤 903: 根据粗分类的结果, 将未知程序输入对应的训练产生的决策机 中进行判断。

具体的, 可以根据粗分类的结果,将未知程序分别输入 对应的多个训练产 生的决策机中进行判断, 根据预先设置的每种特征分类在每个决策机中 的权 重, 将每个决策机对未知程序进行判断的结果进行 加权计算。

或者,根据粗分类的结果,将未知程序输入已 生成的训练模型及相应的决 策机中进行判断。 具体的, 可以根据粗分类的结果, 将未知程序分别输入多个 已生成的训练模型及相应的决策机中进行判断 ,根据预先设置的每种特征分类 在每个训练模型中的权重,将每个训练模型及 相应的决策机对未知程序进行判 断的结果进行加权计算。

步骤 904: 输出未知程序的识别结果, 该识别结果为恶意程序或非恶意程 序。

具体的,根据加权计算的结果输出对未知程序 的识别结果, 该识别结果为 恶意程序或非恶意程序。 参见图 10, 为本申请实施例对程序类型进行识别的应用实 例示意图: 其中, H殳 PE文件即为所输入的未知程序文件, 根据特征分类的不同包 含了 k个决策机, 以及对应 k个决策机的 k个训练模型。 分析 PE文件后, 抽 取相应的 PE文件的结构特征, 生成一个相应的特征向量(将所抽取的 PE文 件的结构特征放入一个相应的特征向量之内 ), 根据已经抽取到的 PE文件的 结构特征, 进行特征分类, 例如, 根据常用节表特征的特征分类可以分为代码 节的节表特征,数据节的节表特征,资源节的 节表特征等,根据粗分类的结果, 使用不同的决策机(和训练模型)进行相应的 判断,根据相应决策机(和模型 ) 得出的判断结果,依分类的权重加权得到评分 结果, 由评分结果确定该文件是 否是恶意程序或正常程序。

例如, 假设每种分类使用 K种训练模型产生 k个决策机, 分类一共有 m 种, 分别为分类 1,2, ...,m, 第 i种分类预先设定的权重是(w^wc ...,w lk ) , 则相应的样本类别 i的决策机判别的结果是( , r l2 , r lk ), 由此得到的综合 结果为 (w^wn ...,w lk ) * (r n , r l2 , ...,r lk X 可以预先设置一个结果判断阈值, 当判断结果小于该阈值则确定未知程序为非恶 意程序, 当判断结果大于该阈 值, 则确定未知程序为恶意程序。

或者,假设决策机一共有 k个,分类一共有 m种,分别为分类 1,2, ...,m, 第 i种分类预先设定的权重是( wn, w l2 , w lk ) , 则相应的样本类别 i的决策 机判别的结果是( , r l2 , r lk ), 由此得到的综合结果为 ( Wll , w l2 , w lk ) * ( , , ..., )。 可以预先设置一个结果判断阈值, 当判断结果小于该阈值则 确定未知程序为非恶意程序, 当判断结果大于该阈值, 则确定未知程序为恶意 程序。

与本申请上述基于机器学习的程序识别方法的 实施例相对应,本申请还提 供了基于机器学习的程序识别装置的实施例。

参见图 11, 为本申请基于机器学习的程序识别装置的一个 实施例框图: 该装置包括: 提取单元 1110、 分类单元 1120、 判断单元 1130和输出单元 1140。

其中, 提取单元 1110, 用于分析输入的未知程序, 提取所述未知程序中 的 PE文件的结构特征;

分类单元 1120,用于根据所提取的 PE文件的结构特征对所述未知程序进 行粗分类;

判断单元 1130, 用于根据所述粗分类的结果, 将所述未知程序输入对应 的训练产生的决策机中进行判断;

或者, 判断单元 1130, 用于根据所述粗分类的结果, 将所述未知程序输 入已生成的训练模型及相应的决策机中进行判 断;

输出单元 1140, 用于输出所述未知程序的识别结果, 所述识别结果为恶 意程序或非恶意程序。 其中, 提取单元 1110具体用于, 提取所述未知程序中的至少一种下述特 征: PE文件头特征、 PE标准头特征、 PE可选头特征、 数据目录特征、 常用 节表特征。

具体的, 判断单元 1130可以包括(图 11中未示出):

程序输入单元, 用于当包括多个决策机时,将未知程序分别输 入对应的多 个训练产生的决策机中进行判断; 加权计算单元, 用于根据预先设置的每种 PE文件的结构特征分类在每个决策机中的权重 将每个决策机对所述未知程 序进行判断的结果进行加权计算; 所述输出单元 1140, 具体用于根据所述加 权计算的结果输出对所述未知程序的识别结果 。

或者, 判断单元 1130可以包括(图 11中未示出 ): 程序输入单元, 用于 当包括多个训练模型时,将未知程序分别输入 多个已生成的训练模型及相应的 决策机中进行判断; 加权计算单元, 用于根据预先设置的每种 PE文件的结构 特征分类在每个训练模型中的权重,将每个训 练模型及相应的决策机对所述未 知程序进行判断的结果进行加权计算; 所述输出单元 1140, 具体用于根据所 述加权计算的结果输出对所述未知程序的识别 结果 参见图 12, 为本申请基于机器学习的程序识别装置的另一 实施例框图, 与图 11相比,该程序识别装置进一步具有生成识别 序类型的决策机的功能: 该装置包括: 输入单元 1210、 提取单元 1220、 分类单元 1230、 生成单元 1240。

其中, 输入单元 1210, 用于输入提取到的海量程序, 所述海量程序中包 括恶意程序和非恶意程序; 分类单元 1230, 用于对所提取的 PE文件的结构特征进行粗分类; 生成单元 1240, 用于根据所述分类的结果, 将不同类别的 PE文件的结构 特征使用不同的训练模型进行训练以生成用于 识别恶意程序的决策机或决策 机集合。

或者, 生成单元 1240, 用于根据所述分类的结果, 将不同类别的 PE文件 的结构特征使用不同的决策机进行训练,生成 用于识别恶意程序的训练模型或 训练模型集合。 具体的, 提取单元 1220可以包括(图 12中未示出):

结构特征抽取单元, 用于分析每个程序文件,从所述程序文件中抽 取预先 定义的 ΡΕ文件的结构特征; 向量属性生成单元, 用于根据所抽取的 ΡΕ文件 的结构特征生成特征向量 , 以及每个特征向量的黑白属性。

具体的, 分类单元 1230用于根据已知编译器的入口指令序列判定 译生 成相应程序的编译器类型, 可根据编译器类型、 文件类型和 /或加壳类型等确 定对应程序的粗分类结果。

其中, 粗分类例如可将输入程序按照文件特性, 编译器类型和 /或加壳类 型等分成驱动文件, VB,VC,DELPHI,UPX, UPACK,NSPACK,ASPACK等不同 的类别。

通过对以上实施方式的描述可知, 本申请实施例基于 PE文件的结构特征 识别未知程序的类型时, 分析输入的未知程序, 提取未知程序中的 PE文件的 结构特征, 根据所提取的 PE文件的结构特征对所述未知程序进行粗分类 根 据粗分类的结果,将未知程序输入对应的训练 产生的决策机中进行判断(或将 未知程序输入已生成的训练模型及相应的决策 机中进行判断)输出未知程序的 识别结果。 本申请采用机器学习技术, 通过对大量程序样本进行 PE文件的结 构特征提取及分析, 得到基于 PE文件的结构特征的识别恶意程序的决策机或 模型,通过该决策机或模型的使用可以节省大 量的人力,提高对恶意程序的识 别效率; 并且, 在基于对海量程序进行数据挖掘的基础上, 基于 PE文件的结 构可以发现程序的内在规律,对未发生的恶意 程序进行预防,使得恶意程序难 以被免杀。 参见图 13, 为本申请生成识别程序类型的模型的另一实施 例流程图: 步骤 1301 : 输入提取到的海量程序, 该海量程序中包括恶意程序和非恶 意程序。

步骤 1302: 从所输入的每个程序中提取类行为特征, 并对所提取的类行 为特征进行粗分类。

具体的, 分析每个程序文件, 从程序文件中抽取预先定义的类行为特征, 根据所抽取的类行为特征生成特征向量, 以及每个特征向量的黑白属性。

根据已知编译器的入口指令序列判定编译生成 相应程序的编译器类型,可 根据编译器类型、 文件类型和 /或加壳类型等确定对应程序的粗分类结果。 其中, 粗分类例如可将输入程序按照文件特性, 编译器类型和 /或加壳类 型等分成驱动文件, VB,VC,DELPHI,UPX, UPACK,NSPACK,ASPACK等不同 的类别。

下面具体介绍一下本申请实施例中的类行为特 征,类行为特征可以从整体 上分为导入表库特征和导入表 API ( Application Programming Interface, 应用 程序编程接口)特征。 分别描述如下:

1、 导入表库特征

导入表导入的动态库通常具有特别的功能,能 表示程序本身可能达到的功 能。 例如, 导入表库 WS2_32.DLL的程序一般表示需要进行联网操作。 因此, 通过检查导入表的导入库名, 可以预先选择常见恶意程序使用的动态库若干 。 具体的, 可以为这些动态库建立 HASH (哈希)表, 即把所选择动态库特征字 符串归一后, 计算一个 HASH值, 并根据所计算的 HASH值建立 HASH表, 后续对于输入的未知程序可以在提取其导入表 后, 查找该 HASH表来确定导 入表特征, 以达到确定其是否为恶意程序的目的。

举例来说, 该导入表库类特征可以进一步细分为如下特征 类型:

1 ) 网络类特征(包括 RPC ), 示例如下:

DNSAPI.DLL

MSWSOCK.DLL

NDIS.SYS

NETAPI32.DLL

WININET.DLL

WSOCK32.DLL

WS2_32.DLL

MPR.DLL

RPCRT4.DLL

URLMON.DLL

2 ) 高级 Win32应用程序接口类特征, 示例如下:

ADVAPI32.DLL

3 ) 系统内核类特征, 示例如下: KERNEL32.DLL

NTDLL.DLL

NTOSKRNL.EXE

4 ) Windows用户界面相关应用程序接口类特征, 示例如下:

USER32.DLL

5 ) Windows应用程序公用 GUI图形用户界面模块类特征, 示例如下: COMCTL32.DLL

GDI32.DLL

GDIPLUS.DLL

6 ) Windows硬件提取层模块类特征, 示例如下:

HAL.DLL

7 ) Microsoft MCF Library类特征, 示例如下:

MFC42.DLL

8 )微软 Microsoft Visual Basic虚拟机相关模块类特征, 示例如下: MSVBVM60.DLL

9 )标准的 C运行库程序类特征, 示例如下:

MSVCP60.DLL

MSVCR71.DLL

MSVCRT.DLL

10 )对象链接和嵌入相关模块类特征, 示例如下:

OLE32.DLL

OLEAUT32.DLL

11 ) Windows系统进程状态支持模块类特征, 示例如下:

PSAPI.DLL

12 ) Windows的 32位外壳动态链接库文件类特征, 示例如下:

SHELL32.DLL

13 ) UNC和 URL地址动态链接库文件类特征,, 用于注册键值和色彩设 示例如下:

SHLWAPI.DLL 2、 导入表 API特征

导入表 API特征为从所述导入表库中选取的函数特征, 这些函数可以进一 步说明程序的行为功能。 具体归一格式如下:

DLLNAME!APINAME

DLLNAME统一转成大写, 如 ADVAPI32.DLL !AddAccessAllowedAce 对于高级 Win32应用程序接口类特征 ADVAPI32.DLL, 可以进一步选取 其函数特征示例如下:

ADVAPI32.DLL!AddAccessAllowedAce

ADVAPI32.DLL !AddAce

ADVAPI32.DLL!AdjustTokenPrivileges

ADVAPI32.DLL!AllocateAndInitializeSid

ADVAPI32.DLL!ChangeServiceConfig2A

ADVAPI32.DLL!ChangeServiceConfig2W

ADVAPI32.DLL! CheckTokenMembership

ADVAPI32.DLL !CloseServiceHandle

ADVAPI32.DLL! ControlService

ADVAPI32.DLL!ConvertSidToStringSidW

又例如, 对于 Windows 应用程序公用 GUI 图形用户界面模块类特征 COMCTL32.DLL , 可以进一步选取其函数特征示例如下:

COMCTL32.DLL! 13

COMCTL32.DLL! 14

COMCTL32.DLL! 17

COMCTL32.DLL! CreatePropertySheetPageA

COMCTL32.DLL!DestroyPropertySheetPage

COMCTL32.DLL !FlatSB—GetScrolllnfo

COMCTL32.DLL !FlatSB—SetScrollInfo

COMCTL32.DLL!FlatSB_SetScrollPos

COMCTL32.DLL !ImageList_Add

COMCTL32.DLL!ImageList_AddMasked

上述仅是示例性的描述,对于每种具体的导入 表库特征对应的函数特征不 再一一赞述。

对于上述函数特征, 也可以为其建立 HASH (哈希)表, 把所选择函数特 征字符串归一后, 计算一个 HASH值, 并根据所计算的 HASH值建立 HASH 表, 后续对于输入的未知程序可以在提取其导入表 API 函数特征后, 查找该 HASH表, 以达到确定其是否为恶意程序的目的。

步骤 1303: 根据分类的结果, 将不同类别的特征使用不同的训练模型进 行训练以生成用于识别恶意程序的决策机或决 策机集合。 机对决策机进行训练, 或可使用决策树对决策机进行训练。训练模型 可以为带 编码的训练模型、 或压缩的训练模型。

或者根据分类的结果将不同类别的特征使用不 同的决策机进行训练,生成 用于识别恶意程序的训练模型或训练模型集合 。其中, 不同的决策机使用相同 或不同的方式对特征进行训练, 包括: 使用支持向量机的决策机进行训练, 或 使用决策树的决策机进行训练; 训练模型可以为带编码的训练模型、或压缩的 训练模型。 参见图 14, 为本申请实施例生成识别程序类型的决策机的 应用实例示意 图:

其中, 若干 PE文件即为所输入的海量可执行程序文件, 包括恶意程序和 非恶意程序,根据类行为特征分类的不同包含 了 k个决策机, 以及对应 k个决 策机的 k个训练模型。 分析可执行程序文件后, 抽取相应的类行为特征, 生成 一个相应的特征向量 (或将所抽取的类行为特征放入一个相应的特 征向量之 内), 根据已经抽取到的特征, 进行特征分类, 例如, 可以依据前述实施例中 对导入表库特征的描述为例, 分为网络类特征、 高级 WIN32应用程序接口类 特征、 系统内核类特征、 操作系统用户界面相关应用程序接口类特征、 操作系 统应用程序共用图像用户界面模块类特征、 操作系统硬件提取层模块类特征、 虚拟机相关模块类特征、 标准 C运行库程序类特征、 对象链接和嵌入相关模 块类特征、 操作系统进程状态支持模块类特征、 操作系统 32位外壳动态链接 库文件类特征、 地址动态链接库文件类特征; 根据分类的结果, 将不同类别的 程序文件的特征向量和黑白属性使用不同的训 练模型 (或决策机)进行训练, 得到相应的决策机 (或训练模型)。

举例来说, 不同的特征分类中包含不同数量的具体特征, 以特征分类是网 络类特征为例, 其中可以具体包括网络类特征为: DNSAPI.DLL , MSWSOCK.DLL , NDIS.SYS , NETAPI32.DLL , WININET.DLL , WSOCK32.DLL, WS2_32.DLL , MPR.DLL, RPCRT4.DLL , URLMON.DLL 等。 本申请实施例中, 可以为每一个特征分类分配一个分类标识, 例如, 网络 类特征的分类标识为 "1" , 对于具体的每个网络类特征, 可以为其进一步分配 特征标识, 例如, 动态库 DNSAPI.DLL 的特征标识为 " 1 " , 动态库 MSWSOCK.DLL的特征标识为 "2" ,动态库 NETAPI32.DLL的特征标识为 "3"。 在根据所抽取的特征生成特征向量时,特征向 量中的每一个特征的数组都用其 分类标识和特征标识进行表征, 例如, 所抽取的特征为常用节表特征中的 "动 态库 DNSAPI.DLL" , 则其对应的分类标识为 "1" , 特征标识为 "1" , 因此特 征向量中对应该 "代码节的节表特征" 的信息表示为 "1:1" ; 同理, 属于其它 特征分类的具体特征也用上述形式表示,如下 所示, 为从某个程序中提取到了 4个特征的特征向量示例: 1:0 2:121 100:12345678 5000: 365。

特征向量的黑白属性用于表示包含该特征向量 中的特征的程序属于恶意 程序还是非恶意程序, 其中属性为 "白", 则对应非恶意程序, 属性为 "黑", 则对应恶意程序; 进一步, 可以为白属性定义标识为 "0" , 黑属性定义标识为 "1"。 则在为每个程序生成特征向量后, 可以根据特征向量包含的信息为其分 配属性标识, 例如, 为上述特征向量 "1:0 2:121 100:12345678 5000: 365" 分配属性标识为白属性 "0" , 则相应的信息可以表示为 "0 1:0 2:121 100:12345678 5000: 365"。 上述表示方法也可以直接用数组表示, 在数组第 n个位置的值即为第 n个特征的值。 参见图 15, 为本申请基于机器学习的程序识别方法的另一 实施例流程图: 步骤 1501 : 分析输入的未知程序, 提取所述未知程序中的类行为特征, 该类行为特征包括导入表库特征和导入表 API特征。

如前述图 13所示实施例的描述可知, 导入表库特征包括: 网络类特征、 高级 WIN32应用程序接口类特征、 系统内核类特征、 操作系统用户界面相关 应用程序接口类特征、操作系统应用程序共用 图像用户界面模块类特征、操作 系统硬件提取层模块类特征、 虚拟机相关模块类特征、 标准 C运行库程序类 特征、 对象链接和嵌入相关模块类特征、 操作系统进程状态支持模块类特征、 操作系统 32位外壳动态链接库文件类特征、 地址动态链接库文件类特征; 而 导入表 API特征为从所述导入表库中选取的函数特征。

步骤 1502: 根据所提取的类行为特征对所述未知程序进行 粗分类。

步骤 1503: 根据粗分类的结果, 将未知程序输入对应的训练产生的决策 机中进行判断。

具体的, 可以根据粗分类的结果,将未知程序分别输入 对应的多个训练模 产生的决策机中进行判断,根据预先设置的每 种特征分类在每个决策机中的权 重, 将每个决策机对未知程序进行判断的结果进行 加权计算。

或者,根据粗分类的结果,将未知程序输入已 生成的训练模型及相应的决 策机中进行判断。 具体的, 可以根据粗分类的结果, 将未知程序分别输入多个 已生成的训练模型及相应的决策机中进行判断 ,根据预先设置的每种特征分类 在每个训练模型中的权重,将每个训练模型及 相应的决策机对未知程序进行判 断的结果进行加权计算。

步骤 1504: 输出未知程序的识别结果, 该识别结果为恶意程序或非恶意 程序。

具体的,根据加权计算的结果输出对未知程序 的识别结果, 该识别结果为 恶意程序或非恶意程序。 参见图 16, 为本申请实施例对程序类型进行识别的应用实 例示意图: 其中, H殳 PE文件即为所输入的未知程序文件, 根据特征分类的不同包 含了 k个决策机, 以及对应 k个决策机的 k个训练模型。 分析 PE文件后, 抽 取相应的类行为特征, 生成一个相应的特征向量(或将所抽取的类行 为特征放 入一个相应的特征向量之内),根据已经抽取 到的类行为特征, 进行特征分类, 例如, 根据导入表库类特征可以分为网络类特征、 高级 WIN32应用程序接口 类特征、 系统内核类特征、操作系统用户界面相关应用 程序接口类特征、 操作 系统应用程序共用图像用户界面模块类特征、 操作系统硬件提取层模块类特 征、 虚拟机相关模块类特征、 标准 C运行库程序类特征、 对象链接和嵌入相 关模块类特征、 操作系统进程状态支持模块类特征、 操作系统 32位外壳动态 链接库文件类特征、 地址动态链接库文件类特征等, 根据分类的结果, 使用不 同的决策机(和训练模型 )进行相应的判断, 根据相应决策机(和模型 )得出 的判断结果,依分类的权重加权得到评分结果 , 由评分结果确定该文件是否是 恶意程序或正常程序。

对于输入的未知程序, 在根据分类的结果, 使用不同的决策机(和训练模 型)进行相应的判断时, 可以先将所有类行为特征的初始黑白属性值为 0, 从 未知程序中提取类行为特征后,对这些类行为 特征进行归一化处理, 并在前述 建立的 HASH表中查找, 如果找到相应特征, 则将其黑白属性值从 0置为 1 , 否者不进行处理。

在依分类的权重加权得到评分结果时, 假设每种分类使用 K种训练模型 产生 k个决策机, 分类一共有 m种, 分别为分类 1, 2, ..., m, 第 i种分类预先 设定的权重是(W^ W , . . . , w lk ) , 则相应的样本类别 i的决策机判别的结果是

, r i2 , ..., ), 由此得到的综合结果为 ( Wii, w i2 , Wjk ) * ( Γϋ, r i2 , . . . , )。 可以预先设置一个结果判断阈值,当判断结果 小于该阈值则确定未知程序为非 恶意程序, 当判断结果大于该阈值, 则确定未知程序为恶意程序。

或者, 在依分类的权重加权得到评分结果时, 假设决策机一共有 k个, 分 类一共有 m种, 分别为分类 1, 2, m, 第 i种分类预先设定的权重是( Wll , w l2 , w lk ) , 则相应的样本类别 i的决策机判别的结果是( ril , r l2 , ..., r lk ), 由 此得到的综合结果为 (wn, w l2 , w lk ) * ( r n , r l2 , ..., r lk )。 可以预先设置一个 结果判断阈值, 当判断结果小于该阈值则确定未知程序为非恶 意程序, 当判断 结果大于该阈值, 则确定未知程序为恶意程序 与本申请上述基于机器学习的程序识别方法的 实施例相对应,本申请还提 供了基于机器学习的程序识别装置的实施例。

参见图 17, 为本申请基于机器学习的程序识别装置的另一 实施例框图: 该装置包括: 提取单元 1710、 分类单元 1720、 判断单元 1730和输出单元

540。

其中, 提取单元 1710, 用于分析输入的未知程序, 提取输入的未知程序 中的类行为特征,所述类行为特征包括导入表 库特征和导入表应用程序编程接 口 API特征; 分类单元 1720, 用于根据所提取的类行为特征对所述未知程序 进行粗分 类;

判断单元 1730, 用于根据所述粗分类的结果, 将所述未知程序输入对应 的训练产生的决策机中进行判断;

或者判断单元 1730, 用于根据所述粗分类的结果, 将所述未知程序输入 已生成的训练模型及相应的决策机中进行判断 。

输出单元 1740, 用于输出所述未知程序的识别结果, 所述识别结果为恶 意程序或非恶意程序。

其中, 提取单元 1710具体用于, 提取所述未知程序中的导入表库特征和 所述导入表 API特征, 所述导入表库特征包括: 网络类特征、 高级 WIN32应 用程序接口类特征、 系统内核类特征、操作系统用户界面相关应用 程序接口类 特征、操作系统应用程序共用图像用户界面模 块类特征、操作系统硬件提取层 模块类特征、 虚拟机相关模块类特征、 标准 C运行库程序类特征、 对象链接 和嵌入相关模块类特征、 操作系统进程状态支持模块类特征、 操作系统 32位 外壳动态链接库文件类特征、 地址动态链接库文件类特征; 所述导入表 API 特征为从所述导入表库中选取的函数特征。

具体的, 判断单元 1730可以包括(图 17中未示出):

或者, 程序输入单元, 用于当包括多个决策机时, 将未知程序分别输入对 应的多个训练产生的决策机中进行判断; 加权计算单元, 用于根据预先设置的 每种类行为特征分类在每个决策机中的权重, 将每个决策机对所述未知程序进 行判断的结果进行加权计算; 所述输出单元 1740, 具体用于根据所述加权计 算的结果输出对所述未知程序的识别结果。

或者, 判断单元 1730可以包括(图 17中未示出 )程序输入单元, 用于当 包括多个训练模型时,将未知程序分别输入多 个已生成的训练模型及相应的决 策机中进行判断; 加权计算单元, 用于根据预先设置的每种类行为特征分类在 每个训练模型中的权重,将每个训练模型及相 应的决策机对所述未知程序进行 判断的结果进行加权计算; 所述输出单元 1740, 具体用于根据所述加权计算 的结果输出对所述未知程序的识别结果。

参见图 18, 为本申请基于机器学习的程序识别装置的第二 实施例框图, 与图 17相比,该程序识别装置进一步具有生成识别 序类型的决策机的功能: 该装置包括: 输入单元 1810、 提取单元 1820、 分类单元 1830、 生成单元 1840。

其中, 输入单元 810, 用于输入提取到的海量程序, 所述海量程序中包括 恶意程序和非恶意程序;

提取单元 1820, 用于从所输入的每个程序中提取类行为特征;

分类单元 1830, 用于对所提取的类行为特征进行粗分类;

生成单元 1840, 用于根据所述分类的结果, 将不同类别的类行为特征使 用不同的训练模型进行训练以生成用于识别恶 意程序的决策机或决策机集合。

或者, 生成单元 1840用于根据所述分类的结果, 将不同类别的类行为特 征使用不同的决策机进行训练,生成用于识别 恶意程序的训练模型或训练模型 集合。

具体的, 提取单元 1820可以包括(图 18中未示出): 类行为特征抽取单 元, 用于分析每个程序文件, 从所述程序文件中抽取预先定义的类行为特征 ; 向量属性生成单元, 用于根据所抽取的类行为特征生成特征向量, 以及每个特 征向量的黑白属性。

具体的, 分类单元 1830用于根据已知编译器的入口指令序列判定 译生 成相应程序的编译器类型, 可根据编译器类型、 文件类型和 /或加壳类型等确 定对应程序的粗分类结果。

其中, 粗分类例如可将输入程序按照文件特性, 编译器类型和 /或加壳类 型等分成驱动文件, VB,VC,DELPHI,UPX, UPACK,NSPACK,ASPACK等不同 的类别。

通过对以上实施方式的描述可知,本申请实施 例基于类行为特征识别未知 程序的类型时, 分析输入的未知程序, 提取未知程序中的类行为特征, 该类行 为特征包括导入表库特征和导入表 API特征,根据所提取的类行为特征对所述 未知程序进行粗分类,根据粗分类的结果,将 未知程序输入对应的训练产生的 决策机中进行判断(或将未知程序输入已生成 的训练模型及相应的决策机中进 行判断), 输出未知程序的识别结果。 本申请采用机器学习技术, 通过对大量 程序样本进行类行为特征提取及分析,得到基 于类行为特征的识别恶意程序的 决策机(或模型), 通过该决策机(或模型) 的使用可以节省大量的人力, 提 高对恶意程序的识别效率; 并且, 在基于对海量程序进行数据挖掘的基础上, 基于类行为可以发现程序的内在规律, 对未发生的恶意程序进行预防,使得恶 意程序难以被免杀。

本领域的技术人员可以清楚地了解到本申请实 施例中的技术可借助软件 加必需的通用硬件平台的方式来实现。基于这 样的理解, 本申请实施例中的技 术方案本质上或者说对现有技术做出贡献的部 分可以以软件产品的形式体现 出来, 该计算机软件产品可以存储在存储介质中, 如 ROM/RAM、 磁碟、 光盘 等, 包括若干指令用以使得一台计算机设备(可以 是个人计算机, 服务器, 或 者网络设备等)执行本申请各个实施例或者实 施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描 述,各个实施例之间相同相 似的部分互相参见即可, 每个实施例重点说明的都是与其他实施例的不 同之 处。 尤其, 对于系统实施例而言, 由于其基本相似于方法实施例, 所以描述的 比较筒单, 相关之处参见方法实施例的部分说明即可。

以上所述的本申请实施方式, 并不构成对本申请保护范围的限定。任何在 本申请的精神和原则之内所作的修改、等同替 换和改进等, 均应包含在本申请 的保护范围之内。