
Bluetooth-Experimentierframework für Broadcom- und Cypress-Chips.
Broadcom-Chips werden in ungefähr einer Milliarde Geräten verwendet, etwa in allen iPhones, MacBooks, der Samsung-Galaxy-S-Serie, der älteren Google-Nexus-Serie, älteren Thinkpads, Raspberry Pis, verschiedenen IoT-Geräten und mehr. 2016 übernahm Cypress die IoT-Sparte von Broadcom. Seitdem sind die Firmware-Varianten leicht auseinandergewichen, da Broadcom Nicht-IoT-Kunden wie Apple und Samsung behielt. Der Mechanismus zur Interaktion mit der Firmware und zu ihrer Aktualisierung blieb jedoch derselbe. Wir haben per Reverse Engineering herausgefunden, wie die Betriebssysteme diese Firmware patchen und mit ihr interagieren. Darauf aufbauend haben wir ein Bluetooth-Experimentierframework entwickelt, das in der Lage ist, die Firmware zu patchen. Dies ermöglicht verschiedene Funktionen, die andernfalls nur mit einer Full-Stack-Software-defined-Radio-Implementierung möglich wären, wie etwa das Injizieren und Überwachen von Paketen auf dem Link Layer.
InternalBlue wurde nicht nur für unsere eigene Forschung am Secure Mobile Networking Lab (SEEMOO) verwendet. Auch der KNOB- und der BIAS-Angriffsprototyp wurden mithilfe von InternalBlue-LMP-Nachrichten implementiert, und die SweynTooth-Angriffe experimentierten ebenfalls mit InternalBlue, um LCP-Nachrichten zu erzeugen. Beachte, dass InternalBlue im Gegensatz zu Tools wie btlejack oder Ubertooth nicht darauf abzielt, Machine-in-the-Middle-Angriffe durchzuführen. Das Gerät, auf dem InternalBlue läuft, kann jedoch beliebige Pakete senden und diese auch in bestehende Verbindungen injizieren. Beim Überwachen werden alle Pakete, die von dem Gerät mit InternalBlue empfangen werden, erfasst, und es gibt keinen Paketverlust. InternalBlue hat keinerlei Probleme bei der Analyse verschlüsselter Verbindungen oder von Classic Bluetooth. Wenn du spezifische Funktionswünsche für deine Sicherheitsforschung hast, kannst du gern ein Ticket eröffnen.
Zusätzlich zur Sicherheitsforschung eröffnet InternalBlue auch Möglichkeiten für weitere Analysen, wie etwa Leistungsstatistiken und -verbesserungen für Bluetooth Low Energy. Alles, was innerhalb eines Bluetooth-Stacks verbessert werden kann, kann direkt auf handelsüblichen Geräten getestet werden.
Unsere jüngste Forschung umfasst Frankenstein, das die Firmware einschließlich Thread-Wechseln und virtuellem Modem-Input emuliert. Die emulierte Firmware kann an einen Linux-Host angeschlossen werden. Der Ansatz ist also Full-Stack. Wir haben ihn hauptsächlich zum Fuzzing verwendet und dabei Schwachstellen gefunden, bei denen Host-Antworten ausgelöst werden müssen. Frankenstein befindet sich in einem separaten Repository, hängt aber von InternalBlue ab, um Zustands-Snapshots usw. auf einem physischen Gerät zu erstellen.
Darüber hinaus haben wir gerade Polypyus veröffentlicht. Es ermöglicht Binary-Only-Binary-Diffing, unabhängig von IDA und Ghidra. Es integriert sich jedoch in diesen Workflow, indem es gute Startpunkte für weitere Analysen identifiziert. Wir haben es bereits mit verschiedenen Broadcom-WLAN- und Bluetooth-Firmwares getestet.
Auf der Suche nach unseren Messungen des Zufallszahlengenerators, die wir im Rahmen der Analyse von CVE-2020-6616 durchgeführt haben? Du findest sie hier.
Es gibt auch einige weitere dynamische Hooks für HCI mit Frida auf iOS und Android. Wir haben dies genutzt, um das Warnverhalten der Benutzeroberfläche bei MitM-Angriffen zu untersuchen. Wahrscheinlich aber auch für viele andere Experimente nützlich.
Aufgrund von Spectra 👻🌈 sind die Befehle zum Schreiben und Lesen von RAM nach der Treiberinitialisierung deaktiviert. Workarounds dafür werden in den entsprechenden Android- und iOS-Anleitungen beschrieben; Bypasses für andere Geräte folgen bei Bedarf.
Copyright 2018-2021 Das InternalBlue-Team
Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die „Software“) erhält, kostenlos die Erlaubnis erteilt, die Software ohne Einschränkung zu nutzen, einschließlich und ohne Beschränkung der Rechte zur Nutzung, zum Kopieren, Modifizieren, Zusammenführen, Veröffentlichen, Verteilen, Unterlizenzieren und/oder Verkaufen von Kopien der Software, und Personen, denen die Software bereitgestellt wird, dies zu gestatten, unter den folgenden Bedingungen:
Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
DIE SOFTWARE WIRD „WIE BESEHEN“ BEREITGESTELLT, OHNE JEGLICHE GEWÄHRLEISTUNG, AUSDRÜCKLICH ODER IMPLIZIT, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG VON RECHTEN DRITTER. IN KEINEM FALL SIND DIE AUTOREN ODER URHEBERRECHTSINHABER HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER SONSTIGE HAFTUNG, OB AUS VERTRAG, UNERLAUBTER HANDLUNG ODER ANDERWEITIG, DIE SICH AUS ODER IM ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN GESCHÄFTEN MIT DER SOFTWARE ERGEBEN.