Daten-Bunker : VeraCrypt-Container – Möglichkeiten für Einsatz, Angriffe und Forensik
Der vorliegende Beitrag behandelt die Verwendungsmöglichkeiten der Software VeraCrypt, Möglichkeiten für Angriffe und forensische Zugriffe sowie Best Practices zu Nutzung und Schutz.
Von Peter Sopka, Maisprach (CH)
VeraCrypt ist eine kostenlose Open-Source-Lösung zur plattformübergreifenden Datenverschlüsselung (www.veracrypt.fr/en/). Sie basiert teilweise auf dem Quellcode der bis 2014 entwickelten Software TrueCrypt – dabei sind in VeraCrypt viele als notwendig und sinnhaft erkannte Verbesserungen eingeflossen (vgl. [1]). Die Software bietet – abhängig vom jeweilig zugrunde liegenden Betriebssystem – drei Varianten zur Verschlüsselung von Daten an:
- Verschlüsselung auf Geräteebene (z. B. bei USB-Sticks)
- Verschlüsselung auf Partitionsebene (nur unter Windows praktikabel)
- Verschlüsselung in einen Datei-Container (nachfolgend: Container-Lösung)
Dieser Beitrag hat die containerbasierte Verschlüsselung im Fokus, die auf allen unterstützten Betriebssystemen zur Verfügung steht – andere Varianten sind jedoch technisch weitgehend identisch. Unter Linux wird ausschließlich die Container-Lösung unterstützt. Verschlüsselte Daten (VeraCrypt-Dateien) lassen sich jedoch auf allen unterstützten Betriebssystemen entschlüsseln. Der Zugriff zu VeraCrypt-verschlüsselten Daten lässt sich mittels eines Kennworts, eines Keyfiles oder einer Kombination aus beiden erlangen.
Anwendungsfälle sind vertrauliche Datensammlungen aller Art – auch in Backups oder auf USB-Sticks. Eigentlich ist VeraCrypt nicht dazu gedacht, um veränderliche Daten in der Cloud zu speichern: Dazu muss eine VeraCrypt-Datei heruntergeladen und im System „eingehängt“ (gemountet) werden, um die enthaltenen Daten bearbeiten zu können, anschließend ist der Container auszuhängen und die VeraCrypt-Datei wieder hochzuladen. Da die Software jedoch überall verfügbar, kostenlos und sehr einfach zu bedienen ist, wird über diese Nachteile häufiger hinweggesehen – teils werden Daten so auch verschlüsselt via Cloud oder andere Wege transportiert und anderen Anwendern (die das Kennwort und/oder die Keyfiles benötigen) zur Verfügung gestellt.
Krypto für alle
Bei der Software ist zu berücksichtigen, dass sie dazu gedacht ist (und in diesem Sinne auch weiterentwickelt wird), jedermann eine Möglichkeit an die Hand zu geben, Daten sicher vor dem unerwünschten Zugriff Dritter aufzubewahren. Dabei hat der Anbieter gerade solche Nutzer im Blick, die in Ländern leben, in denen mit Menschenrechtsverletzung und politischer Verfolgung zu rechnen ist. Daher nennt die Website explizit Dos and Don’ts bezüglich der Wahl von Kennwörtern, Keyfiles und Verschlüsselungsmethoden (www.veracrypt.fr/en/Security%20Requirements%20and%20Precautions.html) – um auch weniger oder nicht IT-affinen Regimegegnern oder politisch Verfolgten zu helfen, die Software richtig einzusetzen. Durch eine leichte Handhabung mittels grafischer Benutzeroberfläche sowie eine sehr gute Dokumentation beziehungsweise ein weitgehend selbsterklärendes Werkzeug wird falsches Anwenderverhalten als Schwachstelle weiter entschärft.
Die Installation der VeraCrypt-Software ist sehr einfach und in wenigen Minuten erledigt – ein Bezug ist jederzeit kostenlos von der Website des Anbieters möglich. VeraCrypt kann man unter MacOS, Linux und Windows einsetzen, also auch auf Computern, die virtuell in Serverzentren im Betrieb sind. Es gibt zwar für jedes Betriebssystem eine eigene Softwareversion, die eigentlichen VeraCrypt-Dateien sind jedoch plattformunabhängig und problemlos transportabel. Es ist also beispielsweise möglich, unter Linux einen verschlüsselten Container zu erstellen, darin Daten abzulegen und diesen an Dritte zu senden, die ihn etwa unter Windows bearbeiten. Durch die schnelle Handhabbarkeit könnte man auf einem System auch Daten damit verschlüsseln und dann die Software wieder löschen.
Neben einer Vielzahl offizieller und legitimer Einsatzszenarien ist somit auch mit einer nennenswerten Nutzung durch Unbefugte oder Kriminelle zu rechnen, die Daten verstecken und/oder vor dem Zugriff durch Administratoren und Behörden verbergen wollen.
Die Verwendung der Software zur Abwicklung abhörsicherer Kommunikation und Dokumentation erscheint bei genauerem Hinschauen als gangbare Lösung, da:
- Unabhängigkeit von einem Hersteller vorliegt – die Software ist Open Source, es gibt keine Institutionen oder Organisationen, die aufgrund ihrer Machtposition Zugang zu geheimen Hinterüren hätten.
- die Open-Source-Herkunft ermöglicht, die Qualität der Implementierung der Verschlüsselungsverfahren zu überprüfen – dem Autor sind nach umfassenden Recherchen wie auch eigenem Forschen im Quellcode keine Schwachstellen aufgefallen (siehe auch [1]).
- eine Kommunikation über diesen Weg einfach, sehr gut zu tarnen und (beim Einsatz starker Kennwörter) nicht zu entschlüsseln ist.
- Angreifer (oder auch Strafverfolger) nur schwer erkennen können, dass überhaupt VeraCrypt-Dateien genutzt werden (siehe unten) – sie nehmen also eine Kommunikation oder verschlüsselte Speicherung möglicherweise nicht wahr (umgekehrt könnte auch die Existenz schutzwürdiger Daten so ggf. wirksam verdeckt werden).
Unscheinbare Container
Eine VeraCrypt-Datei verhält sich wie ein Behälter einer bestimmten Größe, der mit Daten (oder einer weiteren VeraCrypt-Datei) gefüllt ist. Bindet man diesen Krypto-Container mittels vorheriger Kennwort- und/oder Keyfile-Angabe in das Dateisystem ein, entspricht er einem geöffneten Behälter – man kann auf den Inhalt zugreifen und diesen verändern. Ansonsten ist der Behälter geschlossen und keinerlei Zugriff oder Rückschluss auf seinen eigentlichen Inhalt möglich.
VeraCrypt-Container erhalten bei der Anlage eine zu definierende Größe, die unabhängig von ihrer späteren tatsächlichen Nutzung („Befüllung“) ist. Im Nutzungsfall wird mittels Kennwort/Keyfiles und eines Verschlüsselungsverfahrens das Äquivalent eines virtuellen Laufwerks (Volume) errechnet und vom Betriebssystem bereitgestellt (gemountet) – aus Anwender- oder Anwendungssicht stehen dann Klartextdaten als Laufwerk zur Verfügung.
Auf dem Speichermedium gibt es hingegen nie Klartextdaten: Bei jedem Lese-/Schreib-Zugriff werden Daten vom Speichermedium geholt, im Arbeitsspeicher entschlüsselt, der Anwendung zur Verfügung gestellt und anschließend wieder verschlüsselt auf das Speichermedium geschrieben. Die Software muss dazu allerdings die verwendeten Schlüssel im Arbeitsspeicher halten, was einen Angriffspunkt darstellt.
Die VeraCrypt-Dateien bestehen aus einem Kopfbereich (Header) und den Nutzdaten (Payload). Der Header ist durch das Kennwort und/oder die Keyfiles geschützt – in ihm sind die eigentlichen Schlüssel abgelegt, welche die Payload schützen. Gelingt es, das Kennwort und/oder die Keyfiles zu ermitteln, hat man Zugriff auf die Schlüssel und somit auch auf die Payload. Kennwort und/oder Keyfiles lassen sich auch im Nachhinein ändern, die Chiffrier-Schlüssel der Payload hingegen nicht. Das ist bedeutsam:
- Will ein Angreifer VeraCrypt-geschützte Daten oder Kommunikation immer wieder lesen können, ist er bei Kenntnis der Schlüssel auf der sicheren Seite, da diese nicht geändert werden können.
- Will ein Angreifer nur zu genau einem Zeitpunkt auf die geschützten Daten zugreifen, genügt die Kenntnis des Kennwortes und/oder der Keyfiles.
Spurensuche
VeraCrypt-Dateien sind vollumfänglich verschlüsselt. Es gibt weder typische Dateiendungen noch sogenannte Magic-Numbers, also typische hexadezimale Zeichenfolgen am Anfang einer Datei, die angeben, ob es sich dabei beispielsweise eine MP3-Datei oder ein Word-Dokument handelt. Auf den ersten Blick erscheint eine VeraCrypt-Datei als bloßer Haufen chaotischer Zeichen. Erst auf den zweiten Blick findet man Merkmale, die bei der Identifikation hilfreich sein können:
Eine auffällige hohe Entropie (in diesem Kontext vereinfacht als Maß für Unordnung zu verstehen, hier also einer besonders ausgeprägten Unordnung).
Eine normalerweise durch 512 teilbare Dateilänge und eine Mindestgröße von 292 KiB (abhängig vom gewählten Dateisystem kann diese auch größer sein).
Der Autor hat auf seiner Website sopka.ch [2] ein Python-Skript zum Download bereitgestellt, das genau diese Merkmale in einem Netzwerk untersucht und eine entsprechende Liste ausgibt (vgl. Abb. 2).

Abbildung 1: VeraCrypt ist mit einer intuitiv zu bedienenden GUI ausgestattet (im Bild: Windows 10) und stellt nach erfolgreicher Kennworteingabe ein virtuelles Laufwerk zur Verfügung.
Verstecktes Versteck
VeraCrypt unterstützt allerdings auch sogenannte Hidden Container, was bedeutet, dass sich eine VeraCrypt-Datei in einer VeraCrypt-Datei verstecken lässt (www.veracrypt.fr/en/Plausible%20Deniability.html). Die Idee dahinter: Muss etwa ein politisch Verfolgter unter Druck sein Kennwort und/oder Keyfiles für VeraCrypt herausgeben, erhalten die Behörden zwar Zugriff auf den Inhalt seiner Container. Sie können aber nur mit viel Aufwand und entsprechendem Know-how ergründen, ob in diesem Container noch eine weitere (mit anderem Kennwort und/oder Keyfiles verschlüsselte) VeraCrypt-Datei enthalten ist. Der gerade geöffnete Behälter kann also noch einen weiteren – unsichtbaren! – Behälter enthalten. Die in der Folge beschriebenenen Angriffszenarien funktionieren allerdings marginal modifiziert auch für solche Hidden Container.
Attacken gegen VeraCrypt
Gegen VeraCrypt sind drei Szenarien für Angriffe beziehungsweise forensische Analysen denkbar:
- Es gelingt, eine Sammlung möglicher Kennwörter und/oder Keyfiles zu erstellen, die dann teilautomatisiert an der VeraCrypt-Datei „durchprobiert“ wird – zum Beispiel unter Zuhilfenahme von Hashcat (https://hashcat.net/).
- Es gelingt, auf einem gehosteten System (z. B. auf einer Serverfarm) Hauptspeicherabbilder zu erstellen, aus denen sich Kennworthinweise oder Schlüssel extrahieren lassen – diese Abbilderstellung ist technisch unproblematisch, die Auswertung hingegen nicht.
- Es gelingt, auf einem nativ laufenden System ein Hauptspeicherabbild zu erstellen – das setzt auf gängigen Betriebssystemen die Installation geeigneter Werkzeuge oder Treiber sowie Administratorrechte voraus.
Attacken gegen Kennwörter/Keyfiles
Ein Angriff mit Hashcat erfordert vorbereitende Schritte: Das Programm muss vorliegen, der Computer zur Verwendung geeignet sein, dass Programm mit spezifischen (an das verwendete System angepasste) Einstellungen gestartet werden – sonst dauert es schlicht zu lange – und der zu untersuchende Hashwert muss aus der VeraCrypt-Datei herausgeschnitten worden sein. Last, but not least ist zu entscheiden, mit welchen Verschlüsselungsmodi gearbeitet werden soll: VeraCrypt unterstützt verschiedene Verschlüsselungsverfahren, wobei sich diese auch noch untereinander kombinieren lassen – aktuell sind 35 verschiedene Verfahren (im Folgenden: Modi) vorhanden. Und Hashcat muss wissen, welcher der Modi vorliegt, da jedes Verschlüsselungsverfahren anders funktioniert.
Zumindest theoretisch müsste man also alle Hashcat-Angriffe auf 35 verschiedene Modi durchführen. Praktisch wird ein versierter Angreifer (oder Forensiker) aber immer mit AES und SHA-512 beginnen: Zum einen ist der AES-Algorithmus anerkannter Standard und wird seit fast 20 Jahren als „unknackbar“ angesehen – er hat also einen „guten Ruf“ und wird auch von VeraCrypt empfohlen. Zum anderen sind seit etwa 2003 in allen Intel- und AMD-Prozessoren explizit Prozessorinstruktionen für AES implementiert – eine AES-Verschlüsselung kostet also kaum zusätzliche Rechenzeit und ist damit aus Anwendersicht schnell.
Angriffe auf VeraCrypt stoßen jedoch auf ein ernstes Hindernis: Wenn die Software nach Eingabe eines Kennworts und/oder Keyfiles versucht, eine Datei zu entschlüsseln, weiß sie zunächst nicht, ob überhaupt ein verschlüsselter Container vorliegt – und wenn ja, welcher Verschlüsselungsmodus verwendet wurde. Auch VeraCrypt selbst „probiert“ also 35 Modi durch und führt bei jedem Modus noch mehrere zehn- bis hunderttausend Iterationen des verwendeten (Hash)-Algorithmus durch. Daher kann es selbst bei bekanntem Kennwort und vorliegenden Keyfiles einige Sekunden dauern, bis der Zugriff auf die Daten gelingt. Das stellt für den Anwender kein Problem dar, da dieser Zeitaufwand einmalig ist – für einen Angreifer hingegen, der abertausende Kennwörter durchprobieren muss, potenziert sich dieser Zeitbedarf ins Unerträgliche. Das simple Durchprobieren von Kennwörtern (Brute Force) ist also nur dann ein gangbarer Weg, wenn der Anwender sehr (!) schwache Kennwörter verwendet hat.
Ein Abarbeiten von Wortlisten mittels Hashcat kann hingegen erfolgversprechend sein: Liegen einige hundert bis tausend plausibel klingende Kennwörter vor, kann man diese per Textdatei direkt in Hashcat einspeisen und durchprüfen lassen – das lässt sich auf entsprechend leistungsstarken Computern in wenigen Stunden bis Tagen realisieren.
Die Beschaffung von Kennwörtern und/oder Keyfiles ist für einen Zugriff auf verschlüsselte Daten aus Sicht des Angreifers immer der „Königsweg“: Dazu muss er versuchen, im Umfeld des Anwenders wie auch auf dem jeweiligen Datenträger Hinweise auf mögliche Kennwörter zu finden. Dies gilt sinngemäß auch für Keyfiles: Es handelt sich dabei oft um Dateien kleiner Größe mit auffällig hoher Entropie (für eine Suche nach solchen Files lässt sich das bereits erwähnte Skript [2] heranziehen) – allerdings kann man hierfür prinzipiell etwa auch den Lieblingssong als MP3-Datei verwenden.
Für die Beschaffung und Einordnung von Kennwörtern eignen sich Programme wie Autopsy (www.autopsy.com, s. a. [3,4]) oder Bulkextractor (https://github.com/simsong/bulk_extractor). Diese erstellen auf der Basis von Datenträgern oder Hauptspeicherabbildern Wortlisten, die sich anschließend mittels Hashcat für einen Brute-Force-Angriff verwenden lassen. Solche teilautomatisierten Angriffe dauern dann abhängig vom Umfang der Wortlisten und/oder Keyfiles mehrere Stunden bis wenige Tage.

Abbildung 2: Suche nach VeraCrypt-Dateien mit dem Skript TCVC-Check.py des Autors [2]
Schlüssel-Extraktion aus dem Speicher
Der Angriff via aus dem Hauptspeicher gewonnener Schlüssel und dem Einsatz einer modifizierten VeraCrypt-Software ist der schnellste, aber zugleich technisch anspruchsvollste Weg. Dazu sind folgende Dinge vonnöten: ein forensisch korrekter Hauptspeicherabzug, daraus eine forensisch korrekte Ermittlung der Schlüssel [5] und eine modifizierte VeraCrypt-Software.
Der Autor hat diesen Weg exemplarisch für den Fall mit AES-Verschlüsselung verifiziert: Dazu wurde VeraCrypt-Code so modifiziert, dass man der Software ermittelte Schlüssel „unterschieben“ kann. Damit erhält man eine VeraCrypt-Datei, deren Kennwort bekannt ist und die dieselben Schlüssel für die Payload verwendet wie der angegriffene Container. Für diesen einmaligen Vorgang ist ein Zeitaufwand von rund einer Stunde als realistisch anzusehen. Dann wird die Payload der VeraCrypt-Datei mit dem Header, dessen Kennwort bekannt ist, verbunden und man hat immer wieder Zugriff auf die Payload. Diese Tätigkeit muss immer wieder durchgeführt werden, der zeitliche Aufwand liegt im Minutenbereich.
Praktisch bedeutet das, dass sich auch eine Kommunikation betroffener Anwender/Angreifer zeitnah mitlesen lässt: Man muss lediglich die dabei verwendete VeraCrypt-Datei immer wieder abfangen und ihre Payload mit dem eigenen Header verbinden, dann das (für den eigenen Header bekannte) Kennwort eingeben und erhält so Zugriff auf die Daten. Technische Details zur modifizierten VeraCrypt-Software und dem weiteren Vorgehen finden interessierte Leser auf https://sopka.ch/index.php/forensik-blog.
Empfehlungen
Anwender können einen erfolgreichen Angriff auf durch VeraCrypt geschützte Daten erheblich erschweren oder sogar unmöglich machen, indem sie:
- lange Kennwörter mit Sonderzeichen und Groß-/Kleinschreibung verwenden, idealerweise in Kombination mit einem Keyfile, das auf einem portablen Datenträger liegt (was dann auch einen Keylogger ins Leere laufen lässt)
- den „Personal Iterations Multiplier“ (PIM) massiv erhöhen, also den Wert, der die Anzahl der Hash-Iterationen bei der Schlüsselableitung aus dem Kennwort bestimmt (https://documentation.help/VeraCrypt/Personal%20Iterations%20Multiplier%20(PIM).html) – beim einmaligen Mounten erhöht das zwar die Wartezeit, steigert jedoch beim Durchprobieren von Kennwörtern den Zeitbedarf eines Angreifers exorbitant
- eine VeraCrypt-Datei niemals mit Administratorrechten öffnen – so wird eine Hauptspeicherakquise und damit auch die Extraktion der eigentlichen Schlüssel aus dem Arbeitsspeicher unmöglich.
- AES verwenden – der Algorithmus ist durch CPU-Unterstützung von AMD und Intel sehr schnell und gilt als sicher.
- VeraCrypt-Dateien ohne oder mit einer irreführenden Endung (z. B. mp3) abspeichern – Angreifer finden nichts oder stehen möglichweise vor dem Problem, „heimlich“ tausende Bild- oder Audiodaten herunterladen zu müssen.
- keine Kennwortspeicherung im Hauptspeicher zulassen – dieser geringe Komfortgewinnung zieht eine massive Angreifbarkeit auf bereits kompromittierten Systemen nach sich.
- vermeiden, VeraCrypt auf gehosteten Systemen einzusetzen, oder (falls unumgänglich) die Container nur so lange offen halten wie unbedingt nötig.
- auf gehosteten Systemen den Hauptspeicher mit geeigneter Vorgehensweise (z. B. extensives Internetbrowsing auf https-Seiten) mit AES-Key-ähnlichen Strings befüllen – das erschwert deutlich das Auffinden und Isolieren der „echten“ AES-Schlüssel von VeraCrypt in Speicherabbildern.
Dipl.-Kfm. t.o. M. Sc. Peter Sopka arbeitet seit 25 Jahren selbstständig in der IT, seit 10 Jahren vermehrt im IT-Sicherheitsbereich – seine heutige Kernkompetenz liegt in der Erstellung von Gutachten als Master of Science in digitaler Forensik.