最近在入门固件分析,搭建环境方面就折腾了不少时间,做个总结,帮助入门的同学少走弯路
软件环境
本人使用的机器环境是64位 AMD CPU和 WIN10
不知道是否兼容性的原因,无论是VMware还是VBOX跑虚拟机都出问题,VMware甚至一开虚拟机就蓝屏
本来打算使用Kali虚拟机搭建环境只好作罢。
想到VMware好像对cpu有些要求,Docker和虚拟机技术不太一样,在Win10下又有微软官方的WSL2支撑,
脱离cpu支持,在操作系统平台之上操作,会不会好一些,docker移植部署还比较方便,决定使用docker
试试。
我这里准备拓展自己之前用于渗透集成好的kali镜像,大家直接pull一个全新的镜像即可
再次之间先准备一个目录,挂载给容器,方便文件传输,也减小容器大小
启动容器后,使用ssh连接后续操作,不占用docker的终端
直接准备在容器里部署相关的软件即可,先来安装qemu,从官 下到源码包,安装必要依赖,解压编译即可
如果与缺少的依赖,更具提示安装就可以
不指定需要的架构的话,编译整个qemu还是需要很长时间的,我编译了一个下午,中间也没出什么问题
再来安装交叉编译环境 buildroot,同样也是下载好压缩包,解压就可以
这里我们来构建一个 大端序的 mips 编译环境试试
最后再来安装binwalk
到这里基本容器需要的都齐全了,可以将容器保存成docker镜像,导出方便移植,接下来来尝试对一个实际的固件简单的修复并执行
固件修复
这里用的是 dir605L_FW_113.bin dlink的路由器固件
这里有个小坑,binwalk实际上是集成使用各种其他工具来操作的,这里文件系统squashfs需要一个squashfs工具
来提取,首先要去安装
这坑其实还没结束,sasquatch不知道怎么回事总是 编译错误,我这里已经修复好了,也没截图
大概出现两个错误,一个是提示XZ库相关的头文件,这里去里面目录中的makefile把XZ_SUPPORT注释掉
再直接使用 make && make install 安装
但之后连接器又会 错符 多重定义…
这里,我查看error.h头文件,发现应该是int verbose;这个全局变量的申明,被多个c文件包含产生冲突。这里把int verbose;改成
extern int verbose;然后在unsquashfs.c 中声明一个int verbose;就可以解决
之后提取文件系统就可以正常完成
段错误退出了,接下来尝试配合ida动态调试
IDA找好容器映射的端口,定位字符串,下好断点,连接开始调试
再次单步调试 发现apmib_get 函数导致了段错误,猜测也是硬件这块,想直接劫持掉试试
尝试劫持fork
这个得正常点,fork 的返回值主程序会检查,确定pid
再次运行,ctrl c也可以掐掉web 服务器了
最后尝试下浏览器访问固件页面吧

美中不足,就是现在我还是不知道apmib_get会不会影响后续的测试
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!