Security Testing
Tomaso Vasella
Das ist Flipper Zero
Die Firmware ist das Betriebssystem des Flipper Zero und beinhaltet meistens auch diverse Apps. Neben der offiziellen Version gibt es inzwischen ziemlich viele Alternativen mit verschiedenen Zusatzfunktionen und Anpassungen. Auf Github finden sich sehr viele Ressourcen zu diesen Themen. Eine der nützlichsten Sammlungen ist awesome-flipperzero.
Eine Übersicht der bekanntesten Firmware-Varianten ist in der nachfolgenden Tabelle zusammengefasst.
Name | Beschreibung | Link |
---|---|---|
Official | Source Code der offiziellen Flipper Zero Firmware | https://github.com/flipperdevices/flipperzero-firmware |
Unleashed | Firmware mit Unterstützung für Rolling Codes, Community-Plugins und weiteren Ergänzungen | https://github.com/DarkFlippers/unleashed-firmware |
RogueMaster | Fork der Unleashed Firmware mit eigenen Grafiken, experimentellen Anpassungen, Plugins und Spielen | https://github.com/RogueMaster/flipperzero-firmware-wPlugins |
Xtreme | Fork der offiziellen Firmware mit aufgeräumtem Code, mehr Erweiterungen und eigenen Assets | https://github.com/ClaraCrazy/Flipper-Xtreme |
Xvirus | Fork der Unleashed Firmware | https://github.com/DXVVAY/xvirus-firmware |
SquachWare | Fork der offiziellen Firmware mit eigenen Grafiken und Anwendungen aus der Community | https://github.com/skizzophrenic/SquachWare-CFW |
Haisenteck | Fork der offiziellen Firmware mit diversen Anpassungen u.a. im Bereich SubGhz | https://github.com/haisenteck/flipperzero-Haisenteck |
Korai | Fork der offiziellen Firmware mit vollständigem BLE-Stack | https://github.com/Korai-Labs/Korai |
Für die Aktualisierung der Firmware gibt es diverse Verfahren:
Eine Firmware des Flipper Zero besteht normalerweise aus verschiedenen Komponenten: Radio Stack, Hardware Abstraction Layer (HAL), Betriebssystem (OS), Treiber und Anwendungen.
Die meisten Firmware-Distributionen beinhalten das Firmware Build Tool fbt
, welches aus der originalen Firmware stammt und im Wesentlichen ein Wrapper für SCons ist. Dieses Tool ist sehr nützlich, weil es eine vorgefertigte Toolchain direkt aus dem Internet beziehen kann und das Kompilieren und Installieren der Flipper Firmware mit einem einfachen Befehl ermöglicht. Am Beispiel der Xtreme Firmware wird nachfolgend gezeigt, wie diese Firmware kompiliert und auf einem Flipper Zero installiert wird.
Als erstes das git Repository klonen, das zurzeit ca. 670 MB gross ist:
$ git clone https://github.com/Flipper-XFW/Xtreme-Firmware.git
Einen am USB-Port angeschlossenen Flipper Zero erkennt Linux als Virtual Serial USB Device unter /dev/ttyACM0
(die Zahl kann auch grösser sein), wofür das Kernelmodul cdc_acm
zuständig ist.
Mit Hilfe von fbt
lässt sich in einem Befehl das Kompilieren mit anschliessender Installation der erzeugten Firmware auf dem Flipper verbinden: ./Xtreme-Firmware/fbt COMPACT=1 DEBUG=0 flash_usb_full
Wenn dieser Befehl das erste Mal ausgeführt wird, lädt fbt
als erstes die Toolchain, bestehend aus dem GNU Compiler für ARM und zugehörigen Werkzeugen und Bibliotheken und legt sie unter ./Xtreme-Firmware/toolchain
ab. Zusätzlich werden mehrere Submodule, u.a. der FreeRTOS-Kernel, automatisch von Github bezogen. Nun wird die gesamte Firmware als “self-update package” mit allen Ressourcen, d.h. einschliesslich aller Apps, erzeugt und im Verzeichnis ./Xtreme-Firmware/dist/f7-C/
abgelegt. Es werden mehrere Dateien generiert, wobei die Datei firmware.dfu
die eigentliche Firmware ist und die Datei resources.tar
die Apps und weitere Ressourcen enthält. Falls fbt
einen angeschlossenen Flipper findet, wird dieser automatisch aktualisiert. Möchte man nur das Updatepaket erzeugen, ohne es zu installieren, so muss anstatt flash_usb_full
die Option updater_package
verwendet werden.
Die wahrscheinlich bekannteste Hardware-Erweiterung für den Flipper Zero ist das WiFi Devboard. Es bietet eine System-on-a-Chip (SoC) Plattform basierend auf dem Chipsatz ESP32-S2 des Herstellers Espressiv, der 2.4 GHz WLAN-Konnektivität bietet und eine eigene CPU enthält.
Das Wifi Devboard verwendet eigene Firmware und kann über Apps auf dem Flipper gesteuert werden. Das Board wird über die GPIO-PINs an den Flipper Zero angeschlossen.
Die Standard-Firmware des WiFi Devboard enthält Black Magic Debug, wodurch Debugging der Flipper Zero Firmware auf Basis des GNU Debuggers (GDB) möglich ist. Das WiFi Devboard agiert dabei als GDB-Server und lässt sich via WiFi oder USB-Schnittstelle ansprechen. Mit der Standard-Firmware stehen keine Funktionalitäten zur WiFi Netzwerkanalyse oder zum Penetration Testing zur Verfügung.
Standard-Firmware
Die Standard-Firmware des WiFi Devboards ist mit dem micro Flipper Build Tool (uFBT) Python-Modul sehr einfach aktualisierbar. Es wird wie folgt installiert: python -m pip install --upgrade ufbt
Nun wird das Board per USB angeschlossen. Anschliessend den BOOT-Knopf auf dem Board gedrückt halten und dann den RESET-Knopf drücken, anschliessend den BOOT-Knopf loslassen. Das Devboard erscheint nun als Device unter /dev/ttyACM0
. Aktualisiert wird die Firmware mit folgendem Befehl: python3 -m ufbt devboard_flash
Anschliessend den RESET-Knopf drücken, die USB-Verbindung trennen und wiederherstellen, womit das Devboard als Serielles Gerät erscheint und bereit ist.
Alternative Firmware
Möchte man das WiFi Devboard für offensive Zwecke verwenden, braucht es entsprechende Firmware. Die bekanntesten sind Marauder, das verschiedene offensive und defensive WiFi-Tools enthält und Evil Portal, das einen Access Point mit Captive Portal zum sammeln von Zugangsdaten realisiert. Beide Repositories beinhalten vorkompilierte .bin
Dateien, welche mit dem Marauder Flasher (automatisch) oder mit dem webbasierten Tool https://esp.huhn.me/ installiert werden können. Ausserdem bietet die Xtreme Firmware die Möglichkeit, direkt vom Flipper aus mit einer App die Marauder oder die Evil Portal Firmware auf das WiFi Devboard aufzuspielen, was aber in unseren Tests nicht sauber funktionierte. Auf dem Flipper Zero selbst braucht es Apps zur Interaktion mit dem WiFi Devboard, diese sind in der Xtreme Firmware bereits enthalten.
Bemerkung: Die neusten Versionen von Marauder enthalten inzwischen zwar auch eine Evil Portal Funktion, dies scheint aber eine SD-Karte zu benötigen, die direkt mit dem ESP32 verbunden ist und funktioniert somit nicht mit dem WiFi Devboard.
Möchte man Anpassungen an der Firmware des WiFi Devboards vornehmen, muss man anschliessend den Quellcode kompilieren und die so erzeugte Firmware auf dem Devboard installieren. Die folgenden Abschnitte zeigen am Beispiel der Marauder-Firmware, wie das bewerkstelligt wird.
File > Preferences
die folgenden “Board manager URLs” hinzugefügt werden:Tools > Board > Boards Manager
nach esp32 gesucht. Nun beim Suchergebnis “esp32 by Espressif Systems” die Version 2.0.14 auswählen und auf den Knopf INSTALL klicken.~/.arduino15/packages/esp32/hardware/esp32/2.0.14/platform.txt
in einem Editor öffnen.-w
hinzufügen:build.extra_flags.esp32
build.extra_flags.esp32s2
build.extra_flags.esp32s3
build.extra_flags.esp32c3
-zmuldefs
hinzufügen:compiler.c.elf.libs.esp32
compiler.c.elf.libs.esp32s2
compiler.c.elf.libs.esp32s3
compiler.c.elf.libs.esp32c3
Sketch > Include Library > Add .ZIP Library...
installiert werden. Die Arduino IDE kann anschliessend diese Libraries automatisch aktualisieren und zeigt eine Meldung, wenn ein Update verfügbar ist.unzip ESP32FS-1.1.zip -d ~/Arduino/tools
Das Ergebnis sollte dann so aussehen: ~/Arduino/tools/ESP32FS/tool/esp32fs.jar
git clone https://github.com/justcallmekoko/ESP32Marauder.git
Endlich kann die Datei esp32_marauder.ino
in der Arduino IDE geöffnet werden, wodurch der gesamte Quellcode in der IDE geöffnet wird. Nun die Datei configs.h
wählen und im Abschnitt BOARD TARGETS das Kommentarzeichen von der Zeile //#define MARAUDER_FLIPPER
entfernen (ca. Zeile 19). Alle anderen Zeilen in diesem Abschnitt sollten auskommentiert sein. Der Quellcode kann nun editiert werden.
Kompiliert wird mit dem Menubefehl Sketch > Verify/Compile
. Falls dabei der Fehler ModuleNotFoundError: No module named 'serial'
auftritt, so muss das Python-Modul pyserial installiert werden.
Menu Tools > Port
das Devboard auswählen, es sollte als /dev/ttyACM0 (ESP32S2 Dev Module)
angezeigt werden.Tools > Board > esp32
den Eintrag ESP32S3 Dev Module
auswählen.Tools > Partition Scheme
den Eintrag Minimal SPIFFS (1.9 MB App with OTA/190KB SPIFFS)
auswählen.Sketch
den Befehl Upload
wählen, wodurch die Firmware auf das Devboard geschrieben wird. Falls dabei die Fehlermeldung A fatal error occurred: Could not open /dev/ttyACM0, the port doesn't exist
erscheint, sollten die Berechtigungen des Ports /dev/ttyACM0
überprüft und ggf. angepasst werden. Anschliessend das Devboard über den RESET-Knopf neu starten und die neue Firmware wird ausgeführt.Firmware für den Flipper Zero und für das WiFi Devboard selbst zu kompilieren und zu installieren ist durchaus machbar. Die offizielle Firmware für den Flipper enthält ein einfach zu bedienendes Werkzeug, das die Kompilation und Installation sehr einfach macht. Hingegen ist die initiale Einrichtung einer Entwicklungsumgebung für das WiFi Devboard relativ kompliziert und erfordert diverse Bibliotheken, die manuell installiert werden müssen. Ist das einmal gemeistert und alle nötigen Tools installiert, sind künftige Kompilationen und Installationen recht einfach zu bewerkstelligen.
Unsere Spezialisten kontaktieren Sie gern!
Tomaso Vasella
Tomaso Vasella
Tomaso Vasella
Tomaso Vasella
Unsere Spezialisten kontaktieren Sie gern!