1、恶意代码及其检测技术1.恶意代码概述1.1 定义恶意代码也可以称为 Malware,目前已经有许多定义。例如 Ed Skoudis 将 Malware 定义为运行在计算机上,使系统按照攻击者的意愿执行任务的一组指令。微软“计算机病毒防护指南”中奖术语“恶意软件”用作一个集合名词,指代故意在计算机系统上执行恶意任务的病毒、蠕虫和特洛伊木马。随着网络和计算机技术的快速发展,恶意代码的传播速度也已超出人们想象,特别是人们可以直接从网站获得恶意代码源码或通过网络交流代码。很多编程爱好者把自己编写的恶意代码放在网上公开讨论,发布自己的研究成果,直接推动了恶意代码编写技术发展。所以目前网络上流行的恶意代码
2、及其变种层出不穷,攻击特点多样化。1.2 类型按照恶意代码的运行特点,可以将其分为两类:需要宿主的程序和独立运行的程序。前者实际上是程序片段,他们不能脱离某些特定的应用程序或系统环境而独立存在;而独立程序是完整的程序,操作系统能够调度和运行他们;按照恶意代码的传播特点,还可以把恶意程序分成不能自我复制和能够自我复制的两类。不能自我复制的是程序片段,当调用主程序完成特定功能时,就会激活它们;能够自我复制的可能是程序片段(如病毒) ,也可能是一个独立的程序(如蠕虫) 。2.分析与检测的方法恶意代码与其检测是一个猫捉老鼠的游戏,单从检测的角度来说。反恶意代码的脚步总是落后于恶意代码的发展,是被动的.
3、目前基于主机的恶意代码检测方法主要有反恶意代码软件、完整性校验法以及手动检测,基于网络的检测方法主要有基于神经网络” 、基于模糊识别“等方法,本文主要讨论基于主机的检测。2.1 恶意代码分析方法2.1.1 静态分析方法是指在不执行二进制程序的条件下进行分析,如反汇编分析,源代码分析,二进制统计分析,反编译等,属于逆向工程分析方法。(1)静态反汇编分析,是指分析人员借助调试器来对而已代码样本进行反汇编出来的程序清单上根据汇编指令码和提示信息着手分析。(2)静态源代码分析,在拥有二进制程序的源代码的前提下,通过分析源代码来理解程序的功能、流程、逻辑判定以及程序的企图等。(3)反编译分析,是指经过优
4、化的机器代码恢复到源代码形式,再对源代码进行程序执行流程的分析。2.1.2 动态分析方法是指恶意代码执行的情况下利用程序调试工具对恶意代码实施跟踪和观察,确定恶意代码的工作过程对静态分析结果进行验证。(1)系统调用行为分析方法正常行为分析常被应用于异常检测之中,是指对程序的正常行为轮廓进行分析和表示,为程序建立一个安全行为库,当被监测程序的实际行为与其安全行为库中的正常行为不一致或存在一定差异时,即认为该程序中有一个异常行为,存在潜在的恶意性。恶意行为分析则常被误用检测所采用,是通过对恶意程序的危害行为或攻击行为进行分析,从中抽取程序的恶意行为特征,以此来表示程序的恶意性。(2)启发式扫描技术
5、启发式扫描技术是为了弥补被广泛应用的特征码扫面技术的局限性而提出来的.其中启发式是指“自我发现能力或运用某种方式或方法去判定事物的知识和技能” 。2.2 恶意代码检测方法2.2.1 基于主机的恶意代码检测目前基于主机的恶意代码检测技术仍然被许多的反病毒软件、恶意代码查杀软件所采用。(1)启发法这种方法的思想是为病毒的特征设定一个阈值,扫描器分析文件时,当文件的总权值超出了设定值,就将其看作是恶意代码.这种方法主要的技术是要准确的定义类似病毒的特征,这依靠准确的模拟处理器。评定基于宏病毒的影响更是一个挑战,他们的结构和可能的执行流程比已经编译过的可执行文件更难预测。(2)行为法利用病毒的特有行为
6、特征来监测病毒的方法,称为行为监测法.通过对病毒多年的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊.当程序运行时,监视其行为,如果发现了病毒行为,立即报警.缺点是误报率比较高、不能识别病毒名称及类型、实现时有一定难度。(3)完整性控制计算保留特征码,在遇到可以操作时进行比较,根据比较结果作出判断。(4)权限控制通过权限控制来防御恶意代码的技术比较典型的有:沙箱技术和安全操作系统。(5)虚拟机检测虚拟机检测是一种新的恶意代码检测手段,主要针对使用代码变形技术的恶意代码,现在己经在商用反恶意软件上得到了广泛的应用。2.2.2 基于网络的恶意代码检测采用数据挖掘和异常检测技术对海量数据进
7、行求精和关联分析以检测恶意代码是否具有恶意行为。(1)异常检测通过异常检查可发现网络内主机可能感染恶意代码以及感染恶意代码的严重程序,然后采取控制措施。(2)误用检测也称基于特征的检测基于特征的检测首先要建立特征规则库,对一个数据包或数据流里德数据进行分析,然后与验证特征库中的特征码来校验。2.2.3 现有检测方法分析与评价到目前为止,没有一个完全的检测方案能够检测所有的恶意代码,可以肯定的是无论从理论还是实践来说,应用系统级恶意代码的检测相对容易,内核级的就要复杂和困难的多。杀毒软件仍然是必要的最快的检测方法,因为木马的运行需要网络的支持,所以在检测时需要本地系统与网络状态同对进行检测。目前
8、,多数的检测工具都是在应用层上工作的,对于检测工作在内核级的恶意代码显得力不从心。2.3 分析与检测常用工具(1)Tcp View网络活动状态监视工具是运行于微软 Windows 系统下的一款小巧的 TCP UDP、状态观察工具。(2)Olly Dbg动态调试工具是一款用户级调试器,具有优秀的图形界面,和内核级调试器。(3)IDA Pro反汇编工具是一个非常好的反汇编工具,可以更好的反汇编和进行深层次的分析。(4)InstallSpy系统监视工具能够监视在计算机操作系统上安装或运行其他程序时对本机操作系统的文件系统、注册表的影响。3.实现系统方面(以蜜罐系统为例)3.2 利用客户端蜜罐技术对恶
9、意网页进行检测3.2.1 客户端蜜罐与服务端蜜罐传统的蜜罐技术是基于服务器形式的,不能检测客户端攻击.例如低交互蜜罐 Honeyd 或高交互的蜜网,担当的是一种服务,故意暴漏出一些服务的弱点并被动的等待被攻击。然而,检测客户端攻击,系统需要积极地域服务器交互或处理恶意数据。因此就需要一种新型的蜜罐系统:客户端蜜罐.客户端蜜罐的思想是由蜜罐创始人Lance Spitzner 于 2004 年 6 月提出的.客户端蜜罐在网络中和众多服务器交互,根据其而已行为的特性将它们分类。客户端蜜罐和传统蜜罐的不同之处主要由以下几点:(1)客户端蜜罐是模拟客户端软件并不是建立有漏洞的服务以等待被攻击。(2)它并
10、不能引诱攻击,相反它是主动与远程服务器交互,主动让对方攻击自己。(3)传统蜜罐将所有的出入数据流量都视为是恶意有危险的.而客户端蜜罐则要视其服务是恶性或良性与否来判断。和传统蜜罐类似,客户端蜜罐也分为两种类型:低交互和高交互客户端蜜罐。低交互客户端蜜罐主要是用模拟一个客户端的应用程序和服务端程序交互,然后根据已建立的“恶意”行为库将服务端程序进行分类.通常是通过静态的分析和签名匹配来实现的。低交互的客户端蜜罐有点在于检测速度非常快,单毕竟它不是一个真正的客户端,从而有程序方面的局限性,所以容易产生误报和漏报.低交互的客户端蜜罐也不能模拟客户端程序的所有漏洞和弱点。另一种高交互的客户端蜜罐则采用
11、了不同的方法来对恶意的行为进行分类,它使用真是操作系统,在上面运行真是的未打补丁或有漏洞的客户端应用程序和有潜在威胁的服务程序进行交互。每次交互以后,检测操作系统是有有未授权的状态修改,如果检测到有状态的修改,则此服务器被认定为有恶意行为.因为不使用签名匹配的方法,高交互的客户端蜜罐可以用来检测位置类型的攻击。3.2.2 低交互客户端蜜罐检测低交互客户端蜜罐使用迷你的客户端代替真实系统和服务器交互,随后采用基于静态分析的方法来分析服务器响应结构(如签名匹配、启发式方法等) ,这些方法可以增强蜜罐的检测性能,能检测出高交互客户端蜜罐通常检测不到恶意响应,如时间炸弹。由于低交互客户端蜜罐采用模拟客
12、户端和静态分析,很有可能会错过一些位置类型的攻击。低交互客户端蜜罐一般有三个任务要完成:“发送请走给服务器,接受和处理响应。其中客户端蜜罐需要建立一个队列存放访问服务器的诸多请求,访问工具再从此队列中取出请求执行去访问不同的服务器。可以采用一些算法构建服务器请求队列,如网络爬虫爬取的定的页面从中搜集连接。服务器返回结果后,蜜罐需要对系统或服务器的响应信息进行分析,比对是否有违反系统安全策略的响应。3.2.3 高交互客户端蜜罐检测高交互客户端蜜罐系统从多方面监控系统:(1)window 系统的注册表的监控,例如是否有 key 的改动或新 key 的建立;(2)文件系统更改的监控,如文件的创建或删
13、除;(3)进程结构中进程创建或销毁的监控。高交互的客户端蜜罐的科研型产品有 Honeyclient、Honey-monkey、UW.Honeyclient 通过监视一系列的文件、目录和系统配置文件的状态来判断是否受到攻击,当 Honeyclient 和服务器交互后,其监视的内容状态如果发生改变,则认为收到攻击。Honey-monkey也是通过监视一系列的可执行文件盒注册表条目的状态变化来确定是否首受到入侵的,不过 Honey-monkey 更进一步,它在指令系统中加入监视子进程来检测客户端攻击。UW clinet 蜜罐利用文件活动、进程创建、注册表活动事件的 triger 一级浏览器的 cra
14、sher 来确定客户端攻击。3.2.4 高交互客户端蜜罐 Capture-HPC目前高交互客户端蜜罐最具前沿性和代表性的产品为 Capture-HPC.其主要使用于检测 driver-by-downloads 类型的恶意网站服务器,即该类型的网站在未经用户同意的情况下改变客户端系统转改,能够在用户不知情的情况下控制客户端机器并安装恶意软件、木马等。对于检测如钓鱼网站等获取用户铭感信息的恶意网站 Capture-HPC 则不太适合。客户端铭感运行在 VMware 虚拟机上.如果有未授权状态的改变,即受到恶意网页攻击时,其攻击事件会被记录下来,在与下一个王志艳服务器交互之前虚拟机会将铭感的状态重置
15、到原始状态。(1)结构体系高交互客户端铭感架构主要分为两个部分 Capture 服务器和Capture 客户端,Capture 服务器的作用主要是控制众多 Capture 客户端,其能安装于多种 VMware 服务环境和多种客户环境.Capture服务器可启动和停止客户端,命令客户端和 Web 服务器交互得到特定的 URL。它还可以讲与 Capture 客户端监护的 Web 服务器信息分类并汇总.完成实际工作的则是 Capture 客户端。它们接受服务端的指令开始或停止,选择一种浏览器访问 Web 服务器。作为一个与Web 服务器交互的 Capture 客户端,它要监视来授权状态的改变并将信息
16、发回到 Capture 服务器.一旦怀疑是恶意的,在客户端访问下一个服务器前,Capture 服务器就会将其客户端的系统状态充值到原始状态。(2)关键技术Capture 服务器采用简单 TCP/IP 协议作为服务听信协议来管理Capture 客户端,VMware 服务器则长官运行在 Capture 客户端上的客户操作系统。Capture 服务器将其接收到的 URL 以循环的方式分配给有效的客户端,然后 Capture 服务器在某个特定的端口(如7070)上监听连接到 Server 上的客户端。Capture 客户端由两部分组成:Capture 内核驱动和 Capture 用户空间进程.内核驱动部分在内核空间运行却是用基于事件探测的机制来监视系统状态的改变,而用户控件进程则接受来自 Capture 服务器的访问请求,驱动客户端与 Web 服务器进行交互并将客户端系统状态的改变情况由简单 TCP/IP 协议传回给 Capture 服务器.用户空间进程从内核驱动补货状态的改变时间同时将在排除列表中对事件进行过滤掉。