第3章〓Windows操作系统取证实训

电子数据主要存储在计算机中,Windows目前是在普通用户的计算机上使用最广泛的操作系统,占据了中国绝大多数个人计算机用户的操作系统市场,因此针对Windows系统的电子数据取证始终是电子取证研究方向的主流。基于Windows系统的计算机中可能包含着与犯罪事件相关的重要数据。这些数据隐藏在计算机的深处,如用户身份、犯罪记录、不良数据等信息。本章通过相关的实验,读者能够掌握Windows操作系统中重要数据的存放位置和主要的取证方法。

3.1易失性数据提取
3.1.1预备知识: 易失性数据

一般来说,从计算机证据的时态性分类,可将计算机证据分为两种: 持久性数据和易失性数据。持久性数据是储存在本地硬盘上的数据,当计算机关闭时会保存下来。易失性数据是当电脑断电或关闭时,会丢失的数据。传统的取证调查方法是在存储介质上进行事后检查,即将可疑的计算机接上电源以后再进行数字证据的搜索与获取。但是,随着硬盘加密技术,反取证工具与技术的不断发展,以及内存容量的不断扩展,传统的事后取证方法会导致丢失包含在易失性数据中的有价值的证据,而这些数据对于确定计算机犯罪活动往往是十分重要的。易失性数据驻留在注册表的缓存和随机访问内存(RAM)中,对易失性数据的调查称为“实时取证”。

易失性数据主要包含: 

(1) 描述计算机基本配置信息的系统概要文件。如: 计算机操作系统的版本、型号、安装时间、系统目录、系统注册用户、物理内存、安装的硬件及其配置和安装的应用软件等。

(2) 网络连接状况及路由信息。

(3) 当前系统的日期、时间等记录。

(4) 计算机从上一次启动到现在一共运行的时间,用于确定收集的易失性数据是否具有一定的价值。

(5) 当前系统运行的进程列表,可能会发现一些恶意进程、未授权的软件及已终止的合法进程。

(6) 登录用户最近的活动记录。

(7) 启动文件和剪贴板中的数据等。

在涉网案件的现场勘验过程中,应该首先处理会很快消失的电子数据,即易失性数据。

3.1.2实验目的与条件
1.  实验目的

通过本实验,读者在了解了电子数据取证的基本流程及规范的基础上,熟悉计算机中易失性数据的种类,掌握使用常用软件工具,进行涉网案件现场易失性数据提取的常用方法和注意点。

2.  实验条件

本实验所需要的软硬件清单如表31所示。


表31易失性数据提取实验清单






序号设备数量参数


1取证工作站1台Windows XP以上
2工具U盘(内含一些软件)1个包含绿色版工具 
3屏幕录像机(oCam).exe
1个绿色版
4MD5.exe1个绿色版
5clipbrd.exe1个绿色版
6DumpIt.exe1个绿色版
7systeminfo.exe1个绿色版


3.1.3实验过程

在取证过程中,首先要准备一个专用的取证工具U盘,如E盘,里面包含常用的取证工具,如cmd.exe、MD5Checker.exe、systeminfo.exe、DumpIt.exe等。然后按下面的方法进行数据的收集,最后将所有数据都保存到工具U盘中。

步骤1: 将手表或手机时间界面置于计算机前方,对照计算机右下角时间信息进行拍照,完成计算机时间信息提取。

步骤2: 插入U盘,运行U盘中的绿色版屏幕录像软件,打开软件设置,将后续快照、录像文件保存路径修改为该U盘,如图31所示。



图31修改生成文件的保存路径

步骤3: 单击录制按钮对后续电脑操作进行全程录像和截屏保存。

注意: 操作过程中不能在硬盘上进行写入或修改操作,不得将生成、提取的数据存储在原始存储媒介中,不得在目标系统中安装新的应用程序。

步骤4: 在U盘中新建文件夹,分别存放内存提取文件、屏幕信息提取文件、硬盘及操作系统信息文件、正在运行有密码保护的文件、录屏及摄像文件等,如图32所示。




图32在U盘中新建文件夹


步骤5: 打开U盘中的内存提取工具,将获取的内存保存在U盘相应文件夹中,如图33所示。




图33获取计算机运行内存


步骤6: 查看硬盘分区状况、文件显示属性、网络连接信息等,并进行录屏和截屏,保存在U盘相应文件夹中,部分如图34、图35所示。




图34获取硬盘分区状况





图35获取网络连接状态信息


步骤7: 用录像和截图软件进行屏幕信息提取,提取打开的文件信息,并保存在U盘相应文件夹中,如图36所示。

步骤8: 运行U盘中的粘贴板查看器,提取粘贴板信息,并保存在U盘相应文件夹中,如图37所示。

步骤9: 提取浏览器、网页相关信息,并保存在U盘相应文件夹中。

步骤10: 对正在运行的有密码保护的数据,如微信、QQ、邮箱、网银、支付宝等,进行相关备份文件提取,并将其保存到U盘相应文件夹中,如图38所示。

步骤11: 将录屏文件、摄像录屏文件保存在U盘相应文件夹中,如图39所示。



图36提取打开的文件信息




图37提取粘贴板信息




图38提取微信备份文件



图39保存录屏及摄像文件



步骤12: 使用U盘中的MD5工具,对录屏文件及所有提取的电子数据进行哈希值计算,记录文件类型、用户名、密码、路径来源及哈希值,如图310所示。




图310哈希值计算


注意: 易失性数据提取完成后,对于保存数据信息的专用存储介质和现场录像等,进行唯一性编号并封存。

3.1.4实验小结

传统的在计算机犯罪中所使用的取证流程大多数为关闭涉案计算机后,使用即插即用设备按字节流完全复制计算机的磁盘数据建立磁盘镜像,然后在实验室中对镜像数据进行事后分析。然而,随着计算机硬件水平的不断发展,大容量的内存广泛被使用,同时各种加密与反取证技术的出现,导致在这样传统的取证过程中损失了大量有价值的信息。

计算机的易失性数据中可能包含关于犯罪行为的关键性信息,如用来加密信息所使用的密码,系统在犯罪行为发生过程中的状态,使用反取证工具的痕迹以及一些调查者在分析硬盘数据过程中容易忽略的至关重要的恶意软件或系统级后门程序等相关信息。所以近年来针对计算机易失性数据的取证分析工作越来越受到司法界和计算机安全专家的重视。

传统上一般将获取易失性数据的方法分为两类: 一类基于硬件设备实现; 另一类基于软件方法实现。硬件设备获取内存镜像被业界广泛认为具有更高的安全性和可靠性,而软件运行时必然会导致内存中部分数据发生变化,可能会影响到获得的内存镜像的完整性。虽然相较而言,硬件获取方式比软件更可靠,但由于软件方式使用方便、成本低,故仍然被广泛使用。本实验考虑通用性和实践操作性,选用软件方式为例进行易失性数据提取。

在实验的过程中,要注意强调操作的规范性,如录屏、哈希校验等,否则即使提取到相关重要涉案数据,也会面临证据失效的风险。

3.2内存的获取与分析
3.2.1预备知识: 内存取证、DumpIt工具、Volatility工具
1.  内存取证

网络攻击内存化和网络犯罪隐遁化,使得部分关键数字证据只存在于物理内存或暂存于页面交换文件中,这使得传统的基于文件系统的计算机取证不能有效应对。内存取证作为传统文件系统取证的重要补充,是计算机取证科学的重要组成部分,通过全面获取内存数据、详尽分析内存数据,并在此基础上提取与网络攻击或网络犯罪相关的数字证据。近年来,内存取证已赢得相关领域的持续关注,获得了长足的发展与广泛应用,在网络应急响应和网络犯罪调查中发挥着不可替代的作用。

内存取证(有时称为内存分析)是指对计算机内存转储中易失性数据进行的一种分析。信息安全专业人员可以通过内存取证,来调查和识别那些不会在硬盘驱动器数据中留下痕迹的攻击或恶意行为。通过内存取证,安全专业人员可以了解运行时的各种系统活动,例如开放的网络连接或最近执行的命令和进程等。程序在计算机上运行之前,首先需要被加载到内存中,这使得内存取证变得非常重要——这意味着所有被创建、检查或删除的程序或数据都将被保存到RAM中。其中包括图像、所有Web浏览活动、加密密钥、网络连接或注入的代码片段。在许多情况下,某些证据只能在RAM中找到,例如在崩溃期间存在的开放网络连接。由于攻击者可以开发只驻留在内存中而不在硬盘落地的恶意软件,从而使标准的计算机取证方法几乎看不到该恶意软件,这使得内存取证变得愈发重要。

内存取证研究的首要问题是如何完整地获取内存数据。目前,获取物理内存数据的方法很多,一般利用操作系统的相关机制和特性,通过不同方法获取物理内存数据。这些方法可概括为两大类: 基于硬件的内存获取和基于软件的内存获取。在获取了内存数据之后,就需要对其进行深度分析,解析、重建出内存数据中所蕴含的网络攻击和网络犯罪证据信息。传统的内存数据分析主要采用字符串搜索方法,通过搜索内存中用户名、口令、IP地址等文本字符串,获取部分取证辅助信息。尽管该方法操作简单、使用方便,能够提取部分内存信息,但却不能有效分析与网络攻击和网络犯罪相关的进程、注册表、解密密钥、网络连接、可执行文件、系统状态等信息。为了全面地进行内存数据分析,需依据操作系统内核数据结构和相关机制去解析与重建内存数据所蕴含的信息,进而提取相关网络攻击和网络犯罪证据。目前的内存分析内容大致可以分为6种: ①进程信息分析; ②注册表信息分析; ③密钥恢复分析; ④网络连接分析; ⑤可执行文件分析; ⑥系统状态信息分析。

内存取证作为计算机取证科学的一个重要分支,在预防网络攻击、调查网络犯罪等方面有重要且不可替代的作用和应用前景,已成为信息安全研究者所关注的热点研究领域。

2.  DumpIt工具

不同的操作系统需要用到不同的物理内存获取工具,此外在获取物理内存数据时还需尽量减少对原有内存数据的覆盖,最大程度提取出内存数据。MoonSols DumpIt是一款同时支持Windows32dd和Windows64dd的内存副本获取工具。用户只需双击DumpIt.exe即可执行程序,在提示问题后面输入y,等待几分钟时间即可在当前目录下生成主机物理内存的副本,该副本文件是以*.raw为后缀的镜像文件。raw是未经处理的意思,使用该工具对物理内存进行复制是逐位进行深度复制,即按原样进行复制,这样可以避免丢失一些重要数据。

3.  Volatility工具

在最初研究内存取证的阶段使用的工具的主要功能是打开二进制(十六进制)文件,查看具体地址及内容,比如WinHex工具。WinHex可以打开内存dump文件并查看相应的地址和内容,一般采用字符串搜索的方式。除此之外微软公司还提供了用于Windows操作系统的debug工具(Microsoft Debugging Tools for Windows)。Windows debug工具是一个包含了一系列功能的工具集,其中某些小工具能十分简便地帮助进行取证工作,比如打开Windows崩溃的dump文件。

2008年,内存取证领域有了一定的发展并出现了一个集合了其他各种内存取证工具的取证框架工具Volatility。Volatility是一款基于GNU协议的开源框架,使用Python语言编写而成,可以分析内存中的各种数据。Volatility各项功能都是由插件实现的,各地的取证研究者可以根据自己的需要开发Volatility的插件来拓展其功能。Volatility支持对32位或64位Windows、Linux、macOS、安卓操作系统的RAM(随机存储器)数据进行提取与分析。

Volatility是以命令提示符方式使用的,所以同DOS下面的命令一样,Volatility的开发人员也同样为我们提供了使用该工具的帮助命令。即通过h或help选项可以显示该工具的帮助列表信息。该命令显示了可用的命令选项(Options)以及支持当前操作系统版本的插件命令(Supported Plugins Command)。

例如f FILENAME选项的功能是说明打开一个镜像文件所使用的文件名,这个命令选项几乎在所有命令中都会用到。

Volatility的命令格式如下: 

volatility -f <文件名> -–profile=<配置文件> <插件> [插件参数]


Volatility常用插件如下: 

① imageinfo:  显示目标镜像的摘要信息; 

② pslist:  列举出系统进程,但它不能检测到隐藏或者解链的进程,psscan可以; 

③ psscan:  可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程; 

④ pstree:  以树的形式查看进程列表; 

⑤ mendump:  提取出指定进程; 

⑥ filescan:  扫描所有的文件列表; 

⑦ hashdump:  查看当前操作系统中的password hash,例如Windows的SAM文件内容; 

⑧ svcscan:  扫描Windows的服务; 

⑨ connscan:  查看网络连接。

3.2.2实验目的与条件
1.  实验目的

通过本实验,读者可以掌握以下内容: 

(1) 了解内存的基本概念和内存中常见的有价值的数据; 

(2) 掌握物理内存的获取方法; 

(3) 掌握使用Volatility工具进行内存分析的方法。

2.  实验条件

本实验所需要的软硬件清单如表32所示。


表32内存取证实验清单






序号设备数量参数


1取证工作站1台Windows XP以上
2DumpIt软件1个无
3Volatility软件1个绿色版


3.2.3实验过程

步骤1: 双击DumpIt.exe可执行程序,在提示问题后面输入y(如图311所示),等待几分钟时间即可在当前目录下生成主机物理内存的副本,该文件是以*.raw为后缀的镜像文件。



图311内存获取


注意: 此步骤一般在3.1节现场勘验易失性数据提取环节完成。

步骤2: 将步骤1中获取的内存镜像文件与Volatility工具放于同一级目录下。打开cmd命令行工具,进入该级目录下。

步骤3: 使用imageinfo命令查看正在分析的内存样本的摘要信息,命令格式如下: 

volatility -f victor_PC_memdump.dmp imageinfo


该命令可以显示主机所使用的操作系统版本、服务包以及硬件结构(32位或64位)、页目录表的起始地址和获取该内存镜像的时间等基本信息。该命令的输出结果如图312所示。




图312imageinfo命令


Win7SP1x64表明操作系统版本为Windows 7、服务包为SP1、硬件结构是x64(即64位)。其他信息和取证关系不大。

步骤4: 使用pslist命令和psscan命令查看进程信息,查看是否有明显可疑的进程在运行。

注意: pslist命令不能检测到内存中的隐藏进程以及由于系统受攻击导致未在链表中出现的进程信息,但psscan命令能够解决这个问题。

所以,本实验使用psscan命令查看内存进程信息,其运行结果如图313所示。由于该命令输出结果较多,我们通过psscan.txt将其输出结果重定向到psscan.txt文件中。




图313psscan命令


步骤5: 使用dlllist命令显示一个进程装载的动态链接库的信息,使用p PID选项过滤输出结果,比如想要查看PID为5204的firefox.exe进程在运行过程中加载了哪些动态链接库,就可以通过在dlllist后面加上选项p 5204,即可显示其详细信息,显示列表主要包括加载的动态链接库文件的基地址、文件大小以及文件所在路径,如图314所示。

步骤6: 使用netscan命令来列出所有进程连接的网络,如图315所示。

步骤7: 使用hivelist命令定位与硬盘上对应的注册表文件在内存中的虚拟地址和物理地址。hivelist命令运行结果如图316所示。



图314dlllist命令




图315netscant命令




图316hivelist命令



从运行结果可以发现,SECURITY注册表文件在内存中的虚拟地址是0xfffff8a000110010,SYSTEM注册表文件在内存中的虚拟地址是0xfffff8a000024010,这两个值我们稍后马上会用到。

步骤8: 使用lsadump命令读取注册表中与本地授权相关的数据。使用该命令的时候,需要把步骤7中得到的SYSTEM注册表的虚拟地址作为y选项的参数,SECURITY注册表文件的虚拟地址作为s选项的参数,lsa命令及其运行结果如图317、图318所示。




图317lsa命令





图318lsa命令运行结果


从部分运行结果可以看见两条有用信息: 第一处下画线的地方显示的是本地主机Administrator用户的密码: it19891004(这也确实是电脑的开机密码); 第二处下画线的地方显示的15340529109@cqupt正好是登录NetKeeper连接互联网所使用的账号名称。当然,这只是部分与lsa相关的账户和密码信息,更多的信息还有待进一步挖掘。

步骤9: 获取SAM表中所有的用户,输出结果如图319所示。

命令格式如下: volatility f victor_PC_memdump.dmp profile=Win7SP1x64 printkey K "SAM\Domains\Account\Users\Names"




图319获取用户列表


步骤10: 使用hashdump命令获取注册表中用户密码的哈希值,具体运行结果如图320所示,下一步可使用哈希密码破解工具尝试破解密码。

命令格式如下: hashdump y (system的virtual地址) s (sam的virtual地址)




图320用户密码哈希值


步骤11: 使用filescan命令获取当前所有的文件列表,如图321所示。




图321文件列表


3.2.4实验小结

内存取证作为计算机取证科学的一个重要分支,在网络攻击、网络犯罪调查等方面有重要且不可替代的作用和应用前景,已成为信息安全研究者所关注的热点研究领域。本实验旨在让读者掌握基本的内存数据获取与分析方法。除了掌握常见的Volatility命令外,更重要的是具备一定的侦查思维,读者可多选取几个内存样本进行分析,尤其是开源的问题样本,分析的方式和思路参照但不局限于本实验。

3.3注册表分析取证
3.3.1预备知识: 注册表
1.  注册表基础知识

注册表是Windows系统存储关于计算机配置信息的中央数据库,在系统中起着核心作用,存放有计算机硬件和软件的配置信息、应用软件和文档文件的关联关系以及各种网络状态信息和其他数据,可以说计算机上所有针对硬件、软件、网络的操作都是源于注册表的。同时它也是一个信息丰富的证据库,所以对电子数据取证非常重要。电子数据取证中,很多证据都是直接来源于注册表的,例如用户账号、访问记录、软件的运行历史等都是取证工作中非常重要的信息。因此,正确提取注册表中的有效数据将对取证工作大有帮助。

早期的注册表是以ini为扩展名的文本文件的配置文件,从Windows 95操作系统开始,才逐渐形成了注册表,Windows NT是第一个从系统级别广泛使用注册表的操作系统,并在其后的操作系统中继续沿用至今。

要了解注册表,首先打开注册表编辑器,用户可以通过“Win+R”键打开命令提示界面,输入regedit进入注册表编辑器,如图322、图323所示。




图322运行窗口打开注册表编辑器





图323注册表编辑器


在注册表编辑器左侧窗格的定位区域,每一个文件夹表示注册表中的项,项又包括子项和值项,项和子项的关系就像目录可以包含子目录一样。值项也称为键值,类似硬盘上的树状目录的末端文件,项和子项可以包括一个和多个值项。值项由名称、数据类型和数值三部分组成,其格式为: “名称: 类型: 数据”。

预定义项,是代表注册表中的主要部分的项,是指在注册表中以HKEY作为前缀的文件夹,位于注册表树状结构的最顶层。预定义项类似于硬盘上的根目录,Windows 2000/XP及以上的注册表编辑器中有五大预定义项,分别为: 

① HKEY_CLASSES_ROOT。

包含了启动应用程序所需的全部信息,包括文件扩展关联信息及OLE数据库,存储在这里的信息可确保使用Windows资源管理器打开文件时能打开正确的程序。

② HKEY_USERS。

包含了计算机上的所有以活动方式加载的用户信息(如用户在该系统中设置的口令、标识等)和默认配置文件,默认配置文件决定了没有人登录时,计算机如何响应。

③ HKEY_LOCAL_MACHINE。

包含了本地计算机的配置信息(用于任何用户),如软件、硬件及安全。

④ HKEY_CURRENT_USER。

包含了当前登录用户的配置信息。用户的文件夹、屏幕颜色和“控制面板”设置都存储在这里。

⑤ HKEY_CURRENT_CONFIG。

在启动过程中动态创建,包含系统启动时的硬件相关的配置信息。

配置单元是作为文件出现在系统注册表的一部分,位于HKEY_LOCAL_MACHINE和HKEY_USERS两个预定义项下,是项、子项和值的离散体,它位于注册表层的顶部。配置单元是一个文件,可以通过注册表编辑器中“加载配置单元”和“卸载配置单元”选项,从一个系统移动到另一个系统。

注册表配置单元是注册表中的一组项、子项和值,它有一组包含其数据备份的支持文件,如表33所示。配置单元(HKEY_CURRENT_USER除外)的支持文件都位于Windows\System32\Config文件夹中,包括SAM、Security、System、Software、Default,称为系统注册表文件,包含Hardware(硬件)、User Settings(用户配置)、Software(软件)、System configuration(系统配置等信息); HKEY_CURRENT_USER的支持文件位于Windows\Users\用户名文件夹中,包含NTUSER.DAT,称为用户注册表文件,每一个用户都有一个注册内容,能够记录用户活动的相关细节,是取证应该检查的关键内容。


表33配置单元文件





注册表配置单元相 关 文 件



HKEY_LOCAL_MACHINE\SAMSAM、SAM.log、SAM.sav
HKEY_LOCAL_MACHINE\SecuritySECURITY、Security.log、Security.sav
HKEY_LOCAL_MACHINE\SoftwareSOFTWARE、Software.log、Software.sav
HKEY_LOCAL_MACHINE\SystemSYSTEM、System.alt、System.log、System.sav
HKEY_USERS\DEFAULTDefault、Default.log、Default.sav
HKEY_CURRENT_CONFIGSystem、System.alt、System.log、System.sav、Ntuser.dat、Ntuser.dat.log


2.  注册表取证

注册表给取证人员提供了大量的系统配置信息和用户使用信息。通过分析注册表,可以提供一份详尽的嫌疑人计算机设备的简要报告,包括硬件配置、系统配置、使用者信息、用户账号、外置设备等。

常见的注册表取证分析项有: 

① 用户账户及安全设置(SAM/SECURITY)。

 用户账号/SID; 

 登录时间、登录次数; 

 最后登录时间等。

② 系统及软件信息(SYSTEM/SOFTWARE)。

 系统信息(OS版本、安装日期、最后关机时间等); 

 时区信息(Time Zone); 

 硬件信息/服务列表; 

 网络配置信息/共享文件夹信息; 

 应用程序运行痕迹记录; 

 USB设备使用记录等。

③ 用户相关信息(NTUSER.DAT)。

最近打开的文件记录(MRU,RecentDocs)。

3.3.2实验目的与条件
1.  实验目的

通过本实验,让读者在了解注册表基础知识和常见的注册表分析项的基础上,学会使用常见的注册表分析工具,掌握常用的注册表键值的取证方法。

2.  实验条件

本实验所需要的软硬件清单如表34所示。


表34注册表分析取证实验清单






序号设备数量参数


1取证工作站1台Windows XP以上
2U盘1个无
3WRR.exe1个无


3.3.3实验过程

读者在做此实验内容前,需要在自己的计算机上进行如下操作,作为实验素材。

① 在IE地址栏分别输入任意2个网址,并浏览查看。

② 单击“开始”→“运行”,分别执行regedit、msconfig、eventvwr命令。

③ 依次单击“开始”→“搜索”→“文件或文件夹”,并执行2次搜索任务(搜索内容自己定,例如可以搜索C盘所有bmp图片或者包含有***内容的文件)。

④ 打开并简单查看“**.pdf”。

⑤ 将U盘插入到自己的主机上。

1.  打开注册表编辑器查看相应注册表项内容

步骤1: 打开注册表编辑器中如下项,查看通过标准的文件“打开/保存”对话框所操作文件的历史记录(MRU为most recently used缩写),如图324所示。

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU

步骤2: 打开注册表编辑器中如下项,查看通过Windows资源管理器打开或者运行的最近的文件,如图325所示。

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs

步骤3: 打开注册表编辑器中如下项,查看通过“开始”→“运行”方式执行的命令,如图326所示。

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU

步骤4: 打开注册表编辑器中如下项,查看系统中安装的程序信息,如图327所示。

HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall

值得注意的是,运行于64位系统下的32位应用程序默认操作32位注册表项(即被重定向到WOW6432Node下的子项),而64位应用程序才是上述操作的直观子项。



图324最近使用文件列表1




图325最近使用文件列表2




图326cmd中运行命令的历史记录



图327安装的应用程序信息



步骤5: 打开注册表编辑器中如下项,查看32位应用程序(如WeChat)的相关信息,如图328所示。

HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall



图328安装的32位应用程序信息


步骤6: 打开注册表编辑器中如下项,查看自动运行的程序,如图329所示。

HKLM\Software\Microsoft\Windows\CurrentVersion\Run




图329自动运行的程序


步骤7: 打开注册表编辑器中如下项,查看浏览器地址栏中键入的URL地址和文件路径,如图330所示。

HKCU\Software\Microsoft\Internet Explorer\TypedURLs




图330浏览器地址栏中键入的URL地址和文件路径


步骤8: 打开注册表编辑器中如下项,查看计算机上曾经使用过的所有USB设备,如图331所示。

HKLM\SYSTEM\ControlSet001\Enum\USBSTOR




图331计算机上使用过的所有USB设备


步骤9: 打开注册表编辑器中如下项,查看计算机连接过的无线接入点的GUID列表,如图332所示。

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles



图332计算机连接过的无线接入点

步骤10: 打开注册表编辑器中如下项,查看每个接口的IP地址及相关信息,如图333所示。

HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces




图333每个接口的IP地址及相关信息


步骤11: 打开注册表编辑器中如下项,查看计算机连接的默认打印机信息,如图334所示。

HKU\S152120197800571784683038**********1001\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows



图334默认打印机


2.  使用WRR(Windows Registry Recovery)工具查看注册表文件

步骤1: 导出计算机中的注册表文件,包括SAM、Software、System等。

步骤2: 使用WRR工具打开注册表文件SAM,查看计算机中所有用户信息,如图335所示。

步骤3: 使用WRR工具打开注册表文件Software,查看计算机中安装的软件信息,包括操作系统信息,如图336、图337所示。

步骤4: 使用WRR工具打开注册表文件System,查看系统配置相关信息,如服务及驱动、网络配置、防火墙设置等,如图338、图339、图340所示。

其他信息操作类似,不再一一列出。



图335注册表文件SAM中用户信息




图336Software注册表文件中操作系统信息





图337Software注册表文件中安装软件信息




图338System注册表文件中服务及驱动信息




图339System注册表文件中网络配置信息




图340System注册表文件中防火墙设置信息


3.3.4实验小结

通过本次实验的学习,读者了解注册表不仅仅是一个用于存储Windows系统用户、硬件和软件的存储配置信息的数据库,更是计算机犯罪取证中的一个宝库。虽然常见的综合性取证软件大都集成了注册表分析功能,但仍存在很多信息需要取证人员结合案情手工分析。想要成为一名合格的计算机取证人员,必须要熟练运用和掌握注册表的相关知识。

3.4Windows事件日志取证
3.4.1预备知识: Windows事件日志
1.  Windows事件日志

从Microsoft Windows NT 3.5操作系统起,日志服务就一直存在于微软公司开发的Windows操作系统中。但是从Microsoft Windows NT 6.0操作系统(Windows Vista 与Windows Server 2008)开始,微软公司采用了一种全新的日志(EVTX日志)服务,EVTX由Windows事件查看器创建,包含Windows记录的事件列表,以专有的二进制XML格式保存。

Windows事件日志文件保存在C:\Windows\System32\winevt\Logs路径中,如图341所示。




图341Windows事件日志文件


核心的日志文件主要有三个,分别是: System.evtx、Application.evtx和Security.evtx,它们分别是系统日志、应用程序日志和安全日志。

(1) 系统日志: 系统日志记录系统进程和设备的驱动程序的活动。它输出的记录包括设备驱动程序是否启动失败,硬件是否自检出错,以及系统服务的开启、关闭、暂停。

(2) 应用程序日志: 记录普通的用户程序和一些商用程序在运行过程中出现的事件,它会输出自己记录的所有报错和需要用户知晓的信息。

(3) 安全日志: 记录系统的安全审计日志事件,比如登录事件、对象访问、进程追踪、特权调用、账号管理、策略变更等。安全日志也是取证中最常用到的,是处理入侵事件的重要武器,分析者需要查看和筛选这些文件中的信息从而发现蛛丝马迹。

三个文件的默认大小均为20480KB(20MB),当记录事件数据超过20MB时,系统将优先覆盖过期的日志记录,从头开始写入新的记录,也就是相当于一个循环记录的缓存文件。

2.  Windows事件日志的查看方式

查看Windows事件日志的标准方法是使用Windows系统自带的“事件查看器”(可以通过运行“eventvwr”来启动),如图342所示。



图342事件查看器


在事件查看器中,系统日志被分为Windows日志,应用程序和服务日志两大类,其中Windows日志包括了应用程序、安全、Setup、系统和Forwarded Events(转发事件)。

事件查看器可以将日志文件导出为evt、evtx、xml、txt和csv等格式,并导入其他系统的事件查看器进行浏览。因为日志文件格式在各个Windows NT版本中通用,所以调查人员也可以利用本地计算机的事件查看器远程连接其他计算机,以管理员权限查看浏览日志文件。调查人员可以利用事件查看器的“筛选”功能,显示特定时间类型和时间段的相关内容。

通过对Windows系统日志的取证分析,取证人员可以对操作系统、应用程序、服务、设备等操作行为记录通过关键的时间点进行回溯。



3.  常见的Windows事件日志分析

(1) 系统日志

系统日志可以捕获由系统自身产生的事件。任何自动执行的操作,或直接利用OS功能的用户驱动操作都会记入日志,包括软硬件安装、打印作业和网络层事件等。取证人员关注的系统事件常与案件的性质和被调查者的抗辩有关,常见的有: 

① 事件日志启动和停止。事件ID6005和ID6006代表日志服务的启动和停止,主动关闭日志服务的行为往往值得深入追查。

② 系统关机和重启。事件ID6008表示系统的一次意外关闭,ID6009则和系统重启相关。当发现ID6006后不久紧跟ID6009事件,通常可以认为是系统原因。事件ID1074显示引起系统关闭的进程,ID1076显示系统关闭的原因。

③ 登录失败。事件ID100表示一个已知账户的验证失败,调查中发现的这类事件,有可能是特定用户通过猜测密码或使用穷举等破解工具的线索。

④ 机器信息改变。事件ID6011表示系统名称改变,如果发现名称与现存信息不匹配,就要重点查找这个事件ID。

⑤ 打印。ID10显示的是打印作业和来源,以打印请求者用户名的方式显示。

(2) 应用程序日志

应用程序日志由应用程序使用产生,Windows允许第三方软件通过API记录应用程序事件,防病毒软件和安装程序通常会使用这样的功能,在调查中经常使用到的有: 

① 确认软件安装。使用微软安装程序的情况下,通过事件ID11707(成功)、事件ID11708(失败)和事件ID11724(卸载)来记录软件包的运行,查看这些ID可以发现特定软件的安装、试图安装和卸载的时间。

② 确认和排除病毒感染。大多数防病毒软件在检测到病毒时,会产生一个ID5事件。案件调查中,涉案人员有时会辩称系统问题是病毒引起的,通过查看这个事件,可以显示和排除他声称的时间内是否有病毒发作。

③ 启动和关闭防火墙。记录了用户主动打开或关闭系统防火墙的行为。

④ 检查黑客攻击企图。ID为1000~1004的事件记录有错误的应用程序,可以提供应用程序漏洞被利用的线索,事件ID4097也有可能代表类似活动。

应用程序日志事件常依赖于特定系统中安装的具体应用程序,以及是否独立使用事件日志服务,或者利用本地私有日志对系统日志进行补充,所以调查人员在检查应用程序日志之外,通常还必须检查应用程序是否使用了本地私有日志记录。

(3) 安全日志

安全日志是所有日志的基础,登录、注销、尝试连接和改变系统策略等关键事件,都会在安全日志中反映出来。企业为了支持安全事件调查和溯源,通常会在本地或组策略下的审核策略中要求计算机系统激活如审核账户登录事件、账户管理、登录、策略改变、特权使用等。其中,登录和注销对于证实什么人在什么时间执行了什么操作尤为重要,而其他安全事件则根据案件不同,会对某些特定的调查有帮助。

① 成功登录和注销事件。交互式的登录事件通过事件ID4624来描述,是登录类型的一个子类,调查人员比较关注的登录类型有ID2(本地)、ID3(网络)、ID7(Ctrl+Alt+Del或屏幕解锁)、ID10(远程桌面)、ID11(缓存的用户凭证登录)。

另外,注销事件显示了某用户连接的时间段,以ID4647为用户启动注销的开始,ID4634为结束。

② 登录失败事件。登录失败是判定是否有人进行密码猜测或暴力攻击的有力证据之一,登录失败事件通过ID4625来描述。可以输入事件ID: 4625进行日志筛选,若用户登录失败次数明显偏多,那么这台服务器管理员账号可能遭遇了暴力猜解。

③ 对象访问。在一个特定对象属性的“安全”选项卡上单击“高级”按钮,可对待定的NTFS文件和文件夹进行审核。激活对象审核可以记录从试图读取对象到成功删除对象的任何操作。如果系统开启这个级别的审核,就能显示某个特定实体在何时被访问、被谁访问、特定文件和目录的改变和删除,或者突出显示对关键对象的非法访问企图。

④ 用户账户相关事件。事件ID4720、ID4722、ID4723、ID4724、ID4725、ID4726、ID4738、ID4740,表示当用户账号发生创建、删除、改变密码时的事件记录。

⑤ 日志清除。事件ID1102表示安全事件日志被清除。在没有合理原因将旧文件存储到一个新文件之前,安全日志几乎是不会被清除的,一旦有该事件发生,很有可能表明使用者或入侵者在故意掩盖痕迹。

综上所述,不同的事件ID代表了不同的意义,这些可以在网上很容易查到,需要根据案件的类型和基本情况,有重点地查看。

3.4.2实验目的与条件
1.  实验目的

通过本实验,读者可以掌握以下内容: 

(1) 了解Windows事件日志的概念及查看方式; 

(2) 掌握Windows事件日志的种类及内容; 

(3) 掌握常见的Windows事件日志的分析。

2.  实验条件

本实验所使用的Windows操作系统为Windows 10(Windows Vista以上)。

3.4.3实验过程

步骤1: 学生两两分组,互相进行远程桌面访问,首先打开将要被远程访问的计算机,在计算机系统属性中,选择“远程”选项卡,在远程桌面选项中勾选“允许运行任意版本远程桌面的计算机连接(较不安全)”,单击“确定”按钮,如图343所示。




图343开启远程桌面功能


步骤2: 在另一台计算机上打开远程桌面窗口,输入被控制计算机的IP地址,单击“连接”按钮,如图344所示,尝试包括登录成功、断开连接等操作。




图344远程桌面访问



步骤3: 在被远程访问的计算机上,右击“我的电脑”,在弹出的快捷菜单中选择“管理”选项,打开“事件查看器”; 或者按下Win+R的组合键,在运行窗口中输入“eventvwr.msc”,如图345所示,直接打开“事件查看器”。



图345打开事件查看器



步骤4: 攻击者使用RDP远程登录受害者计算机,会在事件日志中生成相应事件。在“Windows日志”下,选择“安全”(Security.evtx),筛选事件ID为4624,如图346所示,即为账户成功登录事件,如图347所示。其中,“LogonType=10”的为远程桌面访问,可以看到访问主机的源IP地址。



图346筛选日志




图347远程桌面登录成功


步骤5: 查看同路径下事件ID为4648的事件,为用户使用明文凭证尝试登录的事件,其中,“详细信息”记录了用户的IP地址,如图348所示为本机登录,图349所示为远程主机登录。



图348本机明文登录事件




图349远程主机明文登录事件


步骤6: 同样地,ID4778事件为重新连接到一台Windows主机的会话,ID4779事件为断开到一台Windows主机的会话。

步骤7: 查看远程连接日志,具体路径为: 应用程序和服务日志MicrosoftWindowsTerminalServicesRemoteConnectionManagerOperational。其中,ID1149事件为用户认证成功,如图350所示,可以清晰地看到用户名及源网络地址。



图350用户认证成功


3.4.4实验小结

其他常见的Windows事件包括: 用户登录或注销、远程访问审计、即插即用设备使用、系统时间修改、无线网络接入等,读者可自行查阅资料,练习、查看。实际应用中,要通过日志准确分析出恶意行为是需要大量实践经验的,同样也需要了解Windows日志中各种事件ID组合、状态码所对应的事件。

3.5回收站取证
3.5.1预备知识: 回收站运行机制

对删除文件的恢复,一直都是电子数据取证的重要部分。在Windows操作系统中,用户选择删除一个文件后,这个文件并没有真正删除,而是进入了一个叫作回收站的地方,如果删错了或者后悔了都可以在回收站中进行恢复操作。所以,回收站是一个重要的信息来源,通过分析回收站可以知道被删除文件的信息,包括原始路径、删除时间、文件大小等。

回收站是Windows操作系统中的一个隐藏的系统文件夹,其文件名及存放路径根据Windows系统版本的不同而不同,具体如表35所示。


表35回收站文件夹存储位置




操作系统版本分 区 格 式回收站位置


Windows 95/98/MEFAT32\Recycled\INFO2

Windows NT/2K/XP

FAT32\Recycled\INFO2
NTFS\Recycled\USER SID\INFO2

Windows 7/10NTFS$Recycle.Bin\USER SID\



对于Windows XP来说,在FAT32文件系统下,删除的文件在Recycled文件夹中的命名格式为: D[文件原始隶属盘符][索引号][原始扩展名]。同时在文件夹中会存在一个名为INFO2的二进制文件,用来记录所有删除文件的时间及路径信息。

而Windows 7及以后的系统,回收站的机制发生了改变,抛弃了INFO2文件保存删除文件信息的做法,而是为每个被删除文件建立一个删除记录。通过分析每个删除记录,可以了解文件的原始信息。当一个文件被删除时,它被进行两个操作: ①将删除的文件重命名为“$R”开头的文件,后面跟着随机字符串,后缀与原来文件一致。②创建一个“$I”开头的文件,后面与“$R”开头的文件相同。“$I”开头的文件为对应的“$R”开头的文件的回收站记录文件。这样每个删除文件都有自己的回收站记录文件。

“$I”开头的回收站记录文件,大小都是544字节,主要包括以下删除记录信息(具体结构如表36所示): 

 被删除文件原始路径; 

 被删除文件大小; 

 被删除文件的删除信息(64位Windows时间)。


表36回收站记录文件结构




数 据 结 构长度偏移量


操作系统版本80x00
被删除的文件大小80x08~0xF
文件删除时间80x10~0x17
被删除的文件名(全路径)0~5200x18~0x21F


目前主流的取证工具,例如EnCase、FTK等都支持对回收站文件的解析。但是由于操作系统的版本不同,导致回收站的结构和运行机制都有所不同。因此还需要在理解回收站的结构和机制的前提下,利用相应的工具进行取证。

3.5.2实验目的与条件
1.  实验目的

通过本实验,读者重点掌握以下内容: 

(1) 了解回收站的运行机制; 

(2) 掌握回收站记录文件的解析过程; 

(3) 掌握在注册表中查找文件删除者信息的过程。

2.  实验条件

本实验所需要的软硬件清单如表37所示。


表37回收站取证实验清单




序号设备数量参数


1取证工作站1台Windows XP以上
2EnCase软件1套EnCase7
3检材U盘

(包含证据文件“Malone's HDD 1A.Ex01”)1个无



3.5.3实验过程

步骤1: 打开EnCase软件,新建案例并添加证据文件“Malone's HDD 1A.Ex01”。

步骤2: 找到分区C中的$Recycle.Bin文件夹,如图351所示。




图351回收站文件夹



步骤3: 查看回收站文件夹中的文件,找到可疑文件(如图352所示: nuclearexplosion.jpg),查看其短名(如图353所示: $RAFR6IT.jpg),即为文件删除后,重命名为“$R”开头的文件。




图352回收站中的可疑文件





图353可疑文件的短名


步骤4: 根据该文件的短名找到其对应的以“$I”开头的回收站记录文件(如图354所示:$IAFR6IT.jpg)。




图354回收站记录文件


步骤5: 通过查看回收站记录文件中的十六进制数据,解析回收站记录文件(操作系统版本、文件大小、删除时间、原始路径等)。

其中,
0x00~0x07按小端顺序解析为1,表示是windows 7操作系统,如图355所示。




图355回收站记录文件中操作系统版本解析


0x08~0x0F按小端顺序解析为18218,表示被删除的文件逻辑大小是18218字节(与EnCase解析的nuclearexplosion.jpg文件逻辑大小一致),如图356所示。




图356回收站记录文件中文件大小解析


0x10~0x17字节(如图357所示)选中后,使用EnCase解码功能,按照“Windows日期/时间”格式解析即可得到文件的删除时间,如图358所示。




图357回收站记录文件中文件删除时间解析





图358EnCase解码日期时间


0x18~0x21F字节解析为“C:\Users\Sam.Malone\Pictures\nuclearexplosion.jpg”,即为被删除文件的原始路径(全路径),如图359所示。




图359回收站记录文件中文件原始路径解析


步骤6: 单击工具栏中的“许可”按钮,可以看到该回收站记录文件的权限信息,其所有者为Sam.Malone,如图360所示,说明文件的删除者即为Sam.Malone。



图360文件删除者信息解析



步骤7: 联系所学注册表取证相关知识,在注册表中查看文件删除者的相关信息。在C:\Windows\System32\Config下找到注册表文件“SAM”,如图361所示。

步骤8: 解析该复合文件“SAM”,找到SAM\Domains\Account\Users的文件夹,可以看到000003E9文件夹(图362),而十六进制3E9的十进制数为1001,与回收站目录文件夹SID中的UID(如图363所示: 1001)一致,说明删除文件的用户就是3E9,即该000003E9文件夹为Sam.Malone的用户文件夹。

步骤9: 解析000003E9文件夹中的文件,其中F文件记录了用户创建时间等信息,V文件记录了用户名和SID等信息,不再具体一一解析,如图364所示,即为用户名。

由此,不仅得到被删除文件的相关信息,更进一步获知删除者的相关信息。



图361注册表文件“SAM”




图362SAM注册表文件解析




图363回收站目录文件夹SID中的UID




图364注册表文件中用户信息的解析


3.5.4实验小结

回收站文件夹中,$R文件记录原始文件内容,$I文件记录恢复被删除文件的必要信息(文件大小、被删除时间、原始路径及文件名称)。当恢复被删除文件而原始目录不存在时,利用$I文件的信息可以重建目录。同时,联系回收站文件夹与注册表文件,可获知删除者的重要信息。在计算机调查取证过程中,需时刻记得回收站的重要作用,在回收站中出现的只字片语,很有可能对案件的侦破起决定作用。

3.6分区恢复
3.6.1预备知识: 磁盘分区原理

在使用计算机进行数据存储与读取的过程中,分区丢失是一种比较常见的故障表现形式。由于意外断电、删除、格式化,或罪犯分子为妨碍案件调查而恶意破坏等原因,分区可能会被删除或破坏。因此,无论是在取证调查中为了发现证据,还是为了不影响用户正常使用,恢复被删除的分区都有着重要的意义。

1.  硬盘分区

硬盘分区是在一块物理硬盘上创建多个独立的逻辑单元,这些逻辑单元就是C盘、D盘、E盘等,又称为逻辑卷。

在实际分区时,通常把硬盘分为主分区和扩展分区,然后根据硬盘大小和使用需要将扩展分区继续划分为几个逻辑分区。建立硬盘分区的步骤是: 建立主分区→建立扩展分区→将扩展分区分成多个逻辑分区。硬盘划分多个分区后,可以用于存放不同类型的文件,如存放操作系统、应用程序、数据文件等。

随着科技的发展,硬盘的容量越来越大,市场上1TB或2TB的大容量硬盘已经很常见。大容量硬盘给用户提供更多存储空间的同时,也使得在创建硬盘分区之前,好好地规划硬盘分区的方案成为必要。合理划分分区可以方便用户更好地管理自己的硬盘。

2.  MBR的数据结构

主引导记录(Master Boot Record,MBR)是采用MBR分区表的硬盘的第一个扇区,即C/H/S地址的0柱面0磁头1扇区,也叫作MBR扇区,共512字节。当计算机启动并完成自检后,首先会读取磁盘的MBR扇区。MBR主要由三部分组成: 引导程序、分区信息表、结束标志。其中引导程序占用446字节,主要用于硬盘启动时将系统控制权转移给用户指定的并在分区表中登记了的某个操作系统区; 分区信息表占用64字节,主要负责描述磁盘内的各分区情况; 结束标志为2字节“55 AA”。MBR数据结构如图365所示。



图365MBR数据结构

MBR主要功能如下: 

① 首先检查硬盘中分区表是否完好; 

② 从分区表查找可引导的“活动”分区; 

③ 将活动分区中第一逻辑扇区数据加载到内存中。在DOS分区中,该扇区内容被称为DOS引导记录,简称DBR。

3.  分区表项数据结构


分区表用于记录分区信息,从MBR的第0x1BE字节开始,共64字节,其中共有4个分区表项,每个表项16字节,各字节含义如图366所示。




图366分区表项数据结构


引导标志只有两种可能值,0x80为可引导(即表示该分区为操作系统分区),0x00为不可引导; 分区类型标志表明它所描述的分区类型,如NTFS的类型值为0x07、FAT的类型值为0x0B; 起始扇区及结束扇区均以CHS方式表示,CHS区域的值主要用于较老的操作系统,C、H、S分别代表磁盘的柱面号、扇区号、磁头号; 相对扇区数(分区起始逻辑扇区)及占用总扇区数均以LBA方式表示。分区起始LBA地址是非常重要的参数,如果该区域数据受到破坏,操作系统将无法找到文件系统分区或扩展分区的起始位置。

如果在没有人为因素改变分区的情况下,因意外而导致的磁盘显示分区丢失、分区显示未格式化等,应该首先检查主分区表是否损坏,通过查看现有分区表描述的各个分区的前后关系是否合理、跳转到分区起始扇区查看是否为正常的DBR来判断故障原因。

3.6.2实验目的与条件
1.  实验目的

通过本实验,读者重点掌握以下内容: 

(1) 掌握MBR引导扇区中分区表的解析过程; 

(2) 掌握使用EnCase工具进行分区恢复的方法。

2.  实验条件

本实验所需要的软硬件清单如表38所示。


表38分区恢复实验清单






序号设备数量参数


1取证工作站1台Windows XP以上
2EnCase软件1套EnCase7
3检材U盘

(包含证据文件“Malone's HDD 1A.Ex01”)1个无



3.6.3实验过程

步骤1: 打开EnCase软件,新建案例并添加证据文件“Malone's HDD 1A.Ex01”。

步骤2: 单击工具栏中的“设备”按钮,选择“磁盘视图”选项,如图367所示,即可进入磁盘视图。




图367EnCase磁盘视图


步骤3: 单击磁盘视图下“查看簇”按钮前的复选框,可在扇区和簇视图之间切换,如图368所示。




图368切换扇区和簇视图



步骤4: 在扇区视图下(即显示的是硬盘上各扇区的状态和数据),单击第一个小方块(LBR0号扇区),即为主引导记录MBR扇区,单击中间工具栏中的“十六进制”按钮,查看该扇区中的十六进制数据,如图369所示。




图369MBR扇区

步骤5: 联系所学的MBR扇区数据结构可知,结束标志“55 AA”前的64字节为分区信息表,如图370所示。共分为4个分区表项,每个分区表项为16字节,经分析发现仅有2个分区表项有数据,即分区信息表中仅存在2个分区信息。




图370分区信息表


步骤6: 选中该64字节分区信息表,单击中间工具栏中的“解码”按钮,选择“Windows分区入口”选项,可得到解析完成后的分区信息,如图371所示。




图371分区信息表解析


可以看出,该磁盘共有2个分区,其中第一个分区为活动分区(系统盘)。第一个分区起始位置逻辑扇区为2048,占用总扇区数为39841792。第二个分区起始位置逻辑扇区为40663040,占用总扇区数为1275904。

步骤7: 在扇区视图下,鼠标停留在第一个扇区并右击,在弹出的快捷菜单中选择“转到”选项,跳转到2048号扇区(图372),即为分区1的起始扇区DBR,如图373所示。



图372跳转到分区1起始扇区




图373分区1DBR



步骤8: 同样,在扇区视图下,鼠标停留在第一个扇区并右击,在弹出的快捷菜单中选择“转到”选项,跳转到40663040号扇区,即为分区2的起始扇区DBR,如图374所示。由此找到了磁盘上的两个分区,可进一步对分区引导记录DBR解析,获取各分区重要参数信息。




图374分区2DBR


步骤9: 分区1与分区2大小相加为41117696扇区,而物理磁盘总大小为59.8GB(125337600扇区),如图375所示。由此可见,已知的两个分区仅占了该磁盘的小部分空间。存在未使用磁盘空间或删除分区的情况。



图375磁盘基本信息



步骤10: 由分区1的起始扇区与占用扇区可计算得到分区1的结束扇区,发现分区1的结束扇区与分区2的起始扇区之间存在大量松弛区,不符合常理,判断可能存在删除分区。

步骤11: 跳转到分区1结束扇区后的1扇区,即39843840号扇区,查看该扇区十六进制数据,猜测可能为DBR,且分区文件系统为FAT32。单击工具栏中的“分区”按钮,选择“添加分区”选项,如图376所示。在弹出的“添加分区”对话框中,选择卷类型为“FAT32”,单击“确定”按钮,如图377所示。




图376分区的添加





图377“添加分区”对话框


步骤12: 关闭并重新打开该证据文件(EnCase不能自动刷新,必须手动关闭重新进入),发现除了原有的两个分区外,多了一个分区,即完成了删除分区的恢复,如图378所示。




图378删除分区的信息


3.6.4实验小结

当磁盘中的某个分区被删除后,分区中的数据并未被真正删除。此时,对应的分区表项会被清零,被删除的分区变为未分配状态且数据不可访问。要恢复被删除的分区,需要找出分区的起始位置、大小和分区类型等重要信息,然后将其写回被清零的分区表项。通常来说,在磁盘中创建多个分区,分区会占用所有磁盘空间。此时,通过查看现有的分区信息,找到被删除分区的位置并不复杂。接着,进一步分析被删除分区的具体数据可以判断出文件系统类型。

EnCase具备了分区恢复功能,在分区恢复时,应该首先检查主分区表是否损坏,通过查看现有分区表描述的各个分区的前后关系是否合理、跳转到分区起始扇区查看是否为正常的DBR等来综合分析、判断并恢复分区。

读者也可利用WinHex工具尝试删除分区的恢复操作。

3.7FAT文件系统数据恢复
3.7.1预备知识: FAT文件系统原理

文件系统是操作系统用于明确磁盘或分区上的文件的保存方法和数据结构,即在磁盘上组织文件的方法。一个分区或磁盘作为文件系统使用前需要初始化,并将数据结构写到磁盘上,这个过程就叫建立文件系统。FAT32、exFAT、NTFS是目前最常见的三种文件系统。

FAT(file allocation table,文件分配表)文件系统是Windows操作系统所使用的一种文件系统,它的发展过程经历了FAT12、FAT16、FAT32三个阶段。FAT文件系统用“簇”作为数据单元。一个“簇”由一组连续的扇区组成,簇所含的扇区数必须是2的整数次幂。所有簇从2开始进行编号,每个簇都有一个自己的地址编号。用户文件和目录都存储在簇中。

FAT文件系统由保留扇区、FAT区和数据区组成,数据结构如图379所示。




图379FAT文件系统数据结构


1.  DBR区

分区引导记录DBR,也称为操作系统引导记录,位于相对扇区0扇区。DBR由5个部分组成: 

① 0x00~0x02: 跳转指令。FAT32文件系统跳转指令为“EB 58 90”。在汇编当中0xEB是跳转指令,0x58是跳转的地址,而0x90则是空指令。CPU读取到EB 58这个指令时,便跳转到0x58这个地址并继续读取指令来执行,而0x58地址之后的内容通常都是载入操作系统的指令。

② 0x03~0x0A: OEM(original entrusted manufacture,代工厂商)代号。

③ 0x0B~0x59: BPB(BIOS parameter block,本分区参数记录表)。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、簇的大小等重要参数。具体如表39所示。


表39BPB参数信息




偏移量字节数含义


0x0B2每扇区字数
0x0D1每簇扇区数
0x0E2保留扇区数
0x101FAT个数
0x112根目录项数,FAT32以突破该限制,无效
0x132扇区总数,小于32M使用
0x151存储介质描述符
0x162每FAT表占用扇区数,小于32M使用
0x182逻辑每磁道扇区数
0x1A2逻辑磁头数
0x1C4系统隐含扇区数
0x204扇区总数,大于32M使用
0x244每FAT表扇区数,大于32M使用
0x282标记
0x2A2版本 (通常为零)
0x2C4根目录起始簇
0x302Boot占用扇区数
0x322备份引导扇区位置
0x3414保留
0x421扩展引导标记
0x434序列号
0x4710卷标
0x528文件系统


④ 0x5A~0x1FD: 引导程序。在Windows 98之前的系统中,这段代码负责完成DOS三个系统文件的装入。在Windows 2000之后的系统中,这段代码负责完成将系统文件NTLDR装入,对于一个没有安装操作系统的分区来讲,这段程序没有用处。

⑤ 0x1FE~0x1FF: 结束标志。DBR的结束标志与MBR、EBR的结束标志都相同,为“55 AA”。

2.  FAT区

文件分配表FAT是用来描述文件系统内存储单元的分配状态及文件内容前后链接关系的表格。它对于FAT文件系统来讲是至关重要的一个组成部分,假若丢失FAT,那么硬盘上的数据就无法定位,也就不能使用了。由于FAT对文件管理的重要性,FAT有一个备份,即在原FAT1后再建一个同样的FAT2。

根据FAT文件系统数据结构可知,FAT1的起始扇区可由BPB中记载的保留扇区数而获知(保留扇区数的信息位于BPB模块0x0E~0x0F两个字节),FAT2的起始扇区可由保留扇区数+FAT1占用扇区数(BPB模块0x24~0x27)计算所得。

FAT是由一个个表项组成,其中每一个表项的值对应了相应簇的使用情况,如2号表项对应了2号簇的使用情况,3号表项对应了3号簇的使用情况,以此类推(但是第0项和第1项例外)。FAT第0项和第1项是系统保留,记录分区所在的介质类型和分区状态。

FAT32的每个FAT项的大小为32位,相当于4字节,即从00000000~FFFFFFFF,不同数值具体含义如下: 

① 空闲簇(未分配簇): 00000000; 

② 系统保留簇: 00000001; 

③ 被占用的簇,其值指向下一个簇号: 00000002~0FFFFFEF; 

④ 保留数值: 0FFFFFF0~0FFFFFF6; 

⑤ 坏簇: 0FFFFFF7; 

⑥ 文件最后一个簇: 0FFFFFF8~0FFFFFFF。

FAT表项的填写规则是: 如果该簇是文件的最后一簇,填入的值为0x0FFFFFFF; 如果该簇不是文件的最后一簇,则填入的值为该文件占用的下一簇号。

3.  FDT区

文件目录表(File Directory Table,FDT)也称为根目录,位于数据区头部(第2簇),用来存放根目录下的文件的目录项。

根据FAT文件系统数据结构可知,根目录起始扇区=保留扇区数+FAT扇区数×2。

FDT区是由一个个目录项构成,类似于FAT。每一个目录项占用32字节,记录文件或者文件夹的名称、属性、大小、起始簇号、创建时间、创建日期、最近访问日期、最近修改日期等内容,具体如表310所示。


表310FDT信息




偏移量字节数含义


0x008文件名
0x083后缀名
0x0B1文件属性(00H读写; 01H只读; 02H隐藏; 04H系统; 08H卷标; 10H子目录; 20H归档)
0x0C1系统保留
0x0D1创建时间的10毫秒位
0x0E2文件创建时间
0x102文件创建日期
0x122文件最后访问日期
0x142文件起始簇号高16位
0x162文件最近修改时间
0x182文件最近修改日期
0x1A2文件起始簇号低16位
0x1C4文件长度


值得注意的是: FAT分区下,文件在被删除之后,文件对应的文件目录项的第一个字节会被改为0xE5,表示该文件被删除,而文件目录项的其他字节没有变化,所以被删除的文件仍旧能够找到其起始簇,从而使得该文件是可恢复的。

3.7.2实验目的与条件
1.  实验目的

通过本实验,读者重点掌握以下内容: 

(1) 了解FAT32文件系统存储原理; 

(2) 掌握FAT32文件系统各数据结构的解析; 

(3) 掌握使用WinHex进行FAT32文件系统数据恢复的过程。

2.  实验条件

本实验所需要的软硬件清单如表311所示。


表311FAT32文件系统数据恢复实验清单




序号设备数量参数


1取证工作站1台Windows XP以上
2WinHex工具1套无


3.7.3实验过程
1.  创建虚拟磁盘VHD

步骤1: 打开计算机管理中的磁盘管理。单击工具栏中的“操作”按钮,选择“创建VHD”选项,如图380所示。




图380磁盘管理创建VHD


步骤2: 在弹出的对话框中选择路径及虚拟磁盘大小,单击“确定”按钮,如图381所示。




图381创建和附加虚拟磁盘


步骤3: 此时,在磁盘管理视图下,可以看到多了一个未初始化磁盘。在该磁盘左边部分右击,在弹出的快捷菜单中选择“初始化磁盘”选项,设置磁盘分区形式为“MBR”,如图382所示。




图382初始化磁盘


步骤4: 此时,在磁盘管理视图下可以看到该磁盘显示为“联机”状态,在该磁盘右边部分右击,在弹出的快捷菜单中选择“新建简单卷”选项,如图383所示。




图383新建简单卷


步骤5: 在新建简单卷向导下按需要设置逻辑卷属性信息,如卷大小、卷标等。在格式化分区步骤,选择文件系统类型为“FAT32”文件系统,如图384所示。




图384格式化分区


步骤6: 完成后,发现在此电脑下,多了一个FAT32文件系统的分区E,如图385所示,至此,完成VHD的创建。

2.  连续存储文件的删除恢复

步骤1: 在上述虚拟磁盘E中,存入一个图片文件lena.jpg并删除该文件。

步骤2: 用WinHex工具打开该E盘,找到该分区的起始扇区,即引导记录DBR,如图386所示。

步骤3: 分析引导记录DBR,获得以下信息(小端): 

(1) 0x0D: 每簇扇区数: 08: 8; 

(2) 0x240x27: FAT占用扇区数: 000007F3: 2035; 

(3) 0x0E0x0F: 保留扇区数: 101A: 4122。



图385虚拟磁盘E




图386DBR扇区


步骤4: 单击工具栏中的“跳转扇区”按钮,根据保留扇区数(图387),跳转到FAT1起始扇区,如图388所示。




图387跳至扇区





图388FAT1起始扇区


步骤5: 同样,根据保留扇区数+FAT扇区数×2=4122+2035×2=8192,跳转到数据区的起始2号簇,即FDT区,如图389所示。




图389FDT区


步骤6: 解析FDT区的删除图片目录项(图390),获得该文件相关信息: 

(1) 文件后缀名: JPG; 

(2) 文件起始簇: 0x140x15+0x1A0x1B: 00000005: 5号簇; 

(3) 文件大小: 0x1C0x1F: 00026BF7: 158711字节。




图390删除文件的目录项


步骤7: 分析由于VHD分区上只存在过该图片文件,因此该文件应为简单连续存储(查看FAT可以验证),既找到了文件的起始簇,又知晓了文件大小,就能找到文件结尾。


步骤8: 跳转到5号簇,即为文件的起始簇,选中第一个字节,即为文件首字节,右击该字节,在弹出的快捷菜单中选择“选块起始位置”选项,如图391所示。




图391图片文件首字节


步骤9: 相对于当前文件首字节位置,根据文件大小0x26BF7=158711字节,跳转到文件的尾字节,如图392、图393所示。




图392转到偏移量





图393图片文件尾字节


步骤10: 在文件尾字节“D9”上右击,在弹出的快捷菜单中选择“选块尾部”选项,即文件首尾之间所有字节都被选中(文件所有字节)。在选中的字节上右击,在弹出的快捷菜单中选择“编辑”→“复制选块”→“至新文件”选项,如图394所示,将选中区域保存成一个文件。




图394复制文件选块


步骤11: 选择保存路径为桌面,文件名为“恢复.jpg”(图395),单击“保存”按钮,即在桌面上成功恢复该图片文件,如图396所示。




图395恢复图片的保存路径





图396桌面上恢复的图片文件


3.  非连续存储文件的删除恢复

步骤1: 在FAT32分区(VHD)中创建一个文本文件test.txt,写入一些数据后保存。然后在该分区中存入另一文件,再次打开test.txt文件对其中内容进行增加(增加内容超过1簇),可多次重复该操作,文件会更“碎片”地存储。最后删除test.txt文件。

步骤2: 用WinHex打开该分区,找到该分区的起始扇区,即引导记录DBR。通过解析获知每簇扇区数、FAT区起始扇区、FDT区起始扇区。解析过程同上,不再赘述。

步骤3: 找到该删除文件的目录项,如图397所示。



图397删除文件的目录项

步骤4: 分析该文件目录项,获得以下信息: 

(1) 文件的起始簇号高16位: 0x14~0x15: 0000; 

(2) 文件的起始簇号低16位: 0x1A~0x1B: 0007; 

(3) 文件的长度0x1C~0x1F: 00002C4C。

可得: 

文件的起始簇为: 7号簇; 

文件大小为: 11340字节。

步骤5: 跳转到FAT1位置,查看FAT中7号表项内容(对应数据区7号簇的状态),7号表项内容为00000025(小端),如图398所示,说明文件存储的下一簇为0x25,即37号簇。




图398FAT1中7号表项内容


步骤6: 同样地在FAT中查看37号簇的状态,FAT中37号表项为00000027(39),如图399所示,说明37号簇的下一簇为39号簇。




图399FAT1中37号表项内容


步骤7: 以此类推,可以发现39号表项的状态为0FFFFFFF(结束标识)。

由此可知,文件一共分为3块存储: 7号簇、37号簇、39号簇,其中39号簇为文件存储的最后一簇,一般情况下未存满。

步骤8: 选中7号簇(8扇区)所有字节,保存为新文件在桌面上,命名为“1”,如图3100所示。同样,选中37号簇所有字节,保存在桌面上,命名为“2”。




图3100导出7号簇所有字节数据


步骤9: 找到39号簇的起始字节,右击,在弹出的快捷菜单中选择“选块起始”选项,找到39号簇中最后一个字节,右击,在弹出的快捷菜单中选择“选块结束”选项,如图3101所示,保存为新文件在桌面上,命名为“3”。此时,文件的3个分块都已导出在桌面上,如图3102所示。




图3101导出文件第三块内容





图3102恢复的文件三个分片


步骤10: 打开cmd命令行工具,进入3个文件分块所在的目录下,利用cmd命令行工具“copy”命令,将文件的3个分块组合成1个文件,如图3103所示。即在桌面上生成了txt文件,完成了碎片文件的恢复,如图3104所示。




图3103“copy”命令组合文件碎片





图3104拼接完成的txt文件



3.7.4实验小结

磁盘上的文件常常要进行创建、删除、增长、缩短等操作。这样的操作越多,盘上的文件就被存储得越零散。即同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会分成若干段,像一条链子一样存放,这种存储方式称为文件的链式存储。而FAT是实现文件链式存储的关键。

在取证过程中,恢复被删除或丢失的数据是一项重要的工作。当一个文件被删除时,文件系统中存储的文件内容等数据不会立即消失。已删除的数据在被其他的新数据覆盖之前,一直都完整地存在于原始位置。当在FAT文件系统中删除一个文件时,操作系统会更新目录项,将文件目录项的第一个字节设置为一个特殊字符,即十六进制的0xE5,表示这是一个被删除的目录项。除第一个字节之外,目录项中的其他位置信息都未发生变化。换句话说,目录项中剩余的文件名、扩展名、创建日期和时间、权限、大小、文件起始簇地址等均保持不变。且文件的数据在数据区中保持不变。

基于此,我们找到文件的目录项并解析后,可根据FAT进一步获知文件的存储“链”如何构成,而后即可在数据区找到文件的各个分片,拼接出完整的文件内容。

3.8NTFS文件系统数据恢复
3.8.1预备知识: NTFS文件系统原理

NTFS的英文全称为“new technology file system”,中文意为NT文件系统,是Windows NT以及之后操作系统的标准文件系统,具有安全性、可恢复性、容错性、文件压缩、硬盘配额等优势。FAT32文件系统的出现对于FAT16而言,可以说是有了比较明显的改善,但NTFS对FAT32的改进,就必须得用“卓越”来形容了。

NTFS文件系统同FAT32文件系统一样,也是用“簇”为存储单位,一个文件总是占用一个或多个簇。但与FAT32文件系统不同的是,NTFS文件系统将所有的数据,包括文件系统管理数据都作为文件进行管理,所以NTFS文件系统中所有扇区都被分配以簇号,并从0开始对所有簇进行编号,文件系统的0号扇区为0号簇的起始位置。

NTFS文件系统使用逻辑簇号(LCN)和虚拟簇号(VCN)对分区进行管理。

逻辑簇号: 即对分区内的第一个簇到最后一个簇进行编号,NTFS使用逻辑簇号对簇进行定位。

虚拟簇号: 即将文件所占用的簇从开头到结尾进行编号,虚拟簇号不要求在物理上是连续的。

一个NTFS系统是由分区引导扇区、主文件表(MFT)和数据区组成,另外MFT有一部分重要备份在数据区,数据结构如图3105所示。




图3105NTFS文件系统数据结构


1.  分区引导扇区

分区引导扇区包含了NTFS文件系统结构的关键信息。与FAT的引导扇区类似,NTFS的引导扇区描述了文件系统的数据结构,如簇大小、MFT项(MFT entry,或称MFT文件记录项)大小及MFT起始簇地址等。

分区引导扇区中的第一个扇区为DBR,由“跳转指令”“OEM代号”“BPB”“引导程序”和“结束标志”组成,这里和FAT32文件系统的DBR一样,具体如下: 

① 0x00~0x02: 跳转指令。NTFS文件系统中跳转指令为“EB 52 90”,意为转到0x52字节。

② 0x03~0x0A: OEM代号。固定为“4E54465320202020”,表示“NTFS”。

③ 0x0B~0x53: BPB。记录了有关该文件系统的重要信息,共73字节,具体见表312。


表312BPB参数信息




偏移量字节数含义


0x0B2每扇区字数
0x0D1每簇扇区数
0x0E2保留扇区数
0x103总为0
0x131不使用
0x142存储介质描述符,硬盘为F8
0x162总为0
0x182逻辑每磁道扇区数
0x1A2逻辑磁头数
0x1C4系统隐含扇区数

续表





偏移量字节数含义


0x204不使用
0x244不使用,总为80 00 80 00
0x288扇区总数,即分区大小
0x308$MFT的开始簇号
0x388$MFTmirr的开始簇号
0x404每个MFT记录的簇数
0x444每索引的簇数
0x488分区的逻辑序列号
0x504校验和,一般都为0



④ 0x54~0x1FD: 引导程序。负责将系统文件NTLDR装入,对于没有安装系统的分区是无效的。

⑤ 0x1FE~0x1FF: 结束标志。为“55 AA”。

2.  MFT

MFT(master file table,主文件表)对于NTFS文件系统来说尤为重要,在NTFS文件系统中,磁盘上的所有数据都是以文件的形式存储,其中包括元文件。每个文件都有一个或多个文件记录,每个文件记录占用两个扇区。MFT的前16个文件记录总是元文件的,并且顺序是固定不变的,如表313所示。第一个MFT(MFT 0或$MFT)用于描述MFT本身,记录了MFT的大小和位置。第二个MFT(MFT 1或$MFTMirr)是MFT中第一个表项的备份。后续保存的是每一个文件和每一个目录所对应的MFT项。



表313NTFS文件系统元文件




序号元文件描述


0$MFT主文件表
1$MFTMirr主文件表前几项的备份
2$LogFile日志文件,记录元数据变化
3$Volume卷文件,包含卷标及版本信息等
4$AttrDef属性定义列表,定义每种属性的名字和类型
5$Root根目录文件
6$Bitmap位图文件,每一个二进制位对应一个簇的状态,1表示该簇已分配,0表示该簇未分配
7$Boot引导文件,DBR扇区是引导文件的第一个扇区
8$BadClus坏簇记录文件,防止文件系统再次分配这些簇
9$Secure文件的安全属性和访问控制(仅用于Windows 2000和Windows XP)
10$UpCase大小写字符转换表文件
11$Extend扩展属性如$Quota(磁盘配额)、$ObjId(对象ID文件)和$Reparse(重解析点文件)
12~15︙其他属性预留


由于NTFS文件系统是通过MFT来确定文件在磁盘上的位置以及文件的属性,所以MFT是非常重要的,MFT的起始位置在DBR中有描述。
3.  文件记录




图3106文件记录结构

文件记录由三部分组成,一部分是文件记录头,然后是属性列表,最后结尾为4字节的“FF”,文件记录的结构如图3106所示。

在同一个操作系统中,文件记录头的长度和偏移位置的数据含义是基本不变的,属性列表会随着数据的不同而不同,不同的属性有着不同的含义。如图3107所示,偏移量0x00~0x37是一个文件记录头,文件记录头各字节的具体含义如表314所示。




图3107文件记录头




表314文件记录头各字节含义






偏移量字节数含义


0x004固定值,总为“FILE”
0x042更新序列号的偏移
0x062更新序列号与更新数组大小(以字为单位)
0x088日志文件序列号(每次记录修改,该序列号加1)
0x102序列号
0x122硬连接数,即有多少目录指向该文件

0x142第一个属性的偏移地址
0x162标志字节,0x00表示删除文件,0x01表示正常文件,0x02表示删除目录,0x03表示正常目录
0x184文件记录实际大小
0x1C4文件记录分配大小
0x208基本文件记录的文件索引号
0x282下一属性ID,当增加新的属性时,将该值分配给新属性,然后该值增加,如果MFT记录重新使用,则将它置为0,第一个实例总是0
0x2A2边界,Windows XP中使用,本记录使用的两个扇区的最后两个字节的值
0x2C4Windows XP中使用,本文件记录号
0x302更新序列号
0x324更新数组


在NTFS文件系统中所有与文件相关的数据结构均被认为是属性,包括文件的内容。文件记录是一个与文件相对应的文件属性数据库,它记录了文件的所有属性。每个文件记录中都有多个属性,它们相对独立,有各自的类型和名称。如图3108所示,在0x38之后的4大块颜色数据是4条属性,描述名称、时间、索引等信息,最后以“FF FF FF FF”结束。




图3108文件记录




图3109属性结构


每个属性都由两部分组成,即属性头和属性体,如图3109所示。其中,属性头的前4字节为属性的类型。

另外,属性还有常驻与非常驻之分。当一个文件很小时,其所有属性体都可以存放在文件记录中,该属性就称为常驻属性。如果某个文件很大,1KB(2个扇区)的文件记录无法记录所有属性时,则文件系统会在MFT元文件之外的区域(也称数据流)存放该文件的其他文件记录属性,这些存放在非MFT元文件内的记录就称为非常驻属性。出现非常驻属性一般是由于DATA文件较大,即80H属性大。

属性头中包含了该属性的重要信息,如属性类型、属性大小、是否为常驻属性等。而常驻属性与非常驻属性的属性头结构略有不同。常驻属性的属性头信息如表315所示。非常驻属性的属性头信息如表316所示。


表315常驻属性的属性头各字节含义




偏移量字节数含义


0x004属性类型
0x044整个属性的长度
0x081是否为常驻属性,0x00表示常驻
0x091属性名的长度,0x00表示无属性名
0x0A2属性名的开始偏移

续表





偏移量字节数含义


0x0C2标志位(压缩、加密、稀疏)
0x0E2属性ID
0x104属性体的长度
0x142属性体的开始偏移位置
0x161索引标志
0x171填充
0x18—属性体开始





表316非常驻属性的属性头各字节含义




偏移量字节数含义


0x004属性类型
0x044整个属性的长度
0x081是否为常驻属性,0x01表示非常驻
0x091属性名的长度,0x00表示无属性名
0x0A2属性名的开始偏移
0x0C2标志位(压缩、加密、稀疏)
0x0E2属性ID
0x108属性体的起始虚拟簇号VCN
0x188属性体的结束虚拟簇号VCN
0x202Data Run的偏移地址
0x222压缩单位大小,2的N次方
0x244不使用
0x288属性体的分配大小
0x308属性体的实际大小
0x388属性体的初始大小
0x40—Data Run信息开始


属性的种类很多,因此各属性体的含义也不同。NTFS文件系统中常见的文件属性如表317所示。


表317NTFS文件系统常见属性类型




属性类型(属性偏移

0x00~0x03数据,小端)属 性 名 称属 性 含 义


10H$STANDARD_INFORMATION标准属性,包含文件的基本属性(如只读、系统、存档),时间属性,硬连接数等
20H$ATTRIBUTE_LIST属性列表,当一个文件需要多个文件记录时,描述文件的属性列表
30H$FILE_NAME文件名属性(UNICODE编码)
40H$OBJECT_ID对象ID属性,64字节的标志符,其中最低16位对卷来说是唯一的
50H$SECURITY_DESCRIPTOR安全描述符属性,文件访问控制安全属性
60H$VOLUME_NAME卷名属性
70H$VOLUME_INFOMATION卷信息属性


续表





属性类型(属性偏移

0x00~0x03数据,小端)属 性 名 称属 性 含 义


80H$DATA文件的数据属性
90H$INDEX_ROOT索引根属性
A0H$INDEX_ALLOCATION索引分配,90H属性的拓展版(90H属性只能在MFT内记录文件列表,A0H属性将文件列表记录到数据区可以记录更多文件)
B0H$BITMAP位图属性
C0H$REPARSE_POINT重解析点属性
D0H$EA_INFORMATION拓展属性信息
E0H$EA拓展属性
100H$LOGGED_UTILITY_STREAMEFS加密属性


上表中的两个属性$STANDARD_INFORMATION和$FILE_NAME包含了文件系统的所有4个时间戳信息(创建时间、修改时间、更改时间、访问时间)。操作系统在更新时间戳信息时应该同时更新两个属性,但实际研究表明,不同操作系统的具体表现有所不同,有些只更新$STANDARD_INFORMATION,有些只更新$FILE_NAME,所以在分析NTFS文件系统的时间属性时需要格外注意。

NTFS文件系统里每个文件至少要占用一个MFT项,而MFT项的大小只有1024字节,如果一个文件有太多属性,那么这些属性就需要占用其他MFT项。在NTFS文件系统里,增加的MFT项使用$ATTRIBUTE_LIST属性进行记录。每种属性的结构不尽相同。取证中关注的几个重要属性如下: 

① 10H属性被称为标准信息属性,英文标识为$STANDARD_INFORMATION。10H属性是所有文件记录所必备的属性,它包含了许多文件或文件夹的基本信息,如: 文件或文件夹的创建时间、文件或文件夹的修改时间、目录硬连接数等。

② 30H属性被称为文件名属性,英文标识为$FILE_NAME。30H属性常紧跟于10H属性之后,用于描述文件名以及文件或文件夹更详细的信息,如: 文件名长度、文件大小、文件名命名空间、文件名Unicode码等。

③ 80H属性被称为数据属性,英文标识为$DATA。该属性容纳着文件的数据内容。80H属性是整个文件属性中最重要的部分,可大概分为3种类型: 一是只有属性头无属性体,这种情况主要存在于小型文本文件中,文件大小为0字节,即文件内容为空,因此数据属性为空,无需属性体记录数据。二是常驻属性,这种情况存在于文件内容简短的情况下,为了节省空间,不额外分配簇进行存储,直接在80H属性体内存储文件数据,最后以“FF FF FF FF”为结束标志。三是非常驻属性,这是80H属性中最复杂最重要的类型。在此种情况中,文件内容大于80H属性体最大长度,因此采用数据运行列表(data run list)的方式存储数据信息,80H属性体中记录数据运行列表。

④ 90H属性被称为索引根属性,英文标识为$INDEX_ROOT。90H属性主要存在于$MFT的文件夹记录中,一般为常驻属性。该属性是实现NTFS文件系统的B+树索引的根节点。

⑤ A0H属性被称为索引根拓展属性,英文标识为$INDEX_ALLOCATION。该属性包含一个B树的子节点,是一个非常驻属性。对于小型目录,此属性不存在,所有信息将保存在$INDEX_ROOT结构中。这个属性的内容是一个或多个索引记录(index rocord),每个索引节点(这里是B树节点)有一个记录。每个索引记录包含一个或多个索引条目(index entry)结构,这些结构与$INDEX_ROOT相同。

通过以上几个文件重要属性的解析,就能获知在取证中较为关注的文件信息,如文件名、文件的时间、文件的位置、文件的数据内容等。

3.8.2实验目的与条件
1.  实验目的

通过本实验,读者重点掌握以下内容: 

(1) 了解NTFS文件系统存储原理; 

(2) 掌握NTFS文件系统各数据结构的解析; 

(3) 掌握使用WinHex进行NTFS文件系统数据恢复的过程。

2.  实验条件

本实验所需要的软硬件清单如表318所示。


表318NTFS文件系统数据恢复实验清单






序号设备数量参数


1取证工作站1台Windows XP以上
2WinHex工具1套无


3.8.3实验过程
1.  常驻文件的删除恢复

步骤1: 创建虚拟磁盘VHD,并在该磁盘上建立NTFS分区。具体步骤见3.7.3节。

步骤2: 在新建的VHD(E盘)中创建一个txt文件,写入较少的内容并保存,如图3110所示。




图3110虚拟磁盘中新建小文件


步骤3: 按下“Shift+Delete”,将“test.txt”文件删除。

步骤4: 用WinHex工具打开E盘,可以看到该磁盘中的各文件情况,如图3111所示。




图3111WinHex中磁盘情况


步骤5: 要找到删除文件的内容,按照NTFS文件系统原理,必须先找到其文件记录。在该文件的文件记录中,会记录文件的名称、时间、数据等属性。现已知文件名为“test.txt”,由于WinHex以十六进制为核心,因此先将文件名转为十六进制ASCII编码(可用网页在线工具转换),如图3112所示,为“0074006500730074002E007400780074”。




图3112文件名ASCII编码


步骤6: 在$MFT中,向下搜索十六进制数据“0074006500730074002E007400780074”,如图3113所示,单击“确定”按钮,即跳转到$MFT中文件“test.txt”所属文件记录,如图3114所示。




图3113在$MFT中搜索十六进制数据





图3114test.txt的文件记录


步骤7: 按照3.8.1节理论知识,分析该文件记录,找到80H属性,即为文件的数据属性。在80H的属性头中0x08位置即为是否为常驻属性的标志位,可以看出该文件的80H属性为常驻属性,意味着该文件的数据内容直接记录在了80H属性体中。

步骤8: 在该80H属性的属性头中,0x10~0x13位置为属性体的大小(00 00 00 0C),0x18位置即为常驻属性属性体的开始,即属性体中内容为“48 65 6C 6C 6F 20 77 6F 72 6C 64 21”,如图3115所示。




图311580H属性解析


步骤9: 按照ASCII编码规则转换十六进制数据“48 65 6C 6C 6F 20 77 6F 72 6C 64 21”为“Hello World!”,即为删除文件“test.txt”的内容。

至此完成了常驻文件的删除恢复!

2.  非常驻文件的删除恢复

步骤1: 在新建的VHD(NTFS文件系统)中存入图片文件“lena.jpg”。

步骤2: 按下“Shift+Delete”,将“lena.jpg”文件删除,如图3116所示。




图3116删除图片文件“lena.jpg”


步骤3: 用WinHex工具打开E盘,查看磁盘基本信息。

步骤4: 使用编码转换工具将所要恢复文件的文件名“lena.jpg”转换为十六进制ASCII编码为“006c0065006e0061002e006a00700067”。

步骤5: 单击$MFT,跳转到$MFT起始扇区,单击工具栏中的“查找十六进制数值”按钮,在弹出的对话框中,向下搜索十六进制数据“006c0065006e0061002e006a00700067”,具体如图3117所示。




图3117在$MFT中搜索十六进制数据


步骤6: 单击“确定”按钮,成功跳转到$MFT中“lena.jpg”的文件记录,如图3118所示。




图3118“lena.jpg”文件记录


步骤7: 解析该文件记录,找到80H属性(数据属性),其中0x08位置为“01”,即该条属性为非常驻属性。也即是说,文件的数据属性较大,在文件记录中存储不下,因此,文件的数据内容存放于簇流之中。此时,80H属性的属性体中存放的是指向文件簇流的索引(Data Runs)。

步骤8: 非常驻属性的属性体开始位置为0x40,即80H属性的属性体中十六进制数据为“21 27 88 05 00”,按照Data Runs的解析规则,该删除文件的数据内容位于从0x588开始的0x27个簇中。

步骤9: 单击工具栏中的“跳至扇区”按钮,输入簇号“1416(0x588)”,单击“确定”按钮,如图3119所示。即跳转至删除文件内容起始簇。

步骤10: 在1416号簇的首字节处右击,在弹出的快捷菜单中选择“选块起始位置”选项,如图3120所示。

步骤11: 由于该删除文件的数据内容位于从0x588(1416)开始的0x27(39)个簇中。因此,文件的最后一簇为1416+39-1=1454号簇。同上,跳转到1454号簇,如图3121所示。



图3119跳转至删除文件内容起始簇




图3120删除文件存储的起始簇




图3121删除文件存储的最后一簇



步骤12: 由分区的DBR解析可知,该E分区中簇的大小为每簇8扇区,在该最后一簇中向下拉,直至找到文件的最后一字节(位于该簇的第6个扇区中),在最后一字节上右击,在弹出的快捷菜单中选择“选块尾部”选项,如图3122所示。




图3122删除文件的最后一字节



步骤13: 由此,该删除文件的所有数据字节均被选中,在选中块上右击,在弹出的快捷菜单中选择“编辑”→“复制选块”→“至新文件”选项,如图3123所示,保存在桌面上,命名为“huifu.jpg”,如图3124所示。





图3123复制文件数据块至新文件





图3124恢复删除图片文件至桌面


至此完成非常驻文件的删除恢复!

3.8.4实验小结

NTFS文件系统与FAT文件系统差别很大,在NTFS中所有数据均以文件的形式存在,MFT文件记录尤为重要,通过MFT可以定位每一个文件。

本实验意在让读者掌握NTFS文件系统的基本原理,如数据结构、索引存储等,实验环境较为理想。在实际应用中,不连续存储的文件删除后,对于某些类型的文件,比如视频文件,如果根据数据结构上下文搜索匹配进行恢复,运算量较大。