Slack Space
Slack Space ist die Bezeichnung für einen Versatz bzw. Überhang im Speicher, der beim Speichervorgang in blockorientierten Massenspeichern sehr häufig auftritt. Der englische Begriff „Slack“ lässt sich im hier verwendeten Sinne zunächst mit Versatz / Überhang / Schlupf / Spiel bzw. Puffer übersetzen. „Space“ als zweites Wort des Fachbegriffs ist in diesem Zusammenhang am besten als (Speicher-)Bereich zu verstehen. Slack Space kann daher im Deutschen sehr treffend mit „Schlupfspeicher“ bezeichnet werden, was in einschlägiger Literatur auch regelmäßig gemacht wird.
Grundsätzlich sind verschiedene Arten von Slack Space zu unterscheiden.
File-Slack
Der File-Slack bzw. Datei-Slack ist der Slack Space, der nach dem Ende einer Datei vorkommen kann. Da dieser für forensische Untersuchungen oft der relevanteste ist, wird er hier zunächst ausführlich erläutert:
Blockorientierte Massenspeicher, wie z.B. Festplatten, speichern Daten i.d.R. in 512 Byte großen Sektoren ab. Zur Vereinfachung der Speicherverwaltung gruppieren Dateisysteme meist mehrere Sektoren zu Clustern, wobei ein Cluster die kleinste einer einzelnen Datei zuweisbare Speichereinheit darstellt. Eine in vielen Dateisystemen übliche Clustergröße ist 4096 Byte (4 KB): Hier bilden also 8 Sektoren zu je 512 Bytes ein Cluster (vgl. Abbildung 1). Zusammen mit weiteren Kennzahlen des Dateisystems wird die Clustergröße i.d.R. am Anfang jeder Speicher-Partition im sog. Volume Boot Record (VBR) definiert.
Wenn nun also im Extremfall eine Datei mit einer Größe von nur 1 Byte in einem Dateisystem mit einer Clustergröße von 4096 Byte gespeichert wird, dann belegt diese Datei auf der Festplatte ein ganzes Cluster (4096 Byte) Speicherplatz, obwohl sie nur 1 Byte groß ist. Die restlichen 4095 Byte werden zum Speichern also nicht benötigt und somit beim Speichervorgang dieser Datei auch nicht beschrieben. D.h. diese Datei hätte in diesem Fall einen File-Slack von 4095 Byte. Dateisysteme wie NTFS vermeiden diesen Effekt jedoch, indem sie Inhalte sehr kleiner Dateien direkt im ohnehin vorhandenen FILE-Record speichern, d.h. in der Metadatenstruktur, die die betreffende Datei verwaltet (bei NTFS in der MFT (Master File Table): vgl. MFT-Slack im Abschnitt „Weitere Arten von Slack Space“). Die nicht zur Datei gehörenden Bytes eines Clusters bezeichnet man demnach als File-Slack, der sich wiederum aus zwei verschiedenen Arten von Slack Space zusammensetzt: dem RAM-Slack und dem Drive-Slack.
RAM-Slack müsste zu Deutsch korrekter Weise eigentlich Sektor-Slack heißen, da dieser Slack Space den Speicherbereich vom Ende der tatsächlichen Datei bis zum Ende des aktuellen Sektors bezeichnet. Er wird aber meist immer noch als RAM-Slack bezeichnet, weil frühere Microsoft Betriebssysteme bis einschl. Windows 95A in diesen Bereich zufällige Daten aus dem Arbeitsspeicher geschrieben haben. Aus Sicherheitsgründen wird dieser Bereich heute jedoch von aktuellen Betriebssystemen mit Nullen überschrieben, so dass darin in heutzutage gängigen Betriebssystemen keine Daten aus dem Arbeitsspeicher mehr ausgelesen werden können. Daher passt die Bezeichnung RAM-Slack heute nicht mehr so gut und dieser Slack Space hat bei forensischen Untersuchungen somit auch deutlich an Relevanz verloren, da sich darin i.d.R. keine digitalen Spuren (aus dem Arbeitsspeicher) mehr finden lassen.
Der für forensische Untersuchungen heutzutage wesentlich interessantere Teil des File-Slack ist der Drive-Slack. Das ist der Bereich vom Ende des RAM-Slack bis zur Clustergrenze, weshalb hierfür der Begriff Cluster-Slack eigentlich besser geeignet wäre und daher auch (zumindest in der deutschsprachigen Literatur, u.a. im Buch „Computer Forensik Hacks“ von Lorenz Kuhlee und Victor Völzow) entspr. verwendet wird. Beim Drive-Slack handelt es sich also um Sektoren innerhalb des letzten Clusters einer Datei, die nicht beschrieben und somit auch nicht überschrieben wurden. In solchen Slack Spaces lassen sich mit geeigneten forensischen Werkzeugen daher Daten aus Fragmenten von ehemals in diesen Bereichen gespeicherten Dateien auslesen. Dies ist grundsätzlich möglich, da gelöschte Dateien von gängigen Betriebssystemen im Speicher nicht tatsächlich physisch gelöscht (sprich mit anderen Bits überschrieben werden), sondern die Speicherbereiche, in denen diese Dateien gespeichert waren, vom Betriebssystem einfach wieder als frei verfügbar gekennzeichnet und somit zum erneuten Speichern für andere Dateien freigegeben werden. Somit sind gelöschte Dateien (i.d.R. zumindest Fragmente davon) solange physisch auf einer Festplatte verfügbar bis sie bei einem folgenden Speichervorgang (mit den Inhalten einer anderen Datei) tatsächlich überschrieben werden. Daher kann man im Drive-Slack sehr nützliche Daten/Beweise für eine forensische Auswertung finden, denn es handelt sich um Daten aus der Vergangenheit, die dem regulären Benutzer i.d.R. verborgen bleiben, da von ihm i.d.R. angenommen wird, dass einmal vom Betriebssystem endgültig gelöschte Dateien auch nicht mehr im Speicher vorhanden sind und somit nicht wiederhergestellt werden können. Im Drive-Slack gefundene Spuren können jedoch nicht immer auf Anhieb einer bestimmten Person zugeordnet werden, was für eine strafrechtlich relevante Beweisführung problematisch sein kann. Dennoch können in diesen Bereichen gefundene Informationen forensische Ermittlungen entscheidend voranbringen, wenn darin z.B. das Passwort von verschlüsselten Dateien gefunden wird und diese für die Strafverfolgung von hoher Relevanz sind.
In Abbildung 2 ist dieses Konzept zum besseren Verständnis nochmals an einem Beispiel grafisch verdeutlicht: Hier wird angenommen, dass eine Datei (symbolisch dargestellt mit dem Text „Hallo_Welt“, der in den Speicher geschrieben wurde) mit einer Größe von 1640 Byte gespeichert wurde. D.h. die eigentliche (logische Größe) dieser Datei wären somit die bereits genannten 1640 Byte. Da die kleinste zur Verfügung stehende Speichereinheit (1 Cluster) in dem hier verwendeten Dateisystem aber 4096 Byte groß ist, beansprucht diese Datei daher 4096 Byte, auch wenn hiervon 2456 Bytes (4096 – 1640 = 2456) ungenutzt bleiben. Aus Sicht des Betriebssystems sind durch diese Datei somit 4096 Bytes belegt und man spricht daher auch von der sog. „physischen Größe“ bzw. der „Größe auf dem Datenträger“.
An diesem Beispiel sieht man auch, dass man die Größe der einzelnen hier relevanten Slack Spaces exakt berechnen kann. Der RAM-Slack beträgt also 408 Bytes. Denn die Datei „Hallo_Welt“ benötigt mit ihrer Größe (1640 Bytes) zunächst vier Sektoren (1640 / 512 = 3,2), um die Datei überhaupt abspeichern zu können, wovon drei komplett benötigt werden und vom vierten nur ein kleiner Teil, nämlich genau 1640 – (3 * 512) = 104 Bytes. Der Rest des vierten Sektors (512 – 104 = 408 Bytes) ist somit der RAM-Slack, der vom Betriebssystem automatisch mit Nullen überschrieben wird (vgl. Abbildung 2, vierter Sektor von links nach dem „t“). Nach dem vierten Sektor bleiben schließlich nochmals vier weitere Sektoren bis zum Ende des Clusters übrig (= in diesem Fall der Drive-Slack). Dieser Drive-Slack hat somit eine Größe von 4096 – 2048 = 2048 Bytes. Diese werden beim Speichervorgang gar nicht benutzt und auch nicht mit Nullen überschrieben (im Gegensatz zum RAM-Slack). D.h. eine Datei bzw. ein Datei-Fragment, das vorher in diesen vier letzten Sektoren des betroffenen Clusters gespeichert war und vom Betriebssystem gelöscht wurde (wie bereits oben beschrieben, heißt Löschen ja nur: den betroffenen Speicherbereich wieder zum Speichern für andere Daten freizugeben), steht – falls es zwischenzeitlich nicht durch andere Daten überschrieben und durch erneutes Löschen wieder als freier Speicher deklariert wurde (sonst stünde es ja nicht als überschreibbarer Speicher zur Verfügung) – immer noch in diesen Sektoren und kann – je nachdem wie die Daten von der vorherigen Anwendung gespeichert wurden – ggf. im Klartext dort ausgelesen werden. Genau dieser Fall ist in der Abbildung 2 illustriert: Hier hat der forensische Ermittler zusätzlich Glück und kann offensichtlich ein komplettes (nicht fragmentiertes und somit nicht auf mehrere Speicherbereiche verteiltes) Passwort („Pwd=top-secret“) im Klartext aus dem Drive-Slack auslesen. Die auf „top-secret“ folgende Null könnte an dieser Stelle theoretisch entweder noch Teil des Klartext-Passworts oder ggf. bereits eine vom Betriebssystem beim vorherigen Speichervorgang des Passworts im damaligen RAM-Slack automatisch gespeicherte Null sein und somit nicht mehr zum Passwort gehören. Dies wäre in einer forensischen Untersuchung weiter zu eruieren.
Wie bereits oben erwähnt ist File-Slack ein sehr häufiges Phänomen. Das hat einen ganz einfachen Grund: File-Slack tritt nur dann nicht auf, wenn eine zu speichernde Datei exakt der Clustergröße des jeweiligen Dateisystems entspricht bzw. einem Vielfachen davon. Das ist aber so gut wie nie der Fall. Abbildung 3 zeigt, dass z.B. auch bei der PDF-Datei „Praktikum-2019“, die die Aufgabenstellung für dieses Praktikum enthält, im Dateisystem von Windows 10 (hier verwendet: NTFS) ein File-Slack auftritt: Der File-Slack entspricht hier exakt der Differenz zwischen der Größe auf dem Datenträger (954.368 Bytes = physische Größe, vgl. oben) und der tatsächlichen Größe (950.409 Bytes = logische Größe, vgl. oben), also 3.959 Bytes und damit fast einem ganzen Cluster. Wie im Beispiel oben, lässt sich auch hier der RAM-Slack und der Drive-Slack exakt berechnen, wenn man weiß, dass die Clustergröße auch hier 4096 Bytes (= 4 KB) beträgt und sich ein Cluster aus 8 Sektoren zu je 512 Bytes zusammensetzt. Der RAM-Slack ist hier also 375 Bytes groß und lässt sich folgendermaßen berechnen:
1. Berechnung der Anzahl vollständig gefüllter Sektoren: 950.409 / 512 = 1856,3 Sektoren → d.h.: 1856 Sektoren (à 512 Bytes) werden von der Datei beim Speichervorgang vollständig gefüllt, der 1857. Sektor nur zu einem kleinen Teil;
2. Berechnung der zum Speichern verwendeten Bytes im 1857. Sektor: 950.409 – (1856 * 512) = 950.409 – 950.272 = 137 Bytes;
3. Berechnung des RAM-Slacks: die zum Speichern der Datei bereits in diesem Sektor verwendeten 137 Bytes werden von der Anzahl der in diesem Sektor grds. verfügbaren 512 Bytes abgezogen, wobei noch 375 Bytes übrig bleiben (512 – 137 = 375). Somit beträgt der RAM-Slack dieser Datei 375 Bytes. Dieser Slack Space wird wie o.g. von einem aktuellen Betriebssystem i.d.R. automatisch mit Nullen aufgefüllt, so dass hier i.d.R. keine forensischen Spuren mehr zu vermuten sind.
Auch der Drive-Slack lässt sich nun ganz einfach berechnen: physische Größe der Datei abzüglich 1857 Sektoren à 512 Bytes → also: 954.368 – (1857 * 512) = 954.368 – 950.784 = 3584 Bytes (entspricht 7 Sektoren à 512 Bytes); alternativ könnte man auch rechnen: physische Größe der Datei abzüglich der Summe aus der logischen Größe der Datei und ihrem RAM-Slack: → 954.368 – (950.409 + 375) = 954.368 – 950.784 = 3584 Bytes
Obwohl der reguläre Nutzer (ohne spezielle Tools) keinen Zugriff auf den File-Slack hat und diesen auch nicht einsehen kann, kann er dennoch (auch ohne spezielle Tools) sehen, ob und in welcher Größe ein File-Slack bei einer Datei vorhanden ist. Denn die logische (in Abbildung 3 mit „Größe“ bezeichnet) und physische Größe (in Abbildung 3 mit „Größe auf Datenträger“ bezeichnet) einer Datei kann man sich in aktuellen Windows-Systemen in den Datei-Eigenschaften im Windows-Explorer anzeigen lassen (vgl. Abbildung 3) und kann damit - wie oben gezeigt – auch immer den jeweiligen File-Slack berechnen.
Weitere Arten von Slack Space
Generell ist jede Art von Slack Space immer ein Speicherbereich auf einer Festplatte, der vom Betriebssystem (z.B. mit dem regulären Windows Explorer) und somit vom normalen Benutzer (ohne spezielle Tools) nicht gesehen werden kann. Wie bereits o.g., ist die bei forensischen Untersuchungen meist relevanteste Art von Slack Space der File-Slack und hierbei heutzutage v.a. der Drive-Slack. Daher wurden diese Arten auch entsprechend ausführlich erläutert. Zudem gibt es aber noch weitere Arten von Slack Space. Diese werden im Folgenden jeweils nur kurz erklärt.
Reservierte Bereiche: z.B. Sektor 1 bis 62. Hier kann man z.B. den Code von Boot-Viren finden.
MFT-Slack: Die MFT ist die Master File Table im NTFS-Dateisystem. In dieser Datei werden alle Informationen (Eigenschaften) zu allen Dateien im jeweiligen FILE-Record gespeichert, wie z.B. welche Blöcke zu welcher Datei gehören, Zugriffsrechte auf die einzelnen Dateien sowie das jeweilige Erstellungs- und Änderungsdatum. Für jeden FILE-Record werden mind. 1024 Byte (2 Sektoren) reserviert, aber oft nur ein deutlich kleinerer Bereich davon verwendet. Daher kann in den verbleibenden Bytes ausreichend Speicherplatz zur Verfügung stehen, um den Inhalt der zugehörigen Datei direkt im FILE-Record mitzuspeichern. Wie bereits o.g., werden sehr kleine Dateien bei NTFS daher direkt in der MFT gespeichert, wodurch zunächst kein reguläres Cluster für das Speichern der Datei verwendet wird und somit darin auch kein File-Slack (s. oben) entstehen kann. Eine im MFT auf diese Art und Weise zunächst resident gespeicherte Datei kann jedoch mit der Zeit auf eine solche Größe anwachsen, dass sie in ein reguläres Cluster ausgelagert werden muss. Dann muss das Datenattribut (80 00 00 00) nur noch die Data Run List speichern und nicht mehr die gesamten Daten, wodurch auch in der MFT ein Slack Space entsteht: in diesem Fall MFT-Slack. Darin kann bei forensischen Untersuchungen der Inhalt, der ehemals direkt im FILE-Record gespeicherten Datei, aus der MFT ausgelesen werden.
Partitions-Slack (Volume-Slack): Das sind Sektoren am Ende einer Partition, die keinem Cluster mehr zugeordnet worden sind.
Disk-Slack: Das ist der nicht partitionierte Bereich einer Festplatte.
HPA = Host Protected Area, auch bekannt als Hidden Protected Area oder ATA-geschützter Bereich, ist ein reservierter Bereich für die Speicherung von Daten außerhalb des normalen Dateisystems. Dieser Bereich wird vor dem Dateisystem und dem Betriebssystem - und somit auch vor Formatierungs- und Partitionierungsprogrammen - versteckt und ist für diese nicht erreichbar. HPA wurde mit ATA-4 im Jahre 1998 eingeführt. Es handelt sich hierbei um ein optionales Festplatten-Merkmal, das von den meisten modernen Festplatten unterstützt wird. Mittels HPA kann eine HPA-fähige Festplatte so manipuliert werden, dass sie kleiner erscheint als sie tatsächlich ist. HPA ermöglicht es somit, einen oberen Bereich der Festplatte vor dem Betriebssystem und somit vor dem regulären Nutzer zu verstecken.
DCO = Device Configuration Overlay: Der DCO ist ein versteckter Speicherbereich auf vielen heutzutage gängigen Festplatten. Er wurde im ATA-6 Standard im Jahre 2002 definiert. Mittels DCO ist es möglich, bestimmte in den Identify-Informationen einer Festplatte gemeldete Werte zu beeinflussen, womit bspw. die gemeldete Größe der Festplatte reduziert werden kann. Es entsteht somit eine Differenz zwischen der tatsächlichen physischen Größe der Festplatte (z.B. 500 GB) und der per DCO an das Betriebssystem gemeldeten Größe (z.B. 480 GB). Diese Differenz (i.e. dieser Slack Space bzw. Speicher-Überhang: daher Overlay; im genannten Bsp. hier 20 GB) ist – genauso wie bei HPA – weder für das BIOS, noch für das Betriebssystem sichtbar. Daher kann auch weder das BIOS, noch das Betriebssystem auf den DCO zugreifen und dieser Speicherbereich bleibt somit i.d.R. auch dem regulären Nutzer verborgen – so lange nicht spezielle Tools zum Zugriff darauf verwendet werden. Somit kann durch DCO ein (evtl. sehr großer) Speicherbereich auf einer Festplatte existieren, der sich gut zum Verstecken von Dateien eignet. Die Prüfung ob und inwieweit HPA und DCO auf einer Festplatte vorhanden ist, sowie dessen Analyse muss daher immer Bestandteil einer professionellen forensischen Untersuchung sein.
Slack Space = wichtiger Teil forensischer Untersuchungen
Da es auch Verschleierungs-Tools gibt, die Daten in den Slack Space schreiben können, z.B. Slacker (slacker.exe: kann beliebige Daten in den Drive-Slack verschiedener Dateien schreiben) und somit von Kriminellen für genau diesen Zweck genutzt werden können, ist es generell sehr wichtig, dass bei jeder seriösen forensischen Untersuchung immer alle zum Verstecken von Daten in Frage kommenden Slack Spaces eingehend auf forensische Spuren untersucht werden.