论文部分内容阅读
近年来,恶意代码的发展日益呈现出集传统的计算机病毒、网络蠕虫、特洛伊木马等威胁于一体的复合化趋势,成为信息系统安全的主要威胁之一。如何防御恶意代码的攻击已成为当前信息安全领域的一个热点研究课题。但是当前的研究存在两个极端:信息安全业界公司热衷于恶意代码扫描引擎的开发和恶意代码特征库的扩充维护,学术界则偏重于恶意代码防御的理论模型研究。缺乏对恶意代码本质根源和机理等基本问题的探索。恶意代码的防范问题,不是单靠一种或者几种技术就能解决的。它是一个系统工程,要靠技术、管理以及用户安全意识的共同防范。只有技术、管理、安全意识三者相结合才能最大程度地防止恶意代码对系统和用户信息的破坏。本文首先对国内外恶意代码防范技术的发展状况进行了研究,分析了当前国内外恶意代码自动检测的现状,指出了它们存在的问题,然后对恶意代码防范相关的技术做了研究:Windows内核机制、Windows文件系统过滤驱动(minifilter)、Windows服务、Windows设备驱动程序的编写、Windows PE文件原理、注册表原理。在研究以上相关技术的基础之上,设计并实现了一个基于Windows平台的恶意码防范系统(AV_System),该系统包含的功能模块有:PE完整性检测模块,该模块主要利用FSFD过滤IRP数据包IRP_MJ_CREATE,在PE文件的Create过程中检测其完整性,完整性未通过的系统将阻止该文件的Create(打开),并提醒用户进行隔离。通过检测的PE文件系统将放行,不作任何操作。IAT钩子检测模块,编写设备驱动程序,通过Ps Set Create Process Notify Routine注册回调函数,进行IAT钩子的检测。Windows系统核心文件保护模块,为了保护Windows系统的重要文件不被恶意删除、替换、覆盖、重写等操作,本模块主要基于FSFD在内核层拦截对%systemroot%目录下的重要系统文件以及系统盘根目录下的NTLDR、Ntdetect.com、GHLDR、bootfont.ini、boot.ini等文件的操作,禁止其进行重命名、删除操作。考虑到有些应用程序在安装或者运行的时候会对%systemroot%目录下的文件有写的操作,也包括恶意程序。在有不确定的写入操作时将操作的详细情况反馈给用户,禁止或放行由用户决定,从而达到提高操作系统的安全性。注册表保护模块,利用微软提供的注册表回调函数CmRegister Callback注册Registry Callback例程实现对注册表的监控、修改、拦截等操作,在vista及以后的操作系统中使用CmRegister CallbackEx。进程保护模块,为了防止恶意代码防范系统进程被恶意代码终止,采用服务监控的方法来保护进程的安全,也就是将监控进程注册为服务在后台运行,当发现被监控进程被恶意代码终止时,便重新启动进程继续对系统实施安全防护。隔离区模块,该模块主要实现对已发现异常行为的进程进行隔离,防止其继续感染。日志记录模块,该模块主要对行为异常的进程所执行的操作进行记录,配合隔离区模块便于日后审计追踪。最后对AV_System进行了功能测试以测试其恶意代码的防范能力,同时将AV_System与微点杀毒软件、PC-Cillin放在一起进行了对比测试,以此检验AV_System的恶意代码防范能力。该系统以主动防御为主,从防御的角度出发,将恶意代码的破坏对象保护起来,使得恶意代码的破坏力大大下降。对于执行恶意操作的程序或者代码片段,进行隔离同时进行日志记录,方便日后审计追踪。这样即使恶意代码存在Windows系统中,它也没有能力再去进行任何破坏。此时配合市面上的杀毒软件,彻底清除恶意代码,AV_System在Windows平台下对恶意代码的防范将具有实际的意义。以防御的思想为先导,将PE文件完整性检测、IAT钩子检测、Windows核心文件保护、注册表保护、进程保护等技术结合起来,设计并实现了一个恶意代码防范系统(AV_System),为系统提供全方位实时保护,提高了系统的安全性。