背景技术
计算机物理内存中存在某些能描述***遭受攻击时所处状态的信息,如进程信息、线程信息、打开的文件信息、网络连接信息等。这些信息随着计算机***的关机而消失。因此,对获取计算机物理内存在计算机取证方面尤为重要。为推进物理内存分析技术的发展,DFRWS(DigitalForensicResearchWorkshop)于2005年推出了名为“ForensicsChallenge”的活动,活动的主题就是物理内存分析。从此,对于物理内存的分析和获取成为计算机取证的研究热点。
在计算机不关机的情况下,获取其物理内存的有以下几种方法:
a.基于硬件的方法;
a-1.使用Tribble设备,BrianCan'ier和JoeGrand提出了一种用名为“Tribble”的硬件扩展卡来获取***物理内存的方法,可以用Tribble将***的物理内存复制到外接存储设备中。作者构建了-一个原理性(proof-of-concept)的Tribble设备,设计了一个可以***到***总线的PCI扩展卡。使用Tribble这类硬件设备的优点在于操作方便、易于理解。最大缺点在于硬件必须事先安装到***中,所以Tribble设备还不能被广泛使用。 a-2.使用FireWire设备,FireWire(火线)是以原苹果公司开发的技术为基础发展而来的一种高速I/O技术,它可连接***设备与计算机。该技术于1995年被正式接纳为IEEE1394工业标准(FireWire400)。利用FireWire设备的特殊性能,使用相应的软件,调查人员可以获取***的物理内存镜像。FireWire设备使用直接存储器访问(DMA)技术,可以不通过CPU直接访问***内存。使用FireWire设备的优点是现在许多计算机***的主板上都集成了FireWire/IEEE1394接口,可以方便地直接访问***内存;缺点是火线寻址空间最大支持到32位,因此通过火线接口无法获取4G以上内存中的信息。 b.基于软件的方法;
b-1.使用Microsoft崩溃转储技术WindowsNT、2000和XP都提供一种内置的“崩溃转储”功能来获取***的物理内存镜像。在生成崩溃转储时,***会被冻结,物理内存中的数据(加上大约4KB的头部信息)会被写入磁盘,这样就完整地保存了***状态,并且保证从开始进行崩溃转储之时起,***状态不会被人为地修改。 b-2.使用虚拟机技术VMWare是一款非常流行的虚拟机软件,使用它可以在一台计算机硬件上创建多台虚拟计算机。当运行VMWare会话时,可以挂起(suspend)这个会话,也就是暂时“冻结”***。当一个VMWare会话被挂起时,VMWare会将***的“物理内存”镜像以DD格式存放到一个扩展名为.vmem的文件中。使用这种方法的优点是挂起一个VMWare会话的操作非常简单快捷,而且对***内存的影响最小;缺点是受侵害***一般直接运行在物理计算机中,很少是运行在虚拟机下的。 b-3.使用专用软件;
(1)DD,UNIX***中数据转储工具DD的用途广泛,可以复制文件,也可以制作整个硬盘的镜像。GMGSystem公司开发了可用于Windows***的改进版DD工具。在用户模式下访问\Device\PhysicalMemory对象,该工具可以获取Windows***的物理内存。
(2)KntDD,由于DD不支持WindowsXPSP2、WindowsVista和WindowsServer2003SP1等***,因此,GMGSystem公司又开发了一个称为KntDD的新工具用于生成物理内存镜像。
(3)Nigilant32,Nigilant32是一个由AgileRiskManagement开发的取证工具,具有浏览硬盘内容、获取物理内存镜像、获取当前正在运行的进程和打开的端口的“快照”等功能。 (4)Helix,Helix是一个可由CDROM直接启动的功能强大的计算机取证工具,首发于2003年,目前世界著名的计算机取证机构SANS将Helix作为取证培训工具。Helix实际上是一个重新修改过的Knoppix(Knoppix是一个Linux发行版本,其中增加了有关应急响应和计算机取证的内容。
另外,能获取MacOSX***内存镜像文件的软件有DD、OSXPmem、MacMemoryReader等。虽然使用软件的方法获取内存比较完整,但是由于软件需要在目标计算机***中运行,因此使用这种方法获取物理内存镜像会引入额外的代码,增加了获取的内容被篡改、覆盖的可能性;目前的硬件获取方法又受到内存大小4G的限制,对64位操作***下,内存大于等于4G的计算机来讲,一些映射到4G以上内存地址空间的重要数据无法获取。
发明内容
本发明为了克服上述技术问题的缺点,提供了一种通过PCIExpress总线读取计算机物理内存的设备及方法。
本发明的通过PCIExpress总线读取计算机物理内存的设备,包括USB控制器、PCI-E桥接控制器、供电模块和时钟模块,供电模块、时钟模块给USB控制器和PCI-E桥接控制器分别提供电源和时钟脉冲信号;其特别之处在于:所述USB控制器与PCI-E桥接控制器通过CPLD逻辑器件相连接,USB控制器上设置有与取证计算机相连接的USB接口,PCI-E桥接控制器上设置有与目标计算机相连接的PCIExpress接口;CPLD逻辑器件用于实现USB控制器与PCI-E桥接控制器之间的数据传输。
USB控制器、PCI-E桥接控制器均具有双向数据传输的作用,USB控制器上的USB接口与取证计算机相连接,PCI-E桥接控制器上的PCIExpress接口与目标计算机相连接。CPLD逻辑器件用于实现USB控制器与PCI-E控制器之间的通讯,CPLD逻辑器件可确定USB控制器与PCI-E桥接控制器的主从状态、进行时序和总线宽度的转换以及在DMA模式下将内存数据传输至取证计算机。
本发明的通过PCIExpress总线读取计算机物理内存的设备,包括对USB控制器和PCI-E桥接控制器进行复位操作的复位模块,所述USB控制器连接有程序存储器。复位电路实现对USB控制器和PCI-E桥接控制器的复位操作,程序存储器可采用EEPROM,用于存储固件程序。
本发明的通过PCIExpress总线读取计算机物理内存的设备,所述CPLD逻辑器件中集成有总线逻辑模块、配置接口转换模块和数据传输接口转换模块,总线逻辑模块用于确定USB控制器与PCI-E桥接控制器的主从状态,配置接口转换模块、数据传输接口转换模块用于转换时序和总线宽度。
本发明的通过PCIExpress总线读取计算机物理内存的设备,所述USB控制器采用CY7C68013A型号的芯片,PCI-E桥接控制器采用PEX8311型号的芯片,所述CPLD逻辑器件的型号为EPM240;USB控制器的16位数据端与PCI-E桥接控制器的低16位数据端相连接,PCI-E桥接控制器的高16位数据端经数据传输接口转换模块与USB控制器的16位数据端相连接;USB控制器、PCI-E桥接控制器的控制信号均与配置接口转换模块相连接,USB控制器、PCI-E桥接控制器的总线仲裁信号均与总线逻辑模块相连接。PEX8311为PLX公司的PCIExpress转本地总线的桥接芯片。CY7C68013A芯片不仅含有8051微控制器,而且还设置有USB接口,即实现了对整个设备的控制,还实现了与取证计算机的端口连接。
本发明的通过PCIExpress总线读取计算机物理内存的设备,所述供电模块的输入端与USB接口的上的电源线相连接。
本发明的通过PCIExpress总线读取计算机物理内存的设备的内存获取方法,其特别之处在于,包括以下步骤:a).设备连接,将取证计算机与内存读取设备的USB接口相连接,目标计算机与内存读取设备的PCIExpress接口相连接;b).设备配置,将内存读取设备配置为以PCI-to-PCI桥与目标计算机相连接的内存控制器,避免目标计算机上出现查找驱动程序的提示信息;c).分配PCI总线号、设备号,目标计算机为内存读取设备分配PCI总线号和PCI设备号,目标计算机自动加载内存读取设备的驱动程序;d).参数发送,取证计算机将读取命令、写入命令、内存地址、内存长度信息作为参数,通过USB接口发送至USB控制器中;e).配置PCI-E桥接控制器,以USB控制器为总线上的主机、PCI-E桥接控制器为从机,将取证计算机发出的参数发送至PCI-E桥接控制器,PCI-E桥接控制器根据参数构造读写物理内存的数据包;f).配置绕开UMA地址段,绕开目标计算机内存中的UpperMemoryArea地址段,获取目标计算机的内存数据;g).采用DMA模式传输数据,PCI-E桥接控制器通过PCIExpress总线获取目标计算机的内存数据,以PCI-E桥接控制器为总线上的主机、USB控制器为从机,在DMA模式下通过USB控制器将内存数据发送至取证计算机;h).内存数据分析,取证计算机对获取的内存数据进行校验和分析。
本发明的通过PCIExpress总线读取计算机物理内存的设备的内存获取方法,所述USB控制器、PCI-E桥接控制器分别采用CY7C68013A芯片和PEX8311芯片,步骤e)中,将取证计算机发出的参数发送至PCI-E桥接控制器包括以下步骤:
向PCI-E桥接控制器写入数据包括以下步骤:
e-1).32bit数据的分次写入,CY7C68013A首先将32bit数据的高16bit写入CPLD逻辑器件(7)的内部暂存器中,然后再将32bit数据的低16bit写入CPLD逻辑器件;e-2).32bit数据的组合,CPLD逻辑器件将分次接收的高16bit数据与低16bit数据组合在一起,形成完整的32bit数据;e-3).32bit数据的写入,CPLD逻辑器将完整的32bit数据写入PEX8311芯片中;
从PCI-E桥接控制器读取数据包括以下步骤:
e-4).32bit数据的分次读取,将32bit数据的高16bit存入CPLD逻辑器件的暂存器中,而将低16bit数据直接读回CY7C68013A内;e-5).32bit数据的组合,CY7C68013A从CPLD逻辑器件中读取暂存的高16bit数据,低16bit位数据、高16bit位数据组合为完整的32bit数据。
本发明的通过PCIExpress总线读取计算机物理内存的设备的内存获取方法,取证计算机获得的内存数据为二进制文件,步骤h)所述的校验方法为哈希校验。
本发明的有益效果是:本发明通过设置与目标计算机相连接的PCIExpress接口以及与取证计算机相连接的USB接口,具有即插即用功能。通过PCIExpress接口直接读取计算机内存中的数据,实现了目标计算机在密码保护状态(如屏保、锁定状态)下内存信息的读取,不需要在计算机上运行软件,对目标计算机运行状态改动很小。由于采用了PCIExpress接口总线,使得本设备具有64位地址空间访问能力,能读取4G以上物理内存数据,提高了在线取证的灵活性和增强了在线取证的完整性、可信性,具有很高的使用价值。
根据本发明的***和方法通过计算机对PCI-E设备DMA功能的支持,使其可以直接对计算机内存中的数据进行读取分析,扩展了有用信息量,提高了取证和应急响应的效率。其次,相对于在计算机内部预先安装扩展卡,本***只需将其通过PCI-E扩展卡槽连接到待取证计算机,即可对其内存数据进行读写,无需一般计算机用户或取证人员预先安装任何软硬件。特别的,针对犯罪分子使用的计算机,不可能有预先安装的扩展卡,因此,使用范围相对得以扩展。再者,利用PCI-E总线外设即插即用、可热插拔的特点,用本***进行取证可保证数据的即时获取,实时性强。然后,利用PCI-E设备可发送64位地址请求的特点,相对于1394设备,本***能够访问内存地址在4G以上数据,获取的内存更具有完整性。进一步的,相对于通过软件获取内存,本***提供对现场数据更好的保护,***的加载只需少量内存运行操作***自带的驱动程序,而***的运行则完全不占用内存。同时本***可获取处在密码保护状态(如屏保、锁定状态)下的计算机***(Windows***和MacOSX***)的内存信息。本***取证方法简单,只需要简单的即插即用硬件的安装,对现场技术人员要求低,不需要具备专业的计算机知识,便于推广应用。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
如图1所示,给出了本发明的通过PCIExpress总线读取计算机物理内存的设备的原理图,其包括USB控制器3、PCI-E桥接控制器4、USB接口1、PCIExpress接口2、CPLD逻辑器件7、电源模块5、程序存储器6、时钟模块8、复位模块9;所示的USB接口1、PCIExpress接口2分别与USB控制器3、PCI-E桥接控制器4相连接,USB接口1、PCIExpress接口2分别与取证计算机和目标计算机相连接,分别用于接收目标计算机传输的内存数据和向取证计算机发送内存数据。
所示的供电模块5给USB控制器3和PCI-E桥接控制器4提供稳定电压,供电模块5从USB接口1上的电源线上获取5V的直流电压,将其转化为USB控制器3和PCI-E桥接控制器4的工作电压(3.3V)后进行输出。时钟模块8用于给USB控制器3和PCI-E桥接控制器4提供工作所需的时钟脉冲信号。程序存储器6可采用串行EEPROM芯片,用于存放本设备的固件程序,通过I2C总线与USB控制器3相连接。复位模块9是USB控制器3和PCI-E桥接控制器4的复位电路,实现设备运行过程中的复位作用。
所示的USB控制器3与PCI-E桥接控制器4通过CPLD逻辑器件7相连接,以实现USB控制器3与PCI-E桥接控制器之间的数据传输。USB控制器3采用CY7C68013A芯片,CY7C68013A不仅内置有8051微控制器,而且还设置有USB接口;PCI-E桥接控制器4采用PEX8311芯片,PEX8311芯片为常用的PCIExpress接口转本地总线的常用芯片。CPLD逻辑器件7由总线逻辑模块10、配置接口转换模块11和数据传输接口转换模块12构成,CPLD逻辑器件7可选用EPM240芯片。CY7C68013A的16位数据端与PEX8311的32位数据端的低16位数据端直接相连接,PEX8311的高16位数据端经数据传输接口转换模块12与CY7C68013A的16位数据端相连接。
总线逻辑模块10用于确定总线上USB控制器3和PCI-E桥接控制器4的主从状态,在不同的阶段,USB控制器3和PCI-E桥控制器4分别作为总线的主机和从机;在任何时候,总线上最多只能有一个主机。两者分别通过两条信号线连接至总线逻辑模块10,分别是总线请求信号和总线允许信号;首先,当CY7C68013A准备开始一次传输时,必须首先请求占用总线,当获得允许后,CY7C68013A成为总线主机;当对PEX8311的配置完成后,CY7C68013A切换为从机并释放总线请求信号,此时PEX8311的总线请求才会获得允许,PEX8311成为总线主机,开始DMA传输。空闲时,PEX8311和CY7C68013A的总线请求信号均无效,两者都处于空闲状态。
配置接口转换模块11在配置阶段实现接口时序转换和总线宽度转换;CY7C68013A的GPIF接口位宽只能配置为8bit或16bit,而PEX8311在主模式下只能是32bit宽度,两者不匹配,对PEX8311的寄存器配置必须要使用32bit宽度的主模式通讯,因此这里需要使用配置接口转换模块11做总线宽度转换。每一次对PEX8311的访问需要分解为两次16bit的读写。具体步骤如下:在写入PEX8311寄存器时,首先将32bit数据的高16bit写入CPLD逻辑器件7的内部暂存器,然后在写低16bit的同时,与CPLD逻辑器件7中的高16bit组合成完整的32bit数据一次性写入PEX8311内部。读取PEX8311寄存器与此类似,首先发起的读操作,将高16bit数据存入CPLD内部的暂存器中,低16bit数据直接读回至CY7C68013A内,然后第二次读取CPLD内部的暂存数据,两者合成为完整的32bit数据。
数据传输接口转换模块12用于批量数据的读写,在数据传输模式下,PEX8311作为主机,CY68013A使用SlaveFIFO接口作为从机。PEX8311在DMA模式下可以配置为使用16bit数据宽度,这样和CY7C68013A的数据线宽度可以匹配,不再需要作数据宽度转换。但两者的接口时序仍然是不匹配的,需要CPLD作时序转换。在DMA模式下,PCI-E桥接控制器4可将从PCIExpress接口获取的目标计算机的数据,传输至与USB控制器3相连接的取证计算机上。
PCI-E桥接控制器4是PCIExpress总线到本地总线的桥接芯片,支持3种数据传输方式:主模式、从模式和DMA(直接存储器存取)方式,负责数据包的发送和接收。PEX8311的3种数据传输模式如下:
a)主模式:本地总线上的主设备通过PEX8311访问PCIExpress总线存储空间和I/O空间。
b)从模式:PCIExpress总线主设备通过PEX8311访问本地总线存储空间和I/O空间。
c)DMA传输模式:PEX8311作为两个总线的主设备,能在PCIExpress总线存储空间和Local总线存储空间之间互传数据。
在本发明中,用到了主模式和DMA模式这两种,没有使用从模式。DMA模式数据传输速度最快,传输过程中不需要软件参与,因此数据传输主要使用此模式。另外因为传输是由本地总线端发起的,所以需要使用主模式,由本地总线的主机对PEX8311芯片内部寄存器进行配置,启动DMA传输,此后切换为DMA模式进行数据传输。
如图4所示,给出了PCIExpressTLP数据包包头格式,所示的字节3和字节2的后两位表示所获取的内存的长度,字节8~字节11用于存储64位寻址的高32位,字节12~字节15用于存储64位寻址的低32位。
如图5所示,给出了为本发明的读取计算机物理内存设备的PCIExpress连接接口示意图,图中为PCIExpress接口各管脚的定义。图6、图7给出了作为PCI-E桥接控制器4的PEX8311芯片的电路连接图,其采用三对差分信号来实现数据的收发,端口PETp0、PETn0实现数据的发送,端口PERp0、PERn0实现数据的接收,REFCLK+、REFCLK-为参考时钟信号。这些信号接入PEX8311对应的引脚。其中PEX8311的发送端需要串入电容隔离直流。
CPPE#和CLKREQ#分别为卡***检测和时钟请求,此处直接接地。当卡***插槽后,PC机即可检测到卡,开始向其供电并提供时钟信号。
图8给出了CY7C68013A芯片作为USB控制器3的电路图,其16位数据端口与PEX8311芯片的低16位数据端口直接相连接,也通过CPLD控制器与EX8311芯片的低16位端口相连接。
本发明的通过PCIExpress总线读取计算机物理内存的设备的内存获取方法,包括以下步骤:
a).设备连接,将取证计算机与内存读取设备的USB接口1相连接,目标计算机与内存读取设备的PCIExpress接口2相连接;
如图2所示,给出了内存读取设备与取证计算机、目标计算机相连接的原理图,所示的取证计算机14的USB接口与内存读取设备13上的USB接口相连接,目标计算机15上的PCIExpress接口与内存读取设备13上的PCIExpress接口相连接。
b).设备配置,将内存读取设备配置为以PCI-to-PCI桥与目标计算机相连接的内存控制器,避免目标计算机上出现查找驱动程序的提示信息;
为了在目标计算机上无需手动安装驱动程序,PEX8311桥接芯片内部是由两部分构成,一是PCIExpress转PCI桥,另一个是PCI转本地总线桥。前者对于软件方面来说就是一个标准的PCItoPCI桥,此设备在操作***中已经内置了驱动程序,故可以自动安装。后者是一个自定义的设备,用户可以将其配置为任意规范中声明的设备,并实现其功能。这里将其配置为***自带驱动的内存控制器,可以实现免安装驱动程序。
因为本设备所有传输都是由本地总线端发起的,PCIExpress端只是被动接收请求,所以不需要目标计算机上任何软件的参与。
c).分配PCI总线号、设备号,目标计算机为内存读取设备分配PCI总线号和PCI设备号,目标计算机自动加载内存读取设备的驱动程序;
d).参数发送,取证计算机将读取命令、写入命令、内存地址、内存长度信息作为参数,通过USB接口发送至USB控制器(3)中;
e).配置PCI-E桥接控制器,以USB控制器为总线上的主机、PCI-E桥接控制器为从机,将取证计算机发出的参数发送至PCI-E桥接控制器,PCI-E桥接控制器根据参数构造读写物理内存的数据包;
在USB控制器3、PCI-E桥接控制器4分别采用CY7C68013A芯片和PEX8311芯片的情况下,该步骤中,将取证计算机发出的参数发送至PCI-E桥接控制器通过以下步骤来实现:
向PCI-E桥接控制器写入数据包括以下步骤:
e-1).32bit数据的分次写入,CY7C68013A首先将32bit数据的高16bit写入CPLD逻辑器件(7)的内部暂存器中,然后再将32bit数据的低16bit写入CPLD逻辑器件;
e-2).32bit数据的组合,CPLD逻辑器件将分次接收的高16bit数据与低16bit数据组合在一起,形成完整的32bit数据;
e-3).32bit数据的写入,CPLD逻辑器将完整的32bit数据写入PEX8311芯片中;
从PCI-E桥接控制器读取数据包括以下步骤:
e-4).32bit数据的分次读取,将32bit数据的高16bit存入CPLD逻辑器件的暂存器中,而将低16bit数据直接读回CY7C68013A内;
e-5).32bit数据的组合,CY7C68013A从CPLD逻辑器件中读取暂存的高16bit数据,低16bit位数据、高16bit位数据组合为完整的32bit数据。
f).配置绕开UMA地址段,绕开目标计算机内存中的UpperMemoryArea地址段,获取目标计算机的内存数据;
g).采用DMA模式传输数据,PCI-E桥接控制器通过PCIExpress总线获取目标计算机的内存数据,以PCI-E桥接控制器为总线上的主机、USB控制器为从机,在DMA模式下通过USB控制器将内存数据发送至取证计算机;
DMA模式传输可实现PCIExpress接口至USB接口数据的直接传输,PCI-E控制器将数据写入USB控制器的输入输出队列,并且根据输入输出队列的满状态确定是否可以继续写入。
h).内存数据分析,取证计算机对获取的内存数据进行校验和分析。
取证计算机获得的内存数据为二进制文件,该步骤中的校验方法为哈希校验。
本发明基于PCIExpress总线技术和操作***在特定情况下可开放DMA的特点,借助于I/O设备的DMA数据传输方式、各种操作***的基本配置和即插即用功能,通过DMA的方式实现对目标计算机物理内存的访问,将所读取的物理内存数据包通过通用USB接口1发送至取证计算机,在对目标计算机内存改动很小的情况下实现内存数据的获取,并具有读写4G以上物理内存的能力。