2.6.2 软改 · 物联网安全

软改

前言

某些情况下,单纯针对硬件层面的修改可能无法满足需求时,就需要在固件层面进行修改,如通过修改智能摄像头固件中的密码,绕过厂商在串口调试时的密码验证;如修改家用电视机主板固件中的用户信息,解决开机故障问题,如修改路由器固件,使低版本固件兼容高版本硬件,本章将用实例,展示固件修改的具体方式和思路。

嵌入式设备

对于嵌入式系统的固件,查看其文件系统,解压,找到对应的文件,直接修改,修改之后重打包刷入即可。例如对某个摄像头 root 密码的修改。

摄像头固件修改

拿到固件 BIN 之后,使用 binwalk 解包

图片[1]-2.6.2 软改 · 物联网安全-安全小百科

发现有多个 squashfs 文件系统,且解包后对应的文件系统根目录只有一个,其他几个是不完全的目录,猜测第一个 squashfs 对应文件系统根目录。将第一个 squashfs 文件系统从固件中 dump 出来,然后使用 unsquashfs 工具解压

图片[2]-2.6.2 软改 · 物联网安全-安全小百科

图片[3]-2.6.2 软改 · 物联网安全-安全小百科

图片[4]-2.6.2 软改 · 物联网安全-安全小百科

在当前工作目录中多出一个 squashfs-root 文件夹,内容正是根文件系统

图片[5]-2.6.2 软改 · 物联网安全-安全小百科

查看 etc/shadow

图片[6]-2.6.2 软改 · 物联网安全-安全小百科

将root账户的密码字段置空后保存,然后使用 mksquashfs 工具打包,压缩格式选用和 second.bin 相同的压缩格式,blocksize 设置为和 second.bin 相同的131072 bytes,将所有文件的所有者使用 -all-root 参数设置为 root,-nopad 指定不要进行4k对齐

图片[7]-2.6.2 软改 · 物联网安全-安全小百科

图片[8]-2.6.2 软改 · 物联网安全-安全小百科

由于重打包之后的文件系统比原文件系统要小,所以要对 newrootfs.bin 末尾进行填充

图片[9]-2.6.2 软改 · 物联网安全-安全小百科

填充之后的 newrootfs.bin 和 second.bin 大小相同。然后将 first.bin,newrootfs.bin,three.bin 按顺序拼接成新的固件

图片[10]-2.6.2 软改 · 物联网安全-安全小百科

可以看到修改之后的固件和原固件大小相同,文件结构也相同,配合之前的体外分离硬改,刷入固件之后开机,root 用户已经可以无密码登录。

图片[11]-2.6.2 软改 · 物联网安全-安全小百科

如果要对 elf 文件的修改,可以参考之前的 2.3.2 固件逆向,2.5.3 远程调试章节,二进制逆向分析,修改对应的指令,字符串来完成程序修改。然后在重新打包回去。

单片机

对于无操作系统的单片机固件,需要通过逆向出来,再来修改逻辑或字符串。

相关推荐: 3.1.2 无线安全的现状 · 物联网安全

无线电安全的趋势 相关推荐: 2.6 硬件修改 · 物联网安全硬件修改 硬件的修改是在物理层,根据不同的需求进行针对性的修改,比如更换芯片、修改部分电路、更换部分元器件等等,俗称硬改,针对硬件固件层,修改其中的代码和功能,就称为软改。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享