郑清安,黄云峰
(福建警察学院 计算机与信息安全管理系,福建 福州 350007)
2012年3月14日,最新修订的刑事诉讼法新增了一种证据种类“电子数据”,自此,电子数据作为独立的一种证据种类可以在法庭上呈现[1]。为了保证取证所获取的电子数据的客观性、完整性、合法性,取证人员在提取电子数据的过程中所采取的方法手段恰当与否非常关键,它将直接影响后续的取证分析环节及电子证据的司法有效性,对电子证据被采纳具有重要影响[2]。因此,对于前期电子数据的获取固定研究具有重要意义。
目前,对于电子数据的获取固定常见方式有两种:一种是直接对可拆机取出的物理磁盘使用硬盘复制机或者只读锁配合磁盘镜像工具、综合取证软件等专用设备来获取磁盘镜像副本;另一种是在无法拆机或者使用硬盘复制机和只读锁无法获取数据的情况下,通过取证专用的启动光盘、启动U盘等软件来启动目标机器,获取目标存储介质中的数据。拆机获取数据的方法相对成熟,只要取出物理硬盘,大多数情况都可以通过取证设备获取硬盘镜像副本,但也有例外。如随着硬盘技术的快速发展,对于一些特殊定制的硬盘接口,取证设备中还没有对应的转换器,以致无法完成数据获取。另外,有些一体化的机器也不容易拆卸,有时受取证时间紧、机器被物理锁定等客观条件的约束也不可能去拆卸。在这种情况下,通过取证专用启动盘来启动机器获取数据成为取证人员的首要选择。
当前,常见的取证专用启动盘有WinFE、Helix、Kali Linux、PALADIN、DEFT、CAINE等,使用这些基于预安装环境(Pre-installation Environment,PE系统)的专用取证系统来获取存储介质中的数据,在技术层面上防止了原始数据因提取检验而被更改或破坏的发生,保证了所收集数据的客观性。但是,取证专用启动盘在使用可靠性、兼容性和可扩展性方面,还存在诸多问题亟待解决。
(1)Helix、Kali Linux、PALADIN、DEFT、CAINE是以Ubuntu的Linux PE系统为基础环境开发的取证系统,对于国内软件多数基于Windows平台开发的综合取证工具无法兼容。
(2)WinFE是基于Windows PE[3]系统改进的,只支持运行基于Windows系统环境开发的取证工具软件,并且原生制作的WinFE启动盘只能在命令行提示符模式下操作,不支持图形用户界面。另外,对取证工具软件的增加修改,需要重新制作WinFE镜像,操作过程较为繁锁,使用上不够灵活,取证效率不高。
针对这些问题,由位晓晓等人提出了通过制作WinPE的启动U盘,快速提取电脑使用的系统信息和使用痕迹信息,而对于WinPE系统启动加载涉案盘可能对涉案盘数据产生的影响并未涉及[4]。陈明金分析了免拆机取证技术的发展状况,提到了WinFE系统环境可保证不对源盘进行改动,从而保证所获取数据的司法有效性,但并未提及具体原理方法[5]。其他的相关研究多数集中在基于WinPE系统的U盘量产制作方面,例如,顾超捷等人研究通过USB-CD和USB-ZIP两种启动模式,实现具有WinPE系统的U盘启动功能的量产[6]。以上这些方法普遍受制于各自应用的局限性,很难在取证时兼顾所获取的数据的司法有效性、可靠性和启动盘的兼容性、易用性、可扩展性。因此,本文通过分析制作WinFE系统保证司法有效性的核心原理,提出对原生制作的WinFE系统进行优化,并通过分析系统启动引导磁盘的机制,探讨对U盘进行分区,将优化后的WinFE系统写入到U盘隐藏分区制作成可启动U盘。实验测试表明,改进后的WinFE系统U盘启动盘在保证司法有效性的同时,其易用性、可靠性、兼容性和可扩展性方面明显提高。
WinFE的全称是Windows Forensic Environment,是2008年微软公司的研究人员Troy Larson开发的一款专用于电子数据取证领域进行数据获取和分析的Windows PE系统。基于Windows PE系统的WinFE装载在存储介质中默认设置为只读,其工作原理类似于Linux系统的LiveCD,启动时不自动挂载任何存储介质[7]。与Linux的LiveCD不同的是,WinFE可以运行基于Windows系统环境的取证工具软件。因此,所有基于Windows平台开发的综合取证工具软件以及常见的便携式工具都可以在WinFE上运行。
WinFE的整个制作工作流程如图1所示[8]。
图1 WinFE制作工作流程
WinFE制作的具体关键环节在于以下几点:
(1)使用AIK命令拷贝WinPE的主要文件到WinFE文件夹,挂载boot.wim镜像文件修改配置系统环境。
(2)修改模板镜像文件中的注册表的两个键值,使得整个系统符合取证环境的需要。
①使用RegEdit加载WinFE中的注册表文件SYSTEM,配置单元命名为WinFE,在注册表“HKEY_LOCAL_MACHINEWinFEControlSet001servicesmountmgr”下创建一个DWORD(32)的类型项,键名为NoAutoMount,键值设置为1,这个键值的作用是Mount-Manager服务不会自动挂载任何存储设备。
②在“HKEY_LOCAL_MACHINEsystemControlSet001ServicespartmgrParameters”下有一个键为“SanPolicy”,这个键原值为1,将它修改为3或者4,其中1表示全部联机,3表示全部脱机,4表示内部脱机,即只有内置磁盘是脱机的。之所以要脱机是因为一旦联机,磁盘属性变成可写状态,在可写的状态下系统挂载卷时会向磁盘写入4字节的标签代码,从而破坏磁盘的原始性。对于取证来说,这是一个潜在的改变检测数据的风险,虽然还没有证明这些数据是有影响的,但是通过对整个物理磁盘校验哈希值,发现这个数值已经发生改变,所以取证环境下不能直接挂载需要取证的磁盘。
(3)添加常用的取证工具软件,通常是添加不需要安装、可以移植运行的应用程序,如命令行应用程序Garner Forensic Acquisition Utilities、NTI Suite、Sysinternals、Maresware applications、FTK Imager Lite、X-Ways Forensics等。取证人员可根据使用习惯和特长将取证所需工具拷贝到事先创建的文件夹WinFETools下,随时调用。
(4)添加驱动程序,通常根据需要可以将通用或特定的视频驱动程序、RAID驱动程序和其他特定于硬件的驱动程序添加至镜像中。使用的AIK命令示例如下:
peimg.exe /inf=C:drivers*.inf C:winFEmountWindows
(5)使用AIK命令创建ISO镜像,将ISO文件刻录至光盘。
WinFE系统一般可以刻录成启动光盘,通过可启动光盘可以直接引导启动被检计算机,其最大的优点是通过修改注册表键值,不自动挂载存储设备和使磁盘处于脱机状态,保证了被取证对象磁盘数据的客观性。然而WinFE实际操作起来也有明显的局限性。
(1)WinFE默认启动操作界面是命令行提示符模式,对多任务的操作要来回切换,操作麻烦,没有图形界面直观,取证效率不高。虽然可以通过添加第三方的GUI菜单管理应用程序一定程度上解决这个问题,但实际操作过程中稳定性并不高。
(2)对WinFE启动盘的任何改动,例如要再次添加、更新、修改取证工具软件等,即使该软件是可移植运行的免安装程序,都必须重新制作WinFE镜像,操作过程较为繁锁。
关于Windows PE系统的研究,技术层面上有许多成熟的应用解决方案[9],由于WinFE本身是基于Windows PE系统改进而来的,针对WinFE系统的局限性问题,理论上都可以通过对Windows PE系统进行进一步改进,进而应用于WinFE系统解决相关问题。下面从WinFE系统的制作优化以及刻录到U盘使用,探讨WinFE电子数据取证启动盘的改进方案。
2.1.1 增加图形化界面
对于WinFE系统默认启动没有图形用户界面的问题,其原因在于制作时并没有考虑到用户交互的问题,启动时默认使用命令提示符cmd.exe来操作系统进行交互。针对这个问题,解决思路是通过在系统启动时直接添加Windows Explorer作为默认的命令解析器与操作系统进行交互,具体操作方法有以下两种。
(1) 修改WinFE的原始镜像文件boot.wim,手动添加操作系统的资源管理器Explorer。
其主要操作步骤为:
①修改WinFE的SOFTWARE注册表权限等配置,获取完整的SOFTWARE注册表文件。
②更改启动时调用的命令解析器,将SOFTWARE注册表路径为MicrosoftWindows NTCurrentVersionWinlogon下的“Shell”=“cmd.exe /k start cmd.exe”改成“Shell”=“explorer.exe”Shell。
③从install.wim中拷贝资源管理器运行所需要的系列文件到boot.wim中相对应的位置,保存修改并重新打包boot.wim,按图1WinFE制作工作流程操作,创建新的ISO镜像文件。
(2)使用具有图形用户界面的Windows PE系统作为样本,提取其中的boot.wim镜像文件作为源文件,按照图1 WinFE制作工作流程,从具体关键环节的步骤(2)修改注册表的两个键值开始操作,创建新的WinFE系统。其中,具有图形用户界面的Windows PE系统可以通过WinPE系统的制作工具Winbuilder定制创建[10]。
2.1.2 增加磁盘保护锁
出于对获取数据司法有效性的考虑[11],WinFE系统不会自动挂载存储设备,系统启动时,默认配置取证对象磁盘不联机,要对磁盘进行在线检验分析必须联机挂载磁盘。有实验研究表明,联机挂载非Windows操作系统的磁盘时,WinFE会在磁盘偏移位置Ox1B8处写入4个字节的数据,用于标记Windows驱动器签名,通过只读方式挂载卷“volume”时将会向磁盘偏移位置Ox417处写入控制代码。虽然这些并非用户创建的数据,其行为是可以预见和解释的,但是为了更好地保护磁盘数据,预防潜在的可能改变检测数据的风险,增加磁盘保护锁工具显得十分必要。磁盘保护锁是一个简易的免安装应用程序,例如Clin Ramsden等人研发的开源程序WinFE Write Protect Tool,其主要功能为精确控制磁盘的只读、读写、挂载、卸载等操作,保证在线检验分析时所获取数据的可靠性。将WinFE Write Protect Tool封装到WinFE系统,按照图1 WinFE制作工作流程,从具体关键环节的步骤(3)添加常用的取证工具软件开始操作,添加此应用程序并配置程序随WinFE系统开机启动。
WinFE系统添加新的取证工具软件必须重新制作镜像,主要原因是整个系统镜像是一个封闭的只读空间,把WinFE系统刻录到光盘,由于光盘不可分区,无法扩展出可利用的闲置空间,因此,每次新增数据必须重新封装镜像。如果将WinFE系统刻录到U盘,充分利用U盘的可分区功能,将U盘划出的部分专用空间去装载WinFE系统镜像,并模拟成启动盘,剩余空间当成普通存储使用,很大程度上能够避免新增软件带来的重复制作镜像问题。如此一来,需要往系统中添加新的取证工具软件、文档等,只须简单移动复制至U盘闲置存储区即可,另外,在取证分析时所获取的数据也可以临时存放在闲置存储空间,对于取证来说充分地利用了U盘的存储空间。
此类启动盘的制作如同制作主流的U盘Windows PE维护系统一样,基本原理是基于计算机系统的引导机制。计算机系统的引导过程,根据配置模式分为Legacy BIOS和UEFI两种,具体流程如图2所示[12]。
图2 系统启动引导过程
传统的BIOS启动过程中,BIOS自检硬件正常后,按照主板CMOS中设置的设备启动顺序检测可用的启动设备,当检测到有符合要求的启动设备后,BIOS将控制权交给该启动设备的MBR。MBR位于磁盘设备的0柱面0磁头1扇区占用512字节空间,其中包含446字节的引导加载程序,64字节的硬盘分区表DPT,及结束标志"55AA"。MBR获得控制权后,其中的引导加载程序会根据硬盘分区表找到硬盘上的可引导分区,将控制权转交给分区PBR,然后调用对应的启动管理器NTLDR或BOOTMGR或GRLDR,最终进入系统。相对传统BIOS引导启动方式,UEFI方式引导减少了BIOS自检环节,其余过程类似。
通过对计算机系统的引导过程分析可知,要成功引导操作系统,关键点是要找到驱动器硬件设备,并且驱动器上要有正确的MBRPBR(或EFI SHELL)、启动管理器等信息,可以引导启动操作系统。根据此原理,通过对U盘进行分区的方法,将WinFE电子数据取证系统装载进U盘,针对计算机的不同启动引导模式,合理规划设计系统启动引导文件、镜像文件的存放位置,以期提升启动盘实际应用的安全性、灵活性及兼容性。下面分别阐述对U盘进行二分区和三分区的方法。
2.2.1 二分区法
二分区法的启动盘结构如图3所示,它将U盘划分成两个区,前端为隐藏分区,后端为可见分区。由于不管U盘有几个分区,Windows系统最多只识别一个U盘分区,默认识别排列靠前的分区,因此后端分区自动会被隐藏。为了能够充分利用U盘空间,将前端分区设置为隐藏活动分区,使得后端分区可以被Windows系统识别,同时让U盘默认从隐藏活动分区引导启动系统。将系统启动引导文件和WinFE系统镜像存放到隐藏分区,与可见分区隔离,更好地保护了启动引导文件和WinFE系统镜像文件安全。如果是传统BIOS引导方式启动,计算机就可以按启动原理顺序通过访问MBR-DRB-BOOTMGR-WinFE系统文件来引导取证启动盘。如果要兼容UEFI引导方式启动,那么隐藏分区应格式化为FAT格式的文件系统类型,然后写入EFI启动引导文件和支持UEFI引导的WinFE系统镜像,计算机才能够正常引导取证启动盘。
图3 WinFE启动盘二分区结构
实现步骤:
(1)准备好上节改进制作好的WinFE取证系统镜像文件WinFE.ISO及U盘。
(2)将U盘初始格式化为单个分区。
(3)使用软碟通UltraISO工具加载WinFE.ISO,点击菜单启动-写入硬盘映像,选择对应的U盘,以USB-HDD方式写入,创建隐藏启动分区。
(4)根据实际情况可重新格式化可见分区为NTFS或者FAT32。
(5)测试启动盘。
2.2.2 三分区法
除了二分区法外,还可以使用三分区法进一步提升启动盘的兼容性。三分区法的启动盘结构如图4所示,它与二分区法的区别在于它将兼容UEFI引导方式启动所需的文件独立存放于高端分区即UEFI隐藏分区。这种改进方式可以对独立分区的文件系统格式采用最佳的类型,如UEFI隐藏分区采用FAT16格式,使得不论是传统BIOS方式还是UEFI方式引导,系统都能根据独立存放的引导文件引导计算机启动,很大程度上提升了启动盘的兼容性。
图4 WinFE启动盘三分区结构
实现步骤:
(1)准备好上节改进制作好的WinFE取证系统镜像文件WinFE.ISO及U盘。
(2)将U盘初始格式化为单个分区。
(3)使用启动U盘制作工具FbinstTool格式化U盘,分配部分空间建立UD隐藏分区,将系统镜像文件WinFE.ISO导入到此分区,编辑Grldr菜单,添加引导WinFE取证系统的语句:
title 01 WinFE
map (ud)/WinFE.iso (0xff)
map --hook
chainloader (0xff)
(4)使用分区工具DiskGenius将剩余的U盘空间划分成两个分区,其中前端的分区空间可见,可以根据需要格式化为NTFS或者FAT32,后端的UEFI分区格式化为FAT16,由于Windows系统只识别第一个U盘分区,因此默认UEFI分区逻辑上不可见,支持UEFI启动的WinFE系统文件暂时无法存放进去。
(5)通过FbinstTool工具菜单的“启动设置-分区表”窗口调整分区表顺序,将UEFI分区序号调整为0,保存设置,此时Windows系统将识别到UEFI分区。
(6)解压支持UEFI启动的WinFE系统文件到UEFI分区,再通过FbinstTool工具菜单的“启动设置-分区表”窗口恢复调整前的分区表顺序,隐藏UEFI分区。
(7)测试启动盘。
使用VMware虚拟机分别加载制作好的原始WinFE系统和优化后的WinFE系统镜像文件,均可正常启动系统运行取证工具,优化前后系统差异如表1所示,显然图形界面操作更为直观,操作可靠性更强,运行取证程序及进行多任务操作取证效率更高。
表1 优化前后对比
分别将优化后的WinFE系统镜像刻录到750 M光盘和64 G U盘,其中U盘前后分别采用二分区法和三分区法制作。实验测试计算机为联想台机式启天M4650,分别配置计算机启动模式为Legacy BIOS和UEFI,设置正确的启动顺序,测试制作好的光盘和U盘。从安全性、兼容性、可扩展性三个方面设置主要观察点对启动盘进行评估,其中安全性方面考察取证系统本身是否可能被篡改,兼容性方面考察启动盘是否对BIOS和UEFI两种启动模式都兼容,可扩展性方面考察额外存储空间的利用和新增取证工具的易操作性,具体观察点比较如表2所示。
表2 观察点比较
从表2中可以看出,由于U盘有不计次数的可擦写性能,其重复利用率更高,而光盘多数为一次或者有限次的擦写且易磨损,从实用性和可靠性角度来说,U盘优于光盘。U盘分区法在保证安全性的同时明显对UEFI有更好的兼容性,在剩余空间的利用上也更加灵活,新增取证工具时只需要将文件拷贝到可见存储区,启动进入取证系统时即可随时调用,无需重新压缩制作镜像。实验表明,相较于光盘启动盘,基于U盘分区的WinFE系统启动盘在实用性、可靠性、兼容性、可扩展性方面具有明显的优势。
WinFE系统启动盘在特定场景下具有一定的应用价值,特别是在取证时间要求比较紧,所获取的数据对时间敏感性比较强的时候,其可靠性、兼容性、可扩展性功能至关重要。本文所做的对WinFE系统优化和制作改良,在底层逻辑上保障司法有效性的同时提升了取证效率,具有一定的应用价值。随着取证技术的发展,针对WinFE系统取证启动盘的改进还需更深入地研究,例如完善WinFE系统底层驱动提升对不同品牌计算机的兼容度、开发驱动层级别的写保护控制程序进一步提高可靠性等。