发明内容
本申请实施例提供了一种基于机器学习的程序识别方法及装置,以解决现有技术中在识别恶意程序时效率不高,具有滞后性的问题。
为了解决上述技术问题,本申请实施例公开了如下技术方案:
一种基于机器学习的程序识别方法,包括:
分析输入的未知程序,提取所述未知程序中的PE文件的结构特征;
根据所提取的PE文件的结构特征对所述未知程序进行粗分类;
根据所述粗分类的结果,将所述未知程序输入已生成的训练模型及相应的决策机中进行判断;
输出所述未知程序的识别结果,所述识别结果为恶意程序或非恶意程序。
所述PE文件的结构特征包括至少一种下述特征:PE文件头特征、PE标准头特征、PE可选头特征、数据目录特征、常用节表特征。
当包括多个训练模型时,所述将未知程序输入已生成的训练模型及相应的决策机中进行判断包括:
将未知程序分别输入一个或多个已生成的训练模型及相应的决策机中进行判断;
根据预先设置的每种PE文件的结构特征分类在每个训练模型中的权重,将每个训练模型及相应的决策机对所述未知程序进行判断的结果进行加权计算;
所述输出未知程序的识别结果具体为:根据所述加权计算的结果输出对所述位置程序的识别结果。
还包括:
输入提取到的海量程序,所述海量程序中包括恶意程序和非恶意程序;
从所输入的每个程序中提取PE文件的结构特征,并对所提取的PE文件的结构特征进行分类;
根据所述分类的结果,将不同类别的PE文件的结构特征使用不同的决策机进行训练,生成用于识别恶意程序的训练模型或训练模型集合。
所述从所输入的每个程序中提取PE文件的结构特征包括:
分析每个程序文件,从所述程序文件中抽取预先定义的PE文件的结构特征;
根据所抽取的PE文件的结构特征生成特征向量,以及每个特征向量的黑白属性。
所述不同的决策机使用相同或不同的方式对特征进行训练,包括:使用支持向量机的决策机进行训练,或使用决策树的决策机进行训练。
一种基于机器学习的程序识别装置,包括:
提取单元,用于分析输入的未知程序,提取所述未知程序中的PE文件的结构特征;
分类单元,用于根据所提取的PE文件的结构特征对所述未知程序进行粗分类;
判断单元,用于根据所述粗分类的结果,将所述未知程序输入已生成的训练模型及相应的决策机中进行判断;
输出单元,用于输出所述未知程序的识别结果,所述识别结果为恶意程序或非恶意程序。
所述提取单元具体用于,提取所述未知程序中的至少一种下述特征:PE文件头特征、PE标准头特征、PE可选头特征、数据目录特征、常用节表特征。
所述判断单元包括:
程序输入单元,用于当包括多个训练模型时,将未知程序分别输入多个已生成的训练模型及相应的决策机中进行判断;
加权计算单元,用于根据预先设置的每种PE文件的结构特征分类在每个训练模型中的权重,将每个训练模型及相应的决策机对所述未知程序进行判断的结果进行加权计算;
所述输出单元,具体用于根据所述加权计算的结果输出对所述位置程序的识别结果。
还包括:
输入单元,用于输入提取到的海量程序,所述海量程序中包括恶意程序和非恶意程序;
提取单元,用于从所输入的每个程序中提取PE文件的结构特征;
分类单元,用于对所提取的PE文件的结构特征进行分类;
生成单元,用于根据所述分类的结果,将不同类别的PE文件的结构特征使用不同的决策机进行训练,生成用于识别恶意程序的训练模型或训练模型集合。
所述提取单元包括:
结构特征抽取单元,用于分析每个程序文件,从所述程序文件中抽取预先定义的PE文件的结构特征;
向量属性生成单元,用于根据所抽取的PE文件的结构特征生成特征向量,以及每个特征向量的黑白属性。
由上述实施例可以看出,本申请实施例基于PE文件的结构特征识别未知程序的类型时,分析输入的未知程序,提取未知程序中的PE文件的结构特征,根据所提取的PE文件的结构特征对所述未知程序进行粗分类,根据粗分类的结果,将未知程序输入已生成的训练模型及相应的决策机中进行判断,输出未知程序的识别结果。本申请采用机器学习技术,通过对大量程序样本进行PE文件的结构特征提取及分析,得到基于PE文件的结构特征的识别恶意程序的模型,通过该模型的使用可以节省大量的人力,提高对恶意程序的识别效率;并且,在基于对海量程序进行数据挖掘的基础上,基于PE文件的结构可以发现程序的内在规律,对未发生的恶意程序进行预防,使得恶意程序难以被免杀。
具体实施方式
本申请如下实施例提供了一种基于机器学习的程序识别方法及装置。本申请采用MLD(Machine Learning Detection机器学习识别)技术,通过对大量程序样本进行分析,提取其中的PE文件结构特征,得到识别恶意程序的模型,通过该模型基于PE文件结构特征,可以提高对恶意程序的识别效率,对未发生的恶意程序进行预防,使得恶意程序难以被免杀。
为了使本技术领域的人员更好地理解本申请实施例中的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。
参见图1,为本申请生成识别程序类型的模型的第一实施例流程图:
步骤101:输入提取到的海量程序,该海量程序中包括恶意程序和非恶意程序。
步骤102:从所输入的每个程序中提取PE文件的结构特征,并对所提取的PE文件结构的特征进行分类。
具体的,分析每个程序文件,从程序文件中抽取预先定义的PE文件结构的特征,根据所抽取的PE文件结构的特征生成特征向量,以及每个特征向量的黑白属性,根据已知编译器的入口指令序列判定编译生成相应程序的编译器类型。
下面具体介绍一下PE文件结构:PE文件结构是一个很复杂的结构,其中一些基本结构包含了大量PE信息,可以基于这些PE新提提取PE文件的结构特征。
本申请实施例中,一种常用PE基本结构如下所示:
IMAGE_FILE_HEADER STRUCT
Machine WORD
NumberOfSections WORD
TimeDate Stamp DWORD
PointerTo SymbolTable DWORD
NumberOfSymbols DWORD
SizeOfOptionalHeader WORD
Characteristics WORD
IMAGE_FILE_HEADER ENDS
IMAGE_OPTIONAL_HEADER32S TRUCT
Magic WORD
MajorLinkerVersion BYTE
MinorLinkerVersion BYTE
SizeOfCode DWORD
SizeOfInitializedData DWORD
SizeOfUninitializedData DWORD
AddressOfEntryPoint DWORD
BaseOfCode DWORD
BaseOfData DWORD
ImageBase DWORD
SectionAlignment DWORD
FileAlignment DWORD
MajorOperatingSystemVersion WORD
MinorOperatingSystemVersion WORD
MajorImageVersion WORD
MinorImageVersion WORD
MajorSubsystemVersion WORD
MinorSubsystemVersion WORD
Win32VersionValue DWORD
SizeOfImage 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 16dup(<>)
IMAGE_OPTIONAL_HEADER32ENDS
MAGE_DATA_DIRECTORY STRUCT
VirtualAddress DWORD
isize DWORD
IMAGE_DATA_DIRECTORY ENDS
IMAGE_SECTION_HEADER STRUCT
Name1 db 8dup()
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
TimeDate Stamp
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以上),具体包括如下特征:
MajorLinkerVersion
MinorLinkerVersion
SizeOfCode
SizeOfInitializedData
SizeOfUninitializedData
AddressOfEntryPoint
BaseOfCode
BaseOfData
3、PE可选头特征(IMAGE_OPTIONAL_HEADER32),具体包括如下特征:
ImageBase
SectionAlignment
FileAlignment
MajorOperatingSystemVersion
MinorOperatingSystemVersion
MajorImageVersion
MinorImageVersion
MajorSubsystemVersion
MinorSubsystemVersion
SizeOfImage
SizeOfHeaders
CheckSum
Subsystem
SizeOfStackReserve
SizeOfStackCommit
DllCharacteristics&MAGE_DLLCHARACTERISTICS_DYNANMIC_BASE
DllCharacteristics&AGE_DLLCHARACTERISTICS_NO_ISOLATION
DllCharacteristics&IMAGE_DLLCHARACTERISTICS_NO_SEH
DllCharacteristics&IMAGE_DLLCHARACTERISTICS_WDM_DRIVER
DllCharacteristics&IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE
4、数据目录特征(IMAGE_OPTIONAL_HEADER32),具体包括如下特征:
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].Size
5、常用节表特征,具体包括如下特征:
代码节的节表特征;
数据节的节表特征;
资源节的节表特征;
其中,可以对上述每个节表Characteristics按位展开,每个展开位作为一个特征。
步骤103:根据分类的结果,将不同类别的特征使用不同的决策机进行训练,生成用于识别恶意程序的训练模型或训练模型集合。
其中,不同的决策机使用相同或不同的方式对特征进行训练,包括:使用支持向量机的决策机进行训练,或使用决策树的决策机进行训练;训练模型可以为带编码的训练模型、或压缩的训练模型。
参见图2,为本申请实施例生成识别程序类型的模型的应用实例示意图:
其中,若干PE文件即为所输入的海量可执行程序文件,包括恶意程序和非恶意程序,根据PE文件的结构特征的特征分类的不同包含了k个决策机,以及对应k个决策机的k个训练模型。分析可执行程序文件后,抽取相应的PE文件的结构特征,将所抽取的PE文件的结构特征放入一个相应的特征向量之内,根据已经抽取到的特征,进行特征分类,例如,可以依据前述实施例中的描述分为PE文件头特征分类、PE标准头特征分类、PE可选头特征分类、数据目录特征分类、常用节表特征分类,根据分类的结果,将不同类别的程序文件的特征向量和黑白属性使用不同的决策机进行训练,得到相应的训练模型。
举例来说,不同的特征分类中包含不同数量的具体特征,以特征分类是常用节表特征为例,其中可以具体包括的节表特征为:代码节的节表特征,数据节的节表特征,资源节的节表特征。本申请实施例中,可以为每一个特征分类分配一个分类标识,例如,常用节表特征的分类标识为“1”,对于具体的每个常用节表特征,可以为其进一步分配特征标识,例如,代码节的节表特征的特征标识为“1”,数据节的节表特征的特征标识为“2”,资源节的节表特征的特征标识为“3”。在根据所抽取的特征生成特征向量时,特征向量中的每一个特征的数组都用其分类标识和特征标识进行表征,例如,所抽取的特征为常用节表特征中的“代码节的节表特征”,则其对应的分类标识为“1”,特征标识为“1”,因此特征向量中对应该“代码节的节表特征”的信息表示为“1:1”;同理,属于其它特征分类的具体特征也用上述形式表示,如下所示,为从某个程序中提取到了4个特征的特征向量示例:1:02:121100: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:分析输入的未知程序,提取所述未知程序中的PE文件的结构特征。
如前述图1所示实施例的描述可知,该PE文件的结构特征包括至少一种下述特征:PE文件头特征、PE标准头特征、PE可选头特征、数据目录特征、常用节表特征。
步骤302:根据所提取的PE文件的结构特征对所述未知程序进行粗分类。
步骤303:根据粗分类的结果,将未知程序输入已生成的训练模型及相应的决策机中进行判断。
具体的,可以根据粗分类的结果,将未知程序分别输入多个已生成的训练模型及相应的决策机中进行判断,根据预先设置的每种特征分类在每个训练模型中的权重,将每个训练模型及相应的决策机对未知程序进行判断的结果进行加权计算。
步骤304:输出未知程序的识别结果,该识别结果为恶意程序或非恶意程序。
具体的,根据加权计算的结果输出对位置程序的识别结果,该识别结果为恶意程序或非恶意程序。
参见图4,为本申请实施例对程序类型进行识别的应用实例示意图:
其中,PE文件即为所输入的未知程序文件,根据特征分类的不同包含了k个决策机,以及对应k个决策机的k个训练模型。分析PE文件后,抽取相应的PE文件的结构特征,将所抽取的PE文件的结构特征放入一个相应的特征向量之内,根据已经抽取到的PE文件的结构特征,进行特征分类,例如,根据常用节表特征的特征分类可以分为代码节的节表特征,数据节的节表特征,资源节的节表特征等,根据分类的结果,使用不同的决策机和训练模型进行相应的判断,根据相应决策机和模型得出的判断结果,依分类的权重加权得到评分结果,由评分结果确定该文件是否是恶意程序或正常程序。
例如,假设决策机一共有k个,分类一共有m种,分别为分类1,2,...,m,第i种分类预先设定的权重是(wi1,wi2,...,wik),则相应的样本类别i的决策机判别的结果是(ril,ri2,...,rik),由此得到的综合结果为(wil,wi2,...,wik)*(ri1,ri2,...,rik)。可以预先设置一个结果判断阈值,当判断结果小于该阈值则确定未知程序为非恶意程序,当判断结果大于该阈值,则确定未知程序为恶意程序。
与本申请基于机器学习的程序识别方法的实施例相对应,本申请还提供了基于机器学习的程序识别装置的实施例。
参见图5,为本申请基于机器学习的程序识别装置的第一实施例框图:
该装置包括:提取单元510、分类单元520、判断单元530和输出单元540。
其中,提取单元510,用于分析输入的未知程序,提取所述未知程序中的PE文件的结构特征;
分类单元520,用于根据所提取的PE文件的结构特征对所述未知程序进行粗分类;
判断单元530,用于根据所述粗分类的结果,将所述未知程序输入已生成的训练模型及相应的决策机中进行判断;
输出单元540,用于输出所述未知程序的识别结果,所述识别结果为恶意程序或非恶意程序。
其中,提取单元510具体用于,提取所述未知程序中的至少一种下述特征:PE文件头特征、PE标准头特征、PE可选头特征、数据目录特征、常用节表特征。
具体的,判断单元530可以包括(图5中未示出):程序输入单元,用于当包括多个训练模型时,将未知程序分别输入多个已生成的训练模型及相应的决策机中进行判断;加权计算单元,用于根据预先设置的每种PE文件的结构特征分类在每个训练模型中的权重,将每个训练模型及相应的决策机对所述未知程序进行判断的结果进行加权计算;所述输出单元540,具体用于根据所述加权计算的结果输出对所述位置程序的识别结果。
参见图6,为本申请基于机器学习的程序识别装置的第二实施例框图,与图5相比,该程序识别装置进一步具有生成识别程序类型的模型的功能:
该装置包括:输入单元610、提取单元620、分类单元630、生成单元640。
其中,输入单元610,用于输入提取到的海量程序,所述海量程序中包括恶意程序和非恶意程序;
提取单元620,用于从所输入的每个程序中提取PE文件的结构特征;
分类单元630,用于对所提取的PE文件的结构特征进行分类;
生成单元640,用于根据所述分类的结果,将不同类别的PE文件的结构特征使用不同的决策机进行训练,生成用于识别恶意程序的训练模型或训练模型集合。
具体的,提取单元620可以包括(图6中未示出):结构特征抽取单元,用于分析每个程序文件,从所述程序文件中抽取预先定义的PE文件的结构特征;向量属性生成单元,用于根据所抽取的PE文件的结构特征生成特征向量,以及每个特征向量的黑白属性。
具体的,分类单元630用于根据已知编译器的入口指令序列判定编译生成相应程序的编译器类型。
通过对以上实施方式的描述可知,本申请实施例基于PE文件的结构特征识别未知程序的类型时,分析输入的未知程序,提取未知程序中的PE文件的结构特征,根据所提取的PE文件的结构特征对所述未知程序进行粗分类,根据粗分类的结果,将未知程序输入已生成的训练模型及相应的决策机中进行判断,输出未知程序的识别结果。本申请采用机器学习技术,通过对大量程序样本进行PE文件的结构特征提取及分析,得到基于PE文件的结构特征的识别恶意程序的模型,通过该模型的使用可以节省大量的人力,提高对恶意程序的识别效率;并且,在基于对海量程序进行数据挖掘的基础上,基于PE文件的结构可以发现程序的内在规律,对未发生的恶意程序进行预防,使得恶意程序难以被免杀。
本领域的技术人员可以清楚地了解到本申请实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述的本申请实施方式,并不构成对本申请保护范围的限定。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请的保护范围之内。