J’ai récupéré un switch Ubiquiti US-8-150W. Malheureusement, il ne fonctionne plus. et nouveau switch US-24-250W


Ubiquiti US-8-150W : boot U-Boot, extraction du kernel et debug avancé
Suite à notre analyse initiale du switch Ubiquiti US-8-150W, nous avons poursuivi le reverse engineering et obtenu des avancées significatives.
Cette mise à jour détaille :
- le mapping complet de la flash
- le boot manuel via U-Boot
- l’extraction et le chargement d’un kernel
- le contrôle du middleware Ubiquiti
Ces techniques permettent désormais un contrôle quasi complet du processus de boot.
Mapping mémoire flash du US-8-150W
Le mapping de la flash SPI est maintenant entièrement identifié :
0x000000000000-0x0000000c0000 : "u-boot"
0x0000000c0000-0x0000000d0000 : "u-boot-env"
0x0000000d0000-0x0000000e0000 : "shmoo"
0x0000000e0000-0x000000fe0000 : "kernel0"
0x000000fe0000-0x000001ef0000 : "kernel1"
0x000001ef0000-0x000001ff0000 : "cfg"
0x000001ff0000-0x000002000000 : "EEPROM"
kernel0 et kernel1 indique un mécanisme de mise à jour avec rollback automatique.
Forcer le boot sur kernel0 avec U-Boot
Il est possible de bypass le boot par défaut et de charger directement kernel0 :
sf probe
sf read 0x1000000 0xe0000 0xf00000
bootm 0x1000000
0xe0000: offset de kernel00xf00000: taille (~15 MB)
Extraction du kernel depuis un firmware Ubiquiti
Identifier le kernel avec binwalk
binwalk US.MULT.US8_7.2.123+16565.251002.1348.bin
448410 0x6D79A uImage header
Extraction du kernel
dd if=US.MULT.US8_7.2.123+16565.251002.1348.bin \
of=ubi-kernel.img \
bs=1 skip=448410 count=15583836 status=progress
uImage permet de booter directement avec bootm sans modification.
🔌 Chargement du kernel via UART (YMODEM)
Sur le PC :
picocom -b 115200 --send-cmd "sb -vv" /dev/ttyUSB0
Dans U-Boot :
loady
Puis : Ctrl-A → S → sélectionner ubi-kernel.img
Boot du kernel
bootm 0x1000000
Le kernel est chargé et exécuté sans flash.
🧪 Analyse du boot Linux
Image Type: ARM Linux Kernel Image (uncompressed)
Load Address: 00018000
Entry Point: 00018000
Le chargement à 0x18000 confirme un format uImage standard ARM.
Bloquer le reset automatique du switch
Après connexion (ubnt / ubnt), exécuter immédiatement :
killall -STOP switch
killall -STOP app
Debug du middleware Ubiquiti
/sbin/switchdrvr
Permet de relancer manuellement le driver et d’observer le comportement du dataplane.
Résultats et possibilités
- Boot de kernel sans écriture en flash
- Reverse engineering facilité
- Contrôle du cycle de boot
- Debug du système réseau interne
- Base pour firmware custom
Perspectives
- Modification du root filesystem
- Injection de configuration personnalisée
- Reverse du protocole interne Ubiquiti
- Contrôle avancé de l’ASIC switch
🧾 Conclusion
Ces avancées transforment le switch Ubiquiti US-8-150W en une plateforme entièrement contrôlable pour le reverse engineering et l’expérimentation.
Le contrôle du boot via U-Boot, combiné à l’extraction et au chargement de kernels, ouvre la voie à des firmwares personnalisés et à une compréhension fine du fonctionnement interne du switch.
Mots-clés : Ubiquiti US-8-150W, U-Boot, reverse engineering, firmware, kernel extraction, binwalk, switch hacking, embedded Linux
