异常行为。而整个系统的统一管理则由管理控制模块 实现,确保系统稳定运行。 ![]() 2_3系统功能模块和结构设计 我们假设网络中有N台主机,则有N个客户端。客户 端安装在网络中的每一台主机上,分别负责监测每~ 个主机的活动,它由以下几个模块组成: ①取证Agent:在该模块中引入了IDS,负责分 析主机上的活动,当监测到某种可疑事件时,立即触 发数据采集模块按照特定的策略采集数据。 ②数据采集模块:负责采集主机上的各种数据 源,包括:日志文件、注册表、正在运行的程序、键 盘操作记录、网络数据包等。 ⑧管理服务器:接收来自服务器的命令,管理取 证Agent和数据采集模块,并把采集到的数据进行分 类,加密签名后发送给服务器端。 ④服务器端安装在一个专门的有安全保障的服 务器上,负责收集从各个主机上采集到各种数据,并 将数据进行预处理后存入数据库,以便进行随后的证 据分析。它由以下几个模块组成: ⑤集中收集模块:接收各个主机传来的数据,解 密并验证签名后按分类信息将数据分类存入数据库。 我们采用了mysql数据库对收到的数据进行存储与组 织,可以很方便高效地实现证据的各种删除、插入、 修改操作。 ⑥状态服务器;接收和保存各个客户端的工作状 态,并将各状态信息存入状态信息库。 管理控制模块:给网络管理员提供一个管理整个 取证系统的用户界面,主要包括监测各客户端的运行 状况(通过查询状态信息库),修改生成的规则库或自 定义规则,设置取证Agent或给取证Agent更新规则 库,管理采集模块、证据查询、证据导出等。 ⑦证据分析模块:利用数据挖掘算法对收集到的 数据进行分析,产生规则,并提取犯罪证据,存入证 据库。管理人员可以导入不同的分析算法,或者对分 析算法进行修改、更新。同时管理人员可以根据取证 经验自定义犯罪行为规则或者修改、删除分析算法生 成的一些无用规则,使分析模块具有很好的扩展性。 3构建系统的关键技术 3.1证据获取技术 因为要获取多种数据源,采集模块采用多线程技 术对各种数据进行实时收集,主要实现对系统日志、 注册表、辑过的文档信息、浏览过的网页信息、正在 运行的进程、键盘操作记录,网络数据包等数据源的 收集,并且可以根据取证的要求增加线程数,即增加 采集器,实现更多数据源的采集。在实现数据采集时, 我们借鉴了文献【6】中给出的日志信息、编辑过的文档 信息、浏览过的网页信息、运行过的程序采集实现方 法和文献【7】中利用winpcap进行网络数据包捕获的方 法。键盘操作的记录可利用系统勾子实现嘲,但是由 于用户在进行键盘操作时,可能录入的是汉字,所以 我们不仅需要利用系统钩子获取到录入的键盘字符, 还需要考虑录入的是不是汉字。所以我们还需要安装 一 个类型为WHGETMESSAGE消息钩子,然后在消 息处理程序中判断消息标识符是否为wMmm COMPOSITION,即编码状态改变标识,如果是,则 先调用ImmGetContext(hWnd)获取当前正在输入的 窗口的输入法旬柄,再用ImmGetCompositionString() 方法从输入法数据区中获取字符串。 需要采集的另一个重要数据源是系统注册表。 windows操作系统的注册表(Registry)是一个数据文件 的集合,包含了很多的有关计算机的硬件、软件和用 户的信息。但是一个完整的注册表难以读懂,对动态 取证分析意义不大,我们关心的只是注册表在系统运 行过程中的改动情况,从而方便地分析出系统在什么 时候安装了什么软件、用户增加、修改或删除了哪些 目录和文件等,因此获取注册表的改动历史对取证分 析意义更大。 本文提出了一个监控注册表的实现方案。该方案 首先在初始时备份一份在正常情况下的注册表,然后 监测特定的子键或键值是否有改变,如果有改变立即 对注册表进行了备份,最后通过对新备份和原备份进 行比较,从而获得注册表中改变的位置和内容。 当监控注册表变化时我们使用到一个API函数: |