File Slack / RAM Slack: Warum schreibt Windows beliebige RAM-Bytes auf die Festplatte? Funktioniert auch Linux?

1363
Byte Commander

Ich habe gerade in einem Buch über Windows 7 über Dateispiel gelesen. Was ich bereits (denke) weiß:

  • Windows speichert Daten auf der Festplatte in Clustern. Ein Cluster enthält normalerweise 8 Sektoren mit jeweils 512 Bytes, also 4096 Bytes oder 4 KByte.
  • Große Dateien werden auf mehrere Cluster aufgeteilt, wenn der Rest einer Datei nicht den gesamten Cluster ausfüllt. Dieser verbleibende nicht verwendete Speicherplatz am Ende des Clusters wird als "Datei-Slack" bezeichnet.
  • Windows schreibt immer 512-Byte-Blöcke gleichzeitig, sodass der zuerst nur teilweise verwendete Sektor gefüllt werden muss, bevor er auf die Festplatte geschrieben wird.
  • Aus irgendeinem Grund entscheidet Windows, eine zufällige Sequenz aus dem RAM auszuwählen, um diesen Sektor zu füllen.
  • Die verbleibenden ungenutzten Sektoren in dem teilweise verwendeten Cluster bleiben unverändert und behalten die zuvor vorhandenen Bytes, die Teile einer zuvor gelöschten Datei an diesem Speicherort sein können. Es heißt Antriebsspiel.

Sind diese Annahmen korrekt?

Und warum schreibt Windows zufällige Speicherbereiche (die Passwörter enthalten könnten) auf meine Festplatte, nur um Speicherplatz zu füllen - und diese Bytes nicht einfach auf Null zu setzen?

Und ist dieses Verhalten spezifisch für Windows (welche Versionen?) Oder ist es spezifisch für das NTFS-Dateisystem? Würden Linux- oder ext4-Dateisysteme dasselbe tun?

2
Ich bezweifle stark, dass Ihre letzte Annahme richtig ist. In Bezug auf die Frage, die Sie nicht gefragt haben - "Windows schreibt zufällige Teile des Speichers auf meine Festplatte", klingt, als hätte es gegen einige Sicherheitsanforderungen verstoßen, die Windows bestanden haben soll (https: / /msdn.microsoft.com/en-us/library/windows/desktop/aa376387(v=vs.85).aspx). grawity vor 8 Jahren 0

2 Antworten auf die Frage

2
Wes Sayeed

"File Slack" refers to the data between the last byte of the file and the end of the cluster. It usually contains whatever bit pattern the OS uses to represent unallocated memory.

"Drive Slack" refers to clusters that have been deallocated but not overwritten. It can also refer to unallocated space that no longer falls within a partition boundary.

"RAM Slack" -- I have never heard this term before. Googling this, all the resources I find seem to be quoting or deriving from a book titled "Cyber Forensics: A Field Manual For Collecting, Examining, and Preserving Evidence of Computer Crimes" by Albert J. Marcella, Jr. and Doug Menendez.

I read the chapter where the term is used. Even though it was copyrighted in 2010, it makes reference to the way DOS and Windows 95/98 did things. That hasn't been relevant for over a decade. I could be reading it out of context though. Either way, this book appears to be the source of the term.


Windows stores data on the disk in clusters. A cluster usually contains 8 sectors of 512 bytes each, so 4096 bytes or 4kiB.

This is correct in the case of legacy drives and 4K "advanced format" drives. The sector size is truly 4KB on 4K "native" drives, so there is a 1:1 correlation between sectors and clusters for those drives.

Large files get split over multiple clusters, when the remainder of a file does not fill an entire cluster, this remaining unused space at the end of the cluster is called "file slack".

Also correct.

Windows always writes 512 byte blocks at once, so the first only partially used sector must get filled up before being written to disk.

This is incorrect. Windows does not write in blocks; only clusters. It will write data at any arbitrary size, but they will be in multiples of the cluster size (usually 4KB). The only time Windows cares about sectors/blocks is when an LBA address must be calculated. The low-level disk driver does this, not the filesystem driver. It's actually very inefficient to do reads/writes in 512-byte chunks. It works against the drive's internal hardware caches. Doing a dd in Linux with a 512-byte blocksize will confirm this. It's an order of magnitude slower on both reads and writes.

For whatever reason, Windows decides to pick a random sequence from RAM to fill this sector.

Also incorrect. Windows will write whatever is in the buffer. Almost every application (including the filesystem driver) allocates fresh memory from the heap when writing to the output buffer. When an application allocates memory, it does so in pages, which are (guess what!) 4KB in size. Unallocated memory is usually represented by a repeating bit pattern (not 00 or FF), so that is what will be written to the end of the cluster if it's not full. In cases where the application's output buffer is a modified copy of its input buffer, the slack will contain whatever data the input buffer had in it.

The remaining unused sectors in the partially used cluster remain unchanged and keep the bytes they had before, which can be parts of a previously deleted file in this location. It's called drive slack.

Also incorrect. Windows will always do a full-cluster commit even if there's only 1 byte of changed data. It is true that deallocated clusters have whatever data was in them before. Windows does not bother with zeroing out deallocated clusters. But none of this takes place at the sector level.

4KB is a magic number. Memory pages are 4KB. I/O buffers are 4KB. Sectors are 4KB now. Even the drive's hardware is optimized for I/O requests that are 4KB (or some multiple thereof).


All modern operating systems work this way (Windows, Linux, and OS X). The only exceptions to the rules above are applications that have the disk open for raw access. They completely bypass the operating system's API calls for doing writes. You only see this with low-level recovery and forensic tools because such applications do not benefit from all of the optimizations you get with buffered I/O.

Okay, danke für deine ausführliche Antwort. Möchten Sie einige offizielle Quellen zitieren? Ich würde gerne mehr zu diesem Thema recherchieren und erfahren, was Sie herausgefunden haben. Wenn Ihre Aussagen jedoch richtig sind, warum behaupten so viele Quellen das beschriebene RAM-Slack-Phänomen und warum gibt es forensische Werkzeuge, um diesen Teil des Dateisatzes zu lesen und zu analysieren und nach möglicherweise sensiblen Daten wie Kennwörtern zu scannen? Byte Commander vor 8 Jahren 1
Ich bin selbst hier aufgetaucht, weil mein College-Lehrbuch RAM-Speicher umfasst (wenn auch nicht in der Tiefe). Das Buch wurde 2014 veröffentlicht. Seth vor 7 Jahren 0
@Seth; Es würde mich sehr interessieren, was dieses Buch zu diesem Thema zu sagen hat. Es ist durchaus möglich, dass sich "RAM-Speicher" auf etwas anderes bezieht, das ich einen anderen Namen genannt habe. Wes Sayeed vor 7 Jahren 0
@WesSayeed https://i.stack.imgur.com/9hUUF.jpg. So ziemlich genau dieser Absatz. Seth vor 7 Jahren 0
@Seth; Wie heißt dieses Buch? Der Wortlaut und die kontextabhängige Verwendung klingt fast genauso wie die Quelle, die ich gefunden habe. Wes Sayeed vor 7 Jahren 0
@WesSayeed Oh, Entschuldigung, es ist "CompTIA Security + Guide to Network Security Fundamentals" von Mark Ciampa. Seth vor 7 Jahren 0
0
Jambalaya

RAM-Slack ist eigentlich ein bekanntes digitales Forensik-Artefakt.

In der Tat haben ältere (dh Win 95/98) Windows-Versionen 512-Byte-Speicherblöcke geschrieben. Bitte verwechseln Sie nicht das Cluster-Schreiben an die Medien. Wenn ich 512-Byte-Speicher schreibe, meine ich, dass Windows Speicher für das Schreiben in 512-Byte-Blöcken zugewiesen hat, was den Speichermediencluster summiert.

Beispiel: 4096 Byte-Cluster auf Speichermedien und eine 2049 Byte lange Datei. Ältere Windows haben Buffer / Cache / Memory-Speicher in 512-Byte- Blöcken für diese 2049-Byte-Datei zugewiesen und in den Speicher geladen .

Das erfordert 5 x 512-Byte- Speicherblöcke . Dadurch bleiben 511 Byte groß, die nicht Teil der 2049 Byte-Datei waren. (5 × 512 = 2560, aber 2049/512 = 4,002).

Was ist also im 511-Byte-Speicher (2560 - 2049 = 511)? In älteren Versionen löschte Windows den 511-Byte-Teil nicht und schrieb ihn mit der gesamten 4-KB-Größe aus. Dies wird in digitalen Forensikkreisen als RAM-Speicher bezeichnet.

Da es zu diesem Thema einige Verwirrung gibt (z. B. stimmt die andere Antwort nicht mit dem überein, was Sie geschrieben haben), haben Sie irgendwelche Quellen, die Sie zitieren können? Byte Commander vor 6 Jahren 1