《IOT废物学习之路》(4)–解密路由器固件

固件下载地址:

https://support.dlink.com/resource/products/dir-605l/REVA/

研究路由器固件D-link-882。其中zip就是各版本的固件。

image-20241005145541936

解压出来的固件版本从旧到新依次为:FW100B07 --> FW101B02 --> FW104B02 --> FW110B02 --> FW111B01 --> FW120B06 –> FW130B10FW104B02 有点特别,而且通过名字也猜测到它是未加密的中间版本。

image-20241005145553406

目前最新版是FW130B10,试一试用binwalk能否解析该固件。

image-20241005145605463

发现binwalk失败。再试试更早版本的FW101B02,发现可以直接提取。

image-20241005145616706

固件的版本是经过未加密到加密,所以肯定会有一个中间版本。

image-20241005145627511

利用binwalk测试出中间版本FW104B02。可以从固件系统中找一找是否存在解密程序。可以在bin目录或者是usr/bin目录下寻找类似decrypt字眼的程序。

binwalk解析FW104B02固件

1
2
3
4
docker run -it --rm \
-v $(pwd):$(pwd) \
asdqwe876/iot_analyze \
binwalk --run-as=root -C $(pwd) -Mer $(pwd)/DIR882A1_FW104B02_Middle_FW_Unencrypt.bin

得出来的是cpio-root,但是发现目录下并没有文件,应该是cpio这一步骤没有成功。就手工提取:

1
cpio -idm < 8AB758 -D ./_8AB758.extracted/cpio-root

image-20241005145707703

image-20241005145719910

bin目录下找到imgdecrypt

image-20241005145730892

通过file查看程序文件信息,发现是mips架构下的可执行文件

image-20241005145742255

反编译查看,发现有AESRSA,猜测大致和RSAAES加密相关。

image-20241005145753703

解密的话,逆向解密是其中一种方法,但可能比较费时间。再介绍一种解密方式。

可以直接本地运行解密程序imgdecrypt,来解被加密的FW120806固件。

先拷贝qemu模拟器到当前目录。

1
cp $(which qemu-mipsel-static)

模拟前用chroot将当前固件系统路径设置为root路径(防止运行程序时找不到系统库)。

image-20241005145813605

先解密然后利用binwalk提取即可。

image-20241005145826344