Маршрутизатор Starlink будет перезагружаться каждые 20 дней. Реверс-инжиниринг прошивки

от автора


Маршрутизатор Starlink

Инженер встраиваемых систем и астрофизик Олег Кутков в ожидании тарелки Starlink разобрал фирменный маршрутизатор и начал разбор прошивки. Хотя по функциональности это обычный WiFi-роутер, но обнаружилось несколько интересных деталей реализации.

Маршрутизатор не спроектирован для лёгкого разбора и самостоятельного ремонта. Крышка не прикручена винтами, а скреплена внутренним креплением, так что при снятии придётся слегка помять алюминиевый корпус.

Весь металлический корпус про сути работает как большой радиатор, это одна цельная деталь.


Здесь и далее фото Олега Куткова

Внутри довольно простая материнская плата.

Маршрутизатор работает на популярной однокристалльной системе Qualcomm IPQ4018: это 4-ядерный ARM Cortex A7 (тактовая частота 717 МГц), 802.11ac WiFi, по два канала 5 и 2,4 ГГц, SIMD DSP, Crypto Engine, QualcommTrusted Execution Environment (TEE) и т.д.

Компоненты на нижней стороне материнской платы подписаны на фотографии, в том числе микросхема TPS2378 и флэш-память NAND W25N01GV с операционной системой маршрутизатора.

На лицевой стороне платы самый интересный компонент — микросхема STSAFE-A110 для криптографических операций Linux с аппаратной поддержкой OpenSSL. На этом чипе хранится конфигурация платы и сертификаты. А также микросхема NOR флэш-памяти GD25Q128B с загрузчиком Qualcomm и некоторой дополнительной информацией.

Олег Кутков извлёк с платы чипы NOR и NAND, произвёл анализ прошивки, в том числе проприетарных файлов, которые отсутствуют в официальном репозитории SpaceX. Прошивка основана на OpenWRT.

С чипа NAND удалось снять образ Linux, образ rootfs файловой системы SquashFS с операционной системой OpenWRT и софтом SpaceX, а также образ ubifs с конфигурационными файлами.

Там лежит защищённый файл /etc/config/WifiConfig, это бинарник, который используется проприетарными программами SpaceX.

В целом, базовая прошивка не особенно отличается от ванильной OpenWRT, кроме нескольких специфических параметров SpaceX в скриптах. Например, такая настройка с любопытными комментариями:

# SpaceX: As a failsafe, we limit the uptime of our devices to 20 days. After 20 days # this script will stop petting the watchdog, which will lead to it rebooting after # about 2 minutes. To do this, we first take manual control of the watchdog from # procd, using the ubus commands. pet_watchdog() {     # Wait one minute to let ubus system fully boot     sleep 60      echo "Start Petting Watchdog"     ubus call system watchdog '{"magicclose": true}'     ubus call system watchdog '{"stop": true}'      # Pet every 10 seconds for 20 days (1,728,000 seconds)     for var in `seq 1 172800`; do echo 1 ; sleep 10; done > /dev/watchdog }

Здесь объясняется, что аптайм маршрутизатора Starlink ограничен 20 днями, после чего он будет автоматически перезагружаться, что гарантирует ему даунтайм на 1 минуту. Говорят, что это нормальная практика в мире встраиваемых систем. Многие из них уходят в принудительную перезагрузку по таймеру, зачастую это происходит незаметно для пользователя.

Среди файлов особое любопытство вызывает бинарник /usr/sbin/wifi_control: это гигантское приложение на Go, которое контролирует все аспекты работы маршрутизатора. Судя по всему, некоторые параметры типа серверных IP-адресов и URL зашиты прямо в код.

Автор запустил прошивку на сторонней плате AP.dk04. Кроме того, он подключил криптографический чип STSAFE-A110 к Raspberry Pi через специальный адаптер.

С помощью официальной библиотеки и набора инструментов можно протестировать содержимое чипа и извлечь из него сертификат, действительный до 2050 года.

В данный момент автор продолжает анализ вышеупомянутого проприетарного файла /usr/sbin/wifi_control, который делает много интересного: поднимает серверы gRPC (основной протокол связи в Starlink), отправляет телеметрию в SpaceX и многое другое.

Сейчас Олег Кутков производит реверс-инжиниринг внутреннего протокола, чтобы можно было нормально общаться с серверами Starlink. Например, запрашивать обновления прошивки с предъявлением сертификата и т. д.

Ждём продолжения.


ссылка на оригинал статьи https://habr.com/ru/articles/598511/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *