APP下载

计算机犯罪案件动态取证系统的研究与设计

2011-01-29郝姗姗陈红玉

铁道警察学院学报 2011年3期
关键词:注册表数据包证据

郝姗姗,陈红玉

(铁道警官高等专科学校公安管理系,河南郑州450053)

作为计算机领域、法学领域和刑事侦查领域的一门交叉科学,计算机取证技术因其在捕获与犯罪相关的数字证据、辨析和确认犯罪证据和嫌疑人、有效打击计算机犯罪等方面的出色表现,逐渐成为人们研究与关注的焦点。计算机取证也称数字取证,是指把计算机看作犯罪现场,运用先进的辨析方法,以符合法律规范的形式对计算机、相关外设和网络中的数字证据进行识别、获取、传输、保存、分析和提交的过程。计算机取证的主要目的就是收集数字证据,重构犯罪现场,为诉讼案件提供可靠、有效的证据。但数字证据本身及计算机取证过程的原则使得传统计算机取证技术已不能满足实际需要,因此对计算机取证技术的改进成为司法和计算机科学等领域的新挑战[1]。

计算机取证分为静态取证和动态取证。静态取证是在事后对各种形式的存储介质进行提取、分析、取证的过程。这种方法主要针对文件系统的恢复,且不能达到对系统完整还原的目标。而且随着计算机犯罪手段不断的升级和发展,大部分犯罪嫌疑人会在入侵后掩盖、删改证据,因而有些数据文件即使经过技术恢复被恢复了,但仍可能是被篡改过的数据,因而不能作为呈堂证据。另外,由于现在大部分入侵攻击都来自计算机网络,采用静态取证方法无法获取网络信息,从而对网络入侵行为无能为力,所以这种方法存在一定的缺陷。动态取证是将取证技术结合到防火墙、入侵检测技术以及蜜罐技术中,对所有可能的计算机犯罪行为进行实时数据获取和智能分析,诱敌深入,实时监控和分析入侵企图,迅速采取相应措施,在确保系统安全的情况下获取大量的证据[2]。不难看出,动态取证技术能更快、更多地获取入侵信息,实时监控入侵活动,及时分析入侵者的活动企图,及时获取更多的犯罪证据,也可以随时采取相应措施,将损失降到最小。

一、计算机动态取证的一般步骤

计算机取证是主要围绕数字证据展开的工作,最终目标是要把存在于计算机系统中的能体现和证明犯罪事实的各种犯罪信息以诉讼证据的形式呈送给法庭。数字证据的来源所具有的形式和内容的特殊性,使得它们具有与传统证据有别的高科技性、易灭失性、易篡改性、表现形式多样性,以及保存和传输的特殊性等特性,因此,为了保证取证工作的顺利进行,就必须遵从一定的方法步骤。主要包括如下环节。

(一)证据的来源

数据证据一般可包括静态证据和动态证据。静态证据主要指存储在硬盘和移动存储设备介质中的数据信息,而针对计算机动态取证的动态证据主要来自计算机系统和正在运行的网络。内容形式上主要包括四类:

1.犯罪行为发生时的实时主机运行参数;

2.与外网的物理链接状况及网络通信情况;

3.相应的邮件信息;

4.各种日志信息。

(二)证据的采集

网络攻击入侵必须依靠网络进行传输通信数据,到达目标系统后才能发起攻击行为。证据采集时可将网卡设为混杂模式,从而达到对经过该网段的数据进行监听的目的,一旦发现报警,立即将相关运行信息保存至日志。对接受的每一个数据包,读取包头信息,并与规则库中的相应规则进行匹配,不满足规则获取条件的便将其丢弃,否则立即以二进制格式按时间间隔存储为网络数据文件,它们既可作为日后呈堂的证据使用,又可通过实时或事后读取这些数据进行在线入侵分析和离线取证分析。

(三)证据的传输

对犯罪现场勘查过程中获取的数字证据,可以采用光缆以RS-232为接口通过异步数据传输的方式,从被取证的计算机系统中安全转移到取证分析机上。由于计算机取证的整个过程有不可篡改性的要求,因此,数据在传送前要先对数据进行MD5校验、数字签名和压缩等操作,通过认证、加密后使用VPN进行传送。

(四)证据的保存

鉴于计算机证据作为证据呈堂时形式与内容的特殊性,因而必须保证被保存证据的真实性、可靠性、完整性与合法性。一般在保存证据时使用一定的存储介质如硬盘或光盘进行原始镜像备份,并可使用加密、物理隔离、数字签名、时间戳等技术措施来作保全和固定的保证。

(五)证据的分析

通过证据获取阶段获取的证据数据量是庞大且不断更新的,取证系统如何从海量且变化的数据中深入地分析出正常与异常数据,如何挖掘出有效信息,提取出与计算机犯罪案件相关的、反映案件事实的相关信息和直接证据,并提取、固定可被法庭接受的数字证据已成为动态取证过程的关键。在动态取证的证据分析阶段,通常运用专用的辅助分析软件工具筛选已获取数据,从中寻找、匹配关键词短语,根据已获取的文件或数据的用词、语法和编程风格,推断出作者使用的工具与技术,挖掘出同一犯罪事件中不同证据间的联系,根据数据进行犯罪实施过程的确定与再现,包括入侵事件、使用IP地址、修改的文件、增加的文件、删除的文件、上传和下载的文件等[3]。

二、动态取证系统基本架构

根据当前取证技术的缺陷和实际工作需要,本文设计的计算机动态取证系统,综合运用计算机取证技术与网络监控技术,能自动审核全网计算机对注册表、文件、网络的任何操作,对存在的可疑文件及操作自行跟踪并收集数据。一旦发现犯罪行为,取证系统立刻启动,进行动态取证,因此能够较为完整地记录系统工作及网络犯罪事件的全过程。系统能动态收集、识别犯罪证据,并能及时分析犯罪企图,将犯罪损失降到最低。同时系统将经过分析、提取的证据传送至证据库作证据保全[4]。在证据的传送、保存过程中,系统采取认证、加密、隔离等安全手段,以确保证据的真实性、准确性及不可篡改性,使其成为有效的法庭证据。系统在对取证的事迹、地点、环境的把握上明显优于静态取证。系统采用Client/Server结构,主要由服务器、取证代理、网络取证机、取证分析机、管理控制台等部分组成。整个系统结构如图1所示。

图1 系统结构图

三、系统主要功能模块的设计与实现

本文所讨论的动态取证系统不但针对传统的来自网络外部的以网络内的计算机系统为目标的犯罪行为,同时还获取包括来自网络内部的以计算机系统为工具的滥用、越权使用等犯罪行为。本系统由三个部分组成:注册表状态监控模块、文件操作监控模块和上网记录监控模块。注册表状态监控模块主要利用钩子技术(Hook技术)监控注册表的活动,对所有注册表操作进行记录分析。文件操作监控模块则是对文件信息的变更、复制传播等操作进行记录统计,必要时能阻止有威胁的信息传播。上网记录监控模块主要利用WinPcap抓获数据包,解析数据包,并获取相关数据。

(一)注册表状态监控模块

1.注册表状态监控原理

注册表状态监控模块监控并显示被监控机系统注册表的活动情况,能够查询系统中注册表调用的情况,借用函数(Openkey,Closekey,QueryValue,QueryvalueEX,Enumkey等)指出调用注册表的操作以及调用注册表操作的相关进程(指出是哪个进程调用了注册表),进程所关联的注册表的位置,该进程是否已成功地访问了注册表和当前所访问注册表的键值。该模块具有查找某个键值的功能,可以过滤出我们要监控的键值,对某个指定的键值具有修改性。当需要对注册表进行写操作时,如果该键值需要保护,可以给予阻断。

Windows基于对象的访问控制权限要求用户要调用内核组件的功能,就必须通过系统服务调用来实现。应用程序先调用API函数,再通过Ntdll.Dll提供的用户模式函数接口进入内核模式,然后访问系统服务调度表(System Service Dispath Table即SSDT)得到相应的服务函数入口地址,最后调用相应的系统服务函数完成操作。

为了达到注册表监控的目的,我们可以修改SSDT所监控的系统服务程序的入口地址,使之变为自定义的监控函数的地址。这样一来应用程序在进行系统调用时便先执行挂接的模块,然后再执行原始系统服务地址处的函数,从而实现了对注册表监控的目的。而要实现监控模块,关键在于定位系统服务调度表。在Windows系统中有一个未公开的单元KeService Descriptor Table,通过它可实现对SSDT的访问与修改。该单元对应一个数据结构,其中一个参数(定义为Service Table Base)表示系统服务程序的地址,修改该参数就可实现对相关系统服务调用的Hook。

2.注册表状态监控模块流程

在本监控模块内,我们新建了函数Hook On及Hook Off来响应开启和关闭监控命令,以达到挂接目的。当某应用程序要对注册表进行操作时,先通过相应的API函数及动态链接库进入内核,进而调用相应的函数。我们定义了钩子函数 ZwSetValueKeyHook,通过它可以实现:获取要操作的注册表键名,与规则库中所定义的键名进行比较,根据规则中要求进行下一步操作,如如允许通过、拒绝、询问用户等。另外,我们还定义了一个日志函数 Log Txt,该函数记录对注册表操作的日期、具体操作的键以及处理结果,再利用On Button Log Saving函数可将日志导出以便日后查询。本模块是在VC6.0环境下生成,主要包括Hide Hook驱动及Reg Hook文件。点击Reg Hook后便先启动后台监控进程Hide Hook,此时本模块便处于监控状态。

(二)文件操作监控模块

文件操作监控作为保障信息安全的有效机制,可以实现对本地各类文件和用户操作的保护与监控。通过对文件和用户操作等监控技术的深入研究分析,可以更好地根据系统需求选用适当的技术方式,提高监控的针对性,确保系统的稳定与高效。

1.文件实时监控技术

文件实时监控技术的核心就是文件系统的过滤器驱动(File System Filter Driver),这种驱动运行于操作系统的核心模式,它可以针对文件的任何操作(打开、创建、修改、关闭、删除等)进行实时监查,病毒感染文件以及其他任何相关操作都会被监控[5]。

文件操作监控模块主要是基于Windows API完成的。Windows应用程序接口(API)是Windows系统提供给用户进行系统编程和外设控制的函数库。其中,与实现文件变更监控相关的API函数为Read Directory Changes W。模块可以利用重定义 Read Directory Changes W函数进行监控:用户首先通过定制监控目录选择要监控的网页文件。当进行实时监控时,系统启动多个并发的监控线程对多个目录实施实时监控,一个线程监控一个目录。传送控制部分负责启动监控线程,接收监控线程传来的目录变更的消息,并根据消息将备份文件覆盖异常文件,产生报警和审计信息。

2.模块系统的运行

打开应用程序后,在主界面窗口可通过工具栏上的按钮选项设置调出子窗口监视选项来设置监控的内容。当要监控文件时,只要单击“选项设置”就可以弹出如下的监视选项窗口,我们可以通过选择该窗口中的五个要监控内容来设置,即通过更改Settings.ini文件中的m_bAddNew0,m_bDel0,m_ bRename0,m_bModify0,m_bOther0五个参数设置的“0”和“1”两个值来控制。同时还提供四个辅助项来方便使用。设置完以上信息后,我们可以直接单击“开始监控”运行程序,而监视到的内容就会在工具栏下面的操作显示列表框中列出来。

单击停止监控后,可以通过单击信息存储来保存列表框中的数据。通过定义Save As Text File和Save As Excel File函数分别实现利用txt和Excel两种格式保存列表框中的数据。

(三)上网记录监控模块

上网记录监控模块主要利用WinPcap抓获数据包,解析数据包,并获取相关数据。具体步骤如下:

第一步:得到网络驱动列表;

第二步:打开网卡捕获数据包;

第三步:对数据流进行过滤;

第四步:对数据包进行解析;

第五步:收集并统计网络流量。

1.抓包过程

本模块关键的第一步就是能否抓取数据包,如果不能够抓取数据包也就无法继续进一步对数据包解析以及获取相关的数据。

抓取数据包的主要过程。首先,通过pcap_findalldevs函数获取设备的网络接口,再将所获取的接口给打印出来。而后获取的网络接口中,一般有1到2个网络接口,选取合适的网络接口。紧接着就跳转到选中的适配器,用pcap_open_live函数打开设备,并设置好相关的系数,包括捕获数据包的大小、选择过滤器模式、读入超时以及错误缓冲池等。然后分别用pcap_compile函数和pcap_setfilte函数进行编译和设置过滤器。最后一步就是等待数据包,只要有数据包通过就用pcap_loop函数将数据包进行捕获,然后将数据包放入缓冲池内以待进一步对数据包的分析。

2.数据分析

接着下一步就是对捕获到的数据包进行分析以获取我们想要的相关信息。而本模块获取的数据包相关信息主要包括目的IP地址、源IP地址、目的MAC地址、源MAC地址、端口以及传输的协议等信息[6]。对于分析数据包,本模块则用packet_handler这个函数,利用这个函数将时间戳转换成我们可识别的格式,并且从数据包中分别获取目标MAC地址、源MAC地址,获得UDP首部的位置,将网络字节序列转换成主机字节序列,而后将IP地址和UDP端口打印出来,获取协议的类型,最后将整个数据包打印出来。

3.日志审计

通过以上的步骤得到了数据包的相关数据,然后利用ADO连接Access数据库,将数据库与程序相链接,将程序中所获取的相关数据用insert函数插入到数据库中,这就生成了日志库。而后就是通过数据库对数据的查询,对此,数据库用_RecordsetPtr->Open函数进行数据的查询,用_RecordsetPtr->GetCollect函数对数据库记录中字段的索引。

4.测试

经过在局域网的测试,在程序启动的情况下,程序处于一种等待的状态,只要在局域网中有数据流的流动,程序就能够将这些数据予以捕获并将其分析。

由上可知,本模块可以通过数据包获得目的MAC地址、源MAC地址、目的IP地址、源IP地址、协议类型以及时间戳等信息,并且还可以获得整个数据包的数据。

四、系统主要创新之处

在对现有的监控理论技术深入研究的基础上,将这些监控技术合理有效地组合,即可制作计算机动态取证系统。本系统包括注册表状态监控模块、文件操作监控模块和上网记录监控模块三个模块,三大系统模块各具特色。

1.注册表状态监控模块能够及时发现应用程序运行过程中对注册表敏感部分的读写、修改操作,从而阻止恶意软件的相关操作。

2.文件操作监控模块自动记录硬盘中的文件操作信息,并储存到日志库中,供用户了解文件的操作情况,为用户阻止非法活动的进一步扩散提供方便。

3.上网记录监控模块能够对计算机的上网行为提供详细的审计信息,它能过滤全网通过的数据包流,监控网络的数据,从而保证网络的数据传输的安全。

[1]张岳.计算机网络犯罪浅析[J].河南公安高等专科学校学报,2003,(6).

[2]刘琴.判定速算法在计算机取证中的应用[J].计算机应用与软件,2008,(7).

[3]钟秀玉,凌捷.计算机动态取证的数据分析技术研究[J].计算机应用与软件,2004,(9).

[4]杜建民,任辉.浅谈计算机取证[J].网络信息安全,2004,(3).

[5]史伟奇.基于木马的计算机监控和取证系统研究[J].计算机工程与设计,2007,(10).

[6]李焕洲.一个基于跟踪的计算机取证过程模型[J].微计算机信息,2007,(3).

猜你喜欢

注册表数据包证据
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
SmartSniff
更上一层楼 用好注册表编辑器
对于家庭暴力应当如何搜集证据
注册表的便捷用法
手上的证据
手上的证据
“证据”:就在深深的水底下——《今生今世的证据》“读不懂”反思
注册表编辑器也玩“失忆”