CN102567661B - 基于机器学习的程序识别方法及装置 - Google Patents

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

Info

Publication number
CN102567661B
CN102567661B CN201010620202.8A CN201010620202A CN102567661B CN 102567661 B CN102567661 B CN 102567661B CN 201010620202 A CN201010620202 A CN 201010620202A CN 102567661 B CN102567661 B CN 102567661B
Authority
CN
China
Prior art keywords
program
feature
class
class behavior
unknown
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.)
Active
Application number
CN201010620202.8A
Other languages
English (en)
Other versions
CN102567661A (zh
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.)
Beijing Qizhi Business Consulting Co ltd
Beijing Qihoo Technology Co Ltd
360 Digital Security Technology Group Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing 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 Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201410062777.0A priority Critical patent/CN103853979B/zh
Priority to CN201010620202.8A priority patent/CN102567661B/zh
Priority to US13/990,146 priority patent/US9349006B2/en
Priority to PCT/CN2011/082416 priority patent/WO2012071989A1/zh
Publication of CN102567661A publication Critical patent/CN102567661A/zh
Application granted granted Critical
Publication of CN102567661B publication Critical patent/CN102567661B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本申请实施例公开了一种基于机器学习的程序识别方法及装置,所述方法包括:分析输入的未知程序,提取所述未知程序中的类行为特征,所述类行为特征包括导入表库特征和导入表应用程序编程接口API特征;根据所提取的类行为特征对所述未知程序进行粗分类;根据所述粗分类的结果,将所述未知程序输入已生成的训练模型及相应的决策机中进行判断;输出所述未知程序的识别结果,所述识别结果为恶意程序或非恶意程序。本申请采用机器学习技术,通过对大量程序样本进行类行为特征提取及分析,得到基于类行为的识别恶意程序的模型,通过该模型的使用可以节省大量的人力,提高对恶意程序的识别效率。

Description

基于机器学习的程序识别方法及装置
技术领域
本申请涉及计算机技术领域,特别是涉及一种基于机器学习的程序识别方法及装置。
背景技术
恶意程序是一类特殊的程序,它们通常在用户不知晓也未授权的情况下潜入到用户的计算机系统中,对用户系统改进型攻击。恶意程序可以包括病毒、后门程序、木马程序、宏病毒、引导区病毒、脚本病毒等。在查杀恶意病毒之前,首先要对恶意程序进行识别,以查杀病毒为例,现有技术中主要通过字符串特征码和简单的人工总结进行查杀,所查杀的病毒也均是已知的病毒,难以对新型病毒进行查杀。
发明人在对现有技术的研究过程中发现,现有技术基本上采用字符串特征码和人工规则的启发式通杀,这种识别恶意程序的方式严重依赖于病毒分析师的能力,需要分析师针对已有样本进行人工分析,找出相应的特征,因此需要大量经验丰富的人员才能满足解决问题的需求,并且由于技术复杂,人工处理的结果将导致效率低效;现有技术中只能处理已知的问题,不能对可能发生的问题进行防范,因此具有一定的滞后性;由于现有技术基于简单的特征或规则进行查杀,因此很容易被病毒作者免杀。
发明内容
本申请实施例提供了一种基于机器学习的程序识别方法及装置,以解决现有技术中在识别恶意程序时效率不高,具有滞后性的问题。
为了解决上述技术问题,本申请实施例公开了如下技术方案:
一种基于机器学习的程序识别方法,包括:
分析输入的未知程序,提取所述未知程序中的类行为特征,所述类行为特征包括导入表库特征和导入表应用程序编程接口API特征;
根据所提取的类行为特征对所述未知程序进行粗分类;
根据所述粗分类的结果,将所述未知程序输入已生成的训练模型及相应的决策机中进行判断;
输出所述未知程序的识别结果,所述识别结果为恶意程序或非恶意程序。
所述导入表库特征包括:网络类特征、高级WIN32应用程序接口类特征、系统内核类特征、操作系统用户界面相关应用程序接口类特征、操作系统应用程序共用图像用户界面模块类特征、操作系统硬件提取层模块类特征、虚拟机相关模块类特征、标准C运行库程序类特征、对象链接和嵌入相关模块类特征、操作系统进程状态支持模块类特征、操作系统32位外壳动态链接库文件类特征、地址动态链接库文件类特征;
所述导入表API特征为从所述导入表库中选取的函数特征。
当包括多个训练模型时,所述将未知程序输入已生成的训练模型及相应的决策机中进行判断包括:
将未知程序分别输入一个或多个已生成的训练模型及相应的决策机中进行判断;
根据预先设置的每种类行为特征分类在每个训练模型中的权重,将每个训练模型及相应的决策机对所述未知程序进行判断的结果进行加权计算;
所述输出未知程序的识别结果具体为:根据所述加权计算的结果输出对所述位置程序的识别结果。
还包括:
输入提取到的海量程序,所述海量程序中包括恶意程序和非恶意程序;
从所输入的每个程序中提取类行为特征,并对所提取的类行为特征进行分类;
根据所述分类的结果,将不同类别的类行为特征使用不同的决策机进行训练,生成用于识别恶意程序的训练模型或训练模型集合。
所述从所输入的每个程序中提取类行为特征包括:
分析每个程序文件,从所述程序文件中抽取预先定义的类行为特征;
根据所抽取的类行为特征生成特征向量,以及每个特征向量的黑白属性。
所述不同的决策机使用相同或不同的方式对特征进行训练,包括:使用支持向量机的决策机进行训练,或使用决策树的决策机进行训练。
一种基于机器学习的程序识别装置,包括:
提取单元,用于分析输入的未知程序,提取所述未知程序中的类行为特征,所述类行为特征包括导入表库特征和导入表应用程序编程接口API特征;
分类单元,用于根据所提取的类行为特征对所述未知程序进行粗分类;
判断单元,用于根据所述粗分类的结果,将所述未知程序输入已生成的训练模型及相应的决策机中进行判断;
输出单元,用于输出所述未知程序的识别结果,所述识别结果为恶意程序或非恶意程序。
所述提取单元具体用于,提取所述未知程序中的导入表库特征和所述导入表API特征,所述导入表库特征包括:网络类特征、高级WIN32应用程序接口类特征、系统内核类特征、操作系统用户界面相关应用程序接口类特征、操作系统应用程序共用图像用户界面模块类特征、操作系统硬件提取层模块类特征、虚拟机相关模块类特征、标准C运行库程序类特征、对象链接和嵌入相关模块类特征、操作系统进程状态支持模块类特征、操作系统32位外壳动态链接库文件类特征、地址动态链接库文件类特征;所述导入表API特征为从所述导入表库中选取的函数特征。
所述判断单元包括:
程序输入单元,用于当包括多个训练模型时,将未知程序分别输入多个已生成的训练模型及相应的决策机中进行判断;
加权计算单元,用于根据预先设置的每种类行为特征分类在每个训练模型中的权重,将每个训练模型及相应的决策机对所述未知程序进行判断的结果进行加权计算;
所述输出单元,具体用于根据所述加权计算的结果输出对所述位置程序的识别结果。
还包括:
输入单元,用于输入提取到的海量程序,所述海量程序中包括恶意程序和非恶意程序;
提取单元,用于从所输入的每个程序中提取类行为特征;
分类单元,用于对所提取的类行为特征进行分类;
生成单元,用于根据所述分类的结果,将不同类别的类行为特征使用不同的决策机进行训练,生成用于识别恶意程序的训练模型或训练模型集合。
所述提取单元包括:
类行为特征抽取单元,用于分析每个程序文件,从所述程序文件中抽取预先定义的类行为特征;
向量属性生成单元,用于根据所抽取的类行为特征生成特征向量,以及每个特征向量的黑白属性。
由上述实施例可以看出,本申请实施例基于类行为特征识别未知程序的类型时,分析输入的未知程序,提取未知程序中的类行为特征,该类行为特征包括导入表库特征和导入表API特征,根据所提取的类行为特征对所述未知程序进行粗分类,根据粗分类的结果,将未知程序输入已生成的训练模型及相应的决策机中进行判断,输出未知程序的识别结果。本申请采用机器学习技术,通过对大量程序样本进行类行为特征提取及分析,得到基于类行为特征的识别恶意程序的模型,通过该模型的使用可以节省大量的人力,提高对恶意程序的识别效率;并且,在基于对海量程序进行数据挖掘的基础上,基于类行为可以发现程序的内在规律,对未发生的恶意程序进行预防,使得恶意程序难以被免杀。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请生成识别程序类型的模型的实施例流程图;
图2为本申请实施例生成识别程序类型的模型应用实例示意图;
图3为本申请基于机器学习的程序识别方法的实施例流程图;
图4为本申请实施例对程序类型进行识别的应用实例示意图;
图5为本申请基于机器学习的程序识别装置的第一实施例框图;
图6为本申请基于机器学习的程序识别装置的第二实施例框图。
具体实施方式
本申请如下实施例提供了一种基于机器学习的程序识别方法及装置。本申请采用MLD(Machine Learning Detection机器学习识别)技术,通过对大量程序样本进行分析,提取其中的类行为特征,得到识别恶意程序的模型,通过该模型基于类行为特征,可以提高对恶意程序的识别效率,对未发生的恶意程序进行预防,使得恶意程序难以被免杀。
为了使本技术领域的人员更好地理解本申请实施例中的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。
参见图1,为本申请生成识别程序类型的模型的第一实施例流程图:
步骤101:输入提取到的海量程序,该海量程序中包括恶意程序和非恶意程序。
步骤102:从所输入的每个程序中提取类行为特征,并对所提取的类行为特征进行分类。
具体的,分析每个程序文件,从程序文件中抽取预先定义的类行为特征,根据所抽取的类行为特征生成特征向量,以及每个特征向量的黑白属性,根据已知编译器的入口指令序列判定编译生成相应程序的编译器类型。
下面具体介绍一下本申请实施例中的类行为特征,类行为特征可以从整体上分为导入表库特征和导入表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_GetScrollInfo
COMCTL32.DLL!FlatSB_SetScrollInfo
COMCTL32.DLL!FlatSB_SetScrollPos
COMCTL32.DLL!ImageList_Add
COMCTL32.DLL!ImageList_AddMasked
上述仅是示例性的描述,对于每种具体的导入表库特征对应的函数特征不再一一赘述。
对于上述函数特征,也可以为其建立HASH(哈希)表,把所选择函数特征字符串归一后,计算一个HASH值,并根据所计算的HASH值建立HASH表,后续对于输入的未知程序可以在提取其导入表API函数特征后,查找该HASH表,以达到确定其是否为恶意程序的目的。
步骤103:根据分类的结果,将不同类别的特征使用不同的决策机进行训练,生成用于识别恶意程序的训练模型或训练模型集合。
其中,不同的决策机使用相同或不同的方式对特征进行训练,包括:使用支持向量机的决策机进行训练,或使用决策树的决策机进行训练;训练模型可以为带编码的训练模型、或压缩的训练模型。
参见图2,为本申请实施例生成识别程序类型的模型的应用实例示意图:
其中,若干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:121100:12345678 5000:365”。上述表示方法也可以直接用数组表示,在数组第n个位置的值即为第n个特征的值。
参见图3,为本申请基于机器学习的程序识别方法的实施例流程图:
步骤301:分析输入的未知程序,提取所述未知程序中的类行为特征,类行为特征包括导入表库特征和导入表API特征。
如前述图1所示实施例的描述可知,导入表库特征包括:网络类特征、高级WIN32应用程序接口类特征、系统内核类特征、操作系统用户界面相关应用程序接口类特征、操作系统应用程序共用图像用户界面模块类特征、操作系统硬件提取层模块类特征、虚拟机相关模块类特征、标准C运行库程序类特征、对象链接和嵌入相关模块类特征、操作系统进程状态支持模块类特征、操作系统32位外壳动态链接库文件类特征、地址动态链接库文件类特征;而导入表API特征为从所述导入表库中选取的函数特征。
步骤302:根据所提取的类行为特征对所述未知程序进行粗分类。
步骤303:根据粗分类的结果,将未知程序输入已生成的训练模型及相应的决策机中进行判断。
具体的,可以根据粗分类的结果,将未知程序分别输入多个已生成的训练模型及相应的决策机中进行判断,根据预先设置的每种特征分类在每个训练模型中的权重,将每个训练模型及相应的决策机对未知程序进行判断的结果进行加权计算。
步骤304:输出未知程序的识别结果,该识别结果为恶意程序或非恶意程序。
具体的,根据加权计算的结果输出对位置程序的识别结果,该识别结果为恶意程序或非恶意程序。
参见图4,为本申请实施例对程序类型进行识别的应用实例示意图:
其中,PE文件即为所输入的未知程序文件,根据特征分类的不同包含了k个决策机,以及对应k个决策机的k个训练模型。分析PE文件后,抽取相应的类行为特征,将所抽取的类行为特征放入一个相应的特征向量之内,根据已经抽取到的类行为特征,进行特征分类,例如,根据导入表库类特征可以分为网络类特征、高级WIN32应用程序接口类特征、系统内核类特征、操作系统用户界面相关应用程序接口类特征、操作系统应用程序共用图像用户界面模块类特征、操作系统硬件提取层模块类特征、虚拟机相关模块类特征、标准C运行库程序类特征、对象链接和嵌入相关模块类特征、操作系统进程状态支持模块类特征、操作系统32位外壳动态链接库文件类特征、地址动态链接库文件类特征等,根据分类的结果,使用不同的决策机和训练模型进行相应的判断,根据相应决策机和模型得出的判断结果,依分类的权重加权得到评分结果,由评分结果确定该文件是否是恶意程序或正常程序。
对于输入的未知程序,在根据分类的结果,使用不同的决策机和训练模型进行相应的判断时,可以先将所有类行为特征的初始黑白属性值为0,从位置程序中提取类行为特征后,对这些类行为特征进行归一化处理,并在前述建立的HASH表中查找,如果找到相应特征,则将其黑白属性值从0置为1,否者不进行处理。
在依分类的权重加权得到评分结果时,假设决策机一共有k个,分类一共有m种,分别为分类1,2,...,m,第i种分类预先设定的权重是(wi1,wi2,...,wik),则相应的样本类别i的决策机判别的结果是(ri1,ri2,...,rik),由此得到的综合结果为(wi1,wi2,...,wik)*(ri1,ri2,...,rik)。可以预先设置一个结果判断阈值,当判断结果小于该阈值则确定未知程序为非恶意程序,当判断结果大于该阈值,则确定未知程序为恶意程序。
与本申请基于机器学习的程序识别方法的实施例相对应,本申请还提供了基于机器学习的程序识别装置的实施例。
参见图5,为本申请基于机器学习的程序识别装置的第一实施例框图:
该装置包括:提取单元510、分类单元520、判断单元530和输出单元540。
其中,提取单元510,用于分析输入的未知程序,提取所述未知程序中的类行为特征,所述类行为特征包括导入表库特征和导入表应用程序编程接口API特征;
分类单元520,用于根据所提取的类行为特征对所述未知程序进行粗分类;
判断单元530,用于根据所述粗分类的结果,将所述未知程序输入已生成的训练模型及相应的决策机中进行判断;
输出单元540,用于输出所述未知程序的识别结果,所述识别结果为恶意程序或非恶意程序。
其中,提取单元510具体用于,提取所述未知程序中的导入表库特征和所述导入表API特征,所述导入表库特征包括:网络类特征、高级WIN32应用程序接口类特征、系统内核类特征、操作系统用户界面相关应用程序接口类特征、操作系统应用程序共用图像用户界面模块类特征、操作系统硬件提取层模块类特征、虚拟机相关模块类特征、标准C运行库程序类特征、对象链接和嵌入相关模块类特征、操作系统进程状态支持模块类特征、操作系统32位外壳动态链接库文件类特征、地址动态链接库文件类特征;所述导入表API特征为从所述导入表库中选取的函数特征。
具体的,判断单元530可以包括(图5中未示出):程序输入单元,用于当包括多个训练模型时,将未知程序分别输入多个已生成的训练模型及相应的决策机中进行判断;加权计算单元,用于根据预先设置的每种类行为特征分类在每个训练模型中的权重,将每个训练模型及相应的决策机对所述未知程序进行判断的结果进行加权计算;所述输出单元540,具体用于根据所述加权计算的结果输出对所述位置程序的识别结果。
参见图6,为本申请基于机器学习的程序识别装置的第二实施例框图,与图5相比,该程序识别装置进一步具有生成识别程序类型的模型的功能:
该装置包括:输入单元610、提取单元620、分类单元630、生成单元640。
其中,输入单元610,用于输入提取到的海量程序,所述海量程序中包括恶意程序和非恶意程序;
提取单元620,用于从所输入的每个程序中提取类行为特征;
分类单元630,用于对所提取的类行为特征进行分类;
生成单元640,用于根据所述分类的结果,将不同类别的类行为特征使用不同的决策机进行训练,生成用于识别恶意程序的训练模型或训练模型集合。
具体的,提取单元620可以包括(图6中未示出):类行为特征抽取单元,用于分析每个程序文件,从所述程序文件中抽取预先定义的类行为特征;向量属性生成单元,用于根据所抽取的类行为特征生成特征向量,以及每个特征向量的黑白属性。
具体的,分类单元630用于根据已知编译器的入口指令序列判定编译生成相应程序的编译器类型。
通过对以上实施方式的描述可知,本申请实施例基于类行为特征识别未知程序的类型时,分析输入的未知程序,提取未知程序中的类行为特征,该类行为特征包括导入表库特征和导入表API特征,根据所提取的类行为特征对所述未知程序进行粗分类,根据粗分类的结果,将未知程序输入已生成的训练模型及相应的决策机中进行判断,输出未知程序的识别结果。本申请采用机器学习技术,通过对大量程序样本进行类行为特征提取及分析,得到基于类行为特征的识别恶意程序的模型,通过该模型的使用可以节省大量的人力,提高对恶意程序的识别效率;并且,在基于对海量程序进行数据挖掘的基础上,基于类行为可以发现程序的内在规律,对未发生的恶意程序进行预防,使得恶意程序难以被免杀。
本领域的技术人员可以清楚地了解到本申请实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述的本申请实施方式,并不构成对本申请保护范围的限定。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请的保护范围之内。

Claims (9)

1.一种基于机器学习的程序识别方法,其特征在于,包括:
分析输入的未知程序,提取所述未知程序中的类行为特征,所述类行为特征包括导入表库特征和导入表应用程序编程接口API特征,其中,所述导入表库特征包括:网络类特征、高级WIN32应用程序接口类特征、系统内核类特征、操作系统用户界面相关应用程序接口类特征、操作系统应用程序共用图像用户界面模块类特征、操作系统硬件提取层模块类特征、虚拟机相关模块类特征、标准C运行库程序类特征、对象链接和嵌入相关模块类特征、操作系统进程状态支持模块类特征、操作系统32位外壳动态链接库文件类特征、地址动态链接库文件类特征;所述导入表API特征为从所述导入表库中选取的函数特征;
根据所提取的类行为特征对所述未知程序进行粗分类;
根据所述粗分类的结果,将所述未知程序输入已生成的基于类行为特征的、且与所述粗分类的结果相应的训练模型及相应的决策机中进行判断;
输出所述未知程序的识别结果,所述识别结果为恶意程序或非恶意程序。
2.根据权利要求1所述的方法,其特征在于,当包括多个训练模型时,所述将未知程序输入已生成的训练模型及相应的决策机中进行判断包括:
将未知程序分别输入一个或多个已生成的训练模型及相应的决策机中进行判断;
根据预先设置的每种类行为特征分类在每个训练模型中的权重,将每个训练模型及相应的决策机对所述未知程序进行判断的结果进行加权计算;
所述输出未知程序的识别结果具体为:根据所述加权计算的结果输出对所述位置程序的识别结果。
3.根据权利要求1所述的方法,其特征在于,还包括:
输入提取到的海量程序,所述海量程序中包括恶意程序和非恶意程序;
从所输入的每个程序中提取类行为特征,并对所提取的类行为特征进行分类;
根据所述分类的结果,将不同类别的类行为特征使用不同的决策机进行训练,生成用于识别恶意程序的训练模型或训练模型集合。
4.根据权利要求3所述的方法,其特征在于,所述从所输入的每个程序中提取类行为特征包括:
分析每个程序文件,从所述程序文件中抽取预先定义的类行为特征;
根据所抽取的类行为特征生成特征向量,以及每个特征向量的黑白属性。
5.根据权利要求3所述的方法,其特征在于,所述不同的决策机使用相同或不同的方式对特征进行训练,包括:使用支持向量机的决策机进行训练,或使用决策树的决策机进行训练。
6.一种基于机器学习的程序识别装置,其特征在于,包括:
提取单元,用于分析输入的未知程序,提取所述未知程序中的类行为特征,所述类行为特征包括导入表库特征和导入表应用程序编程接口API特征,其中,所述导入表库特征包括:网络类特征、高级WIN32应用程序接口类特征、系统内核类特征、操作系统用户界面相关应用程序接口类特征、操作系统应用程序共用图像用户界面模块类特征、操作系统硬件提取层模块类特征、虚拟机相关模块类特征、标准C运行库程序类特征、对象链接和嵌入相关模块类特征、操作系统进程状态支持模块类特征、操作系统32位外壳动态链接库文件类特征、地址动态链接库文件类特征;所述导入表API特征为从所述导入表库中选取的函数特征;
分类单元,用于根据所提取的类行为特征对所述未知程序进行粗分类;
判断单元,用于根据所述粗分类的结果,将所述未知程序输入已生成的基于类行为特征的、且与所述粗分类的结果相应的训练模型及相应的决策机中进行判断;
输出单元,用于输出所述未知程序的识别结果,所述识别结果为恶意程序或非恶意程序。
7.根据权利要求6所述的装置,其特征在于,所述判断单元包括:
程序输入单元,用于当包括多个训练模型时,将未知程序分别输入多个已生成的训练模型及相应的决策机中进行判断;
加权计算单元,用于根据预先设置的每种类行为特征分类在每个训练模型中的权重,将每个训练模型及相应的决策机对所述未知程序进行判断的结果进行加权计算;
所述输出单元,具体用于根据所述加权计算的结果输出对所述位置程序的识别结果。
8.根据权利要求6所述的装置,其特征在于,还包括:
输入单元,用于输入提取到的海量程序,所述海量程序中包括恶意程序和非恶意程序;
提取单元,用于从所输入的每个程序中提取类行为特征;
分类单元,用于对所提取的类行为特征进行分类;
生成单元,用于根据所述分类的结果,将不同类别的类行为特征使用不同的决策机进行训练,生成用于识别恶意程序的训练模型或训练模型集合。
9.根据权利要求8所述的装置,其特征在于,所述提取单元包括:
类行为特征抽取单元,用于分析每个程序文件,从所述程序文件中抽取预先定义的类行为特征;
向量属性生成单元,用于根据所抽取的类行为特征生成特征向量,以及每个特征向量的黑白属性。
CN201010620202.8A 2010-11-29 2010-12-31 基于机器学习的程序识别方法及装置 Active CN102567661B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201410062777.0A CN103853979B (zh) 2010-12-31 2010-12-31 基于机器学习的程序识别方法及装置
CN201010620202.8A CN102567661B (zh) 2010-12-31 2010-12-31 基于机器学习的程序识别方法及装置
US13/990,146 US9349006B2 (en) 2010-11-29 2011-11-18 Method and device for program identification based on machine learning
PCT/CN2011/082416 WO2012071989A1 (zh) 2010-11-29 2011-11-18 基于机器学习的程序识别方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010620202.8A CN102567661B (zh) 2010-12-31 2010-12-31 基于机器学习的程序识别方法及装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201410062777.0A Division CN103853979B (zh) 2010-12-31 2010-12-31 基于机器学习的程序识别方法及装置

Publications (2)

Publication Number Publication Date
CN102567661A CN102567661A (zh) 2012-07-11
CN102567661B true CN102567661B (zh) 2014-03-26

Family

ID=46413048

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010620202.8A Active CN102567661B (zh) 2010-11-29 2010-12-31 基于机器学习的程序识别方法及装置

Country Status (1)

Country Link
CN (1) CN102567661B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103853979A (zh) * 2010-12-31 2014-06-11 北京奇虎科技有限公司 基于机器学习的程序识别方法及装置
CN106960154A (zh) * 2017-03-30 2017-07-18 兴华永恒(北京)科技有限责任公司 一种基于决策树模型的恶意程序动态识别方法

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103634264A (zh) * 2012-08-20 2014-03-12 江苏中科慧创信息安全技术有限公司 一种基于行为分析的主动诱捕方法
CN103679012A (zh) * 2012-09-03 2014-03-26 腾讯科技(深圳)有限公司 一种可移植可执行文件的聚类方法和装置
CN103810424B (zh) * 2012-11-05 2017-02-08 腾讯科技(深圳)有限公司 一种异常应用程序的识别方法及装置
CN103761476B (zh) * 2013-12-30 2016-11-09 北京奇虎科技有限公司 特征提取的方法及装置
CN104123500B (zh) * 2014-07-22 2017-07-28 北京知多星科技有限公司 一种基于深度学习的Android平台恶意应用检测方法及装置
CN106997367B (zh) 2016-01-26 2020-05-08 华为技术有限公司 程序文件的分类方法、分类装置和分类系统
CN105797377B (zh) * 2016-03-10 2019-08-23 武汉斗鱼网络科技有限公司 一种游戏进程识别和显示方法及系统
CN105975861A (zh) * 2016-05-27 2016-09-28 百度在线网络技术(北京)有限公司 应用检测方法和装置
CN106228398A (zh) * 2016-07-20 2016-12-14 武汉斗鱼网络科技有限公司 基于c4.5决策树算法的特定用户挖掘系统及其方法
CN106485139B (zh) * 2016-09-29 2019-06-04 商客通尚景科技(上海)股份有限公司 一种应用程序的安全验证方法
CN107103254B (zh) * 2017-06-06 2021-06-29 北京奇虎科技有限公司 加密程序识别方法及装置、电子设备
CN107742079B (zh) * 2017-10-18 2020-02-21 杭州安恒信息技术股份有限公司 恶意软件识别方法及系统
KR20190053675A (ko) * 2017-11-10 2019-05-20 삼성전자주식회사 전자 장치 및 그 동작 방법
CN110943961B (zh) 2018-09-21 2022-06-21 阿里巴巴集团控股有限公司 数据处理方法、设备以及存储介质
CN109324953B (zh) * 2018-10-11 2020-08-04 北京理工大学 一种虚拟机能耗预测方法
CN110187939B (zh) * 2019-05-30 2021-03-02 广东电网有限责任公司 一种运用WebService调用Vensim模型的实现方法及系统
CN113486350B (zh) * 2021-08-18 2023-08-25 广州市京腾网络科技有限公司 恶意软件的识别方法、装置、设备及存储介质
CN113763429A (zh) * 2021-09-08 2021-12-07 广州市健坤网络科技发展有限公司 基于视频的猪只行为识别系统及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090113128A1 (en) * 2007-10-24 2009-04-30 Sumwintek Corp. Method and system for preventing virus infections via the use of a removable storage device
CN101593253A (zh) * 2009-06-22 2009-12-02 成都市华为赛门铁克科技有限公司 一种恶意程序判断方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090113128A1 (en) * 2007-10-24 2009-04-30 Sumwintek Corp. Method and system for preventing virus infections via the use of a removable storage device
CN101593253A (zh) * 2009-06-22 2009-12-02 成都市华为赛门铁克科技有限公司 一种恶意程序判断方法及装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
吴云芳等.多分类器集成的汉语词义消歧研究.《计算机研究与发展》.2008,第45卷(第8期),
基于机器学习的恶意程序检测研究;毛明明等;《软件导刊》;20100930;第9卷(第9期);第23页左栏最后1段至第24页右栏最后1段,图1 *
多分类器集成的汉语词义消歧研究;吴云芳等;《计算机研究与发展》;20081231;第45卷(第8期);摘要、第1355页左栏第1-3段、第1357页左栏第4-7段 *
毛明明等.基于机器学习的恶意程序检测研究.《软件导刊》.2010,第9卷(第9期),

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103853979A (zh) * 2010-12-31 2014-06-11 北京奇虎科技有限公司 基于机器学习的程序识别方法及装置
CN106960154A (zh) * 2017-03-30 2017-07-18 兴华永恒(北京)科技有限责任公司 一种基于决策树模型的恶意程序动态识别方法

Also Published As

Publication number Publication date
CN102567661A (zh) 2012-07-11

Similar Documents

Publication Publication Date Title
CN102567661B (zh) 基于机器学习的程序识别方法及装置
CN103853979A (zh) 基于机器学习的程序识别方法及装置
CN102479298B (zh) 基于机器学习的程序识别方法及装置
Aslan et al. A new malware classification framework based on deep learning algorithms
CN103839006B (zh) 基于机器学习的程序识别方法及装置
Nguyen et al. Auto-detection of sophisticated malware using lazy-binding control flow graph and deep learning
Caliskan et al. When coding style survives compilation: De-anonymizing programmers from executable binaries
Darem et al. Visualization and deep-learning-based malware variant detection using OpCode-level features
Alam et al. A framework for metamorphic malware analysis and real-time detection
Siddiqui et al. A survey of data mining techniques for malware detection using file features
CN111639337B (zh) 一种面向海量Windows软件的未知恶意代码检测方法及系统
CN103870754A (zh) 恶意程序识别及训练模型生成方法和装置
CN101685483B (zh) 一种病毒特征码提取的方法和装置
Savenko et al. Metamorphic Viruses' Detection Technique Based on the Equivalent Functional Block Search.
CN102542190B (zh) 基于机器学习的程序识别方法及装置
CN103942495A (zh) 基于机器学习的程序识别方法及装置
Darshan et al. Windows malware detection based on cuckoo sandbox generated report using machine learning algorithm
CN103473104A (zh) 一种基于关键词上下文频率矩阵的应用重打包辨别方法
CN109614795A (zh) 一种事件感知的安卓恶意软件检测方法
CN104680065A (zh) 病毒检测方法、装置及设备
Manavi et al. A new method for malware detection using opcode visualization
Li et al. An adversarial machine learning method based on OpCode N-grams feature in malware detection
Feng et al. Hrs: A hybrid framework for malware detection
Mehra et al. DaCoMM: detection and classification of metamorphic malware
Hang et al. Malware detection method of android application based on simplification instructions

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
C53 Correction of patent of invention or patent application
CB03 Change of inventor or designer information

Inventor after: Zhou Hongdai

Inventor after: Dong Yi

Inventor after: Zhou Hui

Inventor before: Dong Yi

Inventor before: Zhou Hui

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: DONG YI ZHOU HUI TO: ZHOU HONGYI DONG YI ZHOU HUI

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee after: Beijing Qizhi Business Consulting Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right

Effective date of registration: 20220329

Address after: 100016 1773, 15 / F, 17 / F, building 3, No.10, Jiuxianqiao Road, Chaoyang District, Beijing

Patentee after: Sanliu0 Digital Security Technology Group Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Beijing Qizhi Business Consulting Co.,Ltd.

TR01 Transfer of patent right