Skip to main content

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.

Abbildung 1: Chemie Kältespray auf Amazon

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].

Abbildung 2: Bootoptionen des BIOS

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.

Abbildung 3: PoC Python Code zum Befüllen des RAMs

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.

Abbildung 4: Ressourcen im Task-Manager nach Ausführung des Python-Codes Abbildung 5: Ressourcen im Task-Manager nach Ausführung des PowerShell-Befehls Abbildung 6: Geöffneter RAM des Laptops


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.

Abbildung 7: CLI-Befehl zur Erstellung eines Memory Dumps mit LiME


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.

Abbildung 8: Extrahieren des PoC Strings aus dem erzeugtem RAM-Dump Abbildung 9: Beispielhafter Ausschnitt aus dem RAM-Dump


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

  1. Cold Boot Attacks: Original Paper und Tools
  2. YouTube: RAM-Transplantation
  3. Microsoft: WinDbg Documentation
  4. Microsoft: PowerShell Arithmetic Operators
  5. Auslesen von /dev/mem
  6. GitHub: LiME Cold Boot Attack
  7. Keeping Secrets in Hardware: XBox Case Study (bunnie)
  8. Hardware Security Modules (HSM) Präsentation
  9. Microsoft: Bitlocker Countermeasures

For feedback or questions, contact the author. No personal author details are published for privacy reasons.