文件松弛/ RAM松弛:为什么Windows向磁盘写入任意RAM字节?Linux也一样吗?


2

我刚刚在有关Windows 7的书中读到有关文件松弛的信息。我已经(想)知道:

  • Windows将数据存储在群集中的磁盘上。群集通常包含8个扇区,每个扇区512字节,因此4096字节或4kiB。
  • 大文件分散在多个群集中,当文件的其余部分未填充整个群集时,群集末尾的剩余未使用空间称为“文件松弛”。
  • Windows始终一次写入512个字节的块,因此第一个仅部分使用的扇区必须先被填满,然后才能写入磁盘。
  • 无论出于何种原因,Windows都会决定从RAM中选择一个随机序列来填充此扇区。
  • 部分使用的群集中剩余的未使用扇区保持不变,并保留之前的字节,这些字节可以是此位置中先前删除的文件的一部分。这称为驱动器松弛。

这些假设正确吗?

为什么Windows仅将随机内存(可能包含密码等)写入磁盘以填充空间-而不仅仅是将这些字节清零?

并且此行为是特定于Windows(哪个版本?)还是特定于NTFS文件系统?Linux或ext4文件系统会做同样的事情吗?


我高度怀疑您的最后假设是正确的。提到您没有问过的问题–“ Windows [确实向我的磁盘中写入了随机的内存””听起来好像违反了Windows 声称已通过的许多安全测试要求。
grawity

Answers:


2

“文件松弛”是指文件的最后一个字节与群集末尾之间的数据。它通常包含操作系统用来表示未分配内存的任何位模式。

“驱动器松弛”是指已被重新分配但未被覆盖的群集。它还可以指不再属于分区边界的未分配空间。

“ RAM Slack” -我以前从未听过这个词。在Google上进行搜索时,我发现的所有资源似乎都来自或引自Albert C. Marcella,Jr.和Doug Menendez题为“网络取证:收集,审查和保存计算机犯罪证据的现场手册”的书。

我阅读了使用该术语的章节。即使它在2010年拥有版权,它也参考了DOS和Windows 95/98的处理方式。十多年来,这一直没有意义。我可能会在上下文之外阅读它。无论哪种方式,这本书似乎都是该术语的来源。


Windows将数据存储在群集中的磁盘上。群集通常包含8个扇区,每个扇区512字节,因此4096字节或4kiB。

对于旧版驱动器和4K“高级格式”驱动器,这是正确的。在4K“本机”驱动器上,扇区大小确实为4KB,因此这些驱动器的扇区和群集之间存在1:1的关联。

大文件分散在多个群集中,当文件的其余部分未填充整个群集时,群集末尾的剩余未使用空间称为“文件松弛”。

也正确。

Windows始终一次写入512个字节的块,因此第一个仅部分使用的扇区必须先被填满,然后才能写入磁盘。

这是不正确的。Windows不写块;仅集群。它将以任意大小写入数据,但是它们将是群集大小的倍数(通常为4KB)。Windows唯一关心扇区/块的时间是必须计算LBA地址的时间。低级磁盘驱动程序执行此操作,而不是文件系统驱动程序。实际上,以512字节的块进行读/写操作效率很低。它适用于驱动器的内部硬件缓存。做一个dd在Linux中有512字节的块大小将确认这一走势。读写速度都慢了一个数量级。

无论出于何种原因,Windows都会决定从RAM中选择一个随机序列来填充此扇区。

也不正确。Windows将写入缓冲区中的任何内容。写入输出缓冲区时,几乎每个应用程序(包括文件系统驱动程序)都会从堆中分配新的内存。当应用程序分配内存时,它是在页面中分配内存的(猜测!)大小为4KB。未分配的内存通常由重复的位模式(不是00或FF)表示,因此如果内存未满,则会将其写入集群的末尾。如果应用程序的输出缓冲区是其输入缓冲区的修改后的副本,则备用项将包含输入缓冲区中包含的所有数据。

部分使用的群集中剩余的未使用扇区保持不变,并保留之前的字节,这些字节可以是此位置中先前删除的文件的一部分。这称为驱动器松弛。

也不正确。即使只有1个字节的更改数据,Windows也会始终执行全集群提交。这真的,解除了分配的集群具有任何数据在他们面前。Windows不会将已释放的群集清零。但是,这一切都不发生在部门一级。

4KB是个魔术数字。内存页面为4KB。I / O缓冲区为4KB。扇区现在为4KB。甚至驱动器的硬件也针对4KB(或其倍数)的I / O请求进行了优化。


所有现代操作系统都以这种方式工作(Windows,Linux和OS X)。上面规则的唯一例外是已打开磁盘以供原始访问的应用程序。它们完全绕过操作系统的API调用进行写操作。您只能在低级恢复和取证工具中看到这一点,因为此类应用程序无法从通过缓冲I / O获得的所有优化中受益。


1
好的,谢谢您的详细回答。您介意一些官方消息吗?我很乐意对该主题进行更多研究,并了解您的发现。但是,如果您的陈述是正确的,为什么有那么多来源声称所描述的RAM松弛现象以及为什么有取证工具读取和分析文件松弛的这一部分并扫描可能的敏感数据(例如密码)?
Byte Commander

我之所以出现在这里,是因为我的大学教科书涵盖了RAM的松弛(尽管不是很深入)。该书于2014
Seth 2016年

@Seth; 我很想听听这本书对这个主题的看法。“ RAM松弛”很可能是指我一直在使用其他名称的其他名称。
Wes Sayeed

@WesSayeed i.stack.imgur.com/9hUUF.jpg。几乎就是那个段落。
赛斯

@Seth; 这本书的标题是什么?措辞和上下文用法听起来与我发现的来源几乎完全一样。
Wes Sayeed

0

RAM松弛实际上是众所周知的数字取证工件。

实际上,较旧的Windows版本(即Win 95/98)确实编写了512字节的内存块。请不要混淆群集写入介质。当我写512字节内存时,我的意思是Windows分配/抓取的内存以512字节块的形式写出,总计存储介质群集。

例如-存储介质上的4096字节群集,以及2049字节长的文件。较旧的Windows 该2049字节文件的内存中以512字节的块分配和抓取了缓冲区/缓存/内存存储。

这需要5 x 512字节的内存块。剩下的511字节不属于2049字节文件。(5 x 512 = 2560,但2049/512 = 4.002)。

那么511字节的内存是什么(2560-2049 = 511)?在旧版本中,Windows不会清除511字节部分,而是将其全部4KB写入。这就是数字取证圈子中所谓的RAM闲置。


1
由于对该主题似乎有些困惑(例如,其他答案与您所写的内容不同),您是否可以引用任何资料?
字节指挥官
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.