Analyse switch ubiquiti us-8-150w et US-24-250W – 2026 – FEB

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"
Tip : La présence de 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 kernel0
  • 0xf00000 : taille (~15 MB)
Attention : une mauvaise adresse ou taille peut provoquer un crash ou un boot invalide.

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
Astuce : le header 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
Important : cette étape doit être réalisée rapidement sinon le système reprend le contrôle et reconfigure le switch.

Debug du middleware Ubiquiti

/sbin/switchdrvr

Permet de relancer manuellement le driver et d’observer le comportement du dataplane.

Tip : utile pour analyser les interactions avec l’ASIC sans watchdog actif.

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