CN102034043A - 基于文件静态结构属性的恶意软件检测新方法 - Google Patents

基于文件静态结构属性的恶意软件检测新方法 Download PDF

Info

Publication number
CN102034043A
CN102034043A CN2010105851416A CN201010585141A CN102034043A CN 102034043 A CN102034043 A CN 102034043A CN 2010105851416 A CN2010105851416 A CN 2010105851416A CN 201010585141 A CN201010585141 A CN 201010585141A CN 102034043 A CN102034043 A CN 102034043A
Authority
CN
China
Prior art keywords
dll
file
attributes
malware
attribute
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.)
Granted
Application number
CN2010105851416A
Other languages
English (en)
Other versions
CN102034043B (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.)
Sichuan University
Original Assignee
Sichuan University
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 Sichuan University filed Critical Sichuan University
Priority to CN2010105851416A priority Critical patent/CN102034043B/zh
Publication of CN102034043A publication Critical patent/CN102034043A/zh
Application granted granted Critical
Publication of CN102034043B publication Critical patent/CN102034043B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

一种基于文件静态结构属性的恶意软件检测方法,特别是针对PE文件和ELF文件的检测方法。在训练阶段,首先提取文件样本静态结构属性;接着进行数据预处理工作,选择过滤算法进行选择过滤,然后使用这些数据来训练分类器;在检测阶段,根据处理过滤得到的静态结构属性,使用训练好的分类器,对检测文件进行分类,得到是恶意软件或是正常文件的结果。本发明以99%以上的准确率检测已知和未知的恶意软件,检测时间短,占用系统资源少,可实际部署于反病毒软件中使用。本方法不受加壳、混淆、变形、多态等技术影响,目前可应用于Windwos和Linux平台,同时还可以用于各种手机、掌上电脑等嵌入式平台。

Description

基于文件静态结构属性的恶意软件检测新方法
技术领域
本发明涉及信息安全中的恶意软件检测方法,特别是针对PE文件和ELF文件的新颖而实用的恶意软件检测方法,它能够在经过有限训练集训练以后,检测已知的和未知的恶意软件,因它只需提取少数的文件静态结构属性,单个文件的检测时间是0.25秒左右,且检测正确率在99%以上,已达到了可实际部署应用的检测软件的要求。
背景技术
据国内外各大反病毒公司统计,2008年截获的各类新病毒样本数已经超过1000万,日均截获病毒样本数万。计算机病毒的数量急剧增加,其传播途径多样化,且抗反病毒软件能力强,计算机病毒已经成为互联网以及广大计算机用户的最大安全威胁。
反病毒技术现状:
1、特征值扫描
传统病毒扫描是利用恶意软件留在被感染文件中的病毒特征值(即每种病毒所独有的十六进制代码串)进行检测。它的流程如下:1、一种恶意软件出现和长生了破坏,引起了反病毒公司分析专家的注意;2、分析专家找到该恶意软件的样本并进行分析,提取出了该恶意软件的特征值;3、把提取出的特征值加入到反病毒软件的服务器特征库中;4、用户被提示更新本地反病毒软件的特征库;5、用户更新后可以检测和查杀该恶意软件。其缺点是:它几乎不能检测新的恶意软件种类,能检测的恶意软件经过简单加壳后又不能检测,特定恶意软件在被反病毒软件查杀之后很容易进行免杀处理。同时随着恶意软件种类的指数级增长,分析人员手动提取每个恶意软件的特征值变得枯燥而繁重,病毒特征库的体积越来越大,致使检测工具的检测时间不断增加,相对于目前计算机恶意软件数量的增长速度来说,反病毒厂商的响应速度已经严重滞后,且存在真空期——即从恶意软件出现到反病毒软件能查杀该恶意软件,在真空期恶意软件可能已经长生了严重的破坏。这给计算机恶意软件的防护工作带来了严峻挑战。
2、使用数据挖掘技术的检测方法:
在传统的特征码扫描手段不能更好的满足需求的情况下,发展了一些使用数据挖掘技术来检测恶意软件的方法,这些方法主要分为两类:静态恶意软件检测方法和动态恶意软件检测方法。静态恶意软件检测方法通过分析恶意软件的二进制代码、反汇编后的代码、反汇编后的静态调用等获取恶意软件的特征,利用分类算法在正常软件与恶意代码之间建立较好的分割线,实验结果表明其检测未知计算机病毒的能力较强,换言之,这些特征部分反映了两类软件之间的差异。动态恶意软件检测方法通常分析恶意软件运行时的API调用系列,提取出在恶意软件和正常文件频繁出现且在两类软件中具有较好区分度的子系列,然后使用分类算法对两类软件进行分类。
上述方法主要面临三方面的问题:
第一、无论是静态的分析方法还是动态的分析方法提取特征方法复杂,提取的特征较多,导致检测每个文件的时间比较长,很难在实际部署的反病毒软件中使用;
第二、以上的静态检测方法很容易受加壳和混淆技术的影响,加壳后完全改变了恶意软件的二进制代码和反汇编后的代码,使得检测的准确率下降,如果在脱壳后再进行检测,每个文件的检测时间就会加长,且通用的脱壳软件在反脱壳技术的影响下并不能自动的脱去所有恶意软件的壳;
第三、如果是通过动态分析来检测恶意软件,我们通常只能分析恶意软件的单条执行路径,并不能遍历恶意软件的所有执行路径,同时,很多恶意软件已具备了反虚拟、反调试、反跟踪、抗反汇编的能力,这些都使得动态检测恶意软件的准确率不高和花费时间比较长,且执行恶意;
第四、软件有可能对系统产生破坏。
发明内容
本发明的目的在于提出并设计一种虚警率较低,且具有较高的检测准确率的基于文件静态结构属性的恶意软件检测新方法。
本发明的目的是这样实现的:一种基于文件静态结构属性的恶意软件检测方法,其特征是:
检测模型分为2个阶段:训练阶段和检测阶段;训练阶段用于完成分类器的构建;而检测阶段用于完成恶意软件的检测;
在训练阶段,首先提取文件样本静态结构属性;接着进行数据预处理工作,使用数据挖掘的属性选择过滤算法对属性进行选择过滤,剩下具有很好区分度的属性,然后使用这些数据来训练分类器,训练好的分类器用作区分恶意软件和正常文件;
在检测阶段,根据训练阶段数据预处理过滤得到的静态结构属性,提取待检测文件的相应结构属性,使用训练阶段训练好的分类器,对待检测文件进行分类,得到是恶意软件或是正常文件的结果。
下述以Windows平台下的PE格式和Linux下的ELF格式进行说明:
下述文件为PE文件的检测方法;所述PE文件样本静态结构属性,选定为182个,具体如下:
引用的动态链接库73个:具体是:ADVAP132.DLL,AWFAXP32.DLL,AWFXAB32.DLL,AWPWD32.DLL,AWRESX32.DLL,AWUTIL32.DLL,BHNETB.DLL,BHSUPP.DLL,CCAPI.DLL,CCEI.DLL,CCPSH.DLL,CCTN20.DLL,CMC.DLL,COMCTL32.DLL,COMDLG32.DLL,CRTDLL.DLL,DCIMAN.DLL,DCIMAN32.DLL,DSKMAINT.DLL,GDI32.DLL,GROUPPOL.DLL,HYPERTERM.DLL,KERNL32.DLL,LZ32.DLL,MAPI.DLL,MAPI32.DLL,MFC30.DLL,MPR.DLL,MSPST32.DLL,MSFS32.DLL,MSNDUI.DLL,MSNET32.DLL,MSSHRUI.DLL,MSVIEWUT.DLL,NAL.DLL,NDIS30.DLL,NETAPI.DLL,NETAPI32.DLL,NETBIOS.DLL,NETDI.DLL,NETSETUP.DLL,NWAB32.DLL,NWNET32.DLL,NWNP32.DLL,OLEDLG.DLL,POWERCFG.DLL,RASPI.DLL,RASAPI16.DLL,RASAPI32.DLL,RPCRT4.DLL,RPCLTC1.DLL,RPCTLC3.DLL,RPCTLC5.DLL,RPCTLC6.DLL,RPCTLS3.DLL,RPCTLS5.DLL,RPCTLS6.DLL,RPCNS4.DLL,RSRC32.DLL,SAPNSP.DLL,SECUR32.DLL,SHELL32.DLL,SLENH.DLL,SHLWAPI.DLL,UMDM32.DLL,USER32.DLL,VERSION.DLL,WININET.DLL,WINMM.DLL,WINREG.DLL,WINSOCK.DLL,WS2_32.DLL,WSOCK32.DLL;
Dos部首一个:即e_lfanew;
IMAGE_FILE_HEADER:选择了该部分的所有7个属性;
IMAGE_OPTIONAL_HEADER32:选择了该部分的所有30个属性;
数据目录表:选择了所有八个目录表中每个目录表的虚拟地址和大小两个属性,共16个属性;
.text头部:选择了该部分的所有11个属性;
.data头部:选择了该部分的所有11个属性;
.rsrc头部:选择了该部分的所有11个属性;
资源目录表:选择了该部分的所有22个属性;
在训练阶段:
a)获取训练样本:应获取足够多的训练样本,训练样本分为恶意软件样本和正常文件样本;
b)从训练样本文件中提取每个文件的182个静态结构属性,得到训练样本集;
c)使用WEAK数据挖掘软件的有监督属性属性过滤方法CfsSubsetEval对182个静态结构属性过滤,过滤后得到的静态结构属性为:SECUR32.DLL,SHLWAPI.DLL,ImageBase,CheckSum,SizeOfStackReserve,IMAGE_DIRECTORY_ENTRY_SECURITY.Size,IMAGE_DIRECTORY_ENTRY_DEBUG.Size,text.PointerToRelocations,rsrc.Characteristics,RT_MESSAGETABLE,RT_GROUP_ICON,RT_VERSION共12个;
d)、使用WEAK数据挖掘软件的四种分类算法J48,BFTree,IBk,AdboostM1来训练四种分类器;
在检测阶段:
e)对待检测的PE文件,按训练阶段c)中过滤选择后的12个静态结构属性提取特征;
f)使用训练阶段d)中训练好的任一分类器,根据e)中的12个属性进行分类,分类结果即为恶意软件或正常文件。
下述文件为ELF文件的检测方法;所述ELF文件样本的静态结构属性选定为81个,具体如下:
ELF header20个:选取除四个魔数即Magic Number以外的所有20个属性;
text.header8个:选取该部分头部的所有8个属性;
data.header8个:选取该部分头部的所有8个属性;
bss.header8个:选取该部分头部的所有8个属性;
SHT_DYNSYM.header9个:选取该部分头部的所有8个属性和所包括的子项的个数共9个属性;
PT_LOAD1.header7个:选取头部的所有7个属性;
PT_LOAD2.header7个:选取头部的所有7个属性;
PT_INTERP.header7个:选取头部的所有7个属性;
PT_SHLIB.header7个:选取头部的所有7个属性;
在训练阶段:
a)获取训练样本:应获取足够多的训练样本,训练样本分为恶意软件样本和正常文件样本;
b)从训练样本文件中提取每个文件的81个静态结构属性,得到训练样本集;
c)使用WEAK数据挖掘软件的有监督属性过滤方法CfsSubsetEval对81个静态结构属性选择过滤,选择过滤后得到的静态结构属性为:header.e_phnum,header.e_shnum,SHT_DYNSYM.header.sh_link,PT_LOAD1.header.p_vaddr,PT_LOAD2.header.p_offset共5个;
d)使用WEAK数据挖掘软件的四种分类算法J48,BFTree,IBk,AdboostM1来训练四种分类器;
在检测阶段:
e)对待检测的ELF文件,按训练阶段c)中过滤选择后的5个静态结构属性提取特征;
f)使用训练阶段d)中训练好的任一分类器,根据检测阶段e)中的5个属性进行分类,分类结果即为恶意软件或正常文件。
相对于传统的恶意软件方法,本发明方法主要具有如下特色:
1、能检测未知的恶意软件:传统的基于病毒特征的恶意软件检测方法只能检测已经被专业人员识别出特征的恶意软件,但新出现的恶意软件已经成指数级增长,专业人员识别恶意软件特征的工作量将大幅度增加,随着病毒特征库日渐增长,反病毒软件的检测速度将大幅度下降,对系统资源的占用将增加。本发明通过数据挖掘方法在学习已有恶意软件静态化结构属性的基础上来检测未知恶意软件,学习得到的分类器具有相对的稳定性,同时具备较高的检测准确率。
2、能检测0day的恶意软件:传统的基于病毒特征的恶意软件检测方法存在真空期——即从恶意软件出现到反病毒软件能查杀该恶意软件,在真空期恶意软件可能已经长生了严重的破坏,这给计算机恶意软件的防护工作带来了严峻挑战。本发明所使用的方法能在恶意软件出现的第一时间就能对其进行检测,能在恶意软件出现的早期就遏制住其传播,以免在互联网传播泛滥,产生严重的破坏。
3、可实际部署于反病毒软件进行应用的方法:
现有的使用数据挖掘技术检测恶意软件的方法检测时间较长,占用系统资源较多。根据恶意软件API调用系列检测恶意软件的方法获取API调用系列时间较长,过滤后剩下的API子系列也很多,且获取API系列必须执行恶意软件,很可能对系统产生破坏;使用恶意软件反汇编后进行n-gram的方法反汇编恶意软件时间也较长,反汇编后提取过滤后的特征也有几百个,检测时间也较长;直接使用恶意软件的二进制文件进行n-gram的方法提取的特征达几万个,过滤后也有500个特征左右,检测时间也较长且容易受加壳和混淆的影响。本发明选择过滤后要提取的静态文件结构属性最多只有12个,且都是直接可提取的属性,使用分类算法进行分类时间较短,单个文件在0.25秒左右,对系统资源占用较少,可实际部署于反病毒软件中使用。
4、可以跨平台检测多种操作系统上的恶意软件:现有的反病毒软件通常只支持Win32平台,只有极少数的反病毒软件支持Linux和Unix平台,随着Linux和Unix市场占有比率的增加,这两种平台上必然会面临大量恶意软件的攻击,在这两种平台部署反病毒软件就会成为市场需求,本发明使用的基于软件静态属性结构检测恶意软件目前可应用于Windows和Linux平台,相似的方法也可应用于Unix和Apple等操作系统,同时还可以应用于各种手机、掌上电脑等嵌入式平台。
5、可以对抗加壳、混淆、变形、多态等技术的恶意软件:根据对最近新出现的恶意软件分析发现,很多新出现的恶意软件都是对原有恶意软件进行各种加壳而产生的,传统的基于病毒特征的恶意软件检测方法不能检测这类新出现的恶意软件,需要专业人员重新分析提取病毒特征,更新特征库才能检测这类恶意软件;使用恶意软件二进制的n-gram方法也容易受到加壳、混淆的影响,因为加壳和混淆后恶意软件的二进制文件代码段完全改变了,但加壳和混淆后仍然是一个完整的PE或ELF文件,它仍然具有所有的静态文件结构属性,所以加壳、混淆后对本方法无影响,本发明仍然可以检测进行过加壳、混淆后的恶意软件。
最后,由表1给出本发明方法与传统基于病毒特征方法、传统使用数据挖掘技术的检测方法之间的简要对比与总结。
表1  本发明方法与传统方法间的对比总结
附图说明
图1是本发明基于文件静态结构属性的恶意软件检测模型。
图2是本发明PE文件框架图。
图3是本发明ELF文件格式图。
具体实施方式
检测模型及基本思想:
本发明依据的思想是:软件的行为和性质肯定会在软件的静态结构属性中有所体现,通过对软件的静态结构属性进行分析,提取在恶意软件和正常软件间具有很好区分度的属性,使用分类算法进行学习,使得能正确识别恶意软件和正常文件。本发明分析了WINDOWS平台下的PE文件和LINUX平台下ELF文件,从软件结构完整性的概念出发,分析了文件的静态结构属性,这些属性可以度量软件的可信程度;针对包括正常软件、恶意软件在内的各类软件,使用统计方法分别获得了这些结构属性在同类软件中的取值分布特征,这些结果为软件的可信性度量属性提供参考;利用多种分类算法,获得了正常软件和恶意软件的区分规则,这些规则可用于识别恶意软件。
为了使恶意软件检测系统愈趋完善,将数据挖掘技术引入到恶意软件检测系统中是一个重要趋势。数据挖掘技术能够从大量数据中抽取出研究人员感兴趣的知识和规律,同时又摒弃了专家系统和统计方法所固有的缺点——对经验的过分依赖。
与其他静态检测方法相比,软件的静态结构属性更能揭示出软件的性质及行为,PE文件和ELF都是格式规范、具有良好的静态结构,恶意软件和被恶意软件感染后的文件都必须保持文件结构的正确性,这使得恶意软件感染其他文件时比DOS环境下复杂的多,感染后的文件的静态结构属性和正常文件的静态结构属性表现出一些差异,通过数据挖掘分类算法来学习这些差异,然后再根据学习到的分类器来检测新的恶意软件。
本发明将软件的静态结构属性分析与数据挖掘分类算法相结合,构建的基于文件静态结构属性的恶意软件检测模型如图1所示。
检测模型分为2个阶段:训练阶段和检测阶段。训练阶段用于完成分类器的构建;而检测阶段用于完成恶意软件的检测。
模型由训练阶段的提取样本结构属性开始,PE文件和ELF文件的结构属性都比较多,很多属性不能很好的区分恶意软件和正常文件,我们基于对静态结构属性的深入认识,把有可能区分的属性提取出来;接着进行数据预处理工作,使用数据挖掘的属性选择过滤算法对属性进行选择过滤,剩下具有很好区分度的属性,然后使用这些数据来训练分类器,训练好的分类器能区分恶意软件和正常文件。
在检测阶段,本发明根据训练阶段数据预处理过滤得到的静态结构属性,提取待检测文件的相应结构属性,使用训练阶段训练好的分类器,对待检测文件进行分类,得到是恶意软件或是正常文件的结果。
虽然各种数据挖掘技术在恶意软件检测中得到了广泛的应用,但可实际部署在反病毒软件中且支持多个平台、具备较高准确率和较低虚警率尚未见诸报道。本发明构建的基于文件静态结构属性的恶意软件检测模型支持Windwos和Linux平台,依据对恶意软件静态结构属性的主观经验认识和使用数据挖掘属性选择过滤算法来提取具有更好区分度的结构属性,提取出的属性相比其他方法大幅度减少,且区分度较高,检测需要的时间达到每文件0.25秒左右,可实际部署于反病毒软件产品中。
方法描述:
现在各种平台下的恶意软件大多都是二进制可执行文件,可执行文件(executable file)是指可以加载到内存中,并由操作系统加载程序执行。一个可执行二进制文件都有其基本的数据格式,如Windows平台下的PE格式和Linux下的ELF格式,本发明通过研究这两种主流的操作系统平台下的二进制可执行文件静态结构属性,应用数据挖掘分类方法实现一种新的恶意软件检测方法。
(1)Windows平台PE文件检测“
PE格式,是微软Win32环境可执行文件的标准格式。PE就是Portable Executable的缩写,Portable是指对于不同的Windows版本和不同的CPU类型上PE文件的格式是一样的。PE文件使用的是一个平面地址空间,所有代码和数据都合并在一起,组成一个很大的结构,如下图:
PE文件的静态化结构属性很多,基于我们对恶意软件的分析和各个静态结构属性的深入认识,初步提取出可能和恶意软件检测相关的属性如下:
表1  可能和PE格式恶意软件检测相关的属性
对上表提取的特征简单描述如下:
引用的动态链接库(73个):一个动态链接库是实现的API通常都和某个具体功能有关,根据一个PE文件引用的DLL,部分能反映出这个PE文件的功能和性质,我们统计了恶意软件使用的DLL,根据使用频率选取出了73个,具体是:ADVAP132.DLL,AWFAXP32.DLL,AWFXAB32.DLL,AWPWD32.DLL,AWRESX32.DLL,AWUTIL32.DLL,BHNETB.DLL,BHSUPP.DLL,CCAPI.DLL,CCEI.DLL,CCPSH.DLL,CCTN20.DLL,CMC.DLL,COMCTL32.DLL,COMDLG32.DLL,CRTDLL.DLL,DCIMAN.DLL,DCIMAN32.DLL,DSKMAINT.DLL,GDI32.DLL,GROUPPOL.DLL,HYPERTERM.DLL,KERNL32.DLL,LZ32.DLL,MAPI.DLL,MAPI32.DLL,MFC30.DLL,MPR.DLL,MSPST32.DLL,MSFS32.DLL,MSNDUI.DLL,MSNET32.DLL,MSSHRUI.DLL,MSVIEWUT.DLL,NAL.DLL,NDIS30.DLL,NETAPI.DLL,NETAPI32.DLL,NETBIOS.DLL,NETDI.DLL,NETSETUP.DLL,NWAB32.DLL,NWNET32.DLL,NWNP32.DLL,OLEDLG.DLL,POWERCFG.DLL,RASPI.DLL,RASAPI16.DLL,RASAPI32.DLL,RPCRT4.DLL,RPCLTC1.DLL,RPCTLC3.DLL,RPCTLC5.DLL,RPCTLC6.DLL,RPCTLS3.DLL,RPCTLS5.DLL,RPCTLS6.DLL,RPCNS4.DLL,RSRC32.DLL,SAPNSP.DLL,SECUR32.DLL,SHELL32.DLL,SLENH.DLL,SHLWAPI.DLL,UMDM32.DLL,USER32.DLL,VERSION.DLL,WININET.DLL,WINMM.DLL,WINREG.DLL,WINSOCK.DLL,WS2_32.DLL,WSOCK32.DLL
Dos部首(一个):Dos部首有很多属性,但基本没有什么相关,只有e_lfanew是给出随后IMAGE_FILE_HEADER的偏移地址,正常文件通常该属性的值是0x3C,如果是恶意软件,有可能把该值设的更大,以便在空出来的间缝隐藏代码,此外如果恶意软件嵌入多个PE文件头,该值也可能更大。
IMAGE_FILE_HEADER(7个):选择了该部分的所有属性。
IMAGE_OPTIONAL_HEADER32(30个):选择了该部分的所有属性。
数据目录表(16个):选择了所有八个目录表,提取了每个目录表的虚拟地址和大小两个属性。
.text头部(11个):代码段的头部,选择了该部分的所有属性。
.data头部(11个):数据段的头部,选择了该部分的所有属性。
.rsrc头部(11个):资源段的头部,选择了该部分的所有属性。
资源目录表(22个):选择了使用的总的资源个数和21个资源类型的个数。
实现步骤(资源总共有21个类型,其中21个属性是每一个资源类型的个数,总的资源个数是指21个资源类型个数的和,即第22个属性,总共22个属性):
训练阶段:
获取训练样本:训练样本分为恶意软件样本和正常文件样本,如果在实际反病毒产品中,应获取足够多的训练样本,考虑到我们只是验证方法的实现,我们从经过杀毒软件检测无病毒的XP系统windows目录和Program Files目下获取了正常PE文件2276个,从vxheavens.com网站下载了恶意软件2830个,共计5136个样本,恶意软件的分布如下表:
表2  PE格式恶意软件分布表
按表1从训练样本文件(共5136个)中提取了每个文件的182个静态结构属性,得到训练样本集。
使用WEAK数据挖掘软件的有监督属性属性过滤方法CfsSubsetEval对182个静态结构属性过滤,过滤后得到的静态结构属性为:SECUR32.DLL,SHLWAPI.DLL,ImageBase,CheckSum,SizeOfStackReserve,IMAGE_DIRECTORY_ENTRY_SECURITY.Size,IMAGE_DIRECTORY_ENTRY_DEBUG.Size,text.PointerToRelocations,rsrc.Characteristics,RT_MESSAGETABLE,RT_GROUP_ICON,RT_VERSION(共12个)。
使用WEAK数据挖掘软件的四种分类算法J48,BFTree,IBk,AdboostM1(j48)来训练四种分类器,训练后的四种分类器检测恶意软件的正确率差不多,都是99%左右,可以任意选用一种。
检测阶段:
对待检测的PE文件,按训练阶段c)中过滤选择后的12个静态结构属性提取特征。
使用训练阶段d)中训练好的任一分类器,根据a)中的12个属性进行分类,分类结果即为恶意软件或正常文件。
实验结果:
用以上方法对训练阶段a)的5136个样本进行10等份交叉验证的结果为:
表3  PE格式恶意软件检测试验结果
Figure BDA0000037881140000112
Figure BDA0000037881140000121
Linux平台ELF文件检测:
ELF,可执行链接格式(Executable and Linking Format),最初是由UNIX系统实验室开发并发布的,作为一种可移植的目标文件格式,可以在32位Intel体系结构上的很多操作系统中使用。ELF标准的目的是为软件开发人员提供一组二进制接口定义,这些接口可以延伸到多种操作环境,从而减少重新编码、重新编译程序的需要。ELF格式是Linux平台上目标文件的格式,它的结构如图3所示。
目标文件既要参与程序链接又要参与程序执行。出于方便性和效率考虑,目标文件格式提供了两种并行视图,分别反映了这些活动的不同需求。
文件开始处是一个ELF头部(ELF Header),用来描述整个文件的组织。节区部分包含链接视图的大量信息:指令、数据、符号表、重定位信息等等。
程序头部表(Program Header Table),如果存在的话,告诉系统如何创建进程映像。用来构造进程映像的目标文件必须具有程序头部表,可重定位文件不需要这个表。
节区头部表(Section Heade Table)包含了描述文件节区的信息,每个节区在表中都有一项,每一项给出诸如节区名称、节区大小这类信息。用于链接的目标文件必须包含节区头部表,其他目标文件可以有,也可以没有这个表。
ELF文件的静态化结构属也性很多,初步提取出可能和恶意软件检测相关的属性如下:
表4  可能和ELF格式恶意软件检测相关的属性
Figure BDA0000037881140000122
对上表提取的特征简单描述如下:
ELF header(20个):选取了除四个魔数(Magic Number)以外的所有属性,因魔数(Magic Number)对每个ELF文件都是相同的,标示是否是ELF文件;
text.header(8个):代码段的头部,选取了该部分头部的所有8个属性;
data.header(8个):数据段的头部,选取了该部分头部的所有8个属性;
bss.header(8个):此节区包含将出现在程序的内存映像中的为初始化数据,选取了该部分头部的所有8个属性;
SHT_DYNSYM.header(9个):此节区包含了动态链接符号表,选取了该部分头部的所有8个属性和所包括的子项的个数;
PT_LOAD1.header(7个):可加载的段1的程序头部,选取了头部的7个属性;
PT_LOAD2.header(7个):可加载的段2的程序头部,选取了头部的7个属性;
PT_INTERP.header(7个):程序解释器段的头部,选取了头部的7个属性;
PT_SHLIB.header(7个):被保留的程序段头部,选取了头部的7个属性;
实现步骤:
训练阶段:
获取训练样本:训练样本分为恶意软件样本和正常文件样本,如果在实际反病毒产品中,应获取足够多的训练样本,考虑到我们只是验证方法的实现,我们从经过杀毒软件检测无病毒的Ubuntu Linux系统/bin目录和/sbin目下获取了正常ELF文件233个,从vxheavens.com网站下载了Linux ELF恶意软件351个,共计584个样本,恶意软件的分布如下表:
表5  ELF格式恶意软件分布表
Figure BDA0000037881140000131
按表4练样本文件(共584个)中提取了每个文件的81个静态结构属性,得到训练样本集。
使用WEAK数据挖掘软件的有监督属性过滤方法CfsSubsetEval对81个静态结构属性选择过滤,选择过滤后得到的静态结构属性为:header.e_phnum,header.e_shnum,SHT_DYNSYM.header.sh_link,PT_LOAD1.header.p_vaddr,PT_LOAD2.header.p_offset(共5个)。
使用WEAK数据挖掘软件的四种分类算法J48,BFTree,IBk,AdboostM1(j48)来训练四种分类器,训练后的四种分类器检测恶意软件的正确率差不多,在99%以上,可以任意选用一种。
检测阶段:
a)对待检测的ELF文件,按训练阶段c)中过滤选择后的5个静态结构属性提取特征。
b)使用训练阶段d)中训练好的任一分类器,根据检测阶段a)中的5个属性进行分类,分类结果即为恶意软件或正常文件。
实验结果:
用以上方法对训练阶段a)的584个样本进行10等份交叉验证的结果为:
表6  ELF格式恶意软件检测试验结果
Figure BDA0000037881140000141

Claims (3)

1.一种基于文件静态结构属性的恶意软件检测方法,其特征是:
检测模型分为2个阶段:训练阶段和检测阶段;训练阶段用于完成分类器的构建;而检测阶段用于完成恶意软件的检测;
在训练阶段,首先提取文件样本静态结构属性;接着进行数据预处理工作,使用数据挖掘的属性选择过滤算法对属性进行选择过滤,剩下具有很好区分度的属性,然后使用这些数据来训练分类器,训练好的分类器用作区分恶意软件和正常文件;
在检测阶段,根据训练阶段数据预处理过滤得到的静态结构属性,提取待检测文件的相应结构属性,使用训练阶段训练好的分类器,对待检测文件进行分类,得到是恶意软件或是正常文件的结果。
2.根据权利要求1所述的基于文件静态结构属性的恶意软件检测方法,其特征是:所述文件为PE文件;所述PE文件样本静态结构属性,选定为182个,具体如下:
引用的动态链接库73个:具体是:ADVAP132.DLL,AWFAXP32.DLL,AWFXAB32.DLL,AWPWD32.DLL,AWRESX32.DLL,AWUTIL32.DLL,BHNETB.DLL,BHSUPP.DLL,CCAPI.DLL,CCEI.DLL,CCPSH.DLL,CCTN20.DLL,CMC.DLL,COMCTL32.DLL,COMDLG32.DLL,CRTDLL.DLL,DCIMAN.DLL,DCIMAN32.DLL,DSKMAINT.DLL,GDI32.DLL,GROUPPOL.DLL,HYPERTERM.DLL,KERNL32.DLL,LZ32.DLL,MAPI.DLL,MAPI32.DLL,MFC30.DLL,MPR.DLL,MSPST32.DLL,MSFS32.DLL,MSNDUI.DLL,MSNET32.DLL,MSSHRUI.DLL,MSVIEWUT.DLL,NAL.DLL,NDIS30.DLL,NETAPI.DLL,NETAPI32.DLL,NETBIOS.DLL,NETDI.DLL,NETSETUP.DLL,NWAB32.DLL,NWNET32.DLL,NWNP32.DLL,OLEDLG.DLL,POWERCFG.DLL,RASPI.DLL,RASAPI16.DLL,RASAPI32.DLL,RPCRT4.DLL,RPCLTC1.DLL,RPCTLC3.DLL,RPCTLC5.DLL,RPCTLC6.DLL,RPCTLS3.DLL,RPCTLS5.DLL,RPCTLS6.DLL,RPCNS4.DLL,RSRC32.DLL,SAPNSP.DLL,SECUR32.DLL,SHELL32.DLL,SLENH.DLL,SHLWAPI.DLL,UMDM32.DLL,USER32.DLL,VERSION.DLL,WININET.DLL,WINMM.DLL,WINREG.DLL,WINSOCK.DLL,WS2_32.DLL,WSOCK32.DLL;
Dos部首一个:即e_lfanew;
IMAGE_FILE_HEADER:选择了该部分的所有7个属性;
IMAGE_OPTIONAL_HEADER32:选择了该部分的所有30个属性;
数据目录表:选择了所有八个目录表中每个目录表的虚拟地址和大小两个属性,共16个属性;
.text头部:选择了该部分的所有11个属性;
.data头部:选择了该部分的所有11个属性;
.rsrc头部:选择了该部分的所有11个属性;
资源目录表:选择了该部分的所有22个属性;
在训练阶段:
a)获取训练样本:应获取足够多的训练样本,训练样本分为恶意软件样本和正常文件样本;
b)从训练样本文件中提取每个文件的182个静态结构属性,得到训练样本集;
c)使用WEAK数据挖掘软件的有监督属性属性过滤方法CfsSubsetEval对182个静态结构属性过滤,过滤后得到的静态结构属性为:SECUR32.DLL,SHLWAPI.DLL,ImageBase,CheckSum,SizeOfStackReserve,IMAGE_DIRECTORY_ENTRY_SECURITY.Size,IMAGE_DIRECTORY_ENTRY_DEBUG.Size,text.PointerToRelocations,rsrc.Characteristics,RT_MESSAGETABLE,RT_GROUP_ICON,RT_VERSION共12个;
d)、使用WEAK数据挖掘软件的四种分类算法J48,BFTree,IBk,AdboostM1来训练四种分类器;
在检测阶段:
e)对待检测的PE文件,按训练阶段c)中过滤选择后的12个静态结构属性提取特征;
f)使用训练阶段d)中训练好的任一分类器,根据e)中的12个属性进行分类,分类结果即为恶意软件或正常文件。
3.根据权利要求1所述的基于文件静态结构属性的恶意软件检测方法,其特征是:所述文件为ELF文件;所述ELF文件样本的静态结构属性选定为8个,具体如下:
ELF header20个:选取除四个魔数即Magic Number以外的所有20个属性;
text.header8个:选取该部分头部的所有8个属性;
data.header8个:选取该部分头部的所有8个属性;
bss.header8个:选取该部分头部的所有8个属性;
SHT_DYNSYM.header9个:选取该部分头部的所有8个属性和所包括的子项的个数共9个属性;
PT_LOAD1.header7个:选取头部的所有7个属性;
PT_LOAD2.header7个:选取头部的所有7个属性;
PT_INTERP.header7个:选取头部的所有7个属性;
PT_SHLIB.header7个:选取头部的所有7个属性;
在训练阶段:
a)获取训练样本:应获取足够多的训练样本,训练样本分为恶意软件样本和正常文件样本;
b)从训练样本文件中提取每个文件的81个静态结构属性,得到训练样本集;
c)使用WEAK数据挖掘软件的有监督属性过滤方法CfsSubsetEval对81个静态结构属性选择过滤,选择过滤后得到的静态结构属性为:header.e_phnum,header.e_shnum,SHT_DYNSYM.header.sh_link,PT_LOAD1.header.p_vaddr,PT_LOAD2.header.p_offset共5个;
d)使用WEAK数据挖掘软件的四种分类算法J48,BFTree,IBk,AdboostM1来训练四种分类器;
在检测阶段:
e)对待检测的ELF文件,按训练阶段c)中过滤选择后的5个静态结构属性提取特征;
f)使用训练阶段d)中训练好的任一分类器,根据检测阶段e)中的5个属性进行分类,分类结果即为恶意软件或正常文件。
CN2010105851416A 2010-12-13 2010-12-13 基于文件静态结构属性的恶意软件检测新方法 Active CN102034043B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010105851416A CN102034043B (zh) 2010-12-13 2010-12-13 基于文件静态结构属性的恶意软件检测新方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010105851416A CN102034043B (zh) 2010-12-13 2010-12-13 基于文件静态结构属性的恶意软件检测新方法

Publications (2)

Publication Number Publication Date
CN102034043A true CN102034043A (zh) 2011-04-27
CN102034043B CN102034043B (zh) 2012-12-05

Family

ID=43886923

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010105851416A Active CN102034043B (zh) 2010-12-13 2010-12-13 基于文件静态结构属性的恶意软件检测新方法

Country Status (1)

Country Link
CN (1) CN102034043B (zh)

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102542190A (zh) * 2010-12-31 2012-07-04 北京奇虎科技有限公司 基于机器学习的程序识别方法及装置
CN102779249A (zh) * 2012-06-28 2012-11-14 奇智软件(北京)有限公司 恶意程序检测方法及扫描引擎
CN102867038A (zh) * 2012-08-30 2013-01-09 北京奇虎科技有限公司 文件类型的确定方法和装置
CN102930206A (zh) * 2011-08-09 2013-02-13 腾讯科技(深圳)有限公司 病毒文件的聚类划分处理方法和装置
WO2013037304A1 (en) * 2011-09-16 2013-03-21 Tencent Technology (Shenzhen) Company Limited Apparatus and methods for preventing payment webpage tampering
CN103106365A (zh) * 2013-01-25 2013-05-15 北京工业大学 一种移动终端上的恶意应用软件的检测方法
CN103150509A (zh) * 2013-03-15 2013-06-12 长沙文盾信息技术有限公司 一种基于虚拟执行的病毒检测系统
CN103279711A (zh) * 2013-05-03 2013-09-04 国家电网公司 一种静态特征值稳定的pe文件加壳检测方法
CN103914654A (zh) * 2013-12-25 2014-07-09 武汉安天信息技术有限责任公司 一种对Android ART运行时代码进行恶意代码检测的方法及系统
CN104008334A (zh) * 2013-02-21 2014-08-27 腾讯科技(深圳)有限公司 一种文件的聚类方法和设备
CN104077524A (zh) * 2013-03-25 2014-10-01 腾讯科技(深圳)有限公司 用于病毒鉴定的训练方法和病毒鉴定方法及装置
CN104243407A (zh) * 2013-06-13 2014-12-24 华为技术有限公司 一种恶意软件网络入侵检测特征码的生成方法和设备
CN104966019A (zh) * 2014-06-16 2015-10-07 哈尔滨安天科技股份有限公司 一种启发式文档威胁检测方法及系统
CN105760897A (zh) * 2016-03-21 2016-07-13 合肥赛猊腾龙信息技术有限公司 一种使用可信度分类器进行文件分类的方法及装置
CN106384046A (zh) * 2016-08-08 2017-02-08 青岛天龙安全科技有限公司 兼具动静态检测行动应用程序的方法
CN107239703A (zh) * 2017-04-21 2017-10-10 中国科学院软件研究所 一种动态链接库缺失的可执行程序的动态分析方法
CN108573149A (zh) * 2017-03-10 2018-09-25 武汉安天信息技术有限责任公司 一种样本检测方法及装置
CN108898019A (zh) * 2018-08-17 2018-11-27 广州瀚华建筑设计有限公司 Cad病毒查杀方法、系统、计算机设备和可读存储介质
CN109299609A (zh) * 2018-08-08 2019-02-01 北京奇虎科技有限公司 一种elf文件检测方法及装置
CN109858239A (zh) * 2019-01-16 2019-06-07 四川大学 一种动静态结合的容器内cpu漏洞攻击程序检测方法
CN110868405A (zh) * 2019-11-05 2020-03-06 南方电网数字电网研究院有限公司 恶意代码检测方法、装置、计算机设备及存储介质
CN111552970A (zh) * 2020-04-30 2020-08-18 北京理工大学 基于三位一体综合画像的恶意代码检测及恶意性定位方法
CN112347479A (zh) * 2020-10-21 2021-02-09 北京天融信网络安全技术有限公司 恶意软件检测的误报纠正方法、装置、设备和存储介质
CN113378162A (zh) * 2020-02-25 2021-09-10 深信服科技股份有限公司 可执行和可链接格式文件的检验方法、装置及存储介质
CN114065199A (zh) * 2021-11-18 2022-02-18 山东省计算中心(国家超级计算济南中心) 一种跨平台恶意代码检测方法及系统
CN115563614A (zh) * 2022-10-27 2023-01-03 任文欣 一种应用于人工智能的软件异常行为文件溯源方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101329711A (zh) * 2008-07-24 2008-12-24 成都市华为赛门铁克科技有限公司 一种计算机文件检测的方法及装置
CN101884047A (zh) * 2007-10-05 2010-11-10 谷歌公司 侵入软件管理

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101884047A (zh) * 2007-10-05 2010-11-10 谷歌公司 侵入软件管理
CN101329711A (zh) * 2008-07-24 2008-12-24 成都市华为赛门铁克科技有限公司 一种计算机文件检测的方法及装置

Cited By (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102542190A (zh) * 2010-12-31 2012-07-04 北京奇虎科技有限公司 基于机器学习的程序识别方法及装置
CN102930206A (zh) * 2011-08-09 2013-02-13 腾讯科技(深圳)有限公司 病毒文件的聚类划分处理方法和装置
CN102930206B (zh) * 2011-08-09 2015-02-25 腾讯科技(深圳)有限公司 病毒文件的聚类划分处理方法和装置
WO2013037304A1 (en) * 2011-09-16 2013-03-21 Tencent Technology (Shenzhen) Company Limited Apparatus and methods for preventing payment webpage tampering
CN102779249A (zh) * 2012-06-28 2012-11-14 奇智软件(北京)有限公司 恶意程序检测方法及扫描引擎
CN102779249B (zh) * 2012-06-28 2015-07-29 北京奇虎科技有限公司 恶意程序检测方法及扫描引擎
CN102867038A (zh) * 2012-08-30 2013-01-09 北京奇虎科技有限公司 文件类型的确定方法和装置
CN103106365A (zh) * 2013-01-25 2013-05-15 北京工业大学 一种移动终端上的恶意应用软件的检测方法
CN103106365B (zh) * 2013-01-25 2015-11-25 中国科学院软件研究所 一种移动终端上的恶意应用软件的检测方法
CN104008334A (zh) * 2013-02-21 2014-08-27 腾讯科技(深圳)有限公司 一种文件的聚类方法和设备
CN103150509A (zh) * 2013-03-15 2013-06-12 长沙文盾信息技术有限公司 一种基于虚拟执行的病毒检测系统
CN103150509B (zh) * 2013-03-15 2015-10-28 长沙文盾信息技术有限公司 一种基于虚拟执行的病毒检测系统
CN104077524A (zh) * 2013-03-25 2014-10-01 腾讯科技(深圳)有限公司 用于病毒鉴定的训练方法和病毒鉴定方法及装置
CN104077524B (zh) * 2013-03-25 2018-01-09 腾讯科技(深圳)有限公司 用于病毒鉴定的训练方法和病毒鉴定方法及装置
CN103279711A (zh) * 2013-05-03 2013-09-04 国家电网公司 一种静态特征值稳定的pe文件加壳检测方法
CN104243407A (zh) * 2013-06-13 2014-12-24 华为技术有限公司 一种恶意软件网络入侵检测特征码的生成方法和设备
CN103914654A (zh) * 2013-12-25 2014-07-09 武汉安天信息技术有限责任公司 一种对Android ART运行时代码进行恶意代码检测的方法及系统
CN104966019B (zh) * 2014-06-16 2017-12-22 哈尔滨安天科技股份有限公司 一种启发式文档威胁检测方法及系统
CN104966019A (zh) * 2014-06-16 2015-10-07 哈尔滨安天科技股份有限公司 一种启发式文档威胁检测方法及系统
CN105760897A (zh) * 2016-03-21 2016-07-13 合肥赛猊腾龙信息技术有限公司 一种使用可信度分类器进行文件分类的方法及装置
CN105760897B (zh) * 2016-03-21 2019-08-20 合肥赛猊腾龙信息技术有限公司 一种使用可信度分类器进行文件分类的方法及装置
CN106384046A (zh) * 2016-08-08 2017-02-08 青岛天龙安全科技有限公司 兼具动静态检测行动应用程序的方法
CN106384046B (zh) * 2016-08-08 2020-03-31 青岛华黎光电科技有限公司 兼具动静态检测行动应用程序的方法
CN108573149A (zh) * 2017-03-10 2018-09-25 武汉安天信息技术有限责任公司 一种样本检测方法及装置
CN107239703B (zh) * 2017-04-21 2020-05-22 中国科学院软件研究所 一种动态链接库缺失的可执行程序的动态分析方法
CN107239703A (zh) * 2017-04-21 2017-10-10 中国科学院软件研究所 一种动态链接库缺失的可执行程序的动态分析方法
CN109299609A (zh) * 2018-08-08 2019-02-01 北京奇虎科技有限公司 一种elf文件检测方法及装置
CN108898019A (zh) * 2018-08-17 2018-11-27 广州瀚华建筑设计有限公司 Cad病毒查杀方法、系统、计算机设备和可读存储介质
CN109858239A (zh) * 2019-01-16 2019-06-07 四川大学 一种动静态结合的容器内cpu漏洞攻击程序检测方法
CN109858239B (zh) * 2019-01-16 2020-01-17 四川大学 一种动静态结合的容器内cpu漏洞攻击程序检测方法
CN110868405A (zh) * 2019-11-05 2020-03-06 南方电网数字电网研究院有限公司 恶意代码检测方法、装置、计算机设备及存储介质
CN113378162A (zh) * 2020-02-25 2021-09-10 深信服科技股份有限公司 可执行和可链接格式文件的检验方法、装置及存储介质
CN113378162B (zh) * 2020-02-25 2023-11-07 深信服科技股份有限公司 可执行和可链接格式文件的检验方法、装置及存储介质
CN111552970A (zh) * 2020-04-30 2020-08-18 北京理工大学 基于三位一体综合画像的恶意代码检测及恶意性定位方法
CN111552970B (zh) * 2020-04-30 2022-07-01 北京理工大学 基于三位一体综合画像的恶意代码检测及恶意性定位方法
CN112347479A (zh) * 2020-10-21 2021-02-09 北京天融信网络安全技术有限公司 恶意软件检测的误报纠正方法、装置、设备和存储介质
CN112347479B (zh) * 2020-10-21 2021-08-24 北京天融信网络安全技术有限公司 恶意软件检测的误报纠正方法、装置、设备和存储介质
CN114065199A (zh) * 2021-11-18 2022-02-18 山东省计算中心(国家超级计算济南中心) 一种跨平台恶意代码检测方法及系统
CN114065199B (zh) * 2021-11-18 2022-06-21 山东省计算中心(国家超级计算济南中心) 一种跨平台恶意代码检测方法及系统
CN115563614A (zh) * 2022-10-27 2023-01-03 任文欣 一种应用于人工智能的软件异常行为文件溯源方法
CN115563614B (zh) * 2022-10-27 2023-08-04 艾德领客(上海)数字技术有限公司 一种应用于人工智能的软件异常行为文件溯源方法

Also Published As

Publication number Publication date
CN102034043B (zh) 2012-12-05

Similar Documents

Publication Publication Date Title
CN102034043B (zh) 基于文件静态结构属性的恶意软件检测新方法
CN107180192B (zh) 基于多特征融合的安卓恶意应用程序检测方法和系统
Nari et al. Automated malware classification based on network behavior
Cesare et al. Malwise—an effective and efficient classification system for packed and polymorphic malware
CN108280350B (zh) 一种面向Android的移动网络终端恶意软件多特征检测方法
US9454658B2 (en) Malware detection using feature analysis
Canfora et al. Mobile malware detection using op-code frequency histograms
US9237161B2 (en) Malware detection and identification
US9348998B2 (en) System and methods for detecting harmful files of different formats in virtual environments
Wang et al. Virus detection using data mining techinques
CN102024112B (zh) 基于静态特征的pe文件加壳检测方法
CN106096405A (zh) 一种基于Dalvik指令抽象的Android恶意代码检测方法
CN103106365B (zh) 一种移动终端上的恶意应用软件的检测方法
CN111639337B (zh) 一种面向海量Windows软件的未知恶意代码检测方法及系统
CN108009425A (zh) 文件检测及威胁等级判定方法、装置及系统
US20200193031A1 (en) System and Method for an Automated Analysis of Operating System Samples, Crashes and Vulnerability Reproduction
Choudhary et al. A simple method for detection of metamorphic malware using dynamic analysis and text mining
Sun et al. Malware family classification method based on static feature extraction
CN108268777A (zh) 一种利用补丁信息进行未知漏洞发现的相似性检测方法
RU2739830C1 (ru) Система и способ выбора средства обнаружения вредоносных файлов
Li et al. FEPDF: a robust feature extractor for malicious PDF detection
Walenstein et al. Header information in malware families and impact on automated classifiers
CN106650449B (zh) 一种基于变量名混淆程度的脚本启发式检测方法及系统
Alshamrani Design and analysis of machine learning based technique for malware identification and classification of portable document format files
EP4202741A1 (en) System and method of synthesizing potential malware for predicting a cyberattack

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant