第11章恶意代码检测与防范技术恶意代码机理11.2恶意代码分析11.311.1常见的恶意代码11恶意代码预防11.41.恶意代码概述代码是指计算机程序代码,可以被执行完成特定功能。任何事物都有正反两面,人类发明的所有工具既可造福也可作孽,这完全取决于使用工具的人。计算机程序也不例外,软件工程师们编写了大量的有用软件(如操作系统、应用系统和数据库系统等)的同时,黑客们在编写扰乱社会和他人的计算机程序,这些代码统称为恶意代码(MaliciousCodes)。90年代末,恶意代码的定义随着计算机网络技术的发展逐渐丰富,Grimes将恶意代码定义为,经过存储介质和网络进行传播,从一台计算机系统到另外一台计算机系统,未经授权认证破坏计算机系统完整性的程序或代码。11.1常见的恶意代码2.研究恶意代码的必要性在Internet安全事件中,恶意代码造成的经济损失占有最大的比例。恶意代码主要包括计算机病毒(Virus)、蠕虫(Worm)、木马程序(TrojanHorse)、后门程序(Backdoor)、逻辑炸弹(LogicBomb)等。与此同时,恶意代码成为信息战、网络战的重要手段。日益严重的恶意代码问题,不仅使企业及用户蒙受了巨大经济损失,而且使国家的安全面临着严重威胁。恶意代码攻击成为信息战、网络战最重要的入侵手段之一。一个典型的例子是在电影《独立日》中,美国空军对外星飞船进行核轰炸没有效果,最后给敌人飞船系统注入恶意代码,使敌人飞船的保护层失效,从而拯救了地球,从中可以看出恶意代码研究的重要性。恶意代码问题已成为信息安全需要解决的、迫在眉睫的、刻不容缓的问题。11.1常见的恶意代码3.恶意代码的发展史–恶意代码经过20多年的发展,破坏性、种类和感染性都得到了增强,对人们日常生活影响越来越大。–1988年11月,Morris顷刻之间使得6000多台计算机(占当时Internet上计算机总数的10%多)瘫痪,造成严重的后果,并因此引起世界范围内关注。–1998年CIH病毒造成数十万台计算机受到破坏。1999年,Happy99、Melissa病毒爆发,Melissa病毒通过E-mail附件快速传播而使E-mail服务器和网络负载过重,它还将敏感的文档在用户不知情的情况下按地址簿中的地址发出。–2000年,“爱虫”病毒及其后出现的50多个变种病毒,仅一年时间共感染了4000多万台计算机,造成大约86亿美元的经济损失。11.1常见的恶意代码–2001年,国信安办与公安部共同主办了我国首次计算机病毒疫情网上调查工作。结果感染过计算机病毒的用户高达63%,其中感染三次以上的用户占59%多,网络安全存在大量隐患。–2001年8月,“红色代码”蠕虫利用微软Web服务器IIS4.0或5.0中Index服务的安全漏洞,攻破目标机器,并通过自动扫描方式传播蠕虫,在互联网上大规模泛滥。–2003年,SLammer蠕虫在10分钟内导致互联网90%脆弱主机受到感染。同年8月,“冲击波”蠕虫爆发,8天内导致全球电脑用户损失高达20亿美元之多。–2004年到2006年,振荡波蠕虫、爱情后门、波特后门等恶意代码利用电子邮件和系统漏洞对网络主机进行疯狂传播,给国家和社会造成了巨大的经济损失。请见图11.1。11.1常见的恶意代码图11.1恶意代码的发展图示11.1常见的恶意代码4.恶意代码的主要特征(从80年代发展至今)1)恶意代码日趋复杂和完善从非常简单的,感染游戏的AppleII病毒发展到复杂的操作系统内核病毒和今天主动式传播和破坏性极强的蠕虫。恶意代码在快速传播机制和生存性技术研究取得了很大的成功。2)恶意代码编制方法及发布速度更快恶意代码刚出现时发展较慢,但是随着网络飞速发展,Internet成为恶意代码发布并快速蔓延的平台。特别是过去5年,不断涌现的恶意代码,证实了这一点。3)从病毒到电子邮件蠕虫,再到利用系统漏洞主动攻击的恶意代码恶意代码的早期,大多数攻击行为是由病毒和受感染的可执行文件引起的。然而,在过去5年,利用系统和网络的脆弱性进行传播和感染开创了恶意代码的新纪元。11.1常见的恶意代码5.恶意代码长期存在的原因(1)计算机技术飞速发展的同时并未使系统的安全性得到增强。计算机技术进步带来的安全增强能力最多只能弥补由应用环境的复杂性带来的安全威胁的增长程度。不但如此,计算机新技术的出现还很有可能使计算机系统的安全变得比以往更加脆弱。(2)恶意代码的一个主要特征是其针对性(针对特定的脆弱点),这种针对性充分说明了恶意代码正是利用软件的脆弱性实现其恶意目的的。造成广泛影响的1988年Morris蠕虫事件,就是利用邮件系统的脆弱性作为其入侵的最初突破点的。11.1常见的恶意代码恶意代码类型定义特点计算机病毒指编制或者在计算机程序中插入的破坏计算机功能或者毁坏数据,影响计算机使用,并能自我复制的一组计算机指令或者程序代码。潜伏、传染和破坏计算机蠕虫指通过计算机网络自我复制,消耗系统资源和网络资源的程序扫描、攻击和扩散特洛伊木马指一种与远程计算机建立连接,使远程计算机能够通过网络控制本地计算机的程序。欺骗、隐蔽和信息窃取逻辑炸弹指一段嵌入计算机系统程序的,通过特殊的数据或时间作为条件触发,试图完成一定破坏功能的程序。潜伏和破坏病菌指不依赖于系统软件,能够自我复制和传播,以消耗系统资源为目的的程序。传染和拒绝服务用户级RootKit指通过替代或者修改被系统管理员或普通用户执行的程序进入系统,从而实现隐藏和创建后门的程序。隐蔽,潜伏核心级RootKit指嵌入操作系统内核进行隐藏和创建后门的程序隐蔽,潜伏1.恶意代码的相关定义11.2恶意代码机理2.恶意代码攻击机制恶意代码的基本作用机制的整个作用过程分为以下6个部分。①侵入系统。侵入系统是恶意代码实现其恶意目的的必要条件。恶意代码入侵的途径很多,比如,从互联网下载的程序本身就可能含有恶意代码;接收已感染恶意代码的电子邮件;从光盘或软盘往系统上安装软件;黑客或攻击者故意将恶意代码植入系统等。②维持或提升现有特权。恶意代码的传播与破坏必须盗用用户或者进程的合法权限才能完成。③隐蔽策略。为了不让系统发现恶意代码已经侵入系统,恶意代码可能会改名、删除源文件或修改系统安全策略来隐藏自己。④潜伏。恶意代码侵入系统后,等待一定的条件,并具有足够的权限时,就发作并进行破坏活动。⑤破坏。恶意代码的本质具有破坏性,其目的是造成信息丢失、泄密,破坏系统完整性等。⑥重复①至⑤对新的目标实施攻击过程。11.2恶意代码机理3.恶意代码攻击模型11.2恶意代码机理11.3恶意代码分析1.恶意代码分析方法1)静态分析方法在不运行恶意代码的情况下,利用分析工具对恶意代码的静态特征和功能模块进行分析的方法。—基于代码特征的分析方法分析过程中,不考虑恶意代码的指令意义,而是分析指令的统计特性、代码的结构特性等。—基于代码语义的分析方法要求考虑构成恶意代码的指令含义,通过理解指令语义建立恶意代码的流程图和功能框图,进一步分析恶意代码的功能结构。11.3恶意代码分析2)动态分析方法通过监视恶意代码运行过程从而了解恶意代码功能。—外部观察法利用系统监视工具观察恶意代码运行过程中系统环境的变化,通过分析这些变化判断恶意代码的功能。—跟踪调试法通过跟踪恶意代码执行过程使用的系统函数和指令特征分析恶意代码功能的技术。1.恶意代码防范方法1)基于主机的恶意代码防范方法—基于特征的扫描技术基于主机的恶意代码防范方法是目前检测恶意代码最常用的技术,主要源于模式匹配的思想。扫描程序工作之前,必须先建立恶意代码的特征文件,根据特征文件中的特征串,在扫描文件中进行匹配查找。用户通过更新特征文件更新扫描软件,查找最新的恶意代码版本。这种技术广泛地应用于目前的反病毒引擎中。请见图11.3。11.4恶意代码预防11.4恶意代码预防图11.3基于特征的扫描技术图示—校验和校验和是一种保护信息资源完整性的控制技术,例如Hash值和循环冗余码等。只要文件内部有一个比特发生了变化,校验和值就会改变。未被恶意代码感染的系统首先会生成检测数据,然后周期性地使用校验和法检测文件的改变情况。在恶意代码检测软件中设置校验和法。对检测的对象文件计算其正常状态的校验和并将其写入被查文件中或检测工具中,而后进行比较。在应用程序中嵌入校验和法。将文件正常状态的校验和写入文件本身中,每当应用程序启动时,比较现行校验和与原始校验和,实现应用程序的自我检测功能。将校验和程序常驻内存。每当应用程序开始运行时,自动比较检查应用程序内部或别的文件中预留保存的校验和。11.4恶意代码预防—沙箱技术沙箱技术是指根据系统中每一个可执行程序的访问资源,以及系统赋予的权限建立应用程序的“沙箱”,限制恶意代码的运行。美国加州大学Berkeley实验室开发了基于Solaris操作系统的沙箱系统,应用程序经过系统底层调用解释执行,系统自动判断应用程序调用的底层函数是否符合系统的安全要求,并决定是否执行。WindowsXP/2003操作系统提供了一种软件限制策略,隔离具有潜在危害的代码。这种隔离技术其实也是一种沙箱技术,可以保护系统免受通过电子邮件和Internet传染的各种恶意代码的侵害。11.4恶意代码预防—安全操作系统对恶意代码的防范恶意代码成功入侵的重要一环是,获得系统的控制权,使操作系统为它分配系统资源。无论哪种恶意代码,无论要达到何种恶意目的,都必须具有相应的权限。没有足够的权限,恶意代码不可能实现其预定的恶意目标,或者仅能够实现其部分恶意目标。11.4恶意代码预防2)基于网络的恶意代码防范方法—基于GRIDS的恶意代码检测著名的GRIDS主要针对大规模网络攻击和自动化入侵设计的,它收集计算机和网络活动的数据以及它们之间的连接,在预先定义的模式库的驱动下,将这些数据构建成网络活动行为来表征网络活动结构上的因果关系。它通过建立和分析节点间的行为图(ActivityGraph),通过与预定义的行为模式图进行匹配,检测恶意代码是否存在,是当前检测分布式恶意代码入侵的有效工具。11.4恶意代码预防—基于PLD硬件的检测防御可编程逻辑设备(PLD,ProgrammableLogicDevices)对抗恶意代码的防范系统由三个相互内联部件DED(DataEnablingDevice)、CMS(ContentMatchingServer)和RTP(RegionalTransactionProcessor)组成。DED负责捕获流经网络出入口的所有数据包,根据CMS提供的特征串或规则表达式对数据包进行扫描匹配并把结果传递给RTP;CMS负责从后台的MYSQL数据库中读取已经存在的恶意代码特征,编译综合成DED设备可以利用特征串或规则表达式;RTP根据匹配结果决定DED采取何种操作。恶意代码大规模入侵时,系统管理员首先把该恶意代码的特征添加到CMS的特征数据库中,DED扫描到相应特征才会请求RTP做出放行还是阻断等响应。11.4恶意代码预防—基于HoneyPot的检测防御早期HoneyPot主要用于防范网络黑客攻击。ReVirt是能够检测网络攻击或网络异常行为的HoneyPot系统。Spitzner首次运用HoneyPot防御恶意代码攻击。HoneyPot之间可以相互共享捕获的数据信息,采用NIDS的规则生成器产生恶意代码的匹配规则,当恶意代码根据一定的扫描策略扫描存在漏洞主机的地址空间时,HoneyPots可以捕获恶意代码扫描攻击的数据,然后采用特征匹配来判断是否有恶意代码攻击。11.4恶意代码预防—基于CCDC的检测防御由于主动式传播恶意代码具有生物病毒特征,美国安全专家提议建立CCDC(TheCyberCentersforDiseaseControl)来对抗恶意代码攻击。CCDC体系实现的功能:①鉴别恶意代码的爆发期;②恶意代码样本特征分析;③恶意代码传染对抗;④恶意代码新的传染途径预测;⑤前摄性恶意代码对抗工具研究;⑥对抗未来恶意代码的威胁。CCDC能够实现对大规模恶意代码入侵的预警、防御和阻断。CCDC存在的问题:①CCDC