欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]某国内知名(动物命名)摄像头启动流程及固件解密

[原创]某国内知名(动物命名)摄像头启动流程及固件解密

设备信息:

网络下载的固件文件系统:Jsff2系统

CPU 芯片信息:Hi 3518E V200

Nor Falsh   :Winbond w25q128

启动过程:

/home/base/init.sh:

    由系统初始化脚本启动(暂时不知道最开始的初始化进程是哪个,估计是/linuxrc)

    判断home文件夹下是否存在相关更新包,如果存在就先调用extpkg.sh进行固件更新,然后再调用/home/app/init.sh;如果不存在就直接调用/home/app文件夹下的init.sh脚本

/home/app/init.sh:

    启动/home/app/script/factory_test.sh脚本

    调用.ko驱动文件初始化一些环境

    判断/home/app/extpkg.sh是否存在。如果不存在就从/home/base/tools目录下拷贝

    运行了{

        ./load3518e  加载并初始化相关驱动

        ./log_server 日志记录

        ./dispatch   

        ./rmm        扫描二维码,播放语音提示

        ./mp4record  记录音视频

        ./cloud      逻辑处理

        ./p2p_tnp    负责数据通信

        ./oss        可能为上传或下载文件

        ./watch_process 看门狗

    }

    注:1.还有一个cloudapi的文件,这个文件封装了libcurl请求库,相关的http/https都会走这个文件。

        2.进程间通信主要用的mqueue机制

extpkg.sh

    负责固件的升级过程的解密

    会启动/home/base/tools/exthome文件

    调用/tmp/update/home/app/script/update.sh

update.sh

    负责更新相关文件,把待更新的文件拷贝到对应的文件夹下,完成更新

固件解密过程:

从网上下载的固件由以下几个部分构成

    1.版本信息(0x16字节)

    2.RSA加密的数据(0x540字节)

        1>.文件的MD5值

        2>.文件的加密key(7z文件的加密key)

        3>.文件的版本信息

        4>.压缩文件的头部信息(7z的头部信息)

    3.文件的剩余部分(7z文件除加密外的剩余部分)

    这里应该是把md5值、加密文件的key、文件的版本信息和7z压缩文件的头部的部分字节进行RSA加密,解密密钥会存在本地用来进行解密(共259个字节,前256个字节为rsa的n,后面三个字节为rsa的e),解密完成后会进行相关版本及md5的判断

攻击思路:

1.设备通过二维码扫描连接手机,可以通过二维码进行攻击

2.有些摄像头开放了后台服务端口,可以用nmap扫描

3.中间人攻击。该摄像头有个p2p协议,能否劫持、能否重放攻击。很多摄像头的客户端可以给摄像头发送指令,比如转动摄像头、主动更新、拍照、录音等,可以从这里入手。

4.很多摄像头都利用curl进行http访问,可以利用公开漏洞

5.固件升级攻击。包括查看是否可以劫持升级包下载、升级包完整性校验是否不严格、升级过程中是否有其他漏洞。

6.某种情况下,wifi的名字(ssid)和密码我们可以控制,可以作为分析切入点,查看是否有系统命令注入或者溢出漏洞

7.该摄像头都关闭了ASLR(地址空间布局随机化),估计是普遍现象

8.该摄像头的可执行文件都关闭了函数运行栈保护(canary),估计是普遍现象

9.该摄像头的一般进程都是以root身份运行

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功