NTFS流隐藏数据分析与检验

2020-04-09 04:42秦志红
无线互联科技 2020年3期

秦志红

摘   要:NTFS流是NTFS文件系统非常实用的功能,可以把文件的很多非常规属性以流的形式进行表达,但同时也提供了一种数据隐藏的方式,数据以NTFS流的方式进行隐藏在Windows操作系统中比较常见。文章通过分析NTFS交换数据流原理,重点研究以NTFS流进行数据隐藏的若干种形式,提出了有针对性的数据分析检验方法和线索发现手段,为相关应用行业提供技术依据。

关键词:数据隐藏;NTFS流;数据检验

1    NTFS交换数据流原理

新技术文件系统(New Technology File System,NTFS)交换数据流也称备用数据流(Alternate Data Streams,ADS),是NTFS文件系统的主要特性,在NTFS文件系统中允许文件附加多个数据流。众所周知,每个文件都有主文件流,包括文件大小、时间戳等基本属性,但在ADS功能中文件还可以在主文件流之外存在许多非主文件流,这些非主文件流寄宿在主文件流中,尽管通过正常的文件浏览是没办法看到这些非主文件流的信息,但其却是真实地存在于磁盘空间中的,NTFS文件系统特有的数据组织方式可以满足操作系统对非主文件流的管理[1]。

1.1  NTFS文件的数据组织方式

与之前的文件配置表(File Allocation Table,FAT)文件系统不同的是,NTFS采用主文件表(Master File Table,MFT)对文件的各种数据信息进行组织和管理,每个MFT分配1 024个字节,即两扇区大小,包括从10 H到B0 H的多个属性,不同的属性表达不同含义,如图1为1.txt文件的数据组织方式,框内分别为10 H属性和80 H属性,其中,80 H属性中包含了文件内容“1234567890”。对于比较小的文件,如果MFT的大小能够满足,则系统不会另外分配存储空间。

图2为2.jpg文件的数据组织方式,很明显,框内的80 H属性中没有包含文件的所有内容,文件内容根据80 H属性的data runs由系统另外分配了存储空间。

1.2  NTFS流的数据组织方式

通过分析NTFS的文件数据组织方式,可以看到MFT的80 H属性能够反映文件的数据存储形式,根据该属性可以找到文件中所包含数据所在位置。正是利用NTFS文件系统的这一特性,为交换数据流提供了数据存储的可能性。如图3所示为在1.txt文件中寄宿2.jpg数据内容的MFT[1]。可以看到在这个MFT中存在2个80 H属性,前面一个为1.txt文件的数据内容,后一个为2.jpg文件的数据内容。彻底删除2.jpg文件后,通过正常的数据浏览只能看到1.txt文件,但事实上,2.jpg的数据仍然存在于磁盘空间中,只是被1.txt的交换流隐藏了起来。

可见,NTFS流隐藏数据的原理就是利用MFT中80 H属性表达数据内容的特性,在其中增加若干个80 H属性,宿主文件位居第一,其他的寄宿流文件分别被分配不同的80 H属性,代表不同的数据内容。

2    NTFS流隐藏数据的方式

从原理上来看,NTFS流可以隐藏所有数据,具体来说包括各种类型的文件和单纯的文本,但隐藏文本和文件的方式是不同的。

2.1  NTFS流隐藏文本

隐藏文本采用的命令是:echo “文本”>宿主文件:寄宿文件。例如,把文本“pass”隐藏在文件1.txt中,在命令行输入echo pass>1.txt:2,其中2为寄宿文件,可以不指定扩展名,并不影响把数据隐藏在磁盘空间中[2]。如果宿主文件的MFT空间能够容纳文本大小,则会在其MFT中增加一个80 H属性,并且数据内容存在于该属性中,否则系统会另外分配存储空间给文本,而80 H属性只会保存data runs。

2.2  NTFS流隐藏文件

NTFS流可以隐藏所有类型的文件,隐藏文件的方式与隐藏文本基本相同,只是所采用的命令是type。例如把文件2.jpg隐藏在1.txt中,在命令行输入type 2.jpg>1.txt:2,其中2也是寄宿文件,这个文件类型是jpg。如果用图片浏览类工具可以查看其内容。表现在MFT中,也是在1.txt的MFT中增加一个80 H属性,用于表达2.jpg的数据内容。

3    NTFS流隐藏数据的检验

需要特别说明的是,NTFS流对可执行文件的隐藏。病毒、木马等恶意程序大都需要以可执行文件的形式进行传播并在受害者终端运行,这些文件很容易被杀毒软件或者防火墙发现,无法达到目的,需要进行隐藏,而NTFS流提供了很好的隐藏功能,被恶意程序广泛使用。然而随着此类问题日益突出,Windows操作系统升级过程中取消了使用start命令执行流隐藏exe文件的功能,导致此类文件即使被隐藏,也无法运行,虽然此举可以避免恶意代码传播,但同时也阻止了正常exe文件的执行,造成诸多不便。如果确实需要使用此类文件,可以建立mklink指向寄宿文件。

如前所述,通過NTFS流隐藏的数据很多是恶意程序,在公安机关电子数据取证过程中需要对此类行为进行检验并作证据固定,从而印证违法行为。

3.1  查看隐藏数据

隐藏数据和加密数据相比,前者倾向于对数据所采取的保密方法不能为人所知,而加密数据则更注重于密钥的保护。因此,如果已经知道了此类数据的隐藏方法,查看就不再是难题。了解NTFS流隐藏数据的原理后,就可以有针对性的查看其中隐藏的数据。具体来说,就是对所怀疑文件的MFT进行分析,如果存在多个80 H属性,则表明该文件中寄宿有非主文件流,逐一对各个非主文件流进行分析以后,每个寄宿文件的数据内容、存储位置就能查看了。如图3所示,表明宿主文件1.txt中存在以NTFS流方式寄宿的隐藏数据。

至于隐藏数据的内容,则需要更进一步分析才能查看。如果寄宿的数据比较少,在80 H属性中可以直接查看;但情况如图3所示寄宿的数据比较多,则要分析data runs,data runs的结构和普通80 H一样,如图4所示,第一个字节21 H指明文件的位置和占用空间大小。21中的“2”表示寄宿文件所在位置为0598 H簇,“1”表示所占空间为07 H簇。按照这个指示就可以找到文件位置并能够查看内容了。

然而很多时候,检验人员并不能够知道哪个文件中被寄宿了交换数据流,无法有针对性地分析其MFT的80H属性。为了更快地进行鉴别,可以选择工具作为初选,常用的工具有低空探测系统(Low-Altitude Detection System,LADS),Streams等,最简单的还可以使用cmd命令中的dir /r来查看,但这个方法经常会漏检,选择时要慎重。经过初查后,会发现可能的宿主文件,然后再使用WinHex等编辑器进一步分析和查看隐藏文件的内容。

3.2  提取固定隐藏数据

在公安实际工作中,如果NTFS流隐藏的数据能证明嫌疑人的违法行为,还需要对证据进行提取和固定,这一过程必须规范。

3.2.1  提取固定宿主文件

使用前面提到的工具找到宿主文件,对宿主文件生成数字签名并复制到U盘等存储介质。需要特别注意的是,NTFS流隐藏的数据信息标识在宿主文件的MFT中,MFT是NTFS文件系统特有的,如果宿主文件被复制到FAT文件系统中,由于对文件的管理不再是MFT,则会丢失NTFS流数据,导致隐藏的数据无法继续提取并固定。所以,提取宿主时存储目标介质的文件系统要求必须是NTFS。

3.2.2  提取固定寄宿的隐藏数据

如果在宿主计算机上直接提取,发现宿主文件后分析其中寄宿的隐藏数据个数,逐一提取。对于文本类的隐藏数据,可以在powershell下执行get-content命令先查看內容,如果有必要再进行提取。非文本类隐藏数据,也可以通过get-content命令查看,但由于其中包含较多的不可识别字符,一般需要对隐藏数据直接进行提取后再分析。

可能某些原因不适合在现场进行隐藏数据的提取,或者当时并没有发现隐藏数据的存在,经过进一步分析后才找到的NTFS流数据,应分析宿主文件并提取其中的隐藏数据[2]。在这种情况下需要注意的是,分析以前要对宿主文件再生成一次数字签名,并与之前的签名相比对,只有两者相符才可以进行下一步操作。宿主文件要放在NTFS文件系统下,打开文件的MFT,找到80 H属性并逐一分析,对于存在多个80 H属性的文件,使用get-content命令分别提取。

提取完成以后,隐藏的寄宿文件也要分别进行数字签名,以保证证据的有效性,当然在提取的过程中有必要的话,还需要进行截屏、录像等操作。

4    结语

NTFS文件系统的ADS功能被越来越多人熟知以后,利用NTFS交换数据流进行数据隐藏的行为更普遍了,其中也会掺杂较多的恶意行为。并且,随着检测技术的提升,利用NTFS流隐藏的数据也更为复杂,电子数据取证工作面临的挑战愈加艰巨。文章针对笔者近几年在工作中常见的NTFS流隐藏数据进行分析,并提出具体的解决方法,对从事相关行业的技术人员具有一定的参考意义和借鉴作用。