来源:Unit 3: Unix/Linux File System 3.1 Unix/Linux File System Sleuthkit Continued
工具:Sleuthkit Demo
先补充下硬链接和软链接的知识。
有两个文件,其中file0的内容为welcome
这两个文件的inode如下 ls –li查询inode(对于inode,元数据,数据块,超级块陌生的朋友可以根据文章的来源URL去找到对应的视频进行学习,只需要投入10分钟就可以掌握)
1表示只有一个文件file0指向了inode编号14288130 sansforensics是UID GID,也就是权限
创建一个硬链接指向到file0,file0HL为新创建的文件名,他们的inode号一样切硬链接数为2,所有信息一模一样,因为这些数据都保存在inode里面,只有文件名不同。
再来感受一下软链接,使用的命令一样,带的参数不同,它是指针,只指向了file0的文件名。它们的inode不一样,权限也可以看见不一样,链接数也只有1个,文件大小也不同,一个5,一个8.这意味着软链接与原文件的内容不同(仿佛windows中创建的快捷方式)
软链接只存储路径信息,不复制原始数据内容。
现在体会一下Sleuth Kit工具的命令,这里以金融案例取证的原始比特流为例,它的格式是dd,使用FTK Imager提取得到的。这是取证了整个设备得到的文件,记住。如下
现在需要找到分区的开始点,否则侦探工具包将无法工作。
有两种方式可以找到,一个是F盘,一个是MMLS。一般使用MMLS方法,它提示的信息友好一些。
将文件投入进来就会自行补全路径
补全的路径如下,所有分区信息也都出来了,基于扇区的单位显示出来。注意unallocated,这是未分配的空间。文件的起点是2048字节。
我们要找到这个证据的文件系统使用了什么,就需要从2048字节开始,因为这之前未分配。
输入好命令以后,把文件拖进来。
运行命令之后,信息较多,只截图一张图感受一下。它告诉你所有的文件系统信息。这里把整个超级块的信息都给解析出来了。
使用FLS命令列出所有的文件,包括删除的文件 -m参数是MAC时间(跟网管提指标一样,保存出来自己生成时间信息的文件名),所有文件放在斜杠中,-r参数是递归地生成,文件拖进来。这是整个设备的证据信息,重定向到新的文件中,不要打印在屏幕上。
如果是被删除的文件没有文件名,它会不会显示出来?使用另外一个命令ils,因为没有文件名,取消斜杠。这里的-r参数只收集已删除的文件,这是默认值,可以取消它
看一下这两个文件的样子,它们是人类不可读的,这里大致看看什么样子。后面使用展示如何生成一个人类可读的MAC时间轴,这里只是打开看看。这个文件里有inode信息,可以使用工具玩一玩,给定一个inode就行了。MAC time可以提取这份原始信息生成清晰的inode给出来,但这里可以观察发现inode在哪里。
你看见的每一个东西,后面都是文件名,inode。发现规律,编写工具。工具就是这样出来的。这里虽然有mac time工具提取出来,但是以后遇到跟多的信息就不一定有工具了,建议学习入门编程语言是python。
知道inode在哪里,怎么提取出来以后,使用一下它感受感受。命令istat,给它一个inode,让它告诉你什么情况。这里的allocated表示已经被分配了,它在第六组。Direct blocks就是这个inode号使用的数据块。
你想知道inode对应的数据块里面的内容是什么吗?使用icat查看inode对应的数据块的内容。这里的inode已经被分配了,所以它知道数据块编号,所以可以显示出具体信息。这是一份财务报表。
我们使用inode号定位到了具体的数据,那么这一次我们使用数据块号来查看数据。显示的内容是一样的。注意inode和数据块的区别,如果其他数据块使用相同的inode,你用inode号查询的将是所有inode号一致的多个数据块内容。
如果你找到文件系统中数据块和inode之间的关联,那么发生灾难性的数据毁灭时,数据恢复将成为可能。注意这里的文件系统为ext2,不一样的文件系统,数据块的逻辑也不一样,恢复的过程和可能性也有差异,需针对性的深入理解文件系统。
那么如何找到数据块对应的inode?使用ifind,-d参数为数据块号
如果一个inode存在多个数据块,你使用ifind发现了一个数据块对应的inode了,就又可以使用inode查看多个数据块中的内容,整个信息就被完整的捕捉出来。
再来试一个意思为Find file name. 的ffind命令。 给定inode以查找文件名。如果这个inode有文件名,那么它就被分配使用了。文件名如下,一份报表证据。
目录的内容存储了文件和子目录之间映射到inode的所有信息。这些inode对应的文件名都存储在它们的父目录中。
从数据层(数据块)到inode层到文件系统层(你知道数据块和inode之间的对应关系相互匹配查询过)到文件名层的命令全都尝试完毕。这一切的实战都基于SIFT虚拟机,它在SANS社区下载,地址前面的文章也给了。啊如果你没听过SIFT的话,我可以告诉你,世界级工具吧,所有法医学计算机取证专业的人都在使用它。
如果你想知道哪个工具存在或者不存在,使用which——这个命令是否存在,然后它位于哪里。