【车联网】现代汽车Ioniq SEL渗透测试(5)

创建自定义固件

现代和起亚汽车中的非导航 D-Audio 2V 音响主机运行相当简单的 Linux 版本。通过我的研究和逆向工程,我已经能够弄清楚固件更新过程,直到可以为这些系统开发自定义固件。

为了让您创建自己的固件修改,您需要验证一些事情。

  1. 您车辆的主机正在运行 D-Audio。特别是显示音频 Gen2V。为了验证您的主机运行的版本是否正确,请比较现代网站上的图像。

  2. 您的车辆主机的固件更新应该可用。现代汽车的更新可以在这里找到,起亚汽车的更新可以在这里找到。 D-Audio 2 系统的更新可以在“显示音频软件更新”下找到。

【车联网】现代汽车Ioniq SEL渗透测试(5)

3.访问 Linux 计算机。

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

我创建了一组脚本来帮助自动提取和修改这些更新。

下载这些脚本并将它们解压到一个空文件夹中,然后将固件文件复制到同一文件夹中。

该文件夹应如下所示:

【车联网】现代汽车Ioniq SEL渗透测试(5)

修改设置(可选)

【车联网】现代汽车Ioniq SEL渗透测试(5)

现在,如果您想更改脚本使用的文件夹,则可以选择编辑 settings.sh 文件。这些目录将自动创建,因此无需自己创建。可用的设置如下:

“` ZIPPASSWORDFILE 包含固件更新 ZIP 密码的文本文件的位置。

ENCRYPTIONKEYFILE 加密密钥文件 包含用于解密加密文件的 AES 密钥的文本文件的位置。

ENCRYPTIONIVFILE 加密IV文件 包含用于解密加密文件的 AES IV 的文本文件的位置。

RSAPRIVATESIGNINGKEYFILE=keys/rsa_private.pri 用于签署固件更新的 RSA 私钥的位置。

SYSTEMIMAGEMOUNT_DIR 系统镜像挂载到的目录。

UPDATEEXTRACTTEMP_DIR 保存正在编辑的固件文件的目录。

KEYS_DIR 包含 Zip 密码和加密/签名文件的目录。 “`

设置文件中的所有文件位置都应相对于 settings.sh 文件。

设置环境

现在运行“./setupEnvironment.sh”,这将创建settings.sh 文件中指定的文件夹和文件。

运行此文件后,您的设置应如下所示:

【车联网】现代汽车Ioniq SEL渗透测试(5)

现在必须填写 KEY_DIR 目录中的键。输入这些值时,请确保文件中只有一行,并且文件中不包含多余的空格。

zipPassword.txt 应包含:“ahqltmTkrhk2018@@”(不带引号)

【车联网】现代汽车Ioniq SEL渗透测试(5)

该密码是通过以下方式找到的:访问现代摩比斯的开源网站,从任何拥有该文件的车辆上下载“D-Audio2V R1”文件,然后提取“daudio_2.0value.yocto.poky.zip”zip并从“scripts/”中读取linuxenvsetup.sh”文件,其中“zip”命令与“-P”(密码)参数一起使用

【车联网】现代汽车Ioniq SEL渗透测试(5)

  • aes_key.txt 应包含:“2b7e151628aed2a6abf7158809cf4f3c”

aes_iv.txt 应包含:“000102030405060708090a0b0c0d0e0f”

这些值来自 zip 所在的同一个“linuxenvsetup.sh”文件,可以在generateaes128encryption 函数中找到它们。

这些值实际上是 NIST 文档 SP800-38A 中列出的第一个 AES 128 位 CBC 示例 key/iv。

【车联网】现代汽车Ioniq SEL渗透测试(5)

rsa_private.pri 可以在这里下载

我通过从主机的恢复映像中对 updateAgent 应用程序进行反编译和逆向工程,然后在 Google 上搜索公钥来获得此信息。

现代摩比斯使用的公钥/私钥是一个非常常见的测试密钥:/并且可以在很多地方找到

提取更新

填写完所有密钥和密码后,可以通过运行 ./extract_update.sh {更新文件的路径}来提取更新文件。

【车联网】现代汽车Ioniq SEL渗透测试(5)

脚本:

1.如果尚未清理 UPDATEEXTRACTTEMP_DIR,请清理它。

2.使用 zip 密码文件提取更新文件。

3.将system.img文件挂载到SYSTEMIMAGEMOUNT_DIR(这需要sudo/输入密码)

修改固件

现在系统映像已挂载(默认为 system_image 目录),并且可以根据您的意愿进行修改。

您可以在第 2 部分中看到我添加到系统中的后门

ADB 后门

另一个可以添加的简单后门是通过将 adbd(Android 调试桥守护进程)TCP 服务器添加为 systemd 服务来启用它。 Android 调试桥是调试 Android 设备的常用方法,允许将文件拉取和推送到设备以及启动交互式 shell。 Android 调试桥守护程序的一个版本位于这些非 Android 主机上,可能用于开发过程中的调试。

要启用 Android 调试桥,您可以下载此 zip 文件并将其解压到 settings.sh 文件所在的位置。然后你可以简单地运行:“sudo ./createADBDBackdoor.sh”。

注意:该脚本需要 sudo 才能访问已安装的系统映像内的 systemd 路径。添加的服务将在启动时在主机上的端口 5555 上运行 ADB 服务器,可以在主机网络上使用 Google 的 adb 命令行实用程序连接到该服务器。

【车联网】现代汽车Ioniq SEL渗透测试(5)

有关安装后如何使用 ADB 后门的信息,请查看有关 ADB 的其他信息部分。

编译固件

修改系统映像后,可以使用 ./compile_update.sh 脚本对其进行编译

【车联网】现代汽车Ioniq SEL渗透测试(5)

由于涉及散列,该脚本可能需要一点时间才能运行。该脚本执行以下步骤:

  1. Runs sync to verify changes are saved to the mounted system image. 运行同步以验证更改是否已保存到已安装的系统映像中。

  2. Unmounts the system image. 卸载系统映像。

  3. Calculates the new update file list for the update and generates a new hash for the modified system.img file. 计算更新的新更新文件列表,并为修改后的 system.img 文件生成新的哈希值。

  4. Signs the update file list with the RSA private key. 使用 RSA 私钥对更新文件列表进行签名。

  5. Generates the update zip file. 生成更新 zip 文件。

创建的文件将被命名为“encsystempackagePUTVERSION_HERE.zip”,因为我懒得让它真正命名正确。

您所要做的就是将创建的 zip 文件重命名为与原始固件更新 zip 相同的名称,并将其放入 FAT 格式闪存驱动器的根目录中。

然后可以将闪存驱动器插入您的汽车并按照正常的安装步骤进行。

注意:更新过程可能需要一段时间。

您修改后的固件已安装在您的汽车中。

更多的adb 信息

一旦 ADBD TCP 服务器服务在您的主机上运行,您就可以连接到它。

为了连接到它,您的主机网络上必须有一台计算机。有两种方法可以做到这一点:

  • 如果您的主机有 Wi-Fi 热点,请连接到 Wi-Fi

  • 如果您的主机有无线 Android Auto/Apple CarPlay,您可以按照以下步骤转储 Wi-Fi 密码:

  • 将闪存驱动器插入主机的 USB 端口。

  • 进入主机上的设置屏幕

【车联网】现代汽车Ioniq SEL渗透测试(5)

【车联网】现代汽车Ioniq SEL渗透测试(5)

然后进入 Wi-Fi 设置并按“生成新的 Wi-Fi 密钥”按钮

【车联网】现代汽车Ioniq SEL渗透测试(5)

  • 按住物理“Radio”按钮 30 秒或从工程模式中的 USB 设置转储日志。在这两种情况下,都会出现一个弹出窗口,允许您将日志复制到 USB 驱动器。


  • 从 USB 驱动器中提取日志并提取它们。


  • 打开 Logcat 文件并搜索术语“passphrase”,日志条目将如下所示:


【车联网】现代汽车Ioniq SEL渗透测试(5)

  • 使用密码连接 Wi-Fi


  • 使用 RTL8152/8153 USB 转以太网适配器连接至主机


  • 预装了 RTL8152/8153 以太网适配器的驱动程序。带 USB 集线器的适配器将无法工作。这个适配器对我有用。


  • 您的计算机不会分配 IPv4 地址,因此您必须使用 Wireshark 等工具来查找主机的链路本地 IPv6 地址。


连接后:下载 adb 命令行工具并通过运行以下命令连接到主机:

  1. adb connect 192.168.0.1

如果您使用以太网适配器,则必须将 192.168.0.1 替换为主机的 IPv6 地址。

然后您可以使用以下命令启动 shell:

  1. adb shell /bin/bash

免责声明:

本公众号所有文章均为用于技术沟通交流,请勿用于其他用途,否则后果自负。

第二十七条:任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序和工具;明知他人从事危害网络安全的活动,不得为其提供技术支持、广告推广、支付结算等帮助

第十二条: 国家保护公民、法人和其他组织依法使用网络的权利,促进网络接入普及,提升网络服务水平,为社会提供安全、便利的网络服务,保障网络信息依法有序自由流动。

任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得危害网络安全,不得利用网络从事危害国家安全、荣誉和利益,煽动颠覆国家政权、推翻社会主义制度,煽动分裂国家、破坏国家统一,宣扬恐怖主义、极端主义,宣扬民族仇恨、民族歧视,传播暴力、淫秽色情信息,编造、传播虚假信息扰乱经济秩序和社会秩序,以及侵害他人名誉、隐私、知识产权和其他合法权益等活动。


原文始发于微信公众号(车联网攻防日记):【车联网】现代汽车Ioniq SEL渗透测试(5)

版权声明:admin 发表于 2024年6月20日 下午8:03。
转载请注明:【车联网】现代汽车Ioniq SEL渗透测试(5) | CTF导航

相关文章