固件调试环境搭建学习

最近在入门固件分析,搭建环境方面就折腾了不少时间,做个总结,帮助入门的同学少走弯路

软件环境

本人使用的机器环境是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进行处理,非常感谢!

上一篇 2021年2月28日
下一篇 2021年2月28日

相关推荐