【AutoCS】【车联网】车载可用摄像头漏洞研究(转载)

【AutoCS】【车联网】车载可用摄像头漏洞研究(转载)


硬件探索

由于没有外壳与系统进行交互,也没有明文固件可供分析,我们不得不借助内存转储来进行任何工作。该型号内部由 2 块 PCB 组成,有屏蔽罩隐藏芯片组。拆除后,可以识别芯片组制造商和型号。SoC 是赛普拉斯(现为英飞凌)CYW43012,辅以 OA00804-B56G 视频处理器(最接近的文档是 0A00805-B56G-Z),使用南亚 NT5CC64M16GP-DI RAM 和华邦 W25Q256JW_DTR 串行闪存存储器。设备可以通过电源电缆(左侧连接器)、电池(右上方连接器)或 Micro-USB(顶部)供电。一款相对类似型号的拆解过程也由 iFixit 详细介绍。

【AutoCS】【车联网】车载可用摄像头漏洞研究(转载)
W25Q256JW_DTR
【AutoCS】【车联网】车载可用摄像头漏洞研究(转载)

尝试使用 1.8V SPI 转储内存,如数据表中所述,未收到任何响应。然而,使用 3.3V SPI 适配器成功转储。

  1. $ sudo flashrom -p buspirate_spi:dev=/dev/ttyUSB0,spispeed=2Mhz -c W25Q256JW_DTR -r dump.bin

  2. [...]

  3. Found Winbond flash chip "W25Q256JW_DTR" (32768 kB, SPI) on buspirate_spi.

  4. Reading flash... done.

固件解剖

与更新二进制文件不同,固件以明文和字符串的形式存储在文件中,这些字符串确认了这是在 SoC 上运行的代码。然而,二进制转储文件并没有像原样加载到内存中,我们需要在分析代码之前了解二进制格式。

  1. $ strings dump.bin

  2. [...]

  3. Easycam Liveview

  4. OvSelectApp

  5. Unable to write OvAppSelect

  6. CamModePerm

  7. CamModeTemp

  8. sf_detect %s: %x(%x)

  9. sflash found: %s

  10. sf detect failed, readid: %x

  11. error: g_sflash_fun_init.erase is NULL

  12. error: g_sflash_fun_init.program is NULL

  13. error: g_sflash_fun_init.read is NULL

  14. error: data length is forbidden as 0 when read serial flash

  15. EEROR:set qe bit error:%d

  16. flash id not match, read:0x%x(0x%x)

  17. ERROR:hardware haed magic num error,read:%x should be 0x4f565449

  18. ERROR:para haeder magic num error,read:%x should be 0x4f565450

  19. ERROR:fw haeder magic num error,read:%x should be 0x4f565442

  20. para header error

  21. para crc error

  22. magic3 is broken, need do partitioin recover

  23. [...]

0x4f565449/“ITVO”0x4f565442/“BTVO”fw header0x4f565450/“PTVO”para header

ITVO

ITVOuint32_t
  1. kvstore 显然存储着敏感信息,但尚未进行调查。

  2. fw 存储在 CPU 或外围 CPU 上执行的二进制文件,以 BTVO 头开始。

  3. para 存储设备的配置,从 PTVO 头开始。

  4. cali 显然存储加密信息,使用来自 kvstore 的密钥,以 CALI 头部开头。

  5. logs 特别是在设备停止或重新启动时记录日志的地方。

PTVO

PTVOYTVO0x10000x1000=n

BTVO

BTVO
  1. int __fastcall cmd_fw(int argc, char **argv) {

  2. int fw_id; // r0

  3. if ( argc <= 1 )

  4. goto ERROR;

  5. if ( !strcmp(argv[1], "uploading") ) {

  6. fw_id = 2;

  7. RELOAD_FW:

  8. reload_fw(fw_id);

  9. return 0;

  10. }

  11. if ( !strcmp(argv[1], "liveview") ) {

  12. fw_id = 4;

  13. goto RELOAD_FW;

  14. }

  15. if ( !strcmp(argv[1], "arlogw") )

  16. goto RELOAD_ARLOGW;

  17. if ( !strcmp(argv[1], "calfw") ) {

  18. fw_id = 14;

  19. goto RELOAD_FW;

  20. }

  21. if ( !strcmp(argv[1], "upgrade") ) {

  22. fw_id = 9;

  23. goto RELOAD_FW;

  24. }

  25. if ( !strcmp(argv[1], "setup") ) {

  26. fw_id = 12;

  27. goto RELOAD_FW;

  28. }

  29. if ( !strcmp(argv[1], "setupqr") ) {

  30. fw_id = 15;

  31. goto RELOAD_FW;

  32. }

  33. if ( !strcmp(argv[1], "pjsip") ) {

  34. RELOAD_ARLOGW:

  35. fw_id = 36;

  36. goto RELOAD_FW;

  37. }

  38. ERROR:

  39. printf("usage: fw [ uploading | liveview | arlogw | calfw | setup | setupqr | upgrade ]n");

  40. return 0;

  41. }

setupqrarlogwpjsipupgrade

更新

获取和解析

https://updates.arlo.com/arlo/fw/fw_deployed/production/updaterules/VMC4041P_UpdateRules.jsonVMC4041P
【AutoCS】【车联网】车载可用摄像头漏洞研究(转载)

下载的二进制文件遵循这种格式:

  1. 用于识别格式的魔术字节, cimg 。

  2. 格式版本, 1 在这种情况下但 2 存在。

  3. 二进制文件的头部和总大小,头部大小为 0x178 ,版本为 1 。

  4. 包的 DSA 签名,( s1 , s2 ) 在 ASN.1 中。

  5. 一个加密的 AES 密钥。

  6. 评论字符串,在所有观察到的更新中为空。

  7. 硬件和固件修订,都在所有观察到的更新中 0 。

  8. 二进制时间戳以时代格式。

  9. 以下部分的数量。

部分格式如下:

  1. 魔法字节, part 。

  2. 一种类型,要么 1 ( rootfs ),要么 2 ( generic ),要么 3 ( kernel )。

  3. 数据的大小。

  4. 描述数据存储方式的标志,可以是 0 (存储), 1 (压缩), 2 (加密)或 3 (压缩+加密)。

  5. 数据的 MD5 哈希。由于此相机型号不检查哈希的有效性,因此不清楚输入数据的确切内容是什么。

DSA 签名是在去除签名的整个文件上执行的。

解密

AES 密钥使用嵌入在加载文件中的 RSA 私钥进行解密。RSA 私钥使用加载文件中的 4 字节 XOR 密钥进行加密。

  1. do {

  2. rsa_priv_key[i] = ~xor_key[i & 3] ^ rsa_priv_key_obf[i];

  3. ++i;

  4. } while ( i != 1193 );

  5. bio = BIO_new_mem_buf(rsa_priv_key, 1193);

EVP_BytesToKeyERR_put_error(intlib,intfunc,intreason,constchar*file,intline)filelibfuncopenssl_err.pyopenssl.hossl_rename_ida.pyossl_assertossl_assert_int(“/home/jenkins/agent/workspace/_VMC4041P_1.080.20.0_483_0f3935c/omnivision/make/../share/network/openssl/crypto/evp/digest.c”,271,“ctx->digest->md_size <= EVP_MAX_MD_SIZE”)EVP_aes_256_cbcEVP_sha1#defineNID_aes_256_cbc427#defineNID_sha164
  1. DDR_CODE:201244C0 aes_256_cbc DCD 427, 16, 32, 16, 20482

  2. DDR_CODE:201244D4 DCD aes_init_key

  3. DDR_CODE:201244D8 DCD sub_200B3BF0

  4. [...]

  5. DDR_CODE:201245BC sha1 DCD 0x40, 0x41, 0x14, 0xC

  6. DDR_CODE:201245CC DCD sub_200B3D58

  7. DDR_CODE:201245D0 DCD sub_200B3DB0

WTVO

partWTVO
【AutoCS】【车联网】车载可用摄像头漏洞研究(转载)
WTVO
  1. fw 实际上是一个完整的 BTVO 区域,它被原样复制到 Flash 存储器上。

  2. 最终 para 将作为原样复制到 Flash 存储器上的一个 PTVO 区域,但未发现包含 para 的更新。

  3. 一条评论字符串。

  4. 用 CRC 来验证头部。

密钥重用

snprintf(dst,256,“%s/updaterules/%s_UpdateRules.json”,update_url,base_model_id)update_url
  • https://arloupdates.arlo.com/arlo/fw/fw_deployed/dev

  • https://arloupdates.arlo.com/arlo/fw/fw_deployed/qa

  • https://arloupdates.arlo.com/arlo/fw/fw_deployed/goldenft

  • https://updates.arlo.com/arlo/fw/fw_deployed/staging

  • https://updates.arlo.com/arlo/fw/fw_deployed/fieldtrial

  • https://updates.arlo.com/arlo/fw/fw_deployed/production

base_model_idbase_model_idcimg
  1. – Cameras

  2.   – Arlo Wire-Free

  3.     – NTGR_1.5.295_WiFi_upgrade.bin.enc                       cimg: version: 1 size: 0x18be78, date: 2021-08-31T21:07:27 / part: kernel, encrypted / OVTW: (v1.5.295)

  4.   – Arlo Pro

  5.     – VMC4030_1.092.1.0_9_120d8b7.bin.enc                     cimg: version: 1 size: 0x3076c8, date: 2021-08-25T07:36:52 / part: kernel, encrypted

  6.   – Arlo Pro 2

  7.     – VMC4030P_1.125.17.1_11_de8490d.bin.enc                  cimg: version: 1 size: 0x387788, date: 2021-09-04T01:39:52 / part: kernel, encrypted

  8.   – Arlo Pro 3

  9.     – http://updates.arlo.com/arlo/fw/fw_deployed/production/updaterules/VMC4040P_UpdateRules.json HTTP 404

  10.   – Arlo Pro 4 (VMC4050P)

  11.     – http://updates.arlo.com/arlo/fw/fw_deployed/production/updaterules/VMC4050P_UpdateRules.json HTTP 404

  12.   – Arlo Pro 4 (VMC4041P)

  13.     – VMC4041P_1.080.20.1_23_d50a19d.bin.enc                  cimg: version: 1 size: 0xc37248, date: 2023-08-08T00:27:03 / part: kernel, encrypted

  14.   – Arlo Pro 5S

  15.     – http://updates.arlo.com/arlo/fw/fw_deployed/production/updaterules/VMC4060P_UpdateRules.json HTTP 404

  16.   – Arlo Ultra / Ultra 2


cimg

工具制造

arlogw

结论

您现在已经准备好启动自己的漏洞研究了,只要您能够自己找出 RSA 私钥,因为 Arlo 更喜欢这个私钥不被泄露。同时请记住,攻击面很小,除非您知道如何在 TLS 连接上执行中间人攻击!


免责声明

由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

【AutoCS】【车联网】车载可用摄像头漏洞研究(转载)

【AutoCS】【车联网】车载可用摄像头漏洞研究(转载)

原文始发于微信公众号(ArtiAuto 匠歆汽车):【AutoCS】【车联网】车载可用摄像头漏洞研究(转载)

版权声明:admin 发表于 2024年7月15日 下午12:11。
转载请注明:【AutoCS】【车联网】车载可用摄像头漏洞研究(转载) | CTF导航

相关文章