1.恶意程序的常见关键行为模型
1.1恶意程序感染计算机后的常见行为模型
一个恶意程序感染计算机后,往往会有几类最基本的行为模型,分别为:启动行为、文件行为、网络行为与隐藏行为,以下分别简单介绍:(1)启动行为:启动行为是指恶意程序在植入目标计算机之后的二次启动,也就是达到驻留目标计算机,并自动其功能的目的。(2)文件行为:文件是恶意程序的一个载体,是行为分析的主要依据。恶意程序从植入到任务完成清理痕迹的过程中,关于文件的操作有:文件创建,文件移动,文件重命名,文件删除,文件打开(盗取)等。(3)网络行为:恶意程序在成功驻留系统,并顺利启动起来后,往往需要反弹回联,寻找控制端。其在主机上发生的与网络有关的行为包括:域名请求、域名回复处理、Ip连接、端口扫描、端口监听、发送邮件等。(4)隐藏行为:恶意程序为了保证自己的生存,往往需要将自身的各类信息隐藏,具体包括进程隐藏,注册表隐藏,服务隐藏,端口隐藏,文件隐藏等。
1.2恶意程序感染计算机后的部分具体可获取行为举例
下面列举了一些恶意程序常见的隐藏或者破坏的具体行为:(1)进程类行为任务管理器可以显示出当前系统中所有的进程信息,而恶意程序往往需要将自身的进程信息隐藏,以下介绍一种基于Hook技术的进程隐藏方式:Hook技术可以监控系统中所有进程的API调用,任务管理器之所以能够显示出系统中所有的进程,是因为其调用了EnumProcesses等API函数。恶意程序通过Hook技术,可以对系统中所有程序的进程检测API的调用进行监控,在任务管理器(或其他调用了列举进程函数的程序)调用EnumProcesses函数时,木马会提前获取此消息,因此便在函数将结果(列出所有进程)返回给程序前,将自身的进程信息从返回结果中抹去,以实现对自身信息的隐藏。类似的,为了实现自身某种目的,木马还可以使用其它多种进程类恶意行为。(2)内核入侵行为为了监听特定的进程信息,木马可以设置“钩子”的位置有很多,如ntdll.dll中的函数,但这并不保险,因为这些函数处于ring3级别,木马所设置的钩子可以被一个普通程序轻易绕过或消除。因此,很多恶意程序选择在SSDT/ShadowSSDT下挂钩或者安装文件过滤驱动等,这些动作受到ring0保护,普通程序无法查知或修改。获得ring0的运行级别方法有很多,可以通过安装驱动(动态加载或者静态写注册表服务键),操作[url=file://\\Device\PhysicalMemory]\Device\PhysicalMemory[/url]以设置调用门,修改win32k.sys等。如果能将仿真程序置于ring0层,即可获取到恶意程序加载驱动或者试图进入ring0层的消息,进而发现可以的恶意程序。(3)工作机制行为一旦恶意代码通过传输到达了宿主计算机,会执行一个其相应的工作,工作可以采用许多形式。以下简单介绍几种标志性的恶意程序工作机制:后门:这种类型的工作机制允许对计算机进行未经授权的访问。它可能提供完全访问权限,但也可能仅限于某些访问权限,例如,通过计算机上的端口21启用文件传输协议(FTP)访问。如果攻击可以启用Telnet,黑客则可以将已感染计算机用作Telnet攻击在其他计算机上的临时区域。信息窃取:一种恶意软件的工作机制旨在窃取信息。它可能会提供一种将信息传回恶意软件作恶者的机制。这种情况可以多种形式发生,例如,传输可以自动进行,从而使恶意软件获取本地文件或信息;利用键盘侦听,获取用户所按的键(以便获取用户名和密码)等。
2.恶意程序仿真系统的基本工作原理与核心技术
本恶意程序仿真系统,在本质上属于启发式反病毒中的“动态启发式”,其原理与沙盒技术相同,但是仿真性能要远远优于传统的沙盒。系统的核心技术为:分析并获取恶意程序的关键性行为;使用虚拟机内常驻程序对运行可疑程序进行分析与行为提取;对不同恶意行为赋予合理权值,当某文件危险行为权值叠加超过某一阈值时,则对此文件预警。
2.1恶意程序仿真的基本原理与监控机制
恶意程序可以轻易的对自身进行变形或免杀,来改变自身的特征值,但无论使用何种手段,恶意程序想要达到某种破坏目的,就必然要暴露出一些特定的行为,如:信息窃取类木马往往监听用户的键盘输入消息,以获取用户的各类账号与对应密码,并回联至某IP进行自动文件传输等,可以说,恶意程序或者木马想要实现某种功能,必定会有一些“关键步骤”,动态启发式,包括基于沙盒技术的与基于虚拟机仿真技术的,其本质,都是去监视这一类“关键步骤”。根据对恶意程序主要行为的提取与分类,可以建立对应的行为监控点,并编写对应的监视程序,以常驻的形式运行在虚拟机中,对导入虚拟机内部的可疑文件进行仿真,本虚拟机仿真系统主要监控如下几个区域:(1)进程类信息监控,用于监控木马的进程类行为,如HookAPI等。(2)注册表类行为,用于监控注册表中指定的敏感位置与对应键值。(3)驱动与内核类行为,用于获取是否有可疑程序试图进入ring0级或安装驱动。(4)信息窃取或监控行为,用于侦测是否有可疑的信息窃取动作,如监听键盘,打开FTP协议回传文件,固定频率抓屏(很有可能是远程监控动作)等。由于VMware虚拟机本身可以通过快照轻松的实现快速还原,因此即使在虚拟机中运行真实的木马对当前操作系统造成了破坏,也可以快速方便的将虚拟机与内部挂载的仿真操作系统通过原始快照恢复到被破坏前的状态。
2.2基于行为概率分层赋值的行为权值确定算法
由于虚拟机仿真本身属于“动态启发式”,本身是一种猜测性的行为,因此虽然优于传统的静态启发式,但虚拟机仿真还是会存在部分误报。基于启发式的反病毒方式,往往会对其监控的行为赋予一个危险程度权值,一旦某程序的危险程度权值叠加超过了某一预设阈值,则对此文件进行警告,如果权值与阈值设定不合理,则会使启发式反病毒的准确性降低,如阈值设定过高,将会降低反病毒系统的报出率,而阈值过低,又会产生较多的误报,而每个行为设定的权值的合理性,将从根本上决定启发式的准确性。在对权值赋值的时候,传统的做法是将在所有木马中出现的公有特征的权值取比较大的值,而其它的非共有特征则赋予较小的权值。所谓的共有特征,即为样本中所有木马共有的行为,而非共有特征即为只在部分木马中出现的行为,如在文献[]中所述的“上面列出的几个木马,一共有6个公有特征,这样就可以给其中的公有特征每个分配0.1的权值,其他9个特征共用0.4的权值”[12]的方法。由于近年来网络中恶意程序的数量与行为的快速增加,这种传统的方法已经很难适用,最明显的,在大样本恶意程序下,已经很难找到所有恶意程序的“共有特征”了,而各个行为在样本中的出现概率也出现了明显的分层。据此情况,本系统在加权算法上,提出了一种基于行为概率分层赋值的算法[13],对行为权值进行赋值,具体算法如下:设恶意行为的权值区间为[MIN,MAX](MAX与MIN都为整数),其在样本中出现的概率最大值为Kmax,最小值Kmin。
3.实验与分析
以下通过实验,证明本项目恶意代码检测系统的有效性以及特点。实验样本共分为三批,分别为:样本一:为实验前两个星期所收集恶意程序样本,共507个。样本二:为实验前一个星期所收集恶意程序样本,共639个。样本三:为实验本星期所收集恶意程序样本,共573个。作为对比,本项目选择了某款基于特征值的开源反病毒软件,将其特征库更新至测试当天,同样分别对三批样本进行测试,得到实验测试结果如下:通过实验数据,可以看到,基于特征值的反病毒软件,其查杀率随着样本的发现时间递减,即越是新近发现的木马样本,基于特征值的反病毒软件的报出率越低,但也并不是完全不能发现,这体现出了基于特征值查杀的“先收集,再分析,后查杀”的滞后性。而基于VMware的恶意代码仿真程序,其查杀率基本上为一条直线,这是由于基于VMware的恶意代码仿真程序在本质上属于动态启发式,其查杀性能只取决于提取行为的准确性,而与时间因素无关。此外,可以看到,几个样本空间下,基于VMware的恶意代码仿真程序对恶意程序的查杀性能,都要明显优于基于特征码的查杀,这是因为本系统在本质上属于动态启发式,其关注与监视的行为,往往都是恶意程序不能隐藏的动作与行为,对部分免杀恶意代码仿真的恶意程序进行分析,发现其中部分是使用了反虚拟机技术,导致恶意代码仿真无法对其进行监控,如何发现此类文件,将成为下一步工作的重点。当然,相对于传统的特征值查杀,本系统要消耗更多的物理资源,其使用了服务器,来作为虚拟仿真环境的载体,相应的会提高系统的硬件成本。
4.结束语
本文所设计的恶意程序仿真系统,可以搭配相应的硬件与服务器,部署于各类机构与部门的网络出口,通过前端的探针系统,可以获取输入或输出所监控网络内的各类可执行文件,如邮件附件、QQ传输文件等,并对此类文件进行仿真与判断,一旦发现恶意程序,则可进一步的进行监控、跟踪或拦截,从而阻止恶意程序侵入所保护的局域网,保证网络内部环境的安全。下一步可进行的工作是继续优化仿真行为库,同时提升前端的数据获取能力以及发现带有反虚拟机功能的恶意程序,以提高恶意行为仿真的覆盖面与准确性。
作者:江雪 朱永强 单位:成都网安科技发展有限公司 电子科技大学示范性软件学院