解密固件实践及firmwalker脚本利用

1.固件
固件:Firmware. 就是写入EROM(可擦写只读存储器)或者EEPROM(电可擦写可编程只读存储器)中的程序。
固件是只设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行运作,比如光驱,刻录机等都有内部固件。
固件是担任着一个系统最基础最底层工作的软件。而在硬件设备中,固件就是硬件设备的灵魂,因为一些硬件设备除了固件以外没有其他软件组成,因此固件也就决定这硬件设备的功能以及性能。
2.固件升级的一种方案
随着物联网安全安全越来越重视,作为万物互联的核心之一—路由器的安全也越来越重视,反映在固件方面,就是其针对附件做的一些安全措施,可以使得一些安全研究员手足无措,不过由于一些历史原因,很可能我们可以通过分析固件的之前的一些版本,找到研究固件当前版本的一些线索。
下面这张图
在这里插入图片描述

是很多路由器厂家会采取的一种更新升级固件并使固件更加“安全“的方案。
这个方案是这样的:最开始发布的固件是没有加密的,也没有附带任何解密的文件,随着固件更新,解密文件会和较新版本v1.1中的未加密版本一起发布,以便将来进行固件加密,v1.1版本作为过渡使用。而到了v1.2时,固件则是以加密形式发布的,不过仍附带解密文件。

这次的实验,我们以D-Link DIR-882固件为例。我们在分析固件时会发现它被加密过了,使用binwalk根本无法探测,比如这次的固件v1.20b06
在这里插入图片描述

这时候我们可以考虑通过分析旧版本的固件尝试是否有什么线索来解密现在这个新版本的固件
在这里我们可以找到所有旧版本的固件(ftp://ftp2.dlink.com/PRODUCTS/DIR-882/REVA/),我们找个最早的版本v1.00b07,下载来后放在v1.00b07文件夹下
在这里插入图片描述

将其解压后,尝试binwalk读取
在这里插入图片描述

可以看到能识别出信息,或者说是没有加密过的。

那再看看稍微新一点的版本
创建1.10b02文件夹,其中有相应的压缩文件
在这里插入图片描述

解压
在这里插入图片描述

可以看到有两个bin文件,说明1.04b02的过渡版本,它包含在v1.10b02固件包汇中,名字也已经告诉我们了,1.04b02是未加密的
分别使用binwalk
在这里插入图片描述

而加密后的固件却什么也看不到
在这里插入图片描述

我们把1.04b02提取出来
在这里插入图片描述

进入生成的文件夹
在这里插入图片描述

注意到有两个文件,使用binwalk提取A0
进入新文件夹
在这里插入图片描述

看到还需要再次提取
在这里插入图片描述

进入新生成的文件夹
在这里插入图片描述

进入bin文件夹
在这里插入图片描述

注意到这里有一个Imgdecrypt的文件,看名字,应该是用来解密镜像的
file查看
在这里插入图片描述

发现是个可执行文件,尝试执行,缺少相应的so文件,这很正常,因为这个文件是写在mips架构上运行的,而我们目前是x86
为了运行它,我们还是用前面使用学过的办法,使用qemy-mipsel-static
在这里插入图片描述

首先将其复制到固件根文件系统的/usr/bin目录下
在将前面发现是加密的固件1.20b06复制过来
sudo chroot . ./qemu-mipsel-static ./bin/sh
在这里插入图片描述

接着还是同样的办法模拟mips架构拿到shell
此时再执行imgdecrypt可以看到 打印出了使用方法
按照其提示,可以看到对原来加密的固件进行了解密
操作如上图所示
这时候再次使用binwalk查看被解密后的固件,可以看到已经可以识别了
在这里插入图片描述

这给我们的启示就是,在碰到加密的固件时,可以考率查找位于同一产品线、具有相同处理器体系结构的路由器固件,找那些版本旧一些的,或者过渡版本,或许就能为我们提供线索。

我们使用binwalk如之前未加密的固件一般一步步提取
在这里插入图片描述

可以看到文件系统都被提取出来了
这里介绍一个常用的小工具 firmwalk.sh
它将搜索固件文件系统,以获取与敏感信息相关的东西,如:
etc/shadow and etc/passwd
列出 etc/ssl目录
搜索相关的文件,如. pem,. crt, 等。
搜索配置文件
查找脚本文件
搜索其他. bin 文件
查找诸如管理员。密码。远程等关键字。
搜索在IoT设备上使用的通用网络服务器
搜索常见的二进制文件,如 ssh。tftp。dropbear等。
搜索网址,电子邮件地址和IP地址
我们可以使用它来看看这个文件系统中有哪些敏感信息
命令为./firmwalker.sh 文件系统的路径
在这里插入图片描述

会找到可能含有password关键字的文件
在这里插入图片描述

ssl相关文件
在这里插入图片描述

私钥相关文件
在这里插入图片描述

还有telnet相关文件等
在这里插入图片描述

我们知道telnet可用于远程登录,那么上面列出的文件中有没有可能存在telnet的口令呢?
大家有兴趣的话可以自己试试看,这里只是提供一个思路而已。(hint:在上个实验分析dlink 300固件时在其telnet部分存在口令泄露的问题,感兴趣的话可以去那个实验自己动手试试看)

参考
1.该网站提供关于固件安全的一些思路:https://www.zerodayinitiative.com/blog/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值