如今,信息系统对网络的依赖程度日益增加。软件日益复杂化(例如,虚拟机中的可扩展性观念),将导致严重而广泛的软件漏洞,并势必成为各种软件问题的根源,同时,恶意软件问题也会不断增多。
恶意软件的前世今生
恶意软件是指计算机用户并不需要的或有害的所有软件类型。如同所有软件一样,恶意软件随着和其它软件中所发现的新漏洞的增多而不断演化。最初的恶意软件不过是无聊的程序设计者用来证明其勇气和能力的途径,或是报复其他人,或是为了演示漏洞,或是向那些粗心大意的业内人士示威,给他人的计算机和数据带来损害。恶意软件的范围很广,如广告软件、骗人的安全软件、后门程序、漏洞利用程序、键盘记录程序、rootkit(根瘤)、、等,都属于恶意软件。
1995年Java出现,基于Web的软件这个概念应运而生。虽然Java的设计目的是通过确保安全性来运行小型的Web应用程序(Java程序),但Java的虚拟机容易遭受各种常见的软件问题,其原因在于Java存在着很多漏洞和缺陷。这暴露了一个安全问题,即对被攻击软件的依赖性会使得现代世界面临风险。
在这个问题上,发现自己与各种漏洞和恶意软件问题纠缠不清。Windows操作系统存在的漏洞和缺陷为攻击者创造了便利条件,造成不少安全问题。利用这些漏洞成为某些恶意人员的乐事。
如今,微软产品的安全状况不断改善,这促使攻击者转向其它软件,如的产品。因为网络连接已经成为所有软件的必然选项,日益复杂的框架(如J2EE)进一步强化了软件的复杂性,可扩展性成为现代软件的一种标准,这使得系统日益复杂,漏洞越来越多。只要这种趋势继续存在,恶意软件问题就将与我们共存,其造成的危害也将日益隐密和严重。
由于恶意软件大多是由专业的网络间谍和网络罪犯编写的,其根本目的是为了金钱。所以,当前的恶意软件状况比以往更恶劣。基于Web的应用程序很容易成为攻击者的目标。“偷渡式下载”能直接导致一系列被称为高级持续性威胁(APT)的攻击。此外,恶意广告也呈现出有增无减的趋势。
其中,Zeus是现代Web恶意软件的一个例子。Zeus可以控制受害人的,并执行“中间人”攻击。在金融服务公司的合法用户成为受害者之后,他们首当其冲会遭受这种攻击。该木马可以发现、滥用、导出合法的授权用户的凭证。
当然,恶意软件绝不仅限于Web。任何使用广泛的软件都可能成为目标。如微软和Adobe的软件,虽然这些公司努力改善着其软件的安全状况
与恶意软件相关的经济利益使专业的网络罪犯看到了巨大商机,恶意软件的设计也更为精细、隐蔽。恶意软件与安全软件的较量是罪恶的地下商业利益集团与善意用户、安全软件厂商的持久战争。
揭密现代恶意软件的技术
随着恶意软件产业的发展,其新版本日益强大和智能。理解现代恶意软件如何“与时俱进”有助于认识恶意软件的总体状况。
用肉眼已经无法完全识别现代恶意软件。在多数情况下,使用常见的故障诊断工具也无法确认这种。虽然不同的恶意软件使用不同的伎俩,但它们仍具备不少相同的行为特征。
1.给系统文件打补丁和进程感染
“打补丁”通常被认为是厂商发布新代码来更新操作系统和应用程序的一个过程。但在恶意软件环境中,打补丁的过程涉及到对著名的目标系统文件实施逆向工程,并将定制的代码注入到结果中。
确认这种恶意代码的问题在于,看不到文件系统添加了东西。对受感染的计算机而言,其正在运行的进程列表仅显示出人们常常看到的进程,恶意软件有效地将自己从普通的诊断工具面前隐藏起来。清除这种恶意软件的唯一方法是从受感染的文件中定位并清除恶意代码。
2、代码复活
在感染事件期间,系统可能会被安装多种恶意软件。在其代码开发的整合过程中,这些软件包可以进一步增长壮大,依靠的是彼此之间的监视。最终的恶意软件包可以监视系统上的其它恶意软件的清除过程。如果将任何一个恶意软件版本清除,任何剩余的版本和组件都可以重新启动,甚至从中遗留的组件中重新安装剩余部分,或从下载来完成安装过程。
这种状况会使恶意软件的清除过程复杂化。标准的清除工具,如注册表清除、进程清除,或任何传统的诊断工具,都不足以完全同时清除每一个部分,遗漏的任何组件都将导致系统在短时间之内被重新感染。
3、代码随机化
找到恶意软件的一种机制是使用代码签名,即查找那些驻存于受感染系统中的恶意代码特征。在发现恶意软件的部分代码或附加到系统文件中的代码特征时,反恶意软件工具就会确认其存在,并试图清除。基于签名的检测是一种常用的工具,许多反恶意软件工具都大量使用它。但是,这种检测方法的广泛使用并不能掩盖其固有的局限性。
基于签名的识别方法的大量使用也有其复杂性的一面,即在恶意软件安装过程中,内置到恶意代码的自我编译过程中的随机化元素。这些特性可以使恶意软件使用多种可能的配置来安装自身。因而,检测器所看到的恶意软件是随时间而不断变化的。
很明显,这种随机化水平要求恶意软件实例之间有足够的相似性,只有这样才能完成预期的任务。然而,随机化的影响意味着,在恶意软件通过互联网复制自身时,必须为它的实例创建多个签名。这些代码的随机化特性在当今的多数高级的恶意软件包中都可以发现。只有通过复杂的逆向工程,并由反恶意软件和软件公司进行“行为建模”,才能确认这些恶意软件的“异构体”。
4、rootkit(根瘤)和伪装行为
这是最后一种现代恶意软件特别危险的类型,因为它能够将自已在本地操作系统中隐藏起来。与基于系统的rootkit已经截然不同,这类Windows恶意软件尤其擅长“隐身术”。
rootkit(根瘤)利用了前文所描述的文件补丁的功能,但其目的却完全不同。在“常规”的恶意软件中,其软件补丁会将所需要的功能安装到受害者的电脑上,而rootkit(根瘤)却通过一个称为“系统调用钩子”的功能重定向系统的功能调用。
感染rootkit(根瘤)的最终结果是,rootkit会有效地在系统和用户面前“隐身”。任何通过图形用户界面或命令行来查看文件夹内容的企图都会被rootkit(根瘤)截获,并在最终结果显示给用户之前,恶意软件文件存在的任何线索都被清除得干干净净。