Als in den 1960er Jahren integrierte Schaltungen auf dem Vormarsch waren, begannen Probleme aufzutauchen, für welche die auch heute noch bekannten Oszilloskope keine Lösung boten.
Zum ersten Mal in der Geschichte der Computertechnik war es unerlässlich, eine große Anzahl von Signalen gleichzeitig anzuzeigen. Frühe Lösungen versuchten, mehrere Oszilloskope zu kombinieren. Unordnung auf den Displays, ein Mangel an eindeutiger Dateninterpretation sowie Platzbeschränkungen machten diese Lösung aber nur marginal brauchbar, weswegen so genannter Logic Analyzer ihren Einzug fanden. Heute ist dieses Messmittel das wohl wichtigste Gerät im Sammelsurium eines Hardware-Hackers.
Unbekannte Pins / Interfaces auf der Platine
Bei der Untersuchung einer Hardwareplatine stehen immer Pins oder Kontaktpunkte im Fokus, die ggf. sensible Daten exponieren. Häufig handelt es sich hier um standardisierte Schnittstellen wie UART oder JTAG Interfaces. Diese erlauben oft einen interaktiven Zugriff auf das Betriebssystem (UART) oder direkt auf Speicherbereiche (JTAG). Allerdings sind diese Interfaces selten durch ein Label auf der Platine gekennzeichnet.
Um herauszufinden, ob unbekannte Pins oder Kontaktpunkte tatsächlich sensible Daten exponieren bzw. um den Verdacht einer vermuteten Schnittstelle zu bestätigen, ist ein Logic Analyzer das Mittel der Wahl. Dies ist ein elektronisches Messgerät, welches den Zeitverlauf von digitalen Signalen aufzeichnen und durch eine frei gewählte Software darstellen kann. Liegen die Daten in einem bekannten Protokoll vor, können diese je nach eingesetzter Software i.d.R. auch vollständig dekodiert werden.
Vorteile gegenüber Oszilloskop
Gegenüber Oszilloskopen bringt ein Logic Analyzer einige Vorteile mit sich:
- Wesentlich mehr Eingänge möglich (8 bis mehrere 100) und daher perfekt für eine Analyse unbekannter Hardware, da ein häufiges Umstecken auf verschiedene Pins verringert wird.
- Einfacher in der Handhabung. Komplexe Einstellmöglichkeiten am Gerät selbst entfallen.
- Günstiger im Einkauf. Funktionale Logic Analyzer mit acht Kanälen sind schon für 10 € erhältlich.
- Ergebnisse bzw. Aufzeichnungen beschränken sich auf die wesentlichen (digitalen) Wahrheitswerte. Es existieren zwar sog. Mischgeräte, welche wie Oszilloskope auch Signale in analoger Form aufzeichnen, diese sind für eine Hardware-Analyse im Sicherheitskontext aber meist unwichtig.
- Freie Wahl der Analysesoftware. Die Aufzeichnung, Protokolldekodierung sowie die weitere Analyse der Signale geschieht mittels Software am PC oder Notebook. Hierfür existiert eine Vielzahl von kostenlosen und gut ausgestatteten Programmen, welche je nach Präferenz frei ausgewählt werden können.
Beispiel Hardware-Analyse UART / Saleae Logic Analyzer + Logic Analyzer Software
Um die Nützlichkeit eines Logic Analyzers zu untermauern, soll ein Beispiel aus einem unserer vergangenen Hardware-Projekte einbezogen werden, bei welchem der Saleae Logic Analyzer zum Einsatz kam. Dieser kann wie die meisten Geräte per USB mit dem PC oder Notebook verbunden werden.
Verbinden von verdächtigen Pins
In der Regel steht der Analyst nach dem Ausbau der Platine vor einer Vielzahl von exponierten Schnittstellen und Kontaktpunkten. Durch etwas Erfahrung können verdächtige Pins bereits vorfokussiert werden (z.B. verfügt ein UART-Interface meist über vier nebeneinanderliegende Pins), welche man im Anschluss mit dem Logic Analyzer verbindet. Wichtig ist hierbei nur, dass mindestens ein Masse-Pin (GND) auch mit dem Masseeingang des Analyzers verbunden wird. Ein Masse-Pin kann mittels Durchgangsprüfung eines Multimeters bestimmt werden (siehe hier). Als Massereferenz kann meist jeder metallische Aufbau auf der Platine (z.B. das Metallgehäuse eines Ethernet Interfaces oder der Netzsteckerbuchse) dienen, da dieser i.d.R. mit Masse verbunden ist.
Aufzeichnung von Signalen
Wurde der Logic Analyzer mit dem PC oder Notebook verbunden, kann die Software zur Aufzeichnung und Analyse der Signale frei gewählt werden. Die kostenlose Saleae Logic Software kann aufgrund der Unterstützung verschiedenster Logic Analyzer, der Bereitstellung aller nötigen Protokoll-Decoder und Multi-OS-Unterstützung (Linux, Windows, MacOS) wärmstens empfohlen werden. Nun muss lediglich die Software ausgeführt, die verbundenen Channel zur Analyse ausgewählt, die Aufzeichnung gestartet und im Anschluss die Platine mit Netzspannung versorgt werden.
Die Software zeichnet nun sämtliche ausgehenden Signale auf den angeschlossenen Pins auf.
Dekodierung von Signalen
Wurden Daten aufgezeichnet, können diese über die Analyzer-Funktion dekodiert werden. Hier steht eine Vielzahl von Schnittstellen und Protokollen zur Verfügung. Vermutet man bei der verdächtigen Pin bspw. ein UART-Interface, so wählt man hier “Async Serial“, da der Datenfluss bei UART asynchron und seriell ist.
Wurde das passende Protokoll auf den jeweiligen Channels eingestellt, werden die mitgeschnittenen Daten dekodiert. Um lesbare Daten darzustellen, muss am Beispiel UART noch die Dekodierung in Ascii ausgewählt werden:
Sind diese Konfigurationen vorgenommen, können in der Aufzeichnung selbst sowie im Terminalfenster die Daten im dekodierten Format gelesen werden. Handelt es sich bspw. um einen Bootlog, kann man mit Sicherheit sagen, dass tatsächlich ein UART-Interface identifiziert wurde, welches in späteren Schritten einen Systemzugriff ggf. ermöglicht.
Ausnutzung von UART Interface
Konnte man wie im Beispiel ein UART-Interface über den Bootlog identifizieren, braucht man nur noch einen passenden Adapter, um mit der Schnittstelle zu interagieren.
Man verbindet die Pins mittels Adapter mit dem PC/Notebook und startet eine geeignete Terminal-Software wie z.B. Screen oder Putty. Nicht selten hat man nun über die identifizierte UART-Schnittstelle eine vollumfängliche Admin-Shell auf dem Betriebssystem, mit welcher das Dateisystem nach sensiblen Inhalten durchsucht oder auch Malware eingespielt werden kann.
Bitlocker Key auslesen
Neben dem Aufspüren von Interfaces wie UART kann ein Logic Analyzer auch dazu verwendet werden, sensible Daten, welche über ein Bus-System transferiert werden, mitzuschneiden. Ein Beispiel ist der sog. SPI-Bus, welcher sehr oft bei Embedded Devices zu Einsatz kommt, um Daten aus Speicherbausteinen zur CPU/MPU zu übertragen. Dieser Bus wird allerdings bei modernen Notebooks auch zur Übertragung des Bitlocker Keys verwendet. Heutige Notebooks unterstützen meist die Festplattenverschlüsselung via Bitlocker. Grundvoraussetzung zur Bitlocker-Nutzung ist das Vorhandensein eines sog. TPM-Chips.
Ein TPM-Modul hat die Aufgabe, kryptografisches Material wie z.B. einen Bitlocker Key zur Festplatten De- und Entschlüsselung sicher zu speichern. Auch wenn direkte Ausleseversuche (Dumping) nahezu unmöglich sind, so muss zur Festplattenentschlüsselung der gespeicherte Schlüssel irgendwann zur CPU übertragen werden. Der hierfür verwendete SPI-Bus stellt für die meisten Logic Analyzer kein Problem dar.
Nachdem der Logic Analyzer mit dem SPI-Bus verbunden und die Aufnahme innerhalb der Software gestartet wurde, werden sämtliche Daten, welche über den Bus transferiert werden, aufgezeichnet:
Da meist nicht nur ausschließlich das TPM-Modul, sondern auch andere Hardwarekomponenten über den Bus kommunizieren, ist es sehr schwierig, den Key aufgrund von enormen Datenmengen zu identifizieren. Die Saleae Logic Software bietet allerdings die Möglichkeit, externe Extensions (Plugins) zu verwenden. Hier existiert bereits eine Extension, welche aus aufgezeichneten SPI-Traffic den Bitlocker Key automatisch extrahiert (https://github.com/FSecureLABS/bitlocker-spi-toolkit).
Der Key kann im Anschluss mit gängigen Linux-Tools wie z.B. mount-bitlocker verwendet werden, um die Festplatte zu entschlüsseln und auf die Daten zuzugreifen.