Прошивка Hyundai
Штатная прошивка Hyundai зависит от модели мультимедийной магнитолы, которая установлена в автомобиле. С 2010 до 2013 г.г. в автомобилях Hyundai устанавливались штатные головные устройства (ШГУ) 1-го поколения LG LAN89хх (дорестайл), в 2014 — 2015 г.г. их заменили LG LAN31хх, LAN21хх (рестайл), которые мы объединили общим названием LAN2x. Эти устройства имеют экран диагональю 7″, работают на операционной системе WinCE 6.
С конца 2015 по 2017 год на автомобили Hyundai стали устанавливаться другие типы магнитол 2-го поколения: LAN4000, LAN5020, LAN5030, LAN5320, которые мы объединили под названием LAN4x (экран 7.8″, ОС WinCE 7).
В 2016-2019 годах автопроизводители устанавливали магнитолы 4-го поколения GEN4 производства Mobis на ОС Android 2.3.
С 2016 года в автомобилях Hyundai появилась следующая группа магнитол 5-го поколения производства LG (LAN6000, LAN6200, IAH8434UMNG), Mobis (ADB10H0RE), которые мы объединили названием ШГУ GEN5 (с экраном 8″ или 7″, ОС Android 4.2).
В 2020 году стали выпускаться рестайловые магнитолы 5-го поколения GEN5W с широким экраном (Wide) на ОС Android 4.4 .
По внешнему виду сложно определить модель ШГУ Хендай, они очень похожи. Однако аппаратное обеспечение и, соответственно, программное обеспечение магнитол совершенно различны. Определить тип магнитолы можно по версии программного обеспечения (см. ниже). Это нужно учитывать при заказе прошивки Менако, которая поставляется отдельно для каждой конкретной модели магнитол Хендай.
Как определить тип ШГУ Hyundai
Тип ШГУ Hyundai можно точно определить по версии программного обеспечения. Перед заказом Менако узнайте версию ПО магнитолы. Этот номер понадобится при оформлении заказа на установку Менако.
- ШГУ LAN2х (платформа GEN1.x) имеют штатную прошивку версий 3.х.х, 5.х.х (LAN89хх — дорестайл), например, 3.1.5, 3.2.0, 5.1.3 (поддерживаются версии 5.1.3 и ниже); (LAN21xx, LAN31xx — рестайл) имеют штатную прошивку версий 7.х.х, например, 7.4.5, 7.5.8, 7.5.А, 7.6.5, 7.7.4 (поддерживаются версии 8.2.0 и ниже). П еред установкой Менако штатную в ерсию 7.6.5 нужно обновить на версию 7.7.4 (предоставим инструкцию). Перед установкой Менако штатную версию 8.2.0 (8.0.6, 7.9.4, 7.8.3) нужно откатить до версии 7.7.4 (будет дана инструкция) .
- ШГУ LAN4x (платформа GEN2.0) имеют версию штатной прошивки иного вида, например, DM.EU.SOP.10.103, TL.EU.SOP.20.000, JD.EU.SOP.20.003, QL.EU.SOP.20.004, DM.EU.SOP.20.103 (Менако поддерживает версии 10.001 – 10.220, 20.001 – 20.220). Перед установкой Менако штатную версию выше 20.194 нужно откатить до версии 20.183 (будет дана инструкция) .
- ШГУ GEN4 (платформа GEN4.0) имеют версию штатной прошивки иного вида, с буквами ST в начале версии, например, ST.DH.EUR.E456.150205, ST.VFSDIA.EUR.E472.150109.
- ШГУ GEN5 (платформа iAVN, GEN5.0). Платформа iAVN: имеют версию штатной прошивки иного вида, например, JD_17MY.RUS.SOP.005.160902. Платформа GEN5.0: имеют версию штатной прошивки иного вида, например, TL.EUR.SOP.V085.170907.STD_M.
Заводы-изготовители могут устанавливать на автомобили Hyundai следующие типы ШГУ (AVN — Audio Video Navigation System):
Тип ШГУ | Платформа | Модель автомобиля | Версия ПО | Новые функции |
---|---|---|---|---|
LAN2x | GEN 1.x (2010-2015) | i30 (GD) i40 (VF) ix35 (EL) ix35 FCEV (LMFC) Santa Fe (DM) Santa Fe Premium Grant Santa Fe (NC) Veloster (FS) | SW 7.8.3 | ECO Data removed |
LAN4x | GEN 2.0 (2015-2017) | Santa Fe (DM) Santa Fe Premium Grant Santa Fe (NC) Tucson III (TLE) H1 (TQ) | xx.EU.SOP.20.194 | TomTom Live Services |
GEN4 | GEN 4.0 (2015-2016) | i40 (VF) Genesis (DH) | ST.xx.EUR.E530.170925 | Только для некоторых моделей: — Android Auto — Apple CarPlay |
GEN5 | iAVN (2017-2018) | Accent (Solaris) i40 (VF) Tucson (TLE) | xxx.EUR.SOP.005.170927 | — TomTom Live Services — Android Auto — Apple CarPlay |
GEN5 | GEN 5.0 (2018-2020) | Accent (HCR) Creta (GS) Genesis (IK) Grand Starex (TQ) i10 (IA) i20 (GB) i30 (PDe) i40 (VF) ix20 (VF PE2) Ioniq (AE) Kona (OS) Santa Fe (TM) Solaris (HC) Tucson (TL, TLE, TLFL) Nexo (FE) | xxx.EUR.SOP.V085.170707.DAU_A xxx.RUS.SOP.V093.180324.STD_M | — TomTom Live Services — Android Auto — Apple CarPlay |
Совместимость прошивки Менако с автомобилями Hyundai
- Менако LAN2х и LAN4x можно установить только на ШГУ автомобилей Hyundai российского или европейского производства (м ашины из США , Канады или Кореи имеют ШГУ с существенными отличиями и прошивка к ним не подходит) .
- Менако GEN5 можно установить на ШГУ автомобилей российской, европейской, а также корейской и американской сборки).
- Программный комплекс Менако совместим со следующими моделями автомобилей Hyundai:
* Примечание: В период 2010-2015 г.г. устанавливалась мультимедийная магнитола LAN2x.
** Примечание: В период 2015-2018 г.г. устанавливалась мультимедийная магнитола LAN4х. Установка прошивки Менако на LAN4х отличается от установки на LAN2х.
*** Примечание: С 2016 автопроизводители Hyundai устанавливают мультимедийную магнитолу GEN5, которая работает на ОС Android. Установка прошивки Менако на GEN5 отличается от установки на LAN2х и LAN4х. Читайте подробнее в разделе ШГУ GEN5.
Важно
- Обращаем Ваше внимание на то, что карты навигации востребованы совершенно разные и не входят в состав комплектаций прошивки Менако. При заказе добавьте нужные карты в свою корзину дополнительно.
Взлом ШГУ Hyundai Tucson
Ранее вы узнали, как можно взломать официальную прошивку Hyundai Tucson 2020 и провести её реинжиниринг. Тогда мне казалось, что можно просто модифицировать файл с обновлениями, снова заархивировать его с тем же паролем и запихнуть в машину. Оказалось, что всё не так просто.
Пакет обновлений подписывается ключом RSA, соответствующим сертификату daudio.x509.pem , и эта подпись проверяется во время обновления. Это часть процесса обновления Android OTA, который используется для обновления прошивки всего устройства (не только автомобильной навигации). В отличие от RSA ключа для Ioniq 2021, этот ключ нельзя найти в сети (по крайней мере, я его не нашёл).
Как в таком случае получить доступ к ШГУ (штатному головному устройству)? Я рассматривал два варианта:
- найти уязвимость в одном из приложений;
- найти уязвимость в ядре Linux. ШГУ работает под управлением Linux 3.1.10, так что это реальный вектор атаки.
Увы, ничего не получилось. Но я нашёл новую информацию, которая позволила мне рутировать ШГУ.
Новые идеи
Я узнал, что Hyundai поставляет одну и ту же прошивку на разные автомобили. В моей машине была так называемая «Standard-class Gen5 navigation», которая выглядит так:
Хотя в названии фигурирует слово «навигация», по факту это прошивка для всего головного устройства. Одна и та же прошивка поставляется на разные модели Hyundai, KIA и Genesis, выпущенные в период с 2018 по 2021 год.
Головное устройство работает на SoC Telechips TCC893X, а его SDK просочился в интернет. Существует секретный механизм запуска рекавери. Для этого нужно зажать кнопку POWER (это ручка слева) и кнопку MAP при запуске:
Я попробовал это на своём автомобиле, и на экране появилась вот такая ошибка:
Очевидно, что для запуска рекавери необходимы какие-то зашифрованные файлы на USB-носителе. Простой grep этих строк приводит к lk.rom файлу из пакета обновлений, который я до сих пор игнорировал. Давайте загрузим его в Ghidra и посмотрим, что произойдёт.
Реверс lk.rom
LK означает «little kernel», небольшое ядро с открытым исходным кодом, которое используется во многих встраиваемых платформах. ШГУ загружает lk.rom с адреса 0x82000000. Установив правильный начальный адрес в Ghidra, мы можем задействовать printf и получить много полезной отладочной информации. Проверка » [DEBUG] U-Boot Recovery Button pushed . \n » приводит к:
Похоже, что рекавери является частью u-boot, а его точкой входа является функция 0x820589a8 :
Обратите внимание на строку 14. Из неё мы можем сделать вывод, что эта функция копирует код u-boot 0x80000000 и запускает его. PTR_DAT_82058a38 начало u-boot, а PTR_DAT_82058a3c — адрес конца прошивки:
Используя эту информацию, мы можем извлечь код u-boot lk.rom с помощью следующей команды:
$ dd if=lk.rom skip=$((0x1055c)) count=$((0x57894-0x1055c)) bs=1 of=uboot.rom
А затем проанализируем uboot.rom как отдельный бинарник с начальным адресом 0x80000000 в Ghidra.
Реверс uboot.rom (часть lk.rom)
Океюшки, мы видим много отладочных строк, которые помогают понять, что происходит. Рекавери ищет следующие файлы на USB-носителе:
- security_force/encrypt_lk.rom
- security_force/encrypt_boot.img
- security_force/encrypt_system.img
- security_force/encrypt_recovery.img
- security_force/encrypt_splash.img
- security_force/encrypt_partition.dat
Существует также security_force/file_info , который содержит имя, размер и контрольную сумму CRC32 для каждого из перечисленных выше файлов. Эти файлы (за исключением encrypt_partition.data ) соответствуют файлам, которые мы нашли в пакете обновления:
Они должны быть зашифрованы по алгоритму AES-128-CBC, ключами =”)1Zorxo^fAhGlh$#” и IV full-width «>
Флаг mDispAdb можно переключить, если нажать 5 раз в правом нижнем углу 3-й страницы “Информация о модуле” (Module Info). Но если присутствует ADB_HIDE_FEATURE , этот флаг игнорируется, и видимость всегда устанавливается равной 8, что означает GONE. Функция ADB_HIDE установлена по умолчанию, как видно из system.ext4:
$ cat /tmp/car/etc/permissions/com.hkmc.software.engineermode.adb_hide.xml
Что ж, давайте удалим эту фичу, создадим файл рекавери и запихнём в машину.
Да, это сработало! С помощью этого простого изменения мы успешно включили ADB на Kia Stinger 2020 и подключились к нему через USB.
Получение root shell
Теперь, когда у нас есть оболочка ADB, как получить root? Оказывается, в стоковой прошивке есть удобный setuid-бинарник под названием «amossu»:
$ ls -la bin/amossu -rwsr-sr-x 1 root root 37216 Oct 6 08:29 bin/amossu
setgid(0); setuid(0); execv("/system/bin/sh",__argv);
Инструменты
Я выложил здесь программу и инструкции по созданию кастомных прошивок для автомобилей с прошивкой Gen5. На данный момент весь процесс успешно протестирован на Kia Stinger 2020 года выпуска.
Последние мысли
Я надеюсь, что этот хак позволит создать несколько интересных модов для автомобилей. Например, мне хотелось бы увидеть приложение, которое записывает видеопоток с камеры автомобиля и сохраняет его на флешке. Разумеется, моей конечной целью остаётся запуск Doom на экране ШГУ. Так что я не прощаюсь :).
Если у вас есть комментарии или отзывы, вы можете оставить их на Github.
Что ещё интересного есть в блоге Cloud4Y
Подписывайтесь на наш Telegram-канал, чтобы не пропустить очередную статью. Пишем только по делу. А ещё напоминаем про второй сезон нашего сериала ITить-колотить. Его можно посмотреть на YouTube и ВКонтакте.