HowIHackedMyCar 2021款 现代IONIQ (四)Creating Custom Firmware

HowIHackedMyCar  2021款 现代IONIQ (一)
HowIHackedMyCar 2021款 现代IONIQ (二) Making a Backdoor
HowIHackedMyCar 2021款 现代IONIQ (三) Making Software

本合集共7部分,本篇为第四部分
来源:programmingwithstyle.com,感谢greenluigi1


Creating Custom Firmware

在现代汽车和起亚汽车中找到的非导航 D-Audio 2V 主机运行着一个相当简化版本的 Linux。通过分析,已经能够弄清楚固件更新过程,可以为这些系统开发自定义固件的程度。
为了创建固件修改前,需要验证一些事项。
1、车辆主机正在运行 D-Audio。具体来说是 Display Audio Gen2V。
2、车辆主机的固件更新应该是可用的。现代汽车的更新可以在这里找到,而起亚汽车的更新可以在这里找到。D-Audio 2 系统的更新可以在“显示音频软件更新”下找到。
HowIHackedMyCar 2021款 现代IONIQ (四)Creating Custom Firmware
3、需要一个 Linux 计算机的访问权限。

然后,需要下载车辆的固件更新,可以在上述更新站点中找到。更新文件应该是一个 zip 文件,其中包含另一个命名为“enc_system_package_{version}.zip”的 zip 文件。将这个内部 zip 文件解压到 Linux 计算机上。

我已经创建了一组脚本,可以帮助自动提取和修改这些更新。
下载这些脚本并将它们解压到一个空文件夹中,然后将固件文件复制到同一个文件夹中。
HowIHackedMyCar 2021款 现代IONIQ (四)Creating Custom Firmware

修改设置
现在,如果想要更改脚本使用的文件夹,可以选择编辑 settings.sh 文件。目录将会自动创建,因此您无需自己创建。
HowIHackedMyCar 2021款 现代IONIQ (四)Creating Custom Firmware
settings.sh 文件中可用的设置如下:
ZIP_PASSWORD_FILE
     -包含固件更新的 ZIP 密码的文本文件的位置。
-ENCRYPTION_KEY_FILE
     -包含用于解密加密文件的 AES 密钥的文本文件的位置。
-ENCRYPTION_IV_FILE
     -包含用于解密加密文件的 AES IV 的文本文件的位置。
-RSA_PRIVATE_SIGNING_KEY_FILE=keys/rsa_private.pri
     -用于签署固件更新的 RSA 私钥的位置。
-SYSTEM_IMAGE_MOUNT_DIR
     -将系统映像挂载到的目录。
-UPDATE_EXTRACT_TEMP_DIR
     -在编辑固件文件时保存固件文件的目录。
-KEYS_DIR
     -包含 ZIP 密码和加密/签名文件的目录。设置文件中的所有文件位置应该相对于 settings.sh 文件。

设置环境
现在运行“./setupEnvironment.sh”,这将创建 settings.sh 文件中指定的文件夹和文件。
运行此文件后,设置应该类似于此:
HowIHackedMyCar 2021款 现代IONIQ (四)Creating Custom Firmware

KEY_DIR 目录中的密钥必须填写。在输入这些值时,请确保文件中只有一行,并且文件不包含额外的空格。
-zipPassword.txt 应该包含:“ahqltmTkrhk2018@@”(不带引号)
      -通过访问现代摩比斯的开源网站,从任何具有该文件的车辆下载“D-Audio2V R1”文  件HowIHackedMyCar 2021款 现代IONIQ (四)Creating Custom Firmware
    然后提取“daudio_2.0value.yocto.poky.zip” zip 文件,并从“scripts/linuxenvsetup.sh”文件中阅读使用了“zip”命令的“-P”(密码)参数HowIHackedMyCar 2021款 现代IONIQ (四)Creating Custom Firmware
aes_key.txt 应该包含:“2b7e151628aed2a6abf7158809cf4f3c” -aes_iv.txt 应该包含:“000102030405060708090a0b0c0d0e0f”      -这些值来自同一“linuxenvsetup.sh”文件,可以在 generate_aes128_encryption 函数中找到。-这些值实际上是 NIST 文档 SP800-38A 中列出的第一个 AES 128 位 CBC 示例密钥/iv。SP800-38A 中的第一个 AES 128 位 CBC 加密密钥示例HowIHackedMyCar 2021款 现代IONIQ (四)Creating Custom Firmware
rsa_private.pri 可以从这里下载      -我通过反编译和逆向工程我的主机恢复映像中的 updateAgent 应用程序获得了这个。
-现代摩比斯使用的公钥/私钥是一个非常常见的测试密钥 :/,可以在许多地方找到


提取更新
一旦所有密钥和密码都填写好了,就可以运行 ./extract_update.sh {更新文件路径} 来提取更新文件。HowIHackedMyCar 2021款 现代IONIQ (四)Creating Custom Firmware
此脚本将:
1、清理 UPDATE_EXTRACT_TEMP_DIR(如果尚未清理)。
2、使用 ZIP 密码文件提取更新文件。
3、将 system.img 文件挂载到 SYSTEM_IMAGE_MOUNT_DIR(这需要 sudo/输入密码)。修改固件 现在系统映像已经挂载(默认情况下是到 system_image 目录),可以根据需要进行修改。



修改固件
现在系统映像已经挂载(默认情况下是到 system_image 目录),可以根据需要进行修改。



ADB 后门
另一个可以添加的简单后门是通过TCP 将 adbd添加为 systemd 服务来启用它。Adb是调试 Android 设备的常用方法,允许将文件推送到设备上并启动交互式 shell。
要启用 Adb,可以下载此 zip 文件并将其解压到 settings.sh 文件所在的位置。然后只需运行:
“sudo ./createADBDBackdoor.sh”。
注意:该脚本需要 sudo 权限以访问挂载的系统映像中的 systemd 路径。添加的服务将在启动时在 head unit 上的端口 5555 上运行 ADB 服务器,可以使用 Google 的 adb 命令行实用程序连接到该端口,而位于 head unit 网络上。运行 createADBDBackdoor.sh
HowIHackedMyCar 2021款 现代IONIQ (四)Creating Custom Firmware
有关安装后如何使用 ADB 后门的信息,请参阅关于 ADB 的附加信息部分。

编译固件
一旦您修改了系统映像,就可以使用 ./compile_update.sh 脚本来编译它。
HowIHackedMyCar 2021款 现代IONIQ (四)Creating Custom Firmware
此脚本可能需要一点时间来运行,因为涉及到哈希计算。脚本执行以下步骤:
1、运行 sync 来验证更改是否已保存到挂载的系统映像中。
2、卸载系统映像。
3、计算更新的新文件列表并为修改后的 system.img 文件生成新的哈希。
4、使用 RSA 私钥签署更新文件列表。
5、生成更新的 zip 文件。生成的文件将被命名为“enc_system_package_PUT_VERSION_HERE.zip”,因为我太懒了,所以没有实际正确命名。

只需要将创建的 zip 文件重命名为与原始固件更新 zip 文件相同的名称,并将其放在 FAT 格式的USB的根目录中。
然后将USB插入您的车辆中,按照正常的安装步骤进行操作。
注意:更新过程可能需要一段时间。
然后恭喜!您修改后的固件已安装在汽车中。
HowIHackedMyCar 2021款 现代IONIQ (四)Creating Custom Firmware

HowIHackedMyCar 2021款 现代IONIQ (四)Creating Custom Firmware



原文始发于微信公众号(安全脉脉):HowIHackedMyCar 2021款 现代IONIQ (四)Creating Custom Firmware

版权声明:admin 发表于 2024年5月14日 下午5:45。
转载请注明:HowIHackedMyCar 2021款 现代IONIQ (四)Creating Custom Firmware | CTF导航

相关文章