Disk-Forensik/ Beweismittelquellen/ Beweismittelquellen im Dateisystem
Slack Space
[Bearbeiten]Das Vorhandensein des File Slack ist in den verschiedenen Dateisystemen begründet. Ein Datenträger besteht aus einer Vielzahl von Sektoren, die die kleinste Speichereinheit eines Datenträgers darstellen. Diese Sektoren haben eine feste Länge und werden bei der so genannten Low-Level Formatierung erstellt. Wird nun dieser Datenträger durch ein Betriebssystem formatiert, so entstehen Cluster. Diese bestehen aus einer bestimmten Anzahl von Sektoren.
Wird nun eine Datei mit einer bestimmten Größe gespeichert, so entspricht diese eigentlich nie genau der Größe eines oder der Summe mehrerer Cluster. Deshalb passiert es, dass der letzte Cluster einer Datei nicht ganz ausgefüllt ist und so ein freier Speicher in Form von ungenutzten Sektoren übrig bleibt. Dieser Platz wird als File Slack bezeichnet. Das Betriebssystem füllt diesen übrig gebliebenen Platz beim Speichern einer Datei mit zufälligen Daten. Die Größe dieser Cluster ist von Dateisystem zu Dateisystem verschieden. Je größer ein Cluster ist, desto größer ist der File Slack und desto größer ist die Platzverschwendung auf dem Datenträger.
Dies wird deutlich sichtbar an der nebenstehenden Grafik. Hier belegt eine Datei, welche nur 39 Byte groß ist, trotzdem einen kompletten Cluster mit 4 KB auf dem Datenträger. Der Rest der 4 KB ist der File Slack.
Für die forensischen Arbeiten ist der File Slack von besonderer Bedeutung, da sich hier oftmals sehr interessante Informationen befinden können. Mit dem Wissen über die verschiedenen File Slack Varianten kann man sich denken, dass hier wichtige Informationen gefunden werden können. So könnte der oben betrachtete 4 KB große Cluster zuvor, mit einer diesen in seiner Größe fast komplett genutzten Datei belegt gewesen sein. Nachdem diese von dort z. B. endgültig gelöscht wurde, also auch aus dem Papierkorb, befindet sie sich trotzdem immer noch voll umfänglich in diesem Cluster, der jetzt lediglich zur neuen Beschreibung freigegeben ist. Wird dieser Cluster nunmehr von einer nur 39 Byte großen Datei beschrieben und somit komplett in Beschlag genommen, ist der allergrößte Teil der vorhergehend dort "wohnenden" Datei mit speziellen technischen Methoden nach wie vor auslesbar. So können unter Umständen nicht nur sensible Daten wie Benutzernamen und Passwörter gefunden werden, sondern es kann auch darauf zurück geschlossen werden, für welche Zwecke ein Rechner in der letzten Zeit verwendet wurde. Schließlich darf man nicht vergessen, dass es sich beim File Slack nicht um Daten im Kilobyte-Bereich handelt, sondern dass bei größeren Datenträgern dieser mehrere hundert Megabyte umfassen kann und dementsprechend viele Daten enthält.
Im Folgenden werden die verschiedenen Varianten beschrieben.
RAM Slack
[Bearbeiten]RAM Slack ist die erste der möglichen Slack Varianten. Wie der Name schon sagt, wird hier der übrig gebliebende Platz des letzten Sektors einer Datei mit zufälligen Daten aus dem Hauptspeicher gefüllt. Da sich im RAM nicht nur temporäre Daten von bearbeiteten Dokumenten oder ähnlichem befinden können, sondern auch weitaus sensiblere Daten, wie z.B. unverschlüsselte Passwörter, besteht hier die Gefahr, dass diese permanent im Slack gespeichert werden. Seit Win95b wird der sogenannte RAM-Slack jedoch mit 0x00 gepaddet, so dass hier keine interessanten Informationen mehr zu gewinnen sind.
Drive Slack
[Bearbeiten]Drive Slack entsteht, wenn zum Speichern einer Datei mehrere Sektoren gefüllt werden müssen, um den letzten Cluster einer Datei abzuschließen. Im Gegensatz zum RAM Slack werden nun nicht Daten aus dem Hauptspeicher, sondern Dateifragmente verwendet, die sich schon vorher auf dem Datenträger befunden haben. So enthält diese Form von Slack häufig Fragmente von bereits gelöschten Daten. Wird nun eine Datei beispielsweise unter Windows gelöscht, werden die von der Datei verwendeten Cluster wieder freigegeben. Allerdings bleiben die Daten der Datei, sowie die Dateifragmente die sich innerhalb des Slacks befinden so lange erhalten, bis sie erneut überschrieben werden.
MFT Slack
[Bearbeiten]MFT Slack bezeichnet den Slack der Master File Table (MFT). Die MFT enthält Informationen über sämtliche Dateien und Verzeichnisse einer Festplatte. Sie besteht aus einzelnen Records. Jede Datei und jedes Verzeichnis besitzt immer mindestens einen Record in der MFT. Die Records geben dem Betriebssystem Informationen, wie mit den einzelnen Dateien umgegangen werden muss. Für die forensischen Ermittlungen von großem Interesse ist nun, dass die Records teilweise auch Fragmente der tatsächlichen Datei enthalten können. Da diese Dateien nicht in Clustern gespeichert werden, gibt es eigentlich keinen richtigen File Slack. Da jeder Record eine feste Länge von 1024 Byte hat, kann es vorkommen, dass Daten kleiner als dieser Speicherbereich sind, und so der übrig gebliebene Platz Fragmente alter Dateien enthalten kann, was als MFT Slack bezeichnet wird. Auch diese Variante des Slacks sollte bei jeder forensischen Ermittlung beachtet werden.
Dateiinformationen
[Bearbeiten]MAC Times
[Bearbeiten]Der Ausdruck MAC-Time bezeichnet die Modification-, Access- und Change-Time einer Datei. Die Modification – Time gibt den Zeitpunkt an, zu dem eine Datei das letzte Mal verändert wurde. Sobald eine Aktion in einem Dokument gesetzt wird, gilt dies als Änderung und zieht eine Aktualisierung der Modification – Time nach sich. Dies gilt auch, wenn die gesetzte Aktion, vor dem Speichern der Datei, wieder rückgängig gemacht wird. Beim Überschreiben eines Teiles der Daten einer Datei mit den exakt gleichen Daten ändert sich die Modification – Time ebenso. Die Access-Time gibt jene Zeit an, zu der zuletzt auf eine Datei zugegriffen wurde. Dieser Zugriff kann sowohl lesend als auch schreibend sein. Die Change – Time liefert die Zeit, zu der die letzte Änderung an den Metadaten einer Datei stattgefunden hat. Obwohl die MAC – Time bei forensischen Ermittlungen wichtige Hinweise über Dateien liefern kann, ist es möglich, dass die angezeigten Informationen nicht korrekt sind. Einerseits lässt sich die MAC – Time durch den Benutzer verändern, andererseits kann es auch durch unterschiedliche Aktionen zu ungewollten Verfälschungen der Zeiten kommen. Bei Windows NTFS geschieht dies, wenn eine Datei kopiert wird. Hierbei wird die Modification – Time geändert, die Change – Time jedoch nicht. So kommt es vor, dass laut MAC – Time eine Datei vor ihrer Erstellung verändert wurde. Weiters wird eine neue Access – Time nur dann gespeichert, wenn sie zumindest eine Stunde älter ist als die vorherige. Unter Linux gibt es ebenfalls Probleme mit den MAC – Times. Beim Kopieren einer Datei ändert sich hier nur die Access-Time. Wird die Datei umbenannt oder verschoben, ändert sich keine der MAC Zeiten. Die einzige Möglichkeit die letzten beiden genannten Aktionen zu erkennen ist, die MAC-Time des Verzeichnisses, in dem die Datei enthalten ist, zu untersuchen. Bei FAT wiederum kann dies zu Problemen führen, da das Verzeichnis keine Uhrzeit, sondern nur das Datum speichert.
Metadaten
[Bearbeiten]Zusätzlich zu der Modification-, der Access- und der Change – Time enthält eine Datei noch weitere Informationen. Diese können bei Bedarf angesehen werden und liefern ebenfalls hilfreiche Hinweise bei forensischen Untersuchungen. Die abgespeicherten Metadaten können zwischen den einzelnen Dateitypen differieren. So hat jede Textdatei einen Autor. Die Metadaten einer Musikdatei können sich hingegen aus Interpreten, Titel, Titelnummer, Albumtitel, Dauer des Tracks und Erscheinungsjahr zusammensetzen. Für eine Bilddatei werden oftmals zusätzliche Informationen über Aufnahmedatum, Abmessung und Kameramodell gespeichert. Alle Dateien haben einen Besitzer und verschiedene Attribute.
Dateisignaturen
[Bearbeiten]Um Daten zu verstecken, können Dateien in sogenannte camouflaged files umgewandelt werden. Hierbei wird die Dateiendung ausgetauscht. So wird aus einer JPG – Datei zum Beispiel eine Datei mit der Endung .doc. Unter Linux führt eine solche Änderung zu keinerlei Problemen. Das umbenannte Dokument kann trotzdem ganz normal geöffnet und modifiziert werden. Das Windows Betriebssystem versucht hingegen, das Dokument mit einem falschen Programm zu öffnen. Dies führt zu Fehlern in der Darstellung der Daten. Um die Datei öffnen zu können, ist es notwendig zu wissen, um welches Dokumentenformat es sich handelt. Dann kann manuell das richtige Programm zum Betrachten ausgewählt werden. Jedes Dokument enthält zu Beginn die dem Dokumentenformat eigene Dateisignatur. Betrachtet man die Datei mit Notepad oder einem vergleichbaren Editor, so kann diese gefunden werden. Bei ausführbaren Dateien (.exe, .sys, .dll) besteht die Signatur zum Beispiel aus den beiden Buchstaben MZ. Bilder im JPEG Format erkennt man an dem Eintrag JFIF.
NTFS ADS Streams
[Bearbeiten]Historie
[Bearbeiten]Alternative Datenströme gibt es seit der Einführung von NTFS am Windows NT Betriebssystem. Hierfür wird einer existierenden Datei oder einem Verzeichnis ein zweiter Strom beliebiger Größe angehängt. Die Größe der bestehenden Datei/ des Verzeichnisses wird dabei nicht verändert. Alternative Datenströme wurden eingeführt, um die Kompatibilität mit dem alten hierarchischen Macintosh – Dateisystem zu ermöglichen, bei dem jede Datei aus zwei Strömen besteht. Der Datenstrom enthält das eigentliche Dokument, während der Ressourcenstrom für die Identifizierung des Dateityps und andere Details verwendet wird.
Erstellen eines ADS
[Bearbeiten]Ein ADS kann beliebige Daten enthalten. Soll ein Text an eine Datei angeknüpft werden, so wird der ADS mit dem Kommandozeilenbefehl notepad visible.txt:ads.txt erzeugt. Der primäre und der sekundäre (alternative) Datenstrom sind durch einen Doppelpunkt getrennt. Gibt es die Datei visible.txt nicht, so wird sie angelegt. Anschließend können Daten in den ADS geschrieben werden. Dies geschieht mit dem Befehl echo „Ich bin ein ADS!“ > visible.txt:ads.txt. Es kann aber auch eine bereits bestehende Datei in den ADS kopiert werden. Hierfür wird der Befehl type atextfile.txt > visible.txt:ads.txt ausgeführt. Angesehen werden kann ein ADS mit dem jeweils zugehörigen Programm. In den vorangegangenen Beispielen wäre dies das Notepad oder ein vergleichbarer Editor (notepad visible.txt:adsfile.txt). Ein ADS kann aber ebenso ein ausführbares Programm enthalten. Soll zum Beispiel der Windows – Taschenrechner an eine Datei angeknüpft werden, lautet der Befehl type C:\WINDOWS\system32\calc.exe > visible2.txt:calc.exe. Das Programm kann anschließend mit dem start – Kommando aufgerufen werden (start .\visible2.txt:calc.exe). Alternative Datenströme können auch an Ordner angehängt werden.
Löschen eines ADS
[Bearbeiten]Gibt es auf dem System ein FAT Laufwerk, so ist das Löschen eines NTFS ADS sehr einfach. Die Datei mit dem angeknüpften Datenstrom wird auf das FAT Laufwerk transferiert und anschließend wieder an ihren alten Ort zurückverschoben. Ist kein FAT Laufwerk vorhanden, so gibt es zwei Möglichkeiten den ADS zu entfernen. Es kann erstens die gesamte Datei mit dem angeknüpften ADS gelöscht werden. Diese Methode funktioniert nicht, wenn sich in der Datei wichtige Daten befinden. In diesem Fall sollte die zweite Methode angewandt werden. Angenommen es gibt eine Datei important.exe, deren alternativer Datenstrom important.exe:malicious.exe gelöscht werden soll, ohne dass die Daten von important.exe verloren gehen. Hierfür wird die Datei zuerst umbenannt. Dies geschieht mit dem Befehl ren important.exe renamedfile.exe. Anschließend wird der Inhalt mit type renamedfile.exe > important.exe zurückübertragen. In einem letzten Schritt muss die umbenannte Datei mittels del renamedfile.exe gelöscht werden. Der ADS von important.exe ist nun verschwunden.
Beweismittel
[Bearbeiten]Der ADS wird, weder mit dem dir – Befehl noch im Explorer angezeigt, weshalb sich dort sehr gut Daten verstecken lassen. Änderungen an der Datei selbst wirken sich nicht auf den ADS aus. So kann die Datei zum Beispiel ohne Konsequenzen modifiziert oder umbenannt werden. Umgekehrt hat auch eine Modifikation des ADS keine Auswirkungen auf die normale Datei. Der ADS besitzt die gleichen Attribute wie die Datei, an der er angehängt ist. Besonders gefährlich sind ADS, weil nur wenige Virenscanner in der Lage sind, diese Ströme zu finden und zu analysieren. Auch das Microsoft Betriebssystem unterstützt das Finden von alternativen Datenströmen nicht, weshalb hierfür spezielle Programme, wie zum Beispiel der ADS Locator von Spybot – Search & Destroy, benötigt werden.
%WINDIR%\system32 Verzeichnis
[Bearbeiten]Im %WINDIR%\system32 Verzeichnis befinden sich neben vielen anderen Dateien auch die von allen Versionen von Windows unterstützten, gemeinsamen Bibliotheken, die so genannten DLLs (Dynamic Link Libraries). Ihre Aufgabe ist es, die Funktionalität veröffentlichter Schnittstellen zu implementieren. Jede dieser Schnittstellen hat eine Liste von Systemaufrufen, die Programmierer benutzen können. Verschiedene Aufrufe einer DLL durch einen Benutzerprozess werden unterschiedlich umgesetzt. In manchen Fällen ruft eine DLL eine andere DLL auf, die das Betriebssystem aufruft. Es ist aber auch möglich, dass die aufgerufene DLL die Arbeit selbst verrichtet, ohne einen Systemaufruf zu starten. Da die Bibliotheken, wie ihr Name besagt, dynamisch gelinkt werden, wirkt sich die Änderung einer DLL auf alle Prozesse aus, die diese DLL verwenden. Der Effekt ist also um vieles größer als er bei statisch gelinkten Bibliotheken wäre. In das %WINDIR%\system32 Verzeichnis können sowohl modifizierte als auch vollkommen neue Dateien eingeschleust werden. Beim Aufruf einer solchen DLL werden die vom Benutzer implementierten Aktionen ausgeführt. Das Verzeichnis bietet außerdem ein gutes Versteck für die zuvor genannten camouflaged files, da diese hier oft nicht vermutet werden.
Registry
[Bearbeiten]Historie
[Bearbeiten]Unter Windows 3.x wurden Informationen über Hardware, Software und Benutzer in sogenannten .ini-Dateien (Initialisierung) gespeichert. Diese waren auf der ganzen Festplatte verstreut und konnten mit jedem Texteditor geöffnet und modifiziert werden. Seit Windows 95 gibt es ein Konzept, in dem diese separaten Dateien an einem Ort, der Registry, zusammengefasst werden. Die Registry ist eine große zentrale Datenbank, in welcher nahezu alle Informationen zusammengefasst sind, die zum Booten, Konfigurieren und Anpassen eines Systems an den aktuellen Benutzer benötigt werden. Sie kann mit Hilfe der Editoren regedit und regedt32 geöffnet und bearbeitet werden. Ungeübten Benutzern wird jedoch dringend davon abgeraten, Werte zu modifizieren.
Aufbau
[Bearbeiten]Die grundsätzliche Idee für den Aufbau der Registry ist sehr einfach. Es gibt eine Ansammlung von Verzeichnissen (keys), die entweder Unterverzeichnisse (subkeys) oder Einträge (values) enthalten können. Auf der obersten Ebene befinden sich die sogenannten root keys. Diese Verzeichnisse beginnen alle mit dem String HKEY (handle to key).
Der Key HKEY_LOCAL_MACHINE enthält alle Informationen über das lokale System. Er besteht aus den fünf Subkeys HARDWARE, SAM, SECURITY, SOFTWARE und SYSTEM.
- HARDWARE: Im Subkey HARDWARE finden sich Gerätebeschreibungen und die Zuordnung von am System vorhandener Hardware zu den Treibern.
- SAM: Der Security Account Manager Subkey enthält die Benutzernamen, die Gruppen, die Passwörter sowie weitere Konto- und Sicherheitsinformationen, die zum Anmelden benötigt werden.
- SECURITY: Im Subkey SECURITY sind die generellen Sicherheitsrichtlinien, wie die Mindestlänge von Passwörtern, die geduldeten falschen Anmeldeversuche, etc. definiert.
- SOFTWARE: Im Subkey SOFTWARE können Hersteller externer Software Informationen, wie zum Beispiel Versions- und Build-Nummern, benutzte Treiber, usw. ablegen.
- SYSTEM: Der Subkey SYSTEM enthält größtenteils Informationen über das Starten des Systems sowie eine Liste der Dienste (deamons), die nach dem Hochfahren gestartet werden müssen.
HKEY_USERS ist ein weiterer Key auf oberster Ebene. Er enthält die Profile aller Benutzer. Werden Einstellungen mit Hilfe der Systemsteuerung verändert, so wird dies in den Subkeys von HKEY_USERS gespeichert.
Einige dieser veränderbaren Informationen sind
- Geräusche bei Ereignissen (neue Mail, Fehler, …)
- Einstellungen für die Kommandozeile (Farbe, Schrift, …)
- Desktop-Erscheinungsbild, Bildschirmschoner
- Mauseinstellungen
- Umgebungsvariablen
- Informationen über installierte Drucker
- …
Die nächsten drei Keys auf der obersten Ebene stellen jeweils einen symbolischen Verweis auf eine andere Stelle in der Registry dar. HKEY_CLASSES_ROOT zeigt auf den Subkey unter dem die COM-Objekte (Component Object Model) gespeichert sind. Außerdem ist hier die komplette Datenbank der Dateiendungen erfasst. Weiters sind die Verbindungen zwischen Dateiendungen und Programmen notiert.
HKEY_CURRENT_CONFIG verweist auf die aktuelle Hardwarekonfiguration. Dies ist notwendig, da ein Benutzer mehrere Hardwarekonfigurationen erstellen kann.
HKEY_CURRENT_USER zeigt auf den aktuellen Benutzer. So können Benutzereinstellungen schnell gefunden werden.
Bearbeiten der Registry
[Bearbeiten]Änderungen an der Registry werden mit Hilfe von Wind32-API-Aufrufen durchgeführt.
- RegCreateKeyEx erzeugt einen neuen Key.
- RegDeleteKey löscht einen existierenden Key.
- RegOpenKeyEx öffnet einen Key und stellt eine Referenz darauf zur Verfügung.
- RegEnumKeyEx nummeriert und zählt alle Subkeys des Keys auf.
- RegQueryValueEx liest das Datum eines Keys aus.
Beweismittel
[Bearbeiten]Die Registry stellt einen der kompliziertesten Teile von Windows dar, weshalb sie gute Möglichkeiten bietet, um Daten zu verstecken. Die vorkommenden Formate sind string und binary. Das bedeutet, dass man vor allem Text, wie zum Beispiel Passwörter und URLs aber auch binäre Informationen wie Programme oder Segmente von Programmen, verstecken kann. Hierfür können neue Keys angelegt werden. Es ist jedoch auch möglich, die vom System erstellten, nicht verwendeten Werte eines Keys zu modifizieren.