常见固件加解密方式与D-Link固件解密分析

常见固件加解密方式与D-Link固件解密分析

先来说一下如何去D-Link 官网下载,可能有些入门的同学不知道

官网地址:D-Link Technical Support

在这里插入图片描述

选择产品型号

在这里插入图片描述

下面是下载页面

在这里插入图片描述

点第二个Download连接会跳转到下面的资源页面

在这里插入图片描述

下面是解密过程

本次的固件是DIR-822_REVC_FIRMWARE_v3_ .15B02.zip

在这里插入图片描述

使用binwalk 分析固件结构,没有发现任何文件信息。

压缩、加密还是混淆?

为了解固件提供了重要的信息,固件的一部分具有较高的熵,建议进行加密。低熵字节的一部分表明低随机性、结构和可预测性。当与其他分析结合使用时,它可以让我们确定是否进行了压缩、加密或混淆。在此分析阶段,binwalk提供的大量选项可能会变得有用。

Binwalk是用于搜索给定二进制镜像文件以获取嵌入的文件和代码的工具。具体来说,它被设计用于识别嵌入固件镜像内的文件和代码。Binwalk使用libmagic库,因此它与Unix文件实用程序创建的魔数签名兼容。Binwalk还包括一个自定义魔数签名文件,其中包含常见的诸如压缩/存档文件,固件头,Linux内核,引导加载程序,文件系统等的固件映像中常见文件的改进魔数签名。

然后使用binwalk -E 命令来查看固件的熵值,发现该固件被加密了

查看熵值是一种确认给定的字节序列是否压缩或加密的有效手段。熵值越大,意味着字节序列有可能是加密的或者是压缩过的

在这里插入图片描述

在发布固件的文档中发现,该固件是从v303wwb04middle 过渡来的,所以需要去v303wwb04middle 版本的固件中找到解密的方法

在这里插入图片描述

接下来分析DIR822C1_FW303WWb04_i4sa_middle.bin

在这里插入图片描述

在这里插入图片描述

所以我们可以直接提取固件

因为加密固件是由该未加密固件升级而来,所以我们可以在 squashfs-root 文件夹内搜索updatefirmwareupgradedownload等关键的字符串

在这里插入图片描述

分析代码:

解密的具体步骤

  1. 获取签名或密钥
    • setattr("/runtime/tmpdevdata/image_sign" ,"get","cat /etc/config/image_sign");:这行代码将 /etc/config/image_sign 文件的内容读取到 /runtime/tmpdevdata/image_sign 路径中。
    • $image_sign = query("/runtime/tmpdevdata/image_sign");:获取签名或密钥的内容。
  2. 执行解密
    • fwrite("a", $ShellPath, "encimg -d -i ".$fw_path." -s ".$image_sign." > /dev/console \n");:将解密命令写入Shell脚本。
    • 解密命令的具体形式是:encimg -d -i /var/firmware.seama -s <image_sign>,其中 <image_sign> 是从 /etc/config/image_sign 文件中读取的签名或密钥。

主要还是encimg 这个程序来对固件进行解密,解密就运行encimg 这程序对要研究的固件进行解密,先找到这程序的位置

在这里插入图片描述

cd _DIR822C1_FW303WWb04_i4sa_middle.bin.extracted/squashfs-root
cp /usr/bin/qemu-mips-static .
sudo chroot . ./qemu-mips-static ./usr/sbin/encimg -d -i ./DIR822C1_FW315WWb02.bin -s wrgac43s_dlink.2015_dir822c1

再一次使用binwalk 来查看DIR822C1_FW315WWb02.bin固件

在这里插入图片描述

解密成功,后面再来复现这个漏洞。

参考:[原创]常见的固件加解密方式与D-Link固件解密实战分析-智能设备-看雪-安全社区|安全招聘|kanxue.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值