关注分享主机优惠活动
国内外VPS云服务器

相机倒车分析之旅(Camera Reverse)

摘要:简介摄像头是我们常见的设备,其安全关系到用户的隐私。 为了防止逆向分析,制造商在程序实施中使用各种方法来防止逆向工程。 本文通过一个著名的相机逆向分析,一步步简单介绍了如何通过串口逆向相机中的主要程序。

简介

相机是概述 物联网设备的安全关系到用户的隐私。 为了防止逆向分析,制造商在程序实施中使用各种方法来防止逆向工程。 本文通过一个著名的相机逆向分析,一步步简单介绍了如何通过串口逆向相机中的主要程序。

串口分析

直接反汇编目标。 处理器和闪存位于底座下方。 通过分析可以看出,该型号相机采用海思Hi3516A(ARM架构),FLASH为128MB,拆焊FLASH引脚比较耗时。 所以我尝试看看是否可以直接从串口获取固件。 港口。

PCB板上发现UART串口裸露。 如果用万用表测量,您会看到最左边的焊盘是GND,最左边的焊盘是GND。 右边的pad对地是3.3V,应该是Vcc,中间的两个是Rx和Tx。

连接 UART、TTL 和 USB。 注意,如果Rx和Tx接的是反向串口,没有信息,则此处替换。 您可以检查下面输出的打印信息。。

打开对应的串口,并将波特率设置为115200。

解压固件

按Ctrl+B转U-回车启动。 此时,您可以在提取的 U-boot 固件中输入 U-boot。

首先,检查闪存布局。 前 1M 存储引导,然后是内核,然后是程序。 主要关注的是内核和首先读取其数据的程序。

先将数据读入内存,然后md,然后转换为bin。 这里的演示是一个内核转储。 数据。 其他FLASH数据也可以通过这种方式转储。

解密程序

提取的固件直接使用binwalk解密。 但在分析过程中,发现部分程序被加密,如下图所示。 该文件是一个 ELF 程序,应该有一个 ELF 幻数,但使用 010 编辑器分析发现该程序已加密。

有加密,就有解密。 一般来说,Linux 上的程序解密发生在内核中。 接下来我们需要分析固件内核。 您可以在突出显示的区域中获取内核的实际加载地址0xC0008000,如下所示。

如果设置了正确的加载地址,IDA已经可以识别大部分函数信息了。

从字符串引用信息快速判断程序是在哪里解密的 该函数首先判断是否是ELF文件,如果判断程序被加密,则解密前32字节,得到AES解密。密钥,所以算法很简单,不用担心,直接将算法复制到vs中调用,编译运行即可得到AES密钥:QdCpBsjP_** _TY

下面直接调用AES-CBC进行解密。

解密脚本为:

from Crypto.Cipher import AESimport binasciiimport hexdumpwith open("./fs/usr/bin/****","rb") as fd : data= fd.read()key=b"QdCpBsjP_***_TY"iv=keycipher = AES.new(iv, AES.MODE_CBC, key)dec=cipher.decrypt(data[0x80:])hexdump.hexdump( dec)with open("****.bin","wb+") as fd: fd.write(dec)

解密结果如下:

总结

本文简单介绍了如何通过串口提取固件并快速解密厂家定制的程序加密。 上述工作基本上为后续分析扫清了障碍。 当然,后续的漏洞挖掘工作仍然是一个重大挑战。 以后如果遇到加密的ELF程序或者bash,你可能会想分析一下Linux内核。 这还可能包括解密算法。

未经允许不得转载:主机频道 » 相机倒车分析之旅(Camera Reverse)

评论 抢沙发

评论前必须登录!