[摘要] 本文论述了内部网文件监控审计系统的设计和实现。在系统监控端上,利用木马的“隐蔽性”,实现了在win2002系统中的进程隐藏和通信隐藏。在文件监控上,论述了内部网文件监控审计系统对数据进行全方位安全保护机制。
[关键词] 文件监控 木马 网络安全 p2dr模型
随着网络技术的发展,在关注外部网安全的同时,必须要加倍地重视内部网的安全控制,内部网安全已成为整体网络安全的基石和出发点,而要想控制内网则首选文件操作监控技术,本文通过分析这两种常用技术的利蔽,最后实现本系统对内网的安全管理的实现。
一、系统设计
内部网文件监控审计系统(nfams)是基于windows平台的内部网安全行为监控审计系统,采用集中式管理、分布式控制结构对网络用户操作行为监控,并提供事后安全审计功能。
代理登录控制台:连接认证控制台模块周期地向控制台建立连接请求,并认证控制台身份,检测到控制台已经启动,则进入代理生存心博模块;处理控制台:代理监听tcp网络端口,等待控制台的连接请求,并根据操作码,进入不同的命令处理模块。
1.系统安全性设计
控制台采用须获得对控制台软件所在的主机的使用权和能够通过控制台软件的身份认证的双重的安全防护方法,来保证控制台的安全管理,另外控制台还提供了灾难恢复技术;代理进程是随着操作系统的启动代理进程进行正常的监控状态。同时,具有防止代理进程被意外地杀死或者终止。
2.系统实现的相关技术
鉴于本系统监控端的需要,需要采用以下一些技术。
程序隐藏,分伪隐藏和真隐藏。伪隐藏,在win9x的系统中把木马服务器端的程序注册为一个服务即可,在win nt、2000中可使用api的拦截技术;真隐藏,就是这个程序完全的溶进了系统的内核。把它作为一个线程。
端口隐藏,有端口重用、反向连接和潜伏方式进行通信等方法。在本系统中,采用了潜伏的方式,利用 ip 协议簇中的自定义协议来进行网络传输。
拦截系统调用技术,在windows系统中,修改系统调用表实现指向本系统的监控代码。
二、系统实现
系统要防止代理进程被意外地杀死或者终止,就要替换系统api调用的方式,使之调用自己定义的api函数,进行安全性的检查。因此要将操作系统的所有用户态进程相应的api进行替换,实现对操作系统的行为监控。explorer.exe进程是所有的用户态进程的父进程,在操作系统进入用户桌面环境的时候,explorer.exe被创建,所有的用户态的进程都是由explorer.exe进程创建的。将explorer.exe的相关api替换以后,其中替换了进程创建的相关api,包括kernel32.dll中的createprocessa、createprocessw、winexec和advapi32.dll中的createprocessasusera、createprocessasuserw、createprocesswithlogonw,所以当explorer.exe创建新进程,能够得到这种消息,然后再将新进程的相关api进程替换,那么也就能够监控新进程的行为。
系统的api是按照动态链接库的方式存放的。如同系统api的存储方式,将自己定义的api也存储在动态链接库dll中,将dll插入到要监控的进程中。动态链接库dll有一个初始化的过程,在此过程中,进行系统api的替换,从而实现对相应进程的行为监控。
远程线程插入dll,windows的大多数函数允许进程只对自己进行操作,它能够防止一个进程破坏另一个进程的运作。但是,有些最初是为调试程序和其他工具设计的函数却允许一个进程对另一个进程进行操作。即一个称为createremotethread的函数,使我们能够非常容易地在另一个进程中创建线程。
这个dll插入方法基本上要求目标进程中的线程调用loadlibrary函数来夹带必要的dll。由于除了自己进程中的线程外,无法方便地控制其它进程中的线程,因此这种解决方案要求在目标进程中创建一个能够控制它执行什么代码新线程。
三、行为监控效率
由于操作系统会对需要监控的系统api进行大量的调用,为提高系统的响应速度。采用了两个措施来提供系统的效率:安全策略文件的访问速度和规则的匹配速度。
在策略检查的时候,如果采用正常的文件读写方法,需要频繁的打开关闭文件,频繁的读写文件,导致系统的效率低。本系统采用内存文件映射方法,即使应用程序通过内存指针对磁盘上的文件进行访问,其过程就如同对加载了文件的内存的访问。在使用内存映射文件进行i/o处理时,系统对数据的传输按页面来进行。至于内部的所有内存页面则是由虚拟内存管理器来负责管理,由于虚拟内存管理器是以一种统一的方法来处理所有磁盘i/o的,因此这种优化使其有能力以足够快的速度来处理内存操作。
规则的匹配速度。安全策略规则不是无序的排列,而是按照监控对象所在的磁盘驱动器进行分类,按照字母顺序有序的排列。在安全策略检查的时候,已知的是监控对象的名字,即文件或者文件夹的名字,根据这个名字,可以获得监控对象所在的磁盘驱动器。可以通过磁盘驱动器,根据策略文件相应的位置索引,直接定位到该监控对象所适用的策略范围,大大降低了需要进行规则匹配检查的数量。
参考文献:
[1]黄良斌:透视木马程序开发技术[j].浙江交通职业技术学院学报,2004,5(4):39
[2]何会民胡跃湘臧卫华:linux2.6系统调用钩子的原理分析与实现应用[j].湖南工程学院学报,2007(3):54~57
[3]纪勇李祥和:windows系统下木马程序的设计与实现[j],计算机安全,2003(23):66~67