RegNotifyChangeKeyValue(HKEYhKey,BOOL bWatchSubtree,DWORDdwNotifyFilter,HANDLE hEven~BOOLfAsynchronous) 当函数成功返回后,应用程序可通过WaitfFor- SingleObject来等待发生改变的通知。WaitForS. ingleObject(hchange,dwmilliseconds)中hchange为 创建的事件句柄,dwmilliseconds为等待时间值。在事 件响应程序中,对注册表进行备份,然后通过与原备 份进行比较,最后得出注册表修改的位置和内容,并 给出修改时的时间。最后在结束监视程序之前用 FindCloseChangeNotification(hchange)来关闭句柄。 如要监测预定目录下文件的变化,可通过两个 API函数实现:FindFirstChangeNotificationO、FindN0- extChangeNotificationO。实现过程与监控注册表变化 类似,在这里省略之。 3.2获取策略 为了高效地获取各种数据,减少采集到海量的无 用数据,以便减轻网络通信压力和后面的数据分析压 力,就需要制定一个有效的数据获取策略。 我们在各个客户端的取证Agent集成了基于误用 检测模型的IDS,对各自的主机的活动进行监测,所 有的取证Agent可实现一个分布式的IDS,可检测网 络中单机无法检测的协同攻击。同时按照定义的规则 库发现主机上有异常行为发生时,立即向管理服务器 发出警报,并发布危险等级。危险等级可以根据规则 的危险程度分为正常、警告、危险三个等级。将规则 库分为犯罪特征库和异常规则库,而两个库之间的关 系为:犯罪特征库异常规则库,即计算机犯罪行为有 一 定的异常表现。当行为符合犯罪特征时,则发出危 险等级;当行为符合异常规则时,则发出警告等级; 否则为正常等级。管理服务器则按照相应的危险等级 触发采集模块按照一个合适的时间隔采集数据,并根 据异常类型有针对性地采集特定数据。采取这种策略 能有效减少采集到海量的无用数据。 3_3取证过程隐秘技术 取证过程隐秘的目的是为了取证活动不被主机用 户感知和终止,达到对主机作为作案目标和作为作案 工具两种情况下的取证目的,主要涉及到自动加载技 术、进程隐藏技术和文件隐藏技术。 (1)自动加载技术 自动加载目的是在被取证主机运行时,能自动启 动取证客户端程序,典型的方法有修改注册表启动项、 添加Windows任务计划、注册为系统服务。前两种方 法操作比较简单,但容易被用户修改,隐藏性较低。 在Windows2000/)(P/2003系统中,为了节省系统资源, 微软把很多服务做成共享方式,交由svchosLexe进程 来启动。svchost进程只作为服务宿主,并不实现任何 服务功能,只是提供条件让其它服务在这里被启动。 注册为系统服务的程序运行稳定,并且在后台运行, 在“进程管理器”中不可见,有一定的隐藏性。 (2)进程隐藏技术 进程隐藏目的是在被取证主机上实施取证工作 时,取证进程不被被取证机用户感知。目前具有代表 性的进程隐藏技术主要有:HookingAPI技术、远程线 程插入技术、动态链接库插入技术等[9】。本系统使用 了HookingAPI技术,它基本思想是:通过特殊的编 程手段截获windows系统调用的API函数,使其他调 用这些API函数的程序转向Hook函数,在Hook函数 中将需要隐藏的进程信息去掉,然后返回给调用程序, 就达到进程隐藏的目的。 (3)文件隐藏技术 文件隐藏目的有两个,一是隐藏取证程序文件, 二是采集到证据之后,在把证据文件传输到取证服务 器之前,为了不被用户发现和破坏,隐藏证据文件。 在windows平台可利用基于文件过滤驱动实现文件隐 藏和利用流文件实现文件隐藏等。基于ADS的文件隐 藏方法就是一个利用流文件实现文件隐藏的有效方法[1ol。 ADS即NTFS备份数据流(alternativedatastreams,简 称ADS),是NTFS的一个数据流属性,将用户数据 存入ADS其大小和内容往往对用户是不可见的。 4系统实现和测试 综合以上技术,我们用C++编程实现了各个功能 模块,系统服务器端的主界面如图2所示。 ![]() 我们在一个局域网中进行了下列测试: ①被保护系统上的取证信息范围 证据收集器能够采集各种可能的证据信息。在动 |