首页
论坛
专栏
课程

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

2019-8-6 18:20 2693

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

2019-8-6 18:20
2693

设备信息:

网络下载的固件文件系统: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身份运行


[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最新回复 (1)
accessdenied 2019-8-6 18:28
2
0
给力嗷
游客
登录 | 注册 方可回帖
返回