DEFCON 21. Passwörter allein reichen nicht aus, oder warum wird die Festplattenverschlüsselung unterbrochen und wie kann dies behoben werden? Teil 2

DEFCON 21. Passwörter allein reichen nicht aus, oder warum wird die Festplattenverschlüsselung unterbrochen und wie kann dies behoben werden? Teil 1

Es gibt lustige Dinge, wie zum Beispiel monoton ansteigende Zähler, mit denen Sie die Aktivität von TMP steuern und dann die empfangenen Werte überprüfen können. Es gibt einen kleinen Bereich nichtflüchtiger Speicher, die für Ihre Anforderungen verwendet werden können. Er ist nicht so groß wie ein Kilobyte, kann aber auch nützlich sein. Es gibt einen Uhrzähler, mit dem Sie feststellen können, wie lange das System seit dem letzten Start funktioniert hat. Es gibt Befehle, die Sie TMP geben können, damit es Dinge in Ihrem Namen erledigt, einschließlich des Löschens Ihres eigenen Speichers, falls erforderlich.



Anschließend möchten wir ein Protokoll entwickeln, das der Benutzer auf dem Computer ausführen kann, um sicherzustellen, dass der Computer nicht gehackt wurde, bevor er sich auf dem Computer authentifiziert und ihn verwendet. Was ist für ein solches Protokoll nützlich? Können wir versuchen, die Plattformkonfigurationsregister zu "versiegeln"?

Ich habe ein paar Vorschläge: Dies sind Token für einmalige Benutzerkennwörter, ein eindeutiges Bild oder eine Animation, zum Beispiel Ihr Foto, etwas Originelles, das anderswo nicht leicht zu finden ist. Sie können den Videoausgang auf Ihrem Computer auch deaktivieren, wenn Sie sich im Authentifizierungsanforderungs- und Authentifizierungsmodus befinden.

Möglicherweise möchten Sie auch einen Teil des Festplattenschlüssels „versiegeln“, und es gibt mehrere Gründe, warum Sie dies tun möchten. Unter bestimmten Sicherheitsannahmen wird dadurch sichergestellt, dass das System nur eine genehmigte Softwarekonfiguration startet, die Sie als Eigentümer des Computers steuern. Letztendlich bedeutet dies, dass jeder, der Ihr System angreifen möchte, dies entweder durch Hacken von TMP oder in der Sandbox tun muss, die Sie für sie erstellt haben. Dies ist natürlich kein besonders starker kryptografischer Schutz, da Sie kein Protokoll haben, mit dem sich der Benutzer sicher mit der gleichen Sicherheitsstufe authentifizieren kann, die beispielsweise AES bietet. Aber wenn Sie nicht in der Lage sind, so etwas wie RSA-Verschlüsselung in Ihrem eigenen Kopf zu organisieren, wird es niemals perfekt sein.



Ich erwähnte, dass es in TPM einen Selbstlöschbefehl gibt, der über Software ausgeführt werden kann. Da TPM eine bestimmte Konfiguration des Systems erfordert, bevor es „Geheimnisse“ preisgibt, können Sie etwas Interessantes tun, beispielsweise Selbstzerstörung. Sie können Software entwickeln und ein eigenes Protokoll erstellen, um die Anzahl der fehlgeschlagenen Computerstarts zu begrenzen. Sie können eine Zeitüberschreitung festlegen, nachdem das Kennwort für einen bestimmten Zeitraum auf dem Bildschirm angezeigt wurde, oder die Anzahl der Versuche zur Eingabe des falschen Kennworts begrenzen.

Sie können das Zeitlimit für den Neustart des Computers nach dem vorherigen Arbeitszyklus festlegen. Wenn sich der Computer ein oder zwei Wochen lang im "eingefrorenen Zustand" befand, können Sie den Zugriff auf den Computer für den Zeitraum einschränken, in dem Sie ins Ausland gehen. Sie blockieren ihn, während Sie sich im Computer befinden Straße zu entsperren nicht früher als bei Ihrer Ankunft im Hotel.

Sie können auch einige lustige Dinge tun, z. B. kleine „Kanarienvögel“ auf einer Festplatte belassen, die aus Sicherheitsgründen wichtige Daten enthält. Tatsächlich handelt es sich lediglich um „Dehnungsstreifen“, deren Auslösung zu einer Änderung der Werte des monotonen Zählers im TPM führt.

Sie können auch ein Selbstzerstörungskennwort oder einen erzwungenen Code erstellen, um einen Rücksetzbefehl automatisch auszuführen. Da ein Angreifer auf zwei Arten angreifen kann: ein vertrauenswürdiges Plattformmodul hacken oder schädliche Software ausführen, können Sie ihn zwingen, diese Regeln einzuhalten und tatsächlich eine effektive Selbstzerstörung durchzuführen.

Das Trusted Platform Module ist speziell so konzipiert, dass es sehr schwer zu kopieren ist, sodass es nicht einfach geklont werden kann. Auf diese Weise können Sie beispielsweise monotone Zähler verwenden, um Angriffe auf Wiederherstellungs- oder Wiedergabediscs zu erkennen. Sobald der Befehl clear in TPM ausgeführt wird, endet das Spiel für einen Angreifer, der auf Ihre Daten zugreifen möchte.
Es gibt einige Ähnlichkeiten mit dem System, das Jacob Appelbaum vor vielen Jahren auf der Konferenz des Chaos Communication Congress im Jahr 2005 erörtert hat. Er schlug vor, viele dieser Optionen mithilfe eines Remote-Netzwerkservers zu implementieren, räumte jedoch ein, dass die Verwendung in der Praxis schwierig sein würde. Da TPM eine integrierte Komponente des Systems ist, können Sie viele Vorteile nur mit dem integrierten TPM-Modul und nicht mit dem Modul auf dem Remote-Server erzielen. Ein hybrider Ansatz ist möglicherweise möglich. Sie können das System beispielsweise wie in der IT-Abteilung einrichten, wenn Sie das System vorübergehend blockieren. Es kann erst verfügbar werden, nachdem Sie es mit dem Netzwerk verbunden haben. Rufen Sie Ihren IT-Administrator an, und er wird es entsperren. Ich zögere, den Netzwerkstapel zu Beginn des Startvorgangs zu verschieben, einfach weil dies die Angriffsfläche erheblich vergrößert. Aber es ist immer noch möglich.

Ich möchte klarstellen, dass ein Angreifer dies nur tun kann, vorausgesetzt, er kann TPM nicht leicht brechen. Die nächste Folie zeigt ein Bild des Designs des TPM-Chips von Chris Tarnovsky mit einem Mikroskop. Chris sprach letztes Jahr mit DefCon und hielt vor einigen Jahren auf der BlackHat-Konferenz einen Vortrag über TPM-Sicherheit.
Er hat wirklich großartige Arbeit geleistet, um zu verstehen, wie schwierig es ist, dieses Ding zu zerbrechen. Er listete die Gegenmaßnahmen auf, fand heraus, was nötig war, um dieses Ding tatsächlich zu zerbrechen, und testete dann den gesamten Chip. Es gibt Lichtdetektoren, aktive Gitter auf der TPM-Karte, verschiedene völlig verrückte Schemata sind implementiert, um den Angreifer in die Irre zu führen, was dieses Modul tatsächlich tut.

Wenn Sie jedoch genügend Zeit und Ressourcen aufwenden und vorsichtig genug sind, können Sie die meisten Schutzmaßnahmen umgehen. Sie können den Chip entfernen, ihn mit einem Elektronenmikroskop in einer Workstation platzieren, herausfinden, wo sich der Bus mit unverschlüsselten Daten befindet, und alle Geheimnisse daraus ziehen. Trotzdem erfordert ein solcher Angriff, selbst wenn Sie ihn sorgfältig vorbereitet und mit einem teuren Mikroskop herausgefunden haben, wo er sich befindet, Zeit und Mühe, um den physischen Schutz des Chips zu entfernen und ihn während der Demontage nicht versehentlich zu „braten“ .



Betrachten Sie einen Neustartangriff. Ich habe bereits erwähnt, dass TPM in fast allen Fällen ein separater Chip auf dem Motherboard ist. Dies ist eine sehr niedrige Verbindung in der Systemhierarchie. Es ist nicht Teil der CPU, wie dies bei DRM in Videokonsolen der Fall ist. Wenn es einem Hacker gelingt, TPM neu zu starten, hat dies keine irreversiblen Auswirkungen auf das System. Das ist schlecht, weil ein solcher Angriff für Sie unbemerkt bleiben kann.



Dies ist normalerweise ein Chip, der sich außerhalb des LPC-Computerbusses befindet, der selbst ein veralteter Bus ist und sich außerhalb der Südbrücke des Motherboards befindet. In modernen Systemen befinden sich auf der Oberfläche des Motherboards nur TPM, BIOS und Tastaturcontroller. Ich denke jedoch, dass flexible Controller diese nicht mehr verwenden. Wenn Sie eine Möglichkeit finden, den Bus mit einer kleinen Anzahl von Kontakten neu zu starten, setzen Sie das TPM auf den Startstatus des „frischen Betriebssystems“ zurück. Sie werden wahrscheinlich den Zugriff auf die Tastatur über den PS / 2-Anschluss verlieren, aber dies ist kein großes Problem, aber Sie können die TPM-Startsequenz abspielen, in der die geheimen Daten „versiegelt“ sind, ohne tatsächlich eine sichere Sequenz auszuführen, und Sie können sie zum Extrahieren der Daten verwenden.

Es gibt mehrere Angriffe, die versuchen, diese Methode zu verwenden. Wenn TPM den alten Modus verwendet, der als "Static Root of Trust for Measurement (SRTM)" bezeichnet wird, können Sie dies ganz einfach tun. Ich habe keine Untersuchungen zu erfolgreichen Angriffen auf neue zuverlässige Technologien zur Implementierung von Aktivierungsoptionen für Intel-Module gesehen. Es ist wahrscheinlich immer noch möglich, den LPC-Bus zu erfassen, und was an die CPU weitergeleitet wird, ist ein Bereich, der weiterer Forschung bedarf. Dies könnte eine andere Möglichkeit sein, ein vertrauenswürdiges Plattformmodul anzugreifen.
Schauen wir uns also ein Diagramm an, was wir für ein Kaltstartsystem mit einer zuverlässigen Konfiguration benötigen. Es gibt viele ziemlich anfällige Komponenten in der PC-Architektur.



Im BIOS können Sie beispielsweise die Tabelle der Interrupt-Vektoren erfassen und die Leserechte der Festplatte ändern oder Tastatureingaben abfangen, alle Funktionen der CPU-Register maskieren - es gibt viele Angriffsoptionen. Meiner Meinung nach müssen Sie im realen Startmodus des BIOS keine Sicherheitsüberprüfung durchführen, sondern nur die Leistung des Startvorgangs messen.

Sobald Sie in den "Preboot" -Modus wechseln, der eigentlich nur Ihr Betriebssystem ist, wie z. B. die anfängliche Linux-RAM-Disk, beginnen Sie mit der Ausführung Ihres Protokolls und führen diese Schritte aus. Ich meine, sobald Sie anfangen, die Ressourcen des Betriebssystems zu nutzen, hat das, was jemand auf BIOS-Ebene mit der Interrupt-Tabelle tut, keinerlei Auswirkungen auf Sie. Es ist dir wirklich egal.

Sie können die Leistung der Register überprüfen. Wenn Sie beispielsweise mit dem Core i5-Prozessor arbeiten, wissen Sie, dass er beispielsweise das Ausführungsverbotsbit, Debug-Register und andere Dinge unterstützt, die Benutzer in den Registerfunktionen zu verschleiern versuchen können.

Diese Folie zeigt, wie das Systemdiagramm aussehen soll, wenn es in einer funktionierenden Konfiguration gestartet wird.



Es gab ein Projekt namens BitVisor, das viele Aspekte der Festplattenverschlüsselungssicherheit mithilfe von Prozessorregistern und IOMMU-Schutz in Ihrem Hauptspeicher implementierte. Das Problem ist, dass BitVisor ein ziemlich spezifisches und selten verwendetes Programm ist.
Xen ist eine Art kanonischer Open-Source-Hypervisor, der an vielen Sicherheitsstudien teilnimmt, bei denen die Leute davon überzeugt sind, dass es funktioniert. Meiner Meinung nach sollten wir den Xen-Hypervisor als Hardware-Schnittstelle auf Bare-Level verwenden und dann die Linux-Verwaltungsdomäne dom0 hinzufügen, um Ihre Hardware zu initialisieren.

Auch in Xen arbeiten alle Ihre virtualisierten Domänen im nicht privilegierten Modus, sodass Sie keinen direkten Zugriff auf Debug-Register haben. Dies ist eines der Dinge, die bereits getan wurden. Xen führt Hypercalls durch, mit denen Sie auf solche Dinge zugreifen können. Sie können diese Funktion jedoch in der Software deaktivieren.

Der Ansatz, den ich verwende, besteht darin, dass wir den Hauptschlüssel in die Debug-Register einfügen. Wir unterscheiden die ersten beiden Debug-Register zum Speichern des 128-Bit-AES-Schlüssels, der unser Hauptschlüssel ist.



Dieses Ding verlässt niemals die CPU-Register, nachdem es von einem Prozess eingegeben wurde, der Benutzeranmeldeinformationen akzeptiert. Dann verwenden wir die zweiten beiden Register als spezifische Register der virtuellen Maschine - sie können als normale Debug-Register verwendet werden oder, wie in diesem Fall, können wir sie zum Verschlüsseln des Hauptspeichers verwenden. In diesem speziellen Fall benötigen wir mehrere Geräte, die direkt mit der Verwaltungsdomäne verbunden sind. Dies ist ein Grafikprozessor, bei dem es sich um ein PCI-Gerät, eine Tastatur oder ein TPM handelt - auf all dies sollte direkt zugegriffen werden können.

Sie können den IOMMU-Schutz für diese Dinge nicht verwenden, aber Sie können diesen Schutz für einen Netzwerkcontroller, einen Speichercontroller und beliebige Geräte auf dem PCI-Bus konfigurieren, dh für Komponenten, die keinen Zugriff auf die Verwaltungsdomäne oder die Hypervisor-Speicherbereiche haben. Sie können auf Dinge wie ein Netzwerk zugreifen, indem Sie den Netzwerkcontroller tatsächlich in einer dedizierten virtuellen Net VM-Maschine platzieren. Diese Dinge werden bestimmten Geräten zugeordnet, für die die IOMMU-Sicherheit konfiguriert ist, sodass ein solches Gerät nur auf den Speicherbereich dieser virtuellen Maschine zugreifen kann.

Sie können dasselbe mit dem Speichercontroller tun und dann alle Anwendungen auf APP-VMs ausführen, ohne dass ein direkter Zugriff auf die Hardware erforderlich ist. Selbst wenn jemand die Kontrolle über Ihren Webbrowser übernimmt oder Ihnen eine schädliche PDF-Datei sendet, erhält er nichts, was die Festplattenverschlüsselung ernsthaft beeinträchtigen könnte.

Ich kann keine Verantwortung für dieses architektonische Design übernehmen, da es tatsächlich die Grundlage eines hervorragenden Projekts namens Qubes OS ist.



Die Entwickler beschreiben dieses Projekt als eine pragmatische Formation von Xen, Linux und mehreren benutzerdefinierten Tools zur Implementierung vieler der Dinge, über die ich gerade gesprochen habe. Qubes OS implementiert eine Richtlinie für nicht privilegierte Gäste und erstellt eine einheitliche Systemumgebung, sodass Sie anscheinend mit demselben System arbeiten. Tatsächlich handelt es sich jedoch um eine Reihe verschiedener virtueller Maschinen „unter einer Haube“. Ich benutze diese Idee, um meine Codebasis zu implementieren.

Das Tool, das ich entwickle, ist ein experimenteller Code, der dieses Konzept bestätigt. Ich habe es Phalanx genannt. Dies ist ein gepatchter Xen, mit dem Sie die Festplattenverschlüsselung mithilfe der von mir beschriebenen Technologie implementieren können.



Der Hauptschlüssel befindet sich in den ersten beiden Debug-Registern DR1-2, die zweiten beiden DR2-3-Debug-Register sind von domU absolut unbegrenzt. Aus Sicherheitsgründen werden die XMM-Register 0-12, die als Betriebsspeicher verwendet werden, DR2-3 und der Schlüssel verschlüsselt, wenn die virtuelle Maschine den Kontext wechselt. Ich habe auch eine sehr einfache Verschlüsselungsimplementierung mit dem Linux-zRAM-Kernelmodul durchgeführt, da es sich um ein integriertes Element handelt, das fast alles außer Kryptografie ausführt. Für die Verschlüsselung habe ich nur einen sehr kleinen Code hinzugefügt. Wie Sie wissen, ist der sicherste Code Code, den Sie nicht schreiben müssen. Eine gute Funktion von zRAM ist, dass es Ihnen eine Reihe von Bits zur Verfügung stellt, die für die sichere Implementierung von Dingen wie dem AES-Gegenmodus erforderlich sind.

Wir haben verschiedene Hardwareanforderungen. Sie benötigen ein System, das die neuen AES-Anweisungen unterstützt, die häufig verwendet werden, aber nicht in jedem System vorhanden sind. Wenn Sie einen Intel i5- oder i7-Prozessor haben, werden diese Anweisungen höchstwahrscheinlich unterstützt.



Der Rest der "Hardware" muss jedoch überprüft werden, um sicherzustellen, dass alle erforderlichen Funktionen unterstützt werden. Hardware-Erweiterungen für die HVE-Virtualisierung wurden um 2006 herum weit verbreitet. Es wird etwas schwieriger sein, einen Computer mit IOMMU zu finden. Dies ist in der Spezifikation der Systemeinheit nicht angegeben, und Sie müssen sich mit deren Eigenschaften befassen und auch herausfinden, was der Unterschied zwischen VTX und VTD usw. ist. Daher müssen Sie möglicherweise nach einem System suchen, das diese Dinge unterstützt. Und Sie benötigen natürlich ein System mit einem vertrauenswürdigen TPM-Plattformmodul, da Sie sonst die Lastmetriken überhaupt nicht messen können. Normalerweise sehen Sie sich Business-Class-Computer an, auf denen Sie die Verfügbarkeit der erforderlichen Komponenten überprüfen können. Wenn Sie Intel TXT mit Trusted Execution-Technologie finden, bietet es fast alles, was Sie benötigen. Das Qubes-Team präsentiert in seinem Wiki eine hervorragende Liste der Hardwarekompatibilität, die Details für viele Systeme enthält, die solche Dinge implementieren.

Um die Sicherheit zu gewährleisten, haben wir verschiedene Annahmen zu einigen Komponenten des Systems. TPM ist natürlich eine sehr wichtige Komponente, um die Integrität des Starts sicherzustellen. Sie müssen sicherstellen, dass es keine Hintertür gibt, die den NVRAM zurücksetzen, monotone Zähler manipulieren oder das System glauben lassen kann, dass es einen vertrauenswürdigen Status verwendet, obwohl dies in Wirklichkeit nicht der Fall ist. Basierend auf den Kommentaren von Tarnovsky, der das Reverse Engineering dieser Chips durchgeführt hat, habe ich ein Limit von ungefähr 12 Stunden exklusiven Zugriffs auf den Computer festgelegt, das erforderlich ist, wenn Sie einen TPM-Angriff darauf starten möchten, um alle Geheimnisse abzurufen.

\.

Es gibt verschiedene Annahmen bezüglich des Prozessors, des Speichercontrollers und der IOMMU, hauptsächlich hinsichtlich der Tatsache, dass sie nicht gehackt werden und ihre Funktionen korrekt implementieren. Einige dieser Annahmen müssen nicht sehr streng sein, da Intel einige dieser Dinge leicht umgehen kann und wir keine Möglichkeit haben, dies herauszufinden.

Einige der Sicherheitsannahmen betreffen Xen. Dies ist eine Software, die tatsächlich über ein sehr leistungsfähiges Sicherheitssystem verfügt, aber nichts ist perfekt, und manchmal treten sogar in einem sicheren System Schwachstellen auf. Angesichts der Tatsache, dass Xen eine privilegierte Position im System hat, ist es sehr wichtig, sicherzustellen, dass es sich in einem sicheren Zustand befindet.
Mit solchen Sicherheitsannahmen haben wir also eine Art Grundlage für das Bedrohungsmodell. , , , , - . , . , .
, – . , , , , .



, , , . , , , — , , , .

— , . FDE , RAM.

, IOMMU, . TPM NVRAM, , – , , .

, , , 12 . , .

, , . , .

TPM — NVRAM, / LPC. TPM , , , , .



RAM . , RAM RAM, , , . , , Sony PS3.

, . , . , , , , , TPM . , , , , , RIPA – , .
. , , , . .

-, . OpenSSL , API, .

Qubes OS.



: , . .

– .

, , -. , , , . Vielen Dank für Ihre Aufmerksamkeit!


Vielen Dank für Ihren Aufenthalt bei uns. Gefällt dir unser Artikel? Möchten Sie weitere interessante Materialien sehen? Unterstützen Sie uns, indem Sie eine Bestellung aufgeben oder Ihren Freunden empfehlen, einen Rabatt von 30% für Habr-Benutzer auf ein einzigartiges Analogon von Einstiegsservern, das wir für Sie erfunden haben: Die ganze Wahrheit über VPS (KVM) E5-2650 v4 (6 Kerne) 10 GB DDR4 240 GB SSD 1 Gbit / s von $ 20 oder wie teilt man den Server? (Optionen sind mit RAID1 und RAID10, bis zu 24 Kernen und bis zu 40 GB DDR4 verfügbar).

VPS (KVM) E5-2650 v4 (6 Kerne) 10 GB DDR4 240 GB SSD 1 Gbit / s bis zum Frühjahr kostenlos, wenn Sie für einen Zeitraum von sechs Monaten bezahlen, können Sie hier bestellen.

Dell R730xd 2 mal günstiger? Nur wir haben 2 x Intel Dodeca-Core Xeon E5-2650v4 128 GB DDR4 6 x 480 GB SSD 1 Gbit / s 100 TV von 249 US-Dollar in den Niederlanden und den USA! Lesen Sie mehr über den Aufbau eines Infrastrukturgebäudes. Klasse mit Dell R730xd E5-2650 v4 Servern für 9.000 Euro für einen Cent?

Source: https://habr.com/ru/post/de435178/


All Articles