Note:
This paper was originally submitted as coursework. All personal information has been redacted for privacy.
For educational purposes only.
Cold Boot Attacks
- Author: skull
Keywords: RAM (Random Access Memory), PoC (Proof of Concept), Seitenkanalangriff, Cold Boot Attack, BIOS, RAM-Dump
I. Einleitung
Dieses Paper behandelt einen speziellen Seitenkanalangriff: die Cold Boot Attack. Im Rahmen dieses Papers wird versucht, den Angriff mithilfe eines Proof of Concept nachzustellen. Dabei wird auf das Angriffsmuster, den Versuchsaufbau, auftretende Probleme, die Durchführung und schließlich die Ergebnisse eingegangen.
II. Angriffsmuster
A. Datenverlust im RAM
Daten, die sich im RAM befinden, werden nicht sofort gelöscht oder überschrieben. Sie bleiben nach dem Abschalten des Systems noch einige Zeit erhalten, sofern dies nicht durch das BIOS oder das Betriebssystem erfolgt. Dadurch entsteht ein kleines Zeitfenster von wenigen Minuten nach dem Ausschalten des Systems, innerhalb dessen der Angriff durchgeführt werden kann.
B. Kältespray zur Verzögerung des Datenverlusts
Dieses Zeitfenster kann mithilfe von Kältespray oder flüssigem Stickstoff erheblich verlängert werden. Die Daten im RAM können so bis zu mehreren Tagen erhalten bleiben und somit nutzbar sein [1]. Obwohl flüssiger Stickstoff für Einzelpersonen nicht leicht erhältlich ist, genügt oft bereits ein herkömmliches Kältespray, das beispielsweise auf Plattformen wie Amazon für wenige Euro erhältlich ist.
C. RAM-Transplantation
Eine RAM-Transplantation erfolgt, indem der RAM aus dem ursprünglichen System ausgebaut und in ein neues System eingebaut wird, um den konservierten RAM auszulesen. Dabei sollte idealerweise dasselbe System oder derselbe Computer verwendet werden, um mögliche Kompatibilitätsprobleme zu vermeiden. Zumindest muss sichergestellt sein, dass der Speichertyp vom "neuen" System gelesen werden kann. Diese Vorgehensweise erhöht die Komplexität des Angriffs erheblich und erfordert eine gründliche Vorbereitung [2].
D. Booten in ein anderes Betriebssystem
Eine weniger komplexe Möglichkeit besteht darin, einen USB-Stick mit einem Live-Boot in ein anderes Betriebssystem an das ursprüngliche System anzuschließen. Dabei ist zu bedenken, dass neuere BIOS-Versionen den RAM direkt überschreiben können. Um sich vor dieser Angriffsart zu schützen und dies zu umgehen, ist es ratsam, das betroffene BIOS genauer zu untersuchen. Zudem sollte vor dem Angriff überprüft werden, ob im BIOS-Optionen wie Secure Boot oder Fast Boot aktiviert sind, und gegebenenfalls deren genaue Funktionsweise recherchiert werden [1].
E. RAM-Dumping
Um den RAM auszulesen, sollten zuvor Tools und Skripte auf dem USB-Stick installiert werden, um zu verhindern, dass das Betriebssystem beim Booten die Daten im RAM überschreibt. Darauf wird später näher eingegangen.
F. Auslesen des RAM-Dumps
Die erzeugte Datei des RAM-Dumps lässt sich größtenteils direkt lesen. Am besten verwendet man den Befehl strings
in der Befehlszeile, um alle nicht lesbaren Teile herauszufiltern, da Texteditoren wie beispielsweise nano
Schwierigkeiten haben könnten, so große Dateien zu öffnen und anzuzeigen. Anschließend kann der RAM manuell durchsucht werden, wenn unsicher ist, nach welchem String genau gesucht wird. Wenn der zu suchende String bekannt ist, kann der Befehl strings
in Kombination mit grep
verwendet werden. Obwohl die Tools im Archiv für den Proof of Concept nicht angewendet wurden, könnten sie dazu verwendet werden, den erzeugten RAM-Dump gezielt nach beispielsweise privaten RSA-Schlüsseln zu durchsuchen.
III. Versuchsaufbau
Für die Durchführung des Proof of Concept wurde ein alter Acer Laptop verwendet. Die Cold Boot Attack wurde mit einem Live-Boot von einem USB-Stick ausgeführt. Auf dem USB-Stick lief eine aktuelle Version von PeppermintOS, einer schlanken Linux-Distribution, mit einem Loadable Kernel Module. Auf dem Laptop lief ein Python-Programm, das den RAM mit dem String "funtimes" füllen sollte.
Hinweis: Der ursprüngliche Python-Code füllte den RAM jedoch nicht wie erwartet. Wahrscheinlich komprimiert Python den String oder speichert ihn effizient, sodass er nicht im physischen RAM auftaucht. Der String konnte zwar mit WinDbg gefunden werden, war jedoch für den Angriff nicht zuverlässig genug. Stattdessen wurde PowerShell verwendet, um den RAM gezielt mit Daten zu füllen.
Nachdem der RAM größtenteils mit dem String befüllt war, wurde der Laptop über den Notschalter ausgeschaltet, die Rückseite geöffnet und der RAM mit Kältespray heruntergekühlt. Anschließend wurde der Laptop neu gestartet und das Live-Betriebssystem gebootet. Ein Autostart-Skript führte dann LiME aus, um den gesamten RAM auszulesen und in einer Datei zu speichern. Diese Datei wurde anschließend mit strings
und ggf. grep
nach dem String durchsucht.
IV. Probleme
A. Änderungen zur Sicherheit des RAMs
Seit der ersten Veröffentlichung von Cold Boot Attacks im Jahr 2009 [1] wurden zahlreiche Maßnahmen ergriffen, um den Angriff zu erschweren, u.a. die Unzugänglichkeit von /dev/mem
im Linux-Kernel.
B. Methode 1: Tools aus dem Paper
Die im Paper beschriebenen Tools konnten den RAM nicht wie erwartet auslesen; es wurden keine Daten auf dem USB-Stick gespeichert.
C. Methode 2: Eigener Kernel
Ein eigener Kernel mit Zugriff auf /dev/mem
konnte wegen Installationsproblemen auf dem Live-Boot-USB-Stick nicht verwendet werden.
D. Methode 3: Loadable Kernel Module
Das LiME Loadable Kernel Module funktionierte schließlich wie gewünscht und konnte den RAM schnell auslesen und speichern.
V. Durchführung
A. Befüllen des RAMs
PowerShell wurde verwendet, um den RAM mit dem String "funtimes" zu füllen und den Erfolg mit dem Task-Manager zu überprüfen.
B. Ausschalten mit Notausschalter
Das Gerät wurde abrupt ausgeschaltet, um Datenverlust im RAM durch normales Herunterfahren zu vermeiden.
C. Scheitern des PoCs
Vermutlich wurde der RAM beim Booten durch das BIOS überschrieben, weshalb der PoC-String im Dump nicht gefunden wurde. Für einen erfolgreichen Angriff wäre wahrscheinlich eine modifizierte BIOS-/UEFI-Firmware erforderlich, was den Rahmen der Arbeit sprengte.
VI. Ergebnis
A. Wahrscheinlichkeit und Realisierbarkeit eines Angriffs
Cold Boot Attacks sind aufwendig und müssen auf das jeweilige Zielsystem abgestimmt sein, sind aber durchaus möglich und für Forensiker interessant. Nicht nur Schlüssel, sondern auch andere sensible Daten (z.B. zur Umgehung von Festplattenverschlüsselung oder für Reverse Engineering) könnten so extrahiert werden.
B. Zukunft des Angriffs
Der Angriff bleibt relevant, da unverschlüsselter RAM weiterhin ein generelles Problem darstellt.
C. Mögliche Verteidigungsmechanismen
- System nicht unbeaufsichtigt lassen – weder ein- noch ausgeschaltet.
- RAM-Verschlüsselung (sofern verfügbar) aktivieren.
- Hardware-Security-Module verwenden.
- Festplattenverschlüsselung mit zusätzlichem Faktor absichern.
Quellen
- Cold Boot Attacks: Original Paper und Tools
- YouTube: RAM-Transplantation
- Microsoft: WinDbg Documentation
- Microsoft: PowerShell Arithmetic Operators
- Auslesen von /dev/mem
- GitHub: LiME Cold Boot Attack
- Keeping Secrets in Hardware: XBox Case Study (bunnie)
- Hardware Security Modules (HSM) Präsentation
- Microsoft: Bitlocker Countermeasures
For feedback or questions, contact the author. No personal author details are published for privacy reasons.