还剩3页未读,继续阅读
文本内容:
一种层次化的恶意代码行为分析方法0恶意代码检测技术计算机网络的发展使人们的生活更轻松与此同时,大量病毒、特洛伊木马和其他恶意代码也给网络安全带来了严重威胁它们不仅窃取计算机用户的私有信息,破坏用户数据,更是给企业和国家造成了无法估量的损失有关统计数据显示,仅2008年一年拦截到的互联网攻击就高达23680646次当前,关于恶意代码检测技术的研究大部分集中在基于行为的检测技术上与传统的检测技术相比,基于行为的恶意代码检测技术使用抽象语义刻画的程序行为作为签名,而不是依靠字节特征码来检测恶意程序,这种方式能够有效地对抗恶意程序多态变形、加壳技术带来的干扰本文提出一种恶意代码行为分析方法,该方法根据应用程序接口ApplicationProgramming Interface,API调用序列及相关参数,分析理解程序的行为目的,并对程序的危害性作出评估1可控环境检测方法目前的恶意代码行为检测系统多采用动态分析的方法,通过在可控环境中监视可疑程序的执行达到检测恶意代码的目的例如,CwSandbox系统同时,文献2行为分析部分本文设计了一个恶意行为分析模型,采用层次化的方法分析恶意代码行为该模型由三大部分组成如图1所示,分别为行为检测部分、行为分析部分以及辅助部分其中,行为检测部分用于识别程序中各种基本的操作,如注册表的读写、进程创建等该部分首先将测试程序放入虚拟系统中执行,获取其执行过程中的API调用序列,包括参数及其返回值;然后利用行为检测器识别出API序列中蕴含的行为信息行为分析部分的主体是行为分析及危害评估部件,它利用了攻击树的原理,进一步分析由行为检测器输出的信息,挖掘这些程序行为的目的,并在此基础上作出危害评估由于行为检测器输出的信息是对系统资源的操作及操作对象信息,而行为分析及危害评估部件则是以各种攻击子目标作为输入为了使行为检测器的输出能够被行为分析及危害评估部件接收,还引入了一个语义转换部件,该部件利用规则知识库的知识将程序的各种操作信息抽象为各种攻击子目标此外,模型中的辅助部分是所有工作的基础,主要完成1提取API序列中的行为因子,为行为检测器识别程序的各种行为信息提供依据;2收集各种操作及操作对象信息,结合人的经验将程序对系统资源的各种使用情况与攻击目标对应起来,构建规则知识库3获取项目操作信息
3.1文件读操作所对应的行为因子本文提出的行为因子是指应用程序为实现对特定系统资源的操作而调用若干API函数所构成的具有一定时序关系的序列例如,文件读操作通常由NtOpenFile、NtReadFile和NtClose这几个系统调用共同完成,则文件读操作所对应的行为因子为NtOpenFileNtReadFile〈NtClose〉由于程序运行时产生的API调用数量较大,且各API调用间关系复杂,单靠人工分析来提取这些API序列中蕴含的行为因子,是相当耗时耗力的本文借鉴了文献文献通过def-use依赖关系可以将单个的API调用关联起来,构成一个依赖图依赖图
3.2基于api行为检测的目标恶意行为分析模型的一个主要部分是行为检测部分,该部分的核心是行为检测器,它利用前期获取的各个行为因子来识别API调用序列中存在的对各种系统资源的操作,同时根据函数中的参数信息得到包括操作对象在内的详细信息为实现这一目标,本文依据上述的行为因子识别方法设计了一个行为检测算法BehaviorDetection,其主要思想是:对每一个操作对象,利用各API函数参数间存在的def-use依赖关系,将相关的API组合到一起,并按照其调用的先后顺序对API函数名进行排列当与操作对象相关的所有句柄都关闭时,将得到的API函数名序列与行为因子进行匹配,从而得到相应的程序行为信息该算法具体流程如图4所示它的输入为程序执行的API调用序列1BehStack,存放已识别的函数名称;2TmpTable,存放函数调用对应的关键参数信息,这些参数信息能够将相关API函数联系在一起;3ActTable,记录当前正在对其进行操作的对象的相关信息4基于攻击树的恶意行为分析经过行为检测器得到的结果为操作对象与操作类型的信息,后期的行为分析部分将在这些信息的基础上利用攻击树原理分析程序行为的目的,并根据其实现的攻击目标来评估程序的危害指数41schneter攻击树模型攻击树模型Attack TreeModel是Bruce Schneter在1999年首次提出的,用于分析系统安全,对计算机系统面临的各种威胁进行建模由于攻击树模型能够较好地反映各节点之间的逻辑关系,它也被运用于恶意代码分析领域
4.2攻击树的构建本文从危害评估的角度出发,将病毒的传播性、破坏性、复杂性作为危害评估的准则在传播性方面,根据已知的恶意程序的传播方式及实现的不同方法和步骤自上而下进行分解同时,根据不同传播方式的传播能力强弱设置各个节点的在破坏性方面,依据恶意程序运行后对系统可能造成的不同方面的破坏,以及实现这些损害的步骤来构建攻击树对于节点在复杂性方面,则以恶意程序为确保自身的生存能力所采取的各种技术手段作为出发点,根据实现这些目标的方式及步骤进行攻击树的构建
4.3基于规则库的行为检测通过行为检测器得到的行为数据反映的是对某种系统资源的操作,这与攻击树中节点对攻击行为或攻击目标的描述不大相同并不一一对应例如,同是对注册表的写操作,对HKLM\Software\Microsoft\Windows\CurrentVersion\Run项的修改其目的是为了自启动;而将HKLM\Software\Microsoft\SecurityCenter下的子项FirewallDisableNotify设为1表示禁用防火墙提醒,更改了系统安全相关设置这时就需要对其进行语义转换,利用规则知识库的知识,将行为检测器识别的各种程序行为与攻击树中的叶节点相对应同时,相同的操作往往也会由于操作对象的不同而对系统造成不同程度的危害,因此,在规则知识库中需要对不同的操作对象赋予不同的整个行为分析的过程概述如下:首先根据规则知识库将程序行为转换为攻击树中的攻击目标,对叶节点进行标记;然后利用攻击树相关匹配算法
4.4多个子节点的攻击目标危害指数对于或节点来说,任意一个子节点的攻击目标的实现都能够使父节点的攻击目标实现父节点的攻击目标可以有多个子节点的实现来促成其实现在这种情况下,本文从以下几个方面进行考虑,设或节点有1)若2)若3)依照上述规则,给出攻击树中各个内部或节点的危害指数计算公式:其中:代码整体的危害程度使用以下公式进行计算:5使用vm水质的虚拟网络其中,为了验证上述层次化的恶意代码行为分析方法的有效性,本文设计实现了相应的恶意代码检测系统原型,并对其进行了大量测试实验中使用VMWare Workstation软件构建了一个虚拟网络,并在网络中配置了两台虚拟机主机A与B其中A代表受害主机,所有测试程序在该主机上被监控运行;B则代表局域网内的其他主机,同时在主机B上设置了共享文件夹,模拟网络中的共享资源两台虚拟机内均配置为WindowsXP sp2系统
5.1病毒的创建方式实验选取了多款木马服务端,以及各种流行恶意程序作为测试样本,将行为检测器获得的行为信息与Anubis从表1可以看出,BehaviorDetection与Anibis的检测结果比较吻合,而与ThreatExpert的结论有一定差异在ThreatExpert中检测到对多个.exe文件的修改,而检测器没有这部分结果;同时监测器及Anubis均检测到该恶意程序具有创建远程线程的行为,而ThreatExpert没有相关报告通过对virus.Win32,sality.aa的分析,发现该病毒其实是通过搜索当前进程,修改进程内存空间实现病毒感染,同时对每个感染的程序创建了独立执行的线程这充分解释了检测器识别到远程线程创建行为的原因,而在ThreatExpert的检测中将其划分到文件修改行为中,同时由于各个测试系统的测试环境存在一定差异(系统中当前运行的进程不同),受感染的进程也就不一样同时,BehaviorDetection还识别出了virus.Win32,sality.aa病毒在利用网络共享传播过程中,API调用序列中反映出来的建立IPCMYM连接及获取远程主机共享资源的行为,而这些都是Anbits及ThreatExpert的代码分报告中没有的
5.2程序的危害指数以常见的几款木马后门Pcshare,Bitfrose,Hupigon,以及传播比较广泛的病毒Sality,Sysanti作为测试对象,将行为分析的结果同专家对该病毒的描述参考了Symantec及Kaspersky的病毒描述进行比较,其结果如表2所示其中“J”表示识别出该攻击目标,“一”表示该攻击目标存在但未被识别表中最后一行是各个程序的危害指数测试中,对通过表2可以看出,实验得到的结果同专家对恶意程序的描述基本吻合的需要说明的是,在行为检测过程中,检测器已准确识别出Sality具有网络行为,但由于目前的行为检测器并未对网络数据进行分析,导致了分析结果出现了疏漏在后期的工作中,将进一步对网络数据流进行分析表2中最后一行的程序危害指数是利用
4.4节中的式子计算出来的根据表2可以看出,恶意行为较多的测试程序其危害指数较高这正反映出程序的恶意行为越多,其对系统可能造成的破坏就越大而几款木马相对其他恶意程序的危害指数偏低,这是由于木马或后门类程序,为了隐藏自身,相比病毒或蠕虫的恶意行为要少很多它们通常只是写启动项确保自身的运行,而很多正常的程序也会写注册表启动项或注册服务在评估时对自启动行为设置的6行为信息的识别与分析本文提出了一种针对恶意代码行为的层次化分析方法,首先获取程序动态执行时所产生的API调用序列中的行为信息,然后在此基础上分析行为的目的,评估程序的危害性实验表明,该方法能够有效识别和分析程序运行时的各种行为信息同时,考虑到程序行为对系统造成的危害程度可能因操作对象而异,采取不同的操作对象设定不同。