Как стать автором
Обновить

Всё о проекте «Спутниковый интернет Starlink». Часть 33. Прошивка Терминала

Время на прочтение4 мин
Количество просмотров6.9K
Предлагаю ознакомиться с ранее размещенными материалами по проекту Starlink (SL):
Часть 28. Использование StarLink на движущихся объектахЧасть 29. Страны, где сервис начнет предоставляться в первую очередьЧасть 30. Сравнение сервиса StarLink с сервисами других операторов ШПДЧасть 31.Описание антенны Ка-диапазонаЧасть 32.Проблемы терминалов StarLink из-за перегрева

Данный материал написан Денисом-19 и размещен на ХАБР под названием «Прошивку терминала Starlink скачали и проанализировали» m.habr.com/ru/news/t/566820.
Так как он интересен и имеет отношение к проекту StarLink делаю перепост на своей странице



Для прерывания процесса загрузки пользовательского терминала нужно ввести команду «‘falcon».

Инженер из Бельгии по имени Леннерт Воутерс (Lennert Wouters) сумел скачать и проанализировать прошивку спутникового терминала Starlink. В ходе своих изысканий он сделал несколько интересных наблюдений и обнаружил, что существуют разные версии терминала, включая отдельную версию оборудования для разработчиков, которая защищена флагом геозоны. Даже инженеры SpaceX не везде могут работать в режиме настройки такого оборудования.

Эксперт рассказал, что получил комплект Starlink в конце мая, успел за несколько дней провести начальные исследования оборудования, выгрузить и извлечь прошивку пользовательского терминала системы. Он также добавил, что SpaceX поощряет действия энтузиастов, которые могут найти уязвимости в спутниковом комплекте, открыла доступ к программе багбаунти на портале bugcrowd и дает за обнаруженные программные дыры в прошивке или работе устройств до $25 тыс.

После сборки и настройки комплекта Starlink Воутерс сначала обновил его до последней версии прошивки и провел тестирование скорости. Он получил 268 Мбит при скачивании и 49 Мбит при загрузке в сети.

После проведения штатных проверок и изучения работы и принципов разборки терминала по роликами на YouTube, Воутерс начал операцию по его вскрытию и получению доступа к центральному чипу на базе 4-ядерного SoC Cortex-A53.

В процессе разборки инженер нашел в корпусе терминала несколько разъемов — для кабеля Ethernet и управления двигателем, а также один дополнительный незадействованный четырехпиновый разъем интерфейса отладки по UART. К нему и подключился Воутерс для проверки механизма загрузки.


Инженер обнаружил, что терминал использует загрузчик U-Boot, а для прерывания процесса загрузки нужно ввести команду «‘falcon», хотя это не поможет в текущей конфигурации, так как последовательный ввод в терминале настроен на nulldev.

В процессе работы U-Boot загружает ядро, RAM-диск и Flattened Device Tree (FDT) из образа Flattened uImage Tree (FIT), который хранится на встроенной карте памяти MultiMediaCard (eMMC). При загрузке проверяется целостность (с помощью SHA256) и подлинность (по RSA 2048) кода ядра, RAM-диска и FDT. В системе реализована полная доверенная цепочка загрузки (TF-A) от начального загрузчика ROM до операционной системы Linux.



Оставшаяся часть процесса загрузки также содержит интересные фрагменты информации. Например, там можно видеть аргументы командной строки ядра, а также начальные адреса и длину некоторых разделов. Кроме того понятно, что SoC содержит 4 ядра.


Наконец, когда терминал завершает процесс загрузки, появляется приглашение для входа в систему.

Воутерс сделал несколько попыток угадать заводские учетные данные, но ничего не получилось. Он решил пойти глубже и начал разбирать антенну терминала для получения прямого доступа к центральному чипу и карте памяти устройства.


Оказалось, что центральный чип в корпусе с flip-chip BGA с металлической крышкой имеет маркировку ST GLLCCOCA6BF. Он подключен к энергозависимому хранилищу DRAM и энергонезависимому флэш-хранилищу в виде микросхемы eMMC.

Исследователь обнаружил, что встроенная карта памяти eMMC, содержащая флеш-память и контроллер, очень похожа на SD-карту, а ее микросхема Micron eMMC имеет маркировку JY976. Оказалось, что это микросхема MTFC4GACAJCN-1M с 4 ГБ флэш-памяти в корпусе BGA-153.

Воутерс решил не демонтировать чип памяти, что могло бы привести к его повреждению, а попытался сбросить внутрисхемный дамп eMMC.


Инженер смог идентифицировать сигналы CLK, CMD и D0 по 10 контрольным точкам около центрального SoC. Это были линии CMD, CLK и 8 линий данных с чипа памяти.


Сигнал CLK был единственным повторяющимся сигналом, CMD — это сигнал, который был первым активным после того, как CLK начал переключаться, а D0 — это первая линия данных для отправки данных. К счастью, определение оставшихся 7 строк данных не нужно для дампа содержимого eMMC.


Подключение считывателя к карте памяти терминала.


Получение данных с карты памяти.

После анализа скачанных данных и изучения модификации U-Boot от SpaceX на Github, Воутерс понял, что некоторые части прошивки хранятся в кастомном формате, который содержит в себе данные кода исправления ошибок (ECC). Исследователь решил убрать эти данные ECC с помощью скрипта Python и смог расшифровать файл spacex_catson_boot.h, в котором содержится информация о процессе загрузки терминала. Также инженер смог прочитать другие файлы системы и даже нашел возможность зайти в систему под root. Оказалось, что для этого нужна другая версия терминала. Текущая пользовательская версия терминала не имеет такой возможности и ее нельзя переделать.

Вдобавок исследователь обнаружил из ссылок в прошивке, что пользовательский терминал содержит защищенный элемент STMicroelectronics STSAFE. Назначение защищенного элемента не совсем понятно. Воутерс предположил, что SpaceX использует его для удаленной аутентификации терминала.

Инженер рассказал, что каждому ядру центрального чипа поставлена своя задача.

############################

# System Information

############################

#

# The user terminal phased-array computers are Catson SoCs with a quad-core

# Cortex-A53.

#

# We dedicate one core to control, while leaving the other three to handle

# interrupts and auxiliary processes.

#

# CPU 0: Control process.

# CPU 1: Lower-MAC RX process.

# CPU 2: Lower-MAC TX process.

# CPU 3: PhyFW and utility core — interrupts, auxiliary processes, miscellaneous

Воутерс подытожил, что он только начал работать с терминалом и продолжит изучать его внутренний код. В его планах рассказывать публично о новых открытиях после проверки всех данных.
Теги:
Хабы:
+4
Комментарии3

Публикации