《电子数据取证技术》课件-第3章_第1页
《电子数据取证技术》课件-第3章_第2页
《电子数据取证技术》课件-第3章_第3页
《电子数据取证技术》课件-第3章_第4页
《电子数据取证技术》课件-第3章_第5页
已阅读5页,还剩139页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章取证技术基础3.1存储基础3.2文件系统及编码3.3恶意代码分析基础

3.1存储基础

3.1.1存储原理数据在计算机中都是以二进制为基础进行存储的。存储单位按照不同要求,具有不同格式。二进制位(bit):又称为比特,是计算机中存储的最小信息单位,只有0和1两种状态。计算机中最直接、最基本的操作就是对二进制位的操作。

字节(Byte):一个字节有8位二进制位,即1Byte = 8bit。字节是计算机处理数据的基本单位,即以字节为单位解释信息。通常一个ASCII码占1个字节,一个汉字国标码占2个字节,整数占2个字节。

字(word):计算机内部进行信息处理的基本单位,是计算机可以同时处理的二进制数的位数,即一组二进制数码作为一个整体参加运算或处理的单位。一个字通常由一个或多个字节构成,用来存放一条指令或一个数据。

存储单元:表示一个数据的总长度。在计算机中,当一个数据作为一个整体存入或取出时,这个数据存放在一个或几个字节中组成一个存储单元。存储单元一般是字节的整数倍,常见的有8位、16位、32位、64位。32位的系统存放数据的形式是对每个数据用32个二进制位来存放,64位的意思就是用64个二进制位来存放,位数越多,每次处理存储的数据也就越多。

地址:表示计算机中每个存储单元的编号,以字节为单位。地址号与存储单元是一一对应的,CPU通过地址对存储单元中的数据进行访问和操作。地址也用二进制编码表示,为便于识别,通常采用十六进制编码表示。

3.1.2存储系统结构

1.存储常识

硬盘在存储数据之前,一般需经过低级格式化、分区、高级格式化3个步骤之后才能使用。硬盘经过这3个步骤的处理,将建立一定的逻辑数据结构。如果是FAT文件系统,一般会将硬盘分为5个区域,即主引导记录(MainBootRecord,MBR)区、操作系统引导记录(DOSBootRecord,DBR)区、文件分配表(FileAllocationTable,FAT)区、文件目录表(FileDirectoryTable,FDT)区和数据(DATA)区,以实现对数据的存储和管理。高级格式化后,硬盘的所有空间也并不是都能被使用,由于数据不可能全部占满空间,因此产生了松弛区和未分配空间。

1)低级格式化

硬盘低级格式化(LowLevelFormat)简称低格,也称为物理格式化(PhysicalFormat),用于检测硬盘磁介质、划分磁道、为每个磁道划分扇区、安排扇区在磁道中的排列顺序、硬盘表面测试、为每个扇区写入某一ASCII码字符等。

2)分区

硬盘的容量比较大,为了便于硬盘的规划和文件管理,通常需要进行逻辑分区。通过分区,不仅可根据用户需求将硬盘的存储空间进行了合理划分,而且还在硬盘的0柱面、0磁头、1扇区上建立了硬盘的主引导记录(MBR),即主引导扇区。

3)高级格式化

高级格式化又称为逻辑格式化,是根据用户选定的文件系统(如FAT12、FAT16、FAT32、NTFS、Ext2、Ext3等)在硬盘的特定区域写入特定数据,以达到初始化硬盘或硬盘分区、清除原硬盘或硬盘分区中所有文件的操作。高级格式化包括对主引导记录中分区表相应区域进行重写,根据用户选定的文件系统,在分区中划出一片用于存放文件分配表、目录表等用于文件管理的硬盘空间,以便用户使用该分区管理文件。对于FAT文件系统,高级格式化过程将要创建DBR区、FAT区、FDT区和DATA区。DOS/Windows系统的文件系统主要有FAT、NTFS、exFAT等;Apple系统的文件系统主要有HFS、HFS+两种;Linux系统的文件系统常见的有Ext2、Ext3、Ext4等。

4)文件松弛区

硬盘存储空间是以簇为单位进行分配的,如果文件的长度不是簇长度的整数倍,那么分配给文件的最后一簇中会有未被当前文件占用的剩余空间,这部分空间叫文件松弛(Slack)区。文件松弛区中可能包含了先前文件遗留下来的信息,这部分信息可能是有用的证据,如图3-1所示。图3-1松弛区

5)未分配空间

没有分配给任何卷的可用硬盘空间称为未分配空间。这部分空间同样会保存有重要数据。在犯罪嫌疑人重新格式化硬盘或者删除分区之后,这些区域中还会留存有重要信息,通过特定技术可以还原出硬盘原有分区乃至所有未被覆盖信息。

2.存储结构

1) MBR硬盘分区

MBR硬盘分区是使用最为广泛的一种分区结构,不仅应用于微软操作系统平台中的分区结构,而且Linux系统、基于x86架构的UNIX系统都能够支持MBR硬盘分区。MBR硬盘分区都有一个引导扇区,被称为主引导记录(MBR)。MBR位于整个硬盘的第一个扇区,即0柱面0磁头1扇区,其LBA(LogicBlockAddress)为0,共有512字节。

2)动态硬盘分区

MBR硬盘分区是通过分区表项对分区进行管理的,因为分区表项中管理分区大小的参数是由4个字节组成的,所以能够管理的分区最大为2048GB,也就是2TB。随着硬盘容量的不断增大,用户对存储空间的需求增大,2TB的分区限制已经无法满足用户的需求,微软提供的动态硬盘分区就很好地解决了这个问题。动态硬盘分区能够实现数据的容错、高速地读/写、相对随意地修改卷大小、跨越硬盘建立分区等操作。Windows的逻辑硬盘管理(LogicDiskManager,LDM)子系统负责管理动态硬盘,动态硬盘的结构布局如图3-2所示。图3-2动态硬盘的结构布局

动态硬盘的第一个扇区与MBR硬盘一样,也是一个包含MBR信息的扇区。MBR的分区表中有一项MS-DOS类型的分区表项,在6号扇区是动态硬盘的私有头,它是动态硬盘的重要结构,在LDM数据库中还有两个备份,私有头的结构如表3-1所示。

LDM软分区区域用于给动态硬盘划分软分区,LDM通过一个单独的数据库来存储系统动态硬盘的分区信息,包括多分区卷的设置,LDM的数据库保存在每个动态硬盘最后1MB的保留空间内。LDM数据库结构分别如图3-3、表3-2所示。图3-3 LDM数据库结构布局图

3) GPT硬盘分区

GPT(GUIDPartitionTable,全局唯一标识分区表)是解决MBR硬盘分区无法支持2TB以上容量问题的又一种硬盘分区,是一种由基于Itanium计算机中的可扩展固件接口(EFI*)使用的硬盘分区架构。在MBR硬盘中,分区信息直接存储于MBR中。如图3-4所示,在GPT硬盘中,分区表的位置信息储存在GPT中,但出于兼容性考虑,硬盘的第一个扇区仍然用作MBR,之后才是GPT,传统MBR信息存储于LBA0,GPT头存储于LBA1,接下来是GPT分区表,64位Windows操作系统使用16384字节(或32扇区)作为GPT分区表,每个分区表大小为128B,每个扇区存储4个分区表。

接下来的LBA34是硬盘上第一个分区的开始。为了减少分区表损坏的风险,GPT在硬盘最后保存了一份GPT头和分区表的副本。GPT头和GPT头备份分别位于硬盘的第二个扇区(即LBA1)以及硬盘的最后一个扇区(标记为LBA-1)。

图3-4 GPT整体布局

3.1.3存储设备

1.机械硬盘

1)机械硬盘的物理结构

机械硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以及盘片两面所安装的磁头和相应的控制电路组成。

机械硬盘工作时,盘片以设计转速高速旋转,设置在盘片表面的磁头则在电路控制下径向移动到指定位置,可以读取或者写入数据。读取数据时,盘片表面磁场使磁头产生感应电流或线圈阻抗产生变化,经相关电路处理后还原成数据;写入数据时,磁头电流产生磁场使盘片表面磁性物质状态发生改变,并在写电流磁场消失后仍能保持,这样数据就被存储起来了。

2)机械硬盘的逻辑结构

机械硬盘由多个盘片组成,每个盘片都有两个面,这两个面都可以用来存储数据,依次称为0面、1面、2面……每个盘片的每个面都有一个读写磁头。若机械硬盘的容量和规格不同,则盘片数不同,面数也就不同。如果有N个盘片,那么就有2N个面,对应2N个磁头(Heads),从0、1、2开始编号。

2.闪存

闪存(Flash存储器)在技术上属于带电可擦除可编程只读存储器(EEPROM)的一种。但与普通EEPROM在字节单位上进行删除和重写操作的存储原理不同,闪存的存储以数据块为单位进行。因此,闪存的优势在于写入大量数据时的高速度。

闪存存储器最常见的两种物理封装方式是TSOP48和BGA。

TSOP又称薄型小尺寸封装,是一种在内存芯片周围做出GullWing形式引脚,采用表面安装技术(SMT技术)直接将芯片附着在PCB板上的技术,具有引脚与外部通信的功能。其整个封装体呈矩形,厚度为0.95~1.05 mm,总高度不超过1.2 mm,是一种使用金属引线框架的封装方式。TSOP48是TSOP封装的一种,是指封装引脚数为48的TSOP封装方式,一般用于内存或者U盘中。

BGA又称球栅阵列封装,相比TSOP,封装体积更小(只有TSOP封装的1/3),具有更好的电性能和散热性。BGA封装的I/O端子以柱状或圆形焊点按阵列形式分布在封装体下面,I/O引脚数目增多,引脚间距离增大,封装成功率高。BGA是目前主流的闪存存储的封装方式,多用于内存、显存、固态硬盘和U盘中。

1) U盘

下面以U盘(全称为USB闪存盘,UniversalSerialBusflashdisk)为例简要说明闪存存储器的构成。U盘是一种采用USB接口的移动存储器,其存储介质为闪存,只需通过USB接口连接到计算机上就可以进行读写操作,实现了即插即用的功能。U盘的结构很简单,主要由外壳和机芯两部分构成。外壳的主要作用是保护内部机芯不受损坏;机芯主要由PCB板、闪存、主控芯片、晶振、稳压IC等组成。

2)固态硬盘

在架构上,固态硬盘(Solid-StateDrive,SSD)与传统机械硬盘基本相似,只是将原来机械部分的马达、碟片、磁头换成了闪存颗粒,主控芯片、总线接口均被保留了下来。固态硬盘相对传统机械硬盘,改变的仅仅是存储介质,但是制造技术门槛大大降低,从而出现了大量的固态硬盘制造厂商。主流固态硬盘厂商有Intel、Samsung、Toshiba、OCZ等。目前主流的固态硬盘的读写速度超过500MB/s,性能远远超过传统机械硬盘。

3.存储设备指标

在电子数据取证过程中,取证人员不仅要了解存储介质的结构和存储原理,还需要了解存储介质的主要技术指标。电子数据取证涉及的存储设备指标有存储容量、数据传输率和接口。

1)存储容量

存储容量是指存储介质中可以容纳二进制信息的总量,即存储容量 = 存储单元数 × 存储字长。

2)数据传输率

数据传输率是指单位时间内存储器所存取的信息量,度量单位通常为位(bit)/秒或字节(Byte)/秒。数据传输率是衡量电子数据取证效率的重要技术指标。

3)接口

接口是指存储设备与计算机系统进行通信的方式。电子数据取证需要了解存储设备的物理接口,即与计算机系统的物理连接部件。常见的物理接口有SCSI接口、FC接口、SAS接口、SATA接口、PCIE接口、M.2接口、U.2接口、EMMC接口等。

3.2文件系统及编码

3.2.1文件系统为了方便使用和管理,硬盘上的数据都是以文件的形式存储的,操作系统大多有自己的文件管理系统,用以实现对硬盘数据的高效管理。

1. FAT文件系统

FAT文件系统是DOS/Windows系列操作系统中使用的一种文件系统的总称,有FAT12、FAT16、FAT32 3种类型,FAT后面的数字表示FAT表中每个FAT项的数据位数(8位为一个字节)。

1) FAT文件系统的特性

(1) FAT12文件系统。FAT12是DOS1.0使用的最早的文件系统,因FAT表中每个FAT项占用12位长度而得名。它只支持8.3文件名命名格式,主要用于软盘,管理的硬盘容量最大仅为8 MB,且文件碎片严重,无法满足实际需求,现在几乎不再使用了。

(2) FAT16文件系统。FAT16文件系统是伴随DOS3.0推出的,采用了16位长度的FAT项,最多可以管理4 GB的分区。由于FAT16分区对大容量硬盘利用效率低且不支持4 GB以上分区,现在应用范围越来越小。

(3) FAT32文件系统。FAT32文件系统是从Windows95开始推出的,采用了32位长度的FAT表,硬盘的管理能力大大增强,能够支持从32MB到32GB的分区管理,提高了硬盘的利用率。但是由于FAT表变长,运行速度较FAT16要慢很多,而且不支持大于4GB的单个文件,现在主要应用于存储卡、U盘或WindowsXP系统盘等。

2) FAT文件系统的结构

FAT文件系统由DBR区、FAT区、FDT区和DATA区4个区域组成。计算机系统启动后,先由MBR引导调入活动分区的DBR,把控制权移交给DBR,再由DBR引导操作系统。通过读取DBR扇区内的保留扇区数和每FAT扇区数,系统可以定位到文件目录表FDT区。FAT表对于FAT文件系统是极为关键的一个组成部分,DATA区中的数据文件都是以簇为单位进行存储的,每一个簇都会与FAT表中的有且仅有一个FAT项相对应。文件系统写入数据时只是改写相应的FAT区、FDT区和DATA区。FAT文件系统数据结构如图3-5所示。图3-5 FAT文件系统数据结构

(1) DBR区。DBR区开始于硬盘的0柱面1磁头1扇区,是操作系统可以直接访问的第一个扇区。DBR的主要功能是:在DOS/Windows操作系统进行引导时,DBR是除硬盘的MBR之外第一个需装载的程序段。DBR被引导调入内存后,便开始执行引导程序段,引导操作系统,其主要任务是装载DOS的系统隐藏文件IO.SYS。

(2) FAT区。FAT区是文件系统用来给每个文件分配硬盘物理空间的表格,其中记录着数据区中每个数据文件对应的簇以及每个簇的当前使用状态。FAT文件系统一般都有两个FAT表:FAT1和FAT2。FAT1是基本FAT表,FAT2是备份FAT表。两个表都是由格式化程序在对分区进行格式化时创建的,长度和内容相同,FAT1紧接着DBR之后存放,FAT2跟在FAT1之后。

文件分配表(FAT)由表头和簇映射(ClusterMap)组成。FAT表的表头包含了紧跟在引导扇区之后的两个项:分区所在的介质类型和分区状态。在FAT表头之后的是簇映射。簇映射由FAT表项构成,每个FAT表项都与数据区中的簇一一对应,分区上每一个可用的簇在FAT中都有且仅有一个FAT表项与之相对应。FAT表项值用于标记该簇的使用状态,其中记录簇的使用状态包括Unallocated(未分配簇)、Allocated(已分配簇)以及Bad(坏簇)等。

对各个簇的使用状态具体说明如下:

①未分配簇:该簇可以用于存储数据。

②已分配簇:该簇当前被占用,正存储着数据。

③坏簇:该簇中包含一个或多个坏扇区,系统不会将其分配给用户文件。

④ EOF:该簇是一个文件项的结束。

(3) FDT区。FDT区紧跟在FAT2之后,用于存储目录名称以及操作系统使用的文件的有关信息。在FAT文件系统的FDT表中会为每个文件和文件夹分配一个文件目录项,用以记录文件或文件夹的名称、属性、大小、起始簇号、创建时间(CreatedTime)、创建日期、访问日期、修改日期、最近修改时间(ModifiedTime)等内容。

(4) DATA区。DATA区是FAT文件系统的主要区域,用于实际存储文件数据,以簇为单位进行管理。FAT32文件系统DATA区的内容主要包含根目录、子目录和文件内容3部分,以树形结构存储数据,DATA区存储数据是取证的主要对象。每个文件系统(FAT、NTFS等)都会记录如下内容:

①对象(文件/文件夹)的基本属性,包括名称、日期、时间、长度等。

②对象的起始位置,即起始簇。

③对象的数据片段(不连续的簇)。

④逻辑卷上所有簇的状态。

2. NTFS文件系统

NTFS(NewTechnologyFileSystem)是新技术文件系统的简称,是随着WindowsNT操作系统的诞生而产生的文件系统。NTFS是一个建立在保护文件和目录数据基础上,同时兼顾节省存储资源、减少硬盘占用量的一种先进的文件系统。NTFS是目前主流的文件系统。

1) NTFS文件系统的特点

NTFS文件系统之所以能够取代老式的FAT文件系统,是因为相比于FAT,NTFS具有许多新的特性和优点,在安全性、可恢复性、容错性、文件压缩和硬盘配额等方面都较为出色。NTFS基于可恢复文件结构而设计,能有效降低用户数据文件丢失或毁坏的风险;可提供容错结构日志,通过全部记录用户的操作来保护系统的安全;使用中不易产生文件碎片,可有效节约硬盘占用;可利用B+ 树文件管理方法跟踪文件在硬盘上的位置,相比于FAT文件系统中使用的链表技术具备更多的优越性。B+ 树排序方法如图3-6所示。图3-6 NTFS文件系统的B+ 树排序方法

在NTFS文件系统中,使用卷(Volume)表示一个逻辑硬盘。卷可以是一个基本分区、一个扩展分区中的逻辑硬盘,或是一个被视为非DOS分区的硬盘上的一部分空间。一个卷可以是被操作系统指定的一个逻辑驱动器的硬盘空间,甚至可以不是一个硬盘上的相邻空间。NTFS支持大容量硬盘和在多个硬盘上存储文件,基于NTFS的大型数据库可能会跨越不同的硬盘。NTFS文件系统与FAT文件系统一样,也是以簇为基本单位管理硬盘空间和文件存储的。

一个文件总是占用若干个簇,即使在最后一个簇没有完全被用完的情况下,也占用了整个簇的空间,这样造成了硬盘空间的浪费,但是也为残留数据的恢复提供了可能。与其他文件系统一样,NTFS文件系统也记录了以下内容:

(1)对象(文件/文件夹)的基本属性,包括名称、日期时间信息、大小、属性等。

(2)对象的起始位置,即起始簇。

(3)对象的数据片段(不连续的簇)。

(4)逻辑卷上所有簇的状态。

2) NTFS文件系统的结构

NTFS文件系统的结构示意图如图3-7所示。图3-7 NTFS文件系统的结构示意图

3) NTFS文件记录结构

MFT以文件记录(FR)来实现对文件的管理,每个文件记录都对应着不同的文件,每个文件记录占用2个扇区。如果一个文件有多个属性或是被分散成很多碎片,就可能需要多个文件记录,这时将存放文件记录位置的第一个记录就称作基本文件记录。文件记录在MFT中物理上是连续的,从0开始依次按顺序编号。文件记录分为三部分:首先是文件记录头,然后是属性列表,最后以FFFFFFFFH作为结束标志。文件记录结构如图3-8所示。图3-8文件记录结构

(1)文件记录头的结构。在同一个操作系统中,文件记录头的长度和偏移位置的数据含义是基本不变的,属性列会随数据的不同而不同,不同属性列的含义也不相同。如图3-9所示,偏移量00H~37H是一个文件记录头。文件记录头的信息含义如表3-3所示。图3-9文件记录头

(2)文件记录中的属性结构。在NTFS文件系统中,所有与文件相关的数据均被认为是属性,包括文件的内容。文件记录是一个与文件相对应的文件属性数据库,记录了文件数据的所有属性。每个文件记录中都有多个属性,它们相对独立,有着各自的类型和含义,每个属性的偏移00H~03H为该属性的类型标志。属性类型及含义如表3-4所示。

3. exFAT

exFAT(ExtendedFileAllocationTableFileSystem)即扩展文件分配表,是微软在WindowsEmbeded6.0(包括WindowsCE5.0、6.0,WindowsMobile5、6、6.1)中引入的一种适合于闪存(如U盘、存储卡等)的文件系统,是针对FAT文件系统能够管理的空间有限、NTFS文件系统对闪存介质芯片损耗较大等问题而推出的。

1) exFAT文件系统的特点

与FAT文件系统对比,exFAT主要特点如下:

(1)支持的单文件大小理论上最大可达16EB(16 × 1024 × 1024TB)。

(2)支持的簇最大为32MB。

(3)支持访问控制列表(AccessControlLists,ACL)。

(4)采用了剩余空间分配表,剩余空间分配性能得到改进。

(5)同一目录下最大文件数可达65536个。

(6)支持Transaction-safeFAT (TFAT)文件系统,即安全FAT文件系统。

(7)提供给OEM的可定义参数可以使这个文件系统适应于有不同特点的设备。

(8)时间戳能够使用通用协调时间UTC。

(9)增强了台式计算机与移动设备的互相兼容性。

(10)降低了硬盘空间文件系统的开销。经测试发现,4GB的闪存驱动器格式化为NTFS,文件系统开销为47.2MB,而使用exFAT仅为96KB。

2) exFAT文件系统的结构

exFAT文件系统由DBR及其保留扇区、FAT、簇位图文件、大写字符文件和用户数据区5部分组成,其结构如图3-10所示。图3-10exFAT文件系统的结构

(1) DBR及其保留扇区:操作系统引导记录,与FAT文件系统相似。在DBR之后往往有一些保留扇区,其中12号扇区为DBR的备份。

(2) FAT:文件分配表,与FAT文件系统相同。

(3)簇位图文件:exFAT文件系统中的一个元文件,类似于NTFS文件系统中的元文件 $Bitmap,用来管理分区中簇的使用情况。

(4)大写字符文件:exFAT文件系统中的第二个元文件,类似于NTFS文件系统中的元文件 $UpCase。Unicode字母表中每一个字符在这个文件中都有一个对应的条目,用于比较、排序、计算Hash等,该文件大小固定为5836B。

(5)用户数据区:exFAT文件系统的主要区域,用来存放用户的文件及目录。

4. HFS/HFS+

苹果操作系统主要采用的文件系统包括HFS和HFS+两种格式。早期的Apple计算机使用MFS文件系统。1985年,苹果公司发布了HFS文件系统,取代了MFS文件系统,但是HFS文件系统的结构和数据管理方式存在很多不足。1998年,苹果公司又发布了HFS+ 文件系统,针对HFS文件系统的一些不足做出了改进。因此,HFS+ 文件系统是目前苹果操作系统默认最常用的文件系统。接下来主要讲解HFS+ 文件系统的结构、特点以及文件删除原理。

1) HFS+ 文件系统的结构

HFS+ 文件系统把卷称为宗卷,HFS+ 卷有5种特殊的文件,它们被称为元文件,用来保存文件系统结构的数据和属性。它们分别是编录文件(CatalogFile)、盘区溢出文件(ExtentsOverflowFile)、分配文件(AllocationFile)、属性文件(AttributesFile)和启动文件(StartupFile),这些特殊文件只有数据分支,没有资源分支,起始地址和大小都在卷头中加以描述。HFS+ 文件系统的结构如图3-11所示。图3-11HFS+ 文件系统的结构

(1)卷头。HFS+ 宗卷的前两个扇区被保留不用,一般为空扇区,没有任何数据,但这两个被保留不用的扇区所在的块在分配文件内会被标记为“已使用”。每个HFS+ 都必须有一个卷头,卷头通常位于第三个扇区,也就是2号扇区,卷头内存储着各种与宗卷相关的信息,如建立的时间、大小等,在宗卷的倒数第二个扇区有一个卷头的备份。宗卷的前两个扇区和最后一个扇区都被保留不用。

(2)编录文件。编录文件存储着宗卷内所有文件和目录的重要信息,采用B- 树结构对数据进行组织。HFS+ 文件系统利用编录文件中的信息来维系宗卷内的文件和目录的层次关系。

(3)盘区溢出文件。HFS+ 存储数据的基本单位为块,盘区是一系列连续的分配块,如果文件不是连续存放的,就会有多个盘区。对于一个用户文件,前8个盘区的信息保存在宗卷的编录文件中,如果多于8个,那么从第9个盘区开始往后的盘区信息需要保存在盘区溢出文件中。

(4)分配文件。分配文件用来描述一个分配块是否已经分配给文件系统使用,相当于一个位图文件,每个位都与宗卷内的一个块相对应。

(5)属性文件。属性文件用来保存文件或目录信息的文件,其结构和编录文件一样,采用B-树结构。另外,属性文件的节点大小最小为4KB。

(6)启动文件。启动文件是一个特殊文件,其作用是从HFS+ 卷上启动非macOS。

(7)坏块文件。坏块文件用来记录硬盘上有缺陷或不能正常存储数据的块的重要文件,可以避免文件系统对硬盘缺陷块进行分配。坏块文件既不属于用户文件,也不属于元文件,在文件系统的卷头中没有对其进行描述,卷头和编录文件中都找不到坏块文件的信息。

2) HFS+ 文件系统的特点

HFS+ 文件系统的特点主要体现在以下几个方面:

(1) Mac系统把硬盘空间划分为一个个大小为512 B的逻辑块(LogicBlock),逻辑块其实就是扇区。所有扇区从0开始编号,直到硬盘的最大扇区数减1。

(2)文件系统中文件的分配单元不是扇区,而是分配块(AllocationBlock),一个分配块占用一组连续的扇区。分配块相当于FAT、NTFS文件系统中的簇,只是工作环境与名称不同而已。每个分配块的大小为2N扇区。因为HFS+ 用32位记录分配块的数量,所以一个宗卷中最多可以管理232个分配块。一般情况下,分配块的大小为4KB,这是最优化的分配块大小。

(3)所有的文件结构(包括卷头)都包含在一个或者几个分配块中。用每分配块的大小字节数除以512 B,可得到每分配块的大小扇区数,再直接乘以分配块号,就能得到一个分配块的第一个扇区所在位置。

(4)为了减少文件碎片的产生,HFS+ 在为文件分配存储空间时,会尽可能地为其分配一组连续的分配块或块组。块组的大小通常为分配块大小的整数倍,这个值在卷头中予以说明。

(5)对于非连续存储的文件,Mac采用下一可用分配策略为其分配存储空间,即当Mac系统接收到文件空间分配请求时,如果首先找到的空闲空间无法满足请求的空间大小,则继续从下一个找到的空闲块开始继续分配;如果这次找到的连续空闲空间足够大,则根据请求空间的大小分配块组大小的整倍数空间给这个文件。

3) HFS+ 文件系统的文件管理方式

HFS+ 文件系统对文件的管理结构如图3-12所示。图3-12 HFS+ 文件系统对文件的管理结构

5. Ext

Linux可以运行在多种硬件平台上,支持MBR硬盘分区和GPT硬盘分区。随着Linux的不断发展,它所支持的文件系统也在迅速扩充,Linux系统内核可以支持包括Ext、Ext2、Ext3、Ext4、NTFS等10多种文件系统,其中以Ext3、Ext4最为常用。下面主要介绍最常用的Ext3文件系统,并简要介绍Ext4文件系统。

1) Ext3文件系统的结构

Ext3文件系统的全部空间被划分为若干个块组,每个块组内的结构都大致相同,Ext3文件系统的整体结构及第一个块组的具体结构如图3-13所示。图3-13 Ext3文件系统的整体结构及第一个块组的具体结构

Ext3文件系统对文件的管理结构如图3-14所示。图3-14Ext3文件系统对文件的管理结构

2) Ext4文件系统简介

Ext4是Linux文件系统的一次革命。Ext3相对于Ext2的改进主要在于日志方面,而Ext4相对于Ext3的改进是更深层次的,是文件系统数据结构方面的优化。Ext4在性能、伸缩性和可靠性方面做了大量改进,引入了大量新功能。

其主要特点如下:

(1)兼容性强。

(2)支持更大的文件系统和更大的文件。

(3)支持更多的子目录数量。

(4) Extents。

(5)支持多块分配。

(6)支持延迟分配。

(7)支持快速FSCK(FileSystemCheck)。

(8)支持日志校验功能。

(9)支持无日志模式。

(10)在线碎片整理。

(11)新的i-节点结构。

①更大的i-节点:Ext4为了在i-节点中容纳更多的扩展属性,将默认大小提升到256B。增加的空间用来存储更多的节点信息,这样有利于提升硬盘性能。

② i-节点预留机制:当新建一个目录时,若干i-节点会被预留下来,等新的文件在此目录中创建时,这些预留的i-节点就可以立即被使用,文件的建立和删除将变得更加高效。

③纳秒级的时间戳:在Ext3中,时间精度是秒;在Ext4中,考虑到未来的发展,时间戳的单位精度提升到了纳秒。

(12)支持持久性预分配。

(13)默认启用barrier。Ext4默认启用barrier,只有当barrier之前的数据全部写入硬盘后,才能写barrier之后的数据。

6.光盘文件系统

(1) ISO-9660:由国际标准化组织于1985年颁布,是目前唯一通用的光盘文件系统,任何类型的计算机以及所有的刻录软件都支持它。因此,如果想让刻录好的光盘能被所有的CD-ROM驱动器都顺利读取,最好使用ISO-9660或与其兼容的文件系统;其他的文件系统只能在CD-R或CD-RW上读取,限制了光盘的通用性。ISO-9660目前有Level1和Level2两个标准。Level1与DOS兼容,文件名采用传统的8.3格式,所有字符只能是26个大写英文字母、10个阿拉伯数字及下划线。Level2在Level的基础上做了改进,允许使用长文件名,但不支持DOS。这种光盘文件系统不支持单个大于2GB的文件。

(2) UDF:UniversalDiscFormat(统一光盘格式)的缩写,它采用标准的封装写入(PacketWriting,PW)技术将CD-R当作硬盘来使用,允许在CD-R/RW光盘上任意追加数据,用户可以在光盘上修改和删除文件,支持2GB以上的大文件。在使用UDF时,一般都可以使用Windows中的资源管理器进行烧录,不会像使用ISO映像文件进行烧录时,每次完毕后都要进行关闭区段(CloseSession)的操作,从而减少了烧录失败的概率,DOS和Windows98系统不支持此格式,Windows2000和XP以上系统及macOS系统支持此格式。另外,它还有一种派生的格式,即UDF/ISO,用UDF的技术制作ISO标准的光盘。

(3) Joliet:微软公司自行定义的光盘文件系统,也是对ISO-9660文件系统的一种扩展,它也支持Windows9x/NT和DOS,在Windows9x/NT下文件名可显示64个字符,可以使用中文。

(4) Romeo:著名的Adaptec公司自行定义的文件系统,支持Windows9x/NT,文件名最多可有128个字符,支持中文,但不支持DOS、OS/2、Linux、macOS等操作系统,其应用范围较小。

除此之外,还有一些针对特定厂商或系统的光盘文件系统,主要有HFS、CD-RFS、RockRidge等。

(1) HFS:苹果(Apple)公司的Mac机使用的光盘文件系统,全称为HybridFileSystem(混合文件系统),是ISO-9660的延伸,允许以ISO-9660Level2的方式在CD-ROM上存放长文件名,以及存放数据文件和执行文件之间的关联信息,但是存放在Level2的信息无法被Mac以外的计算机读取。

(2) CD-RFS:索尼公司自定义的一种与UDF类似的文件系统,其全称为CD-RecordableFileSystem(可记录光盘文件系统),使用的是PW技术。

(3) RockRidge:针对UNIX系统的ISO-9660文件系统,支持文件名字母大小写、符号字符以及长文件名。由于兼容ISO-9660,因此即使操作系统不支持RockRidge,也可以通过ISO-9660查看。

7.分布式文件系统

单纯通过增加硬盘容量和个数来扩展文件系统的存储容量的方式已经不能适应大数据时代的需求。单机版的文件系统在容量大小、存储速度、数据备份、数据安全等方面的表现都存在局限。分布式文件系统可以有效解决数据的存储和管理难题。

分布式文件系统(DistributedFileSystem)是指文件系统管理的物理存储资源不是直接连接在本地节点上,而是通过计算机网络与节点相连,各节点拥有相同的存储权限,按照需求应对不同的存储需求的文件系统。分布式文件系统的设计基于客户机/服务器模式,将固定于某个地点的某个文件系统扩展到任意多个地点/多个文件系统,众多的节点组成一个文件系统网络。每个节点可以分布在不同的地点,通过网络进行节点间的通信和数据传输。人们在使用分布式文件系统时,无须关心数据是存储在哪个节点上或是从哪个节点获取的,只需要像使用本地文件系统一样管理和存储文件系统中的数据。

典型的分布式文件系统为Hadoop。Hadoop是一个由Apache基金会开发的分布式系统基础架构。Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem,HDFS)。HDFS有高容错性的特点,并且设计用来部署在低廉的硬件上;能提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序,以流的形式访问文件系统中的数据。Hadoop框架最核心的设计就是HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算。

3.2.2编码与解码

相对于难懂的二进制代码,编码可以通过统一的定义数据格式来提高数据执行效率。同时编码也可以隐藏数据结构,有利于保护版权。电子数据取证实际上是一个黑盒的探索过程,很多时候,取证就是分析数据采取什么方式的编码,以及使用正确解码方式使数据可视化。因此,了解编码原理和解码方法是电子数据取证至关重要的基础。

1.相关概念

如同一座大厦的建设从一砖一瓦开始,编码体系也是由最基本的概念建立起来的。从最小的单位字符到整个编码体系,每一部分都起着重要作用,也有着确定的概念。

1)字符(Character)

字符是文字与符号的总称,包括文字、图形符号、数学符号等。一个字符是用二进制编码表示的,但具体是什么字符,是根据字符集决定的。

2)字符集(Charset)

字符集是一组抽象字符进行规律排序的集合。字符集实际上就是个映射表。字符集常常和一种具体的语言文字对应起来,该文字中的所有字符或者大部分常用字符就构成了该文字的字符集,比如英文字符集。一组有共同特征的字符也可以组成字符集,比如繁体汉字字符集、日文汉字字符集。

3)字符编码(Encoding)

字符编码是计算机在处理各种字符时,将字符和二进制内码对应起来而形成的映射集合,它是个名词。需要注意的是,映射的动作是动词的编码(Encode),而映射出的编码(Encoding)是二进制的。制定编码的前提是确定字符集,并且将字符集内的字符排序,然后和二进制数字对应起来。根据字符集内字符的多少确定用几个字节来编码。如果编码已经限定了一个明确的字符集合,那么就称它为被编码过的字符集(CodedCharacterSet)。

2.字符集和编码的区别

字符集作为字符的集合,是作为一个标准使用的,如果需要在系统中使用或者网络上传输处理,就需要对其进行编码(Encode)/解码(Decode)。例如,Unicode可依不同需要以UTF-8、UTF-16、UTF-32等方法编码,GB2312和CNS11643可以使用ISO/IEC2022、EUC等标准编码。有些字符集如Big5通常不需编码即可使用,所以Big5既是字符集又是编码。

3.编码

字符必须编码后才能被计算机处理。计算机使用的缺省编码方式称为计算机的内码。早期的计算机使用7位ASCII编码作为系统内码,ASCII字符编码标准主要是为英语语系国家制定的,无法处理亚洲国家的文字体系。亚洲各国根据本国实际情况设计了相应的字符编码标准,在ANSI码的基础上设计了符合本国实际情况的字符编码集,能够处理大数量的象形字符,这些编码使用单字节表示ANSI的英文字符(即兼容ANSI码),使用双字节表示汉字字符。例如用于简体中文的GB2312和用于繁体中文的Big5。

1) ASCII字符集

ASCII(AmericanStandardCodeforInformationInterchange)即美国信息互换标准代码,简称为美标,是基于拉丁字母的字符编码而形成的。它主要用于显示现代英语和其他西欧语言。ASCII是现今最通用的单字节编码系统,大部分计算机都支持ASCII编码,等同于国际标准ISO646。ASCII字符编码标准规定了用0~127的128个数字代表信息的规范编码,其中包括33个控制字符(0x00~0x20和0x7F共33个)、一个空格和94个可显示字符。ASCII字符集包括英文字母、阿拉伯数字和标点符号等字符。ASCII码是7位编码,只支持ASCII码的系统会忽略每个字节的最高位,只认为低7位是有效位。

2)GB 2312—1980字符集

GB23 12—1980简称为GB 2312,其标准名全称为《信息交换用汉字编码字符集基本集》,由中国国家标准总局于1981年5月1日发布实施。

3) GBK字符集

GBK(ChineseInternalCodeSpecification)是我国汉字内码扩展规范,于1995年颁布。GB是国标,K是汉字“扩展”的汉语拼音第一个字母。GBK码是GB码的扩展字符编码,GBK向下与GB 2312编码兼容,向上支持ISO10646.1国际标准。GBK中简体汉字的编码与GB 2312中简体汉字的编码相同,基本包含了所有中文汉字编码。另外,GBK中还包含繁体字的编码。

4) Big5字符集

Big5编码又称大五码或五大码,1984年由中国台湾财团法人信息工业策进会和五间软件公司宏碁(Acer)、神通(MiTAC)、佳佳、零壹(ZeroOne)、大众(FIC)共同创立,故称大五码。

5) Unicode、UCS和UTF

(1)定义。

ISO开发了ISO10646项目,Unicode协会开发了Unicode项目,二者的工作殊途同归,在合并了双方的工作成果后,创建了单一的字符编码标准。只不过其名称不同,Unicode协会称其为Unicode(UniversalMultiple-OctetCodedCharacterSet)编码,ISO则称其为UCS(UnicodeCharacterSet)编码(ISO10646.1的一部分)。目前,Unicode得到广泛应用。

(2)编码原理。

Unicode只规定如何编码,并没有规定如何传输、保存这个编码。例如,“爱”字的UCS编码是0x7231,可以用4个ASCII字符传输、保存,也可以用UTF(UCSTransformationFormat)编码传输。UTF-8、UTF-7、UTF-16都是被广泛接受的方案,使用UTF-8编码,“爱”用3个连续的字节E788B1来表示。无论使用哪种方式,关键在于通信双方都要认可。UTF-8的优点是它与ISO 8859-1完全兼容。

(3) UTF-8编码。

UTF-8便于不同的计算机之间使用网络传输不同语言和编码的文字,使得双字节的Unicode能够在现存的处理单字节的系统上正确传输。

UTF-8使用可变长度字节储存Unicode字符。例如,ASCII字母继续使用1字节储存,重音文字、希腊字母或西里尔字母等使用2字节储存,而常用的汉字就要使用3字节储存,辅助平面字符则使用4字节储存。如表3-5所示,下列字节串用来表示一个字符,用到哪个串取决于该字符在表中的编码范围。

根据UTF-8的生成规律和UCS字符集的特性,可以看到UTF-8具有以下特性:

① UTF-8完全和ASCII兼容,即ASCII对应的字符在UTF-8中和ASCII编码完全一致。范围在0x00~0x7F的字符一定是ASCII字符,不可能是其他字符的一部分。GBK和Big5都存在的缺陷在UTF-8中是不存在的。

②大于0x007F的UCS字符,在UTF-8编码中至少是2字节。

③ UTF-8中每个字符编码的首字节总在0x00~0xFD(不考虑UCS-4支持的情况,其首字节在0x00~0xEF)。根据首字节就可以判断之后连续的几个字节。非首字节的其他字节都在0x80~0xBF。0xFE和0xFF在UTF-8中没有被用到。

④ GBK编码中的汉字字符在UCS-2中的范围为0x0800~0xFFFF,所以每个GBK编码中的汉字字符的UTF-8编码都是3字节。但GBK中包含的其他字符的UTF-8编码不一定是3字节,如GBK中的俄文字符。

⑤在UTF-8编码的传输过程中即使丢失一个字节,根据编码规律也很容易定位丢失的位置,不会影响其他字符。在其他双字节编码中,一旦损失一个字节,就会影响此字节之后的所有字符。从这点可以看出UTF-8编码非常适合作为传输编码。

(4) UTF-16和UTF-32编码。

UTF-16和UTF-32也是Unicode标准的编码字符集的字符编码方案。相对于UTF-8,它们以字节为单位进行编码,UTF-16使用2字节对Unicode进行编码,UTF-32则使用4字节对Unicode进行编码。

(5)内码和代码页。

目前Windows操作系统的内核已经支持Unicode字符集,这样在内核上可以支持全世界所有的语言文字。但是现有的大量程序和文档都采用了某种特定语言的编码,如GBK,应如何进行解码呢?

6)电子邮件的编码

电子邮件传输中常见的3种编码标准是UU编码(UnixtoUnixEncoding)、MIME(MultipurposeInternetMailExtentions)标准和Binhex编码。其中,MIME标准现已成为Internet电子邮件的主流,它在传送时即时编码,收信人的软件收到的也是即时解码还原。使用这种方式,用户根本不需要知道它是如何编码/解码的,所有工作由电子邮件软件自动完成。Outlook、Foxmail、Internet Mail都使用MIME编码方式,如表3-6所示。

7) ROT-13编码

有时会遇到这样的字符“Yvsrvfnobkbspubpbyngrf,Lbharirexabjjunglbh'ertbaantrg”,实际上这段文字被进行了ROT-13编码。ROT-13是一种简单的编码,它把英文字母分成前后两组,每组13个,编码和解码的算法相同,仅仅交换字母的这两个部分,即[a-m]→[n-z]和[n-z]→[a-m]。这种算法非常容易被破解。

8) URL编码

(1)定义。

URL(UniformResourceLocator,统一资源定位符)编码是一种浏览器用来打包表单输入的格式。字符的URL编码将字符转换为8位十六进制数并在前面加上“%”。浏览器可能会用两种编码方式发送URL到服务器,分别是UTF-8和ANSI(当前系统语言设置,在Windows操作系统中可以理解为当前代码页)。例如,ASCII字符集中空格对应的是十六进制的20,因此URL编码是 %20。

(2)编码规则。

URL编码遵循下列规则:每对来自表单的name/value由“=”间隔,name/value之间由“&”分开;如果name没有复制,那么name还是发送,但是没有任何数值。任何特殊的字符(非ASCII码,如汉字,像 =、& 和 % 等特殊字符)使用ASCII或者UTF-8编码方式进行十六进制编码时,需在十六进制编码前面加上“%”符号。例如,特殊字符“\”的ASCII码是92,92的十六进制是5C,所以“\”的URL编码就是%5C。

对于中文汉字,因为是对ASCII码以外的字符进行URL编码,所以需要清楚地知道被编码的字符的字符集,这点很重要。例如,要对“汉字”这两个字符进行URL编码,可能得到的是“%E6%B1%89%E5%AD%97”,也可能是“%BA%BA%D7%D6”。因为前者是UTF-8下“汉字”的URL编码,后者是GB 2312下“汉字”的URL编码。

上述只是经常使用的编码方式,对于商业软件,其很有可能使用自己的编码方式以保护自己的商业版权。对于公开的编码方式,可以使用规范的解码方式解码;而对于使用自有编码方式的软件,由于无法知道编码方式,因此不能采取正常方式解码,通常采取的方式是逆向分析技术或者猜解。

4.解码

解码是编码的逆过程。当信息编码和解码能统一时,信息可以被交换和理解;相反,当信息编码和解码不能统一时,信息就不能被交换和理解,这就是乱码。乱码的产生既然是信息编码和解码不能统一的结果,那么解决乱码的过程就是找到和编码相统一的解码方法,并对机器不能全自动适当解码的信息进行重新处理和解码,使信息达到可以被理解和交换的目的。解码可以通过以下方式进行。

4.解码

解码是编码的逆过程。当信息编码和解码能统一时,信息可以被交换和理解;相反,当信息编码和解码不能统一时,信息就不能被交换和理解,这就是乱码。乱码的产生既然是信息编码和解码不能统一的结果,那么解决乱码的过程就是找到和编码相统一的解码方法,并对机器不能全自动适当解码的信息进行重新处理和解码,使信息达到可以被理解和交换的目的。解码可以通过以下方式进行。

<metahttp-equiv ="Content-Type"content ="text/html;charset = UTF-8">

2)通过特定字符识别

字节顺序(Endianness)是内存中字节(有时是位)的排列方式,用以表示不同种类的数据,分为大端(BigEndian)和小端(LittleEndian)。UTF-8以字节为编码单元,没有字节顺序的问题。UTF-16和UTF-32都有字节顺序的问题,在解码一个UTF-16文本前,需要了解每个编码单元的字节顺序。例如,“奎”的Unicode编码是594E,“乙”的Unicode编码是4E59,如果收到UTF-16字节流“594E”,那么这是“奎”还是“乙”?

Unicode规范中推荐的标记字节顺序的方法是BOM(ByteOrderMark,字节顺序标记)。在UCS编码中有一个称为“ZEROWIDTHNO-BREAKSPACE”的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议在传输字节流前先传输字符“ZEROWIDTHNO-BREAKSPACE”,这样如果接收者收到FEFF,就表明这个字节流是大端的;如果收到FFFE,就表明这个字节流是小端的。因此,字符“ZEROWIDTHNO-BREAKSPACE”又被称为BOM。

UTF-8不需要用BOM表明字节顺序,但可以用BOM表明编码方式,如表3-7所示。字符“ZEROWIDTHNO-BREAKSPACE”的UTF-8编码是EFBBBF,所以如果接收者收到以EFBBBF开头的字节流,就可以知道这是UTF-8编码。Windows操作系统就是使用BOM来标记文本文件的编码方式的。

3)通过编码规律识别

对于URL编码,永远是以“URL”+“%”开始。但是解码时需要注意URL编码方式,才能正确解码。例如,访问/search?q=%D1%A7%CF%B0时也会看到错误结果。其中,“%D1%A7%CF%B0”是GBK编码的“学习”,Google默认使用UTF-8编码,在遇到该URL时,会将其进行UTF-8编码。从某种意义上讲,供识别的字符串越长,出现这种识别错误的概率就越低。

邮件的Base64编码一般是以“十六进制编码”+“==”结束的。

4)工具自动识别

大多数的取证工具能够自动或者指定字符集来解码,以达到可视化的目的。但是,并不是所有编码都能够自动识别,很多情况下还需要人为判断,甚至手动解码。在取证中能够用到的解码工具有乱码查看器、MultiEndecode等。

3.3恶意代码分析基础

3.3.1恶意代码简介恶意代码也称Malware,目前有许多定义。例如,EdSkoudis将恶意代码定义为运行在计算机上,使系统按照攻击者的意愿执行任务的一组指令。微软《计算机病毒防护指南》中将术语“恶意软件”用作一个集合名词,指代故意在计算机系统上执行恶意任务的病毒、蠕虫和特洛伊木马。

3.3.2恶意代码的分类

目前网络上流行的恶意代码及其变种层出不穷,攻击特点多样化。恶意代码的主要类型如表3-8所示。

恶意代码取证特点如下:

(1)高度的加密性和隐蔽性。

(2)证据的可靠性,封闭结构使证据效力大为提高。

3.3.3恶意代码的分析原理

1.行为分析应用于恶意代码检测的原理

行为分析之所以成为反病毒研究领域的热点,是因为它拥有识别未知恶意代码的能力。SANS的研究主管AllanPaller认为:“基于行为的系统能够阻止那些表面看来很友好的恶意代码。”在反病毒领域应用行为分析技术,就是因为它可以对操作系统的运行状态进行严密监控,确定操作系统正常运行时的状态并将状态记录下来。

图3-15所示为用户交互的简单行为分析模块,是这种行为分析系统的初步模型。按照某种规定,首次检测到某行为将要发生时,系统就用包含详细文字描述信息的通知提醒系统用户,然后模型根据用户发出的反馈信息继续操作,阻止、允许或终止与此行为相关联的进程。图3-15用户交互的简单行为分析

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论