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

Ломаем Android. Русификация китайских авто

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров46K

Ранее я занимался обслуживанием электромобилей Tesla, а в свободное время развивал свой стартап с роботами. Как мог пытался популяризировать Tesla, вот пара статей как чинить ее самому. Работа в сервисном центре Tesla была увлекательной и захватывающей. В течение своей карьеры я стал локальным экспертом в обслуживании этих инновационных автомобилей.

Мы проводили регулярное техническое обслуживание, диагностику и ремонт автомобилей, чтобы убедиться, что они работают в полном порядке. Это включало проверку электрических систем, аккумуляторов, электроники и других важных компонентов. Одним из особых аспектов работы было обновление программного обеспечения электромобилей Tesla. Компания Tesla регулярно выпускала обновления, которые включали новые функции и улучшения, этим радовала меня как пользователя, но огорчала как разработчика, закрывая все дыры.

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

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

Реальность автоимпорта в РФ и бум авто в Китае

Одна из самых популярных моделей. Zeekr 001
Одна из самых популярных моделей. Zeekr 001

Вектор изменения внешних факторов, влияющих на структуру импорта в РФ и вектор бума развития автоиндустрии в Китае сошлись как нельзя кстати. В нашу страну по разным данным до 90% новых автомобилей завозится именно из Поднебесной в этом году.

Мне посчастливилось познакомится с китайскими авто еще до того, как это стало в тренде, и не долго думая, я продал все свои Tesla. А бывало, когда у меня был весь ряд SEXY от св. Илона.

Android на китайских авто

В Tesla все ПО проприетарное, внутри бинарники и особо не разгуляешься. Да, я менял конфигурацию, чтобы сделать машину быстрее, генерировал карты для навигации. Активировал полный автопилот FSD. Но существенно поменять внешний вид ПО или добавить приложения/функции невозможно.

В китайских автомобилях все совсем по другому. Медиасистемы работают на Android. Это дает огромные возможности для кастомизации. Когда я начал этим заниматься я не мог найти структурированной информации, но оно и понятно. Все известные дыры стараются закрыть. Сначала я русифицировал свой китайский автомобиль Zeekr, затем меня попросил товарищ. В итоге, я начал работать в команде Provolta.

Аппаратные инструменты для взлома

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

Какие разделы физически в памяти Android?

На хабре есть пост про разделы. На диске Android находятся различные разделы, включающие как системные, так и пользовательские данные. Ниже приведены некоторые из основных разделов, которые вы можете найти на диске Android, хотя от машины к машине, или вернее, в зависимости от блока мультимедия разделы будут разными:

  1. System Partition (Системный раздел): Этот раздел содержит операционную систему Android, включая все основные файлы и настройки. Здесь находятся важные компоненты, такие как ядро операционной системы, системные приложения, библиотеки и настройки.

  2. Data Partition (Раздел данных): В этом разделе хранятся пользовательские данные, включая установленные приложения, пользовательские настройки, контакты, сообщения, медиафайлы и другую персональную информацию. Данный раздел также содержит кэш-файлы и временные файлы, создаваемые приложениями в процессе их работы.

  3. Cache Partition (Раздел кэша): В этом разделе хранятся временные файлы и кэш-данные приложений. Кэш-файлы используются для более быстрого доступа к приложениям и сохранения временных данных. Периодическое очищение этого раздела может помочь освободить место на диске и улучшить производительность устройства.

  4. Recovery Partition (Раздел восстановления): Данный раздел содержит важные файлы и инструменты для восстановления системы Android в случае проблем или сбоев. Раздел восстановления позволяет установить официальные обновления операционной системы или выполнить сброс устройства до заводских настроек.

  5. Boot Partition (Раздел загрузчика): В этом разделе находится загрузчик операционной системы Android, который отвечает за процесс загрузки устройства и запуск операционной системы. Здесь также хранятся файлы для восстановления и обновления системы.

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

MITM атака и доступ через внутреннюю сеть

В современных авто используется стандарт 1000BASE-T1 (802.3bp). Используя соответствующий медиаконвертор и заменив собой соответствующий адрес в подсети авто можно получить доступ к внутренним компонентам, в том числе и ADB.

Так же в стандарте OBD есть LAN. Обычный 100 Мбит и там есть очень много чего интересного. Используя nmap находим IP в сети. Далее открытые порты. Используя сниферы и Wireshark считываем и анализируем пакеты.

Программные инструменты для взлома

Получив полный образ eMMC можно начать разработку. Немного о том, как происходит загрузка на с процессором Qualcomm: Встроенный ROM загрузчик Qualcomm (pbl — primary bootloader) загружает раздел sbl1 (secondary bootloader). sbl1 загружает tz (trust zone), затем aboot (android boot, little kernel, lk). Aboot в свою очередь загружает boot, recovery или fota.

Если мы хотим поменять систему, но при этом чтобы все загружалось нам нужно убрать проверку на целостность и проверку подписи, для этого нужно пропатчить boot. Это можно сделать руками, но есть инструмент magisk.

Magisk - это мощный инструмент для управления корневым доступом (root) на устройствах Android. Он предлагает пользователю возможность получить права суперпользователя на своем Android-устройстве и управлять различными аспектами системы, не изменяя основных файлов и разделов. Magisk особенно популярен среди энтузиастов Android, которые хотят настроить и улучшить свои устройства.

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

Magisk также позволяет пользователям устанавливать модули, которые представляют собой дополнительные функции и модификации для устройства. Это могут быть модули для темирования, улучшения производительности, настройки интерфейса пользователя и многого другого. Пользователи могут скачивать и устанавливать модули из репозитория Magisk Manager, который включен в инструмент Magisk.

Загружаем модифицированный boot, проверяем загрузку и начинаем менять систему под себя. Кастомные ROM-ы, которые предлагают более глубокую и широкую кастомизацию Android. Кастомные ROM-ы не только изменяют внешний вид устройства, но и добавляют дополнительные функции и настройки, которых может не быть в официальной прошивке. 

О том, как пользоваться apktool и как непосредственно переводить приложения есть хороший пост, повторяться не вижу смысла.

FOTA

Следующим шагом к мастерству является покорение FOTA — firmware over the air. Как правило все прошивки приходят с сервера с подписью и размером для проверки целостности. Проблема в том, что мы не можем получить приватную подпись из системы.

Публичная подпись - это криптографический механизм, который используется для аутентификации и проверки целостности данных. При создании публичной подписи используется пара криптографических ключей: приватный ключ и публичный ключ. Приватный ключ является секретным и хранится только у владельца ключа, а публичный ключ распространяется открыто. При подписывании данных приватным ключом создается цифровая подпись, которая затем может быть проверена с использованием соответствующего публичного ключа. Если проверка подписи успешна, это дает уверенность в том, что данные не были изменены и что подпись была сделана владельцем приватного ключа.

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

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

Для модификации:

-Подключаем машину к Сети с настроенным Wireshark;

-Находим на какой IP машина стучиться для получения обновлений;

-В дампе находим через HEX данный адрес и пакет, который обращается за обновлениями;

-Декомпилируем код и модифицируем, собираем обратно.

Трудность поиска информации по теме

Информации по данной теме немного в интернете. Особо ценятся уязвимости нулевого дня, но даже базовые принципы и инструменты работы шировоко не обсуждаются, давайте это исправим.

Уязвимость "нулевого дня"

Для распаковки APK-файлов (пакетов приложений Android) можно использовать различные инструменты. Вот несколько популярных инструментов для распаковки APK:

  1. APKTool: APKTool представляет собой инструмент командной строки, который позволяет распаковывать и собирать APK-файлы. Он позволяет анализировать и изменять ресурсы, манифесты, классы и другие составляющие APK. APKTool поддерживает декомпиляцию и рекомпиляцию APK-файлов.

  2. JADX: JADX это инструмент для декомпиляции и анализа кода приложений Android. Он обладает возможностью распаковки исходного кода Java из APK-файлов, позволяя пользователям просматривать, анализировать исходный код и ресурсы приложений, а также отлаживать их.

  3. Androguard: Androguard является мощным инструментом для анализа Android-приложений. Он может быть использован для распаковки и анализа APK-файлов, извлечения информации о классах, методах, ресурсах и других компонентах приложений. Androguard также обладает возможностями статического анализа и поиска уязвимостей в приложениях.

  4. Apktool Studio: Apktool Studio представляет собой графический интерфейс для APKTool. Он упрощает процесс распаковки и рекомпиляции APK-файлов, предоставляя интуитивный и удобный пользовательский интерфейс для выполнения этих операций. Apktool Studio также предоставляет некоторые дополнительные функции, такие как автоматическое обновление APKTool и интеграция с Git.

Помимо перечисленных инструментов, существует и другие инструменты и программы, которые можно использовать для распаковки и анализа APK-файлов в зависимости от ваших потребностей и предпочтений.

Для распаковки APK-файлов (пакетов приложений Android) можно использовать различные инструменты. Вот несколько популярных инструментов для распаковки APK:

  1. APKTool: APKTool представляет собой инструмент командной строки, который позволяет распаковывать и собирать APK-файлы. Он позволяет анализировать и изменять ресурсы, манифесты, классы и другие составляющие APK. APKTool поддерживает декомпиляцию и рекомпиляцию APK-файлов.

  2. JADX: JADX это инструмент для декомпиляции и анализа кода приложений Android. Он обладает возможностью распаковки исходного кода Java из APK-файлов, позволяя пользователям просматривать, анализировать исходный код и ресурсы приложений, а также отлаживать их.

  3. Androguard: Androguard является мощным инструментом для анализа Android-приложений. Он может быть использован для распаковки и анализа APK-файлов, извлечения информации о классах, методах, ресурсах и других компонентах приложений. Androguard также обладает возможностями статического анализа и поиска уязвимостей в приложениях.

  4. APK Editor Studio представляет собой графический интерфейс для APKTool. Он упрощает процесс распаковки и рекомпиляции APK-файлов, предоставляя интуитивный и удобный пользовательский интерфейс для выполнения этих операций. Apktool Studio также предоставляет некоторые дополнительные функции, такие как автоматическое обновление APKTool и интеграция с Git.

Помимо перечисленных инструментов, существует и другие инструменты и программы, которые можно использовать для распаковки и анализа APK-файлов в зависимости от ваших потребностей и предпочтений.

Вместо вывода

Если Вы развиваетесь в данном направлении или планируете и Вам интересны реальные задачи напишите мне, могу предоставить железо для испытания или помочь советом, делаю это не только из чистого природного альтруизма, но еще и потому что вместе учиться проще.

Спасибо за внимание. Вячеслав Голицын, сотрудник Provolta.

Теги:
Хабы:
Всего голосов 33: ↑29 и ↓4+34
Комментарии76

Публикации

Истории

Работа

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
10 – 11 октября
HR IT & Team Lead конференция «Битва за IT-таланты»
МоскваОнлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн