SEC Xtractor: Extrahieren Von Daten Aus Elektronischen Geräten

research hardware vulnerability

Das SEC Consult Hardware Lab hat ein spezielles Hardware-Analyse-Tool entwickelt, mit dem Security Consultants auf einfache Weise Firmware aus Speicherchips auslesen können. Der sogenannte „SEC Xtractor“ wurde nun als Open-Source-Version veröffentlicht.

Winning the Interface War SEC Xtractor version 1.31 main blog image - SEC Consult

Das konfigurierbare Speicherlesekonzept des SEC Xtractor ist benutzerfreundlich aufgebaut und unterstützt mehrere Möglichkeiten zum Lesen von Flash-Chips (z. B. NAND-Chips). Außerdem können durch die Integration von JTAG-Brute-Forcing und UART-Scanning auch Schnittstellen identifiziert werden. Eine eigenständige Weiterentwicklung ist problemlos möglich, weil die SEC Xtractor Firmware und Hardware vollständig als Open-Source-Version verfügbar sind.

Der SEC Xtractor kann auch als OpenOCD-Adapter verwendet werden und es stellt zwei UART- USB-Bridges zur Verfügung. Die meisten Geräte verwenden eine Spannung zwischen 1,8 und 5,5 Volt, die durch den SEC Xtractor unterstützt wird.

Motivation

Bei umfangreichen Pentests von Hardware und Firmware von integrierten Geräten („embedded devices“) testete das SEC Consult Hardware Lab eine Reihe verschiedener Tools – alle hatten Vor- und Nachteile und keines konnte alle nötigen Anforderungen in einem Tool vereinen.

Die meisten von ihnen, wie der Flyswatter 2 oder das Shikra, verfügten über eine Art UART- USB-Bridge oder konnten direkt mit SPI und I2C kommunizieren. Viele Werkzeuge basierten auf derselben Chipserie, die von Future Technology Devices International Ltd. entwickelt wurde, hauptsächlich FT2232 oder FT232. Es ist einfach möglich ein Breakout-Board für den großen FT2232HQ-Chip online zu kaufen, deshalb dauerte es nicht lange, bis ein Prototyp entwickelt wurde.

Insbesondere die fehlende Möglichkeit NAND- und NOR-Schnittstellen auslesen zu können, führte letztlich zur Entwicklung eines eigenständigen Tools für knifflige Hardware-Analyse: der SEC Xtractor.

DAS SEC CONSULT HARDWARE LAB: ALLER ANFANG IST SCHWER

Bereits vor gut zehn Jahren begann SEC Consult mit Sicherheitsüberprüfungen von Hardware im Bereich Smart Metering, ATM-Sicherheit und Router- bzw. Gateway-Geräten. Es folgte eine Studie zur Sicherheit von Smart-Home-Geräten, die insbesondere auch die Hardware-Sicherheit beleuchtete. 2015 wurde von den ehemaligen Kollegen Stefan Riegler und Christian Kudera ein erstes Hardware-Labor für Sicherheitsforschung und Hardware-Sicherheitsbewertungen für SEC Consult Kunden eingerichtet. Thomas Weber beauftragte etwas später die Anschaffung von speziell für Penetrationstests geeigneter High-end Ausrüstung, um den besonderen Anforderungen bei Projekten und IT-Sicherheitsüberprüfungen nachkommen zu können, die bereits Ende 2015 starteten.

Es stellte sich heraus, dass die Bewertung von Hardware-Sicherheit viele Aspekte berücksichtigen muss. Einige Probleme mussten gelöst werden:

  • Wie kann ein TSOP48 NAND-Flash-Speicher gelesen werden?
  • Hat irgendjemand im Büro diesen speziellen Schraubenzieher?
  • Ich habe das Gerät geschrottet. Haben wir noch eines?

Eine der größten Herausforderungen war die Vielfalt der Embedded Devices mit deren unterschiedlichen Spannungspegeln, Flash-Speichertypen, Mikrocontroller etc. Dies führte dazu, dass mehrere, verschiedene Flash-Speicherschnittstellen eingesetzt wurden, um eine einfache Firmware-Analyse durchführen zu können.

SPI, NAND, NOR, I2C
Am Häufigsten verwendete Schnittstellen

SPI

SPI ist eine Schnittstelle mit einem einfachen Protokoll, das viele Tools verarbeiten können. Außerdem werden nur wenige zusätzliche Drähte benötigt. Vielleicht kennen Sie flashrom, ein cooles Projekt mit SPI und den FT2232-Mikrocontrollern. Darüber hinaus werden viele Speicherchips unterstützt, was es zu einer der besten Open-Source-Optionen für das Extrahieren von Speicher auf diese Weise macht.

I2C

I2C ist eine weitere problemlose Schnittstelle. Speicherchips mit dem FT2232-Mikrocontroller können mithilfe der auf GitHub verfügbaren libmpsse Bibliothek gesichert werden.

NAND

Wegen etwaiger, defekter Speicherblöcke und unterschiedlichen Befehlssequenzen für verschiedene Speichergrößen wird es bei NAND Chips schon etwas komplizierter. Es lassen sich zwar im Internet einige passende Projekte finden, doch ist nur eines tatsächlich mit dem FT2232 kompatibel: das NandTool.

NOR

NOR ist die Speicherschnittstelle mit den meisten Pins. Abhängig von der Speichergröße können bis zu 32 Adresspins verwendet werden, in seltenen Fällen sogar mehr. Die meisten Open-Source-Projekte für NOR-Schnittstellen arbeiten mit einem Mikrocontroller oder FPGA. Diese Arten von Chips traten in den ersten Projekten nicht auf, deshalb wurde die NOR-Schnittstelle damals nicht näher betrachtet.

Kosten vs. Praktikabilität

Die meisten Projekte konnten nicht abgeschlossen werden, ohne die Chips beim Einsetzen wieder anzulöten. Dies kann insbesondere für IT-Consultants frustrierend sein, die SMD nicht löten möchten. Zwar können (meist teure) kommerzielle Tools Speicher auf diese Weise lesen, doch kann nicht jeder Chip gelesen werden. Folglich müssen unterschiedliche Tools für unterschiedliche Flash-Chips angepasst werden. Die Umsetzung kann meist nur vom Hersteller der Speicherlesegeräte ausgeführt werden und ist natürlich mit entsprechenden Kosten verbunden.

Ich habe das Gerät geschrottet. Haben wir noch eines?
Herausforderungen im SEC Consult Vulnerability Lab
Winning the Interface War Prototype #1 top image - SEC Consult
Der erste Prototyp war bereits in der Lage, einfache Speicherchip-Operationen mit 5V und 3,3V durchzuführen.

Im Idealfall sollten Security Berater, die zumindest einen einfachen Schaltkreis verstehen, mithilfe eines Tools jede Art von Speicherchip auslesen können – ohne zu löten. Aus dieser Motivation heraus, ist das Speicherextraktions- und UART-Schnittstellenprojekt „SEC Xtractor“ entstanden. SEC Xtractor bietet Schnittstellen, die mit einfachen Verbindungskabeln und ZIF-Sockeln verdrahtet werden können. Der Chip muss zuvor lediglich vom Ziel entfernt werden.

Nach gründlicher Überlegung fiel die Wahl auf den FT2232HQ-Chip, der mit einem FT2232-Minimodul geliefert wird. Der allererste Prototyp zum Auslesen von Speicherchips war geboren!

Winning the Interface War Side-view to prototype #1 image - SEC Consult
Seitenansicht zu Prototyp 1.
Winning the Interface War Prototype #2 top image - SEC Consult
Der zweite Prototyp macht JTAG, I2C, SPI und NAND mit einem einfachen Breakout-Board nutzbar.

Ein Prototyp entsteht

Während der Entwicklung der SEC Xtractor-Plattform sind unzählige Stunden in die Recherche und Auswahl von passenden Adaptern und Teilen für den Prototyp geflossen. Nachdem die ersten Binärdateien von nicht gelöteten Speicherchips erfolgreich ausgelesen wurden, wurde eine Platine geroutet. Es enthielt nur das Mini-Modul FT2232, das sich als das nützlichste Werkzeug zur Unterstützung der Spannungsumschaltung zwischen 3,3 V und 5,5 V entpuppte. Die parallelen Pin-Header wurden entsprechend der Speicherchipausrichtung mit Überbrückungsdrähten verbunden.

Winning the Interface War Prototype #3 top image - SEC Consult
Dritter Prototyp. Ein einfaches Mikrocontroller-Breakout-Board kann jetzt zum Lesen eines beliebigen NOR-Speicherchips verwendet werden.

Durch diese einfache Platine entfaltet sich die volle Leistung des Mini-Moduls und diese kann für jedes Pentesting-Projekt mit eingebetteten Geräten genutzt werden. Bei einem durchgeführten Projekt hatten wir beispielsweise ein medizinisches Gerät mit einem NOR-Flash-Speicherchip, der die gesamte Firmware enthielt. Wir verwendeten eine Erweiterungsplatine mit einem Mikrocontroller, der einfach zu programmieren war, um den Inhalt über die UART-Schnittstelle auszulesen. Manchmal ist eine minimalistische Lösung die beste Lösung.

Winning the Interface War NOR memory chip with manual wire connection image - SEC Consult
Das Lesen eines NOR-Speicherchips ist kein leichtes Unterfangen, weil alle Drähte manuell korrekt angeschlossen werden müssen.

Für jedes neue Hardware-Audit oder IT-Forschungsprojekt mussten die Drähte neu angebracht werden. Sie sahen nicht nur chaotisch aus, sondern die Verbindungen waren auch so instabil, dass eine einfache Berührung während des Lesens fatale Folgen haben konnte. Darüber hinaus war deutlich mehr Fachkompetenz erforderlich, um dies überhaupt durchzuführen. Das übergeordnete Ziel der SEC Xtractor-Lösung war daher eine bessere Flexibilität für Tester ohne tiefgehende Hardware-Expertise, damit diese die Firmware ebenfalls sichern und testen können.

Winning the Interface War SEC Xtractor version 1.0 green image - SEC Consult
SEC Xtractor Version 1.0 – Für dieses Design wurden parallele Stiftleisten mit einem ZIF-Sockel anstelle von festen Steckverbindern verwendet.

Parallel zur Entwicklung der Leiterplatten im SEC Consult Hardware Lab, kam ein Tool namens Hardsploit auf den Markt. Es handelte sich dabei um ein großes Breakout-Board mit einem FPGA. Zweifellos würde ein Softwareentwickler ohne Hardware-Kenntnisse das Board nicht einfach für seine Anforderungen adaptieren können, weil es zu komplex und nicht komplett Open Source zu sein schien. Die beste Wahl wäre eine Art kleiner 8-Bit-Mikrocontroller, etwas leistungsfähiger, in C programmierbar, aber nicht zu komplex und – im Idealfall – mit gebrauchsfertigen Adaptern für verschiedene Speicherchips, um sich die sonst nötige Verkabelung zu ersparen.

SEC Xtractor Version 1.0 – Die Erste Generation

Das Extension Board war mit einem ATXmega128A1U-Controller ausgestattet, einem einfach zu programmierenden 8-Bit-Mikrocontroller ohne großes Framework und Funktionswirrwarr. Es machte Sinn, es mit dem Mini-Modul FT2232 zu kombinieren. Um den Bereich der Zielgeräte zu erweitern, wurden allen Ein- und Ausgänge mit universellen Pegelumsetzern (TXS0108E-Q1) verbunden. Dies beinhaltet die Pins FT2232 und ATXmega128A1U.

Um das Chaos der Drähte wie in der Abbildung oben zu vermeiden, haben wir eine Stiftleiste entworfen, in die NAND- und NOR-Speicherchips eingebaut werden können. Der Pin-Header ist auf dem folgenden Bild in der linken unteren Ecke zu sehen. Aufgrund der Anzahl der Pins wirkt das Hinzufügen eines Mikrocontrollers zunächst wie ein provisorischer Hack. Nachdem jedoch einige Funktionen von JTAGenum und andere benutzerdefinierte Funktionen hinzugefügt wurden, erwies sich der ATXmega als immer nützlicher.

Winning the Interface War SEC Xtractor IO levels counter image - SEC Consult
Einfacher SEC Xtractor IO-Pegelzähler, gemessen mit einem Oszilloskop.

Als problematisch erweist sich ein falscher Spannungspegel, der im schlimmsten Fall das Zielgerät zerstören und die gesamte Sicherheitsüberprüfung zumindest verzögern oder gar unmöglich machen könnte. Es wurden daher drei Siebensegmentanzeigen hinzugefügt, um sicherzustellen, dass die richtige Spannung für die jeweiligen Ein- und Ausgänge verwendet werden. Dieses zweiseitige Layout ist leicht reproduzierbar, selbst für Do-it-Yourself Handwerker, die gerne ätzen. Durchgangswiderstände sorgen für die nötige Flexibilität, wenn andere Werte benötigt werden (z. B. um die Spannungsgrenzen der einstellbaren Stromversorgung zu ändern). Dies ermöglicht es Herstellern und Hackern, die Hardware des SEC Xtractor für die gewünschten Anwendungen individuell anzupassen.

Der erste echte Einsatz war eine Shell, die ursprünglich für das einfache ATXmega-Breakout-Board (siehe vorheriges Bild) programmiert wurde. Sie war mit der (laut Datenblatt) höchsten offiziell verfügbaren Frequenz von 4M Baud über die erste serielle Schnittstelle mit der USB-Schnittstelle des FT2232-Mini-Moduls zu erreichen. Ein Übertakten des ATXmega wäre natürlich möglich und würde zum schnelleren Auslesen des Speichers führen.

Alle diese Sonderfälle wurden in den vielen Jahren, die für die Entwicklung der SEC Xtractor Hardware benötigt wurden, mit einer Vielzahl von Geräten durchgeführt. Ein Oszilloskop und eine Zählerimplementierung auf dem SEC Xtractor (siehe Abbildung unten) wurden zum ständigen Begleiter im SEC Consult Hardware Lab.

Winning the Interface War Inside Siglent Technologies Digital Oscilloscope image - SEC Consult
Im Inneren des Digitaloszilloskops SDS 1202X-E von Siglent Technologies.

Bisherige Erfolge

SEC Xtractor wurde Ende 2016 für alle Arten von Projekten getestet und 2017 erstmals in einem Blogpost erwähnt. JTAG Brute-Forcing wurde mit der alten und der neuen Hardware getestet, um den korrekten Betrieb zu überprüfen. Mit Hilfe des SEC Xtractor entstand auch ein Security Advisory zu einem Oszilloskop. Der UART-Port (Tx Rx GND) des folgenden Bildes wurde verwendet, um eine Verbindung zum Gerät herzustellen und laufende Prozesse und die Firmware zu sichern.

Winning the Interface War SEC Xtractor version 1.31 black image - SEC Consult
SEC Xtractor Version 1.31 in der schwarzen Sonderedition.

2018 wurde der SEC Xtractor in einem längeren Forschungsprojekt zur Hardware-Sicherheit verwendet und 2019 erstmals auf der Black Hat Asia vorgestellt. Das Ergebnis war eine reverse-engineerte JTAG-Schnittstelle, ein ausgelesener NOR-Flash-Speicher und die Möglichkeit, eine Industrie-SPS von Siemens neu zu programmieren. Dafür kam die (rote) Nachfolgerversion von SEC Xtractor, nämlich Version 1.20, zum Einsatz. Die interne Stromversorgung wurde auf 2,7V verringert, damit die Pegelumsetzer die für die Niederspannungsspeicherchips und Mikroprozessoren erforderliche Grenze von 1,8V erreichen konnten.

SEC Xtractor Version 1.31 – Black Edition

Drei Jahre nach der Entstehung, glänzt die neue Version 1.31 mit benutzerfreundlichen Verbesserungen wie einem Taster, um den Programmspeicher neu zu schreiben, und zusätzlichen Beschriftungen. Ein Open-Source-Bootloader wurde verwendet, um das Gerät über USB programmieren zu können. Es ist kein externer Programmierer erforderlich, um den ATXmega-Mikrocontroller zu aktualisieren. Passend zum Start der Black Hat Europe 2019 Arsenal wurde die Farbe Schwarz für die Hauptplatine und die NAND / NOR-Adapter gewählt.

Winning the Interface War NOR adapter for the SEC Xtractor image - SEC Consult
NOR-Adapter für den SEC Xtractor.
Eingebauter NAND-Flash-Speicher
Eingebauter NAND-Flash-Speicher.

Dieses Projekt ist jetzt öffentlich verfügbar und wir freuen uns über Feedback aus der Hacker-Community! Neue Designs mit anderen Mikrocontrollern können dank der getrennten Hardware-Abstraktionsschicht jederzeit in der Firmware implementiert werden. Wolfgang Ettlinger kümmerte sich um das Refactoring und die Feinabstimmung der Shell und der Gesamtstruktur, die eine Trennung möglich machen. Der UART-Scanner, ein weiterer wichtiger Teil, wurde von Steffen Robertz neu implementiert. Er restrukturierte und erweiterte auch die NAND / NOR-Chip-Funktionen.

Ein Bilderbuch-Beispiel ist das Auslesen des NAND-Flash-Speichers. Ein Foto zeigt den Zusammenbau typischer Speicherchips in den Adaptern:

Winning the Interface War Pre-burned test memory chip image - SEC Consult
Beispielausgabe eines vorprogrammierten Test-Speicherchips.

Der Speicherinhalt wird direkt zur Konsolenausgabe umgeleitet. Um den Speicher zu sichern, muss diese Ausgabe in einer Datei protokolliert und dann mit dem Befehl „xxd -r“ in eine Binärdatei konvertiert werden. Achtung: Der gesamte Dump-Vorgang kann aufgrund des relativ langsamen Mikrocontrollers (32 MHz) eine Weile dauern.

Alle Funktionen des SEC Xtractor wurden für verschiedene Forschungs- und Kundenprojekte verwendet und werden vom SEC Consult-Team ständig weiterentwickelt.

Ein besonderer Dank geht an Nathan Andrew Fain und Anthony Andriano. Das JTAG-Brute-Forcing basierte auf dem Projekt JTAGenum und der Xmega Bootloader kam zum Einsatz.

Die Hardware und die Firmware sind jetzt ab sofort als Open-Source-Version verfügbar und im GitHub-Repository von SEC Consult zu finden.

 

Dieser Research zum Thema Hardware-Security und die Entwicklung der SEC Xtractor-Plattform wurden von Thomas Weber im Auftrag des SEC Consult Vulnerability Lab durchgeführt.