路由器固件调试方案 |
您所在的位置:网站首页 › 中兴路由器怎么调试 › 路由器固件调试方案 |
0x01前言 本文主要介绍在研究路由器固件安全时常用的两种调试方法,分别是IDA远程调试和gdb远程调试。这里需要注意,由于路由器基本都是mips架构,所以下文是以mips为例展开的,不过如果碰到了arm的,也是同理的。
0x02 IDA Pro远程调试 使用qemu-system模式运行的脚本如下: 这里涉及的两个文件分别是内核文件和磁盘镜像文件 这里注意,我们这里涉及到的固件是大端格式的,如下所示: 所以是用*mips,而不是*mipsel 为了后面的调试,我们还需要准备好gdbserver,可以自己编译,不过我建议使用网上已经静态编译好的gdbserver。这里给出rapid7放出来的: https://github.com/rapid7/embedded-tools 这次用到的是大端的,所以使用gdbserver.mipe即可 在运行该脚本之前,除了准备好这两个文件之外,还要执行下图的命令 将其复制到当前目录下 此时路径下的文件包括: 这样就可以启动了 启动成功后如图所示 输入root/root即可 查看ip 将之前提取出的文件系统通过scp上传到机器上 再将gdbserver上传 回到debian看到上传成功 然后将gdbserver复制到squashfs-root目录下 接下来挂载根文件系统 这样,文件系统在mips系统中就成功挂载并运行了 接下来通过gdbserver进行远程调试: 命令中的ip就是debian的ip,端口号自行设置,后面跟着的是要调试的程序 然后在win中打开ida,载入本地的cgibin,在main下断点 接着debugger->select a debugger 选择remote gdb debugger 点击ok即可 debugger->process options 上面填入在debian中的路径,下面是ip以及对应的端口,点击ok即可 debugger->attach to process 选择第一个,点击ok后,即可进行调试 点击左上角的箭头后,就会自动运行,命中下的断点 说明调试环境已经搭建好了。
0x03 GDB远程调试 打开两个终端: 一个终端使用qemu-user模式运行stack_bof_01 与直接运行不同,这里通过-g指定了端口 接下来在另一个终端通过gdb调试 -multiarch是为了支持其他架构用的,比如我们这里的mips架构 接下来首先设置架构为mips 然后设置ip和端口 通过pwndbg的扩展,我们就可以很方便的进行调试了
0x04 看完这篇文章,其实大家都知道我的重点放在了ida动态调试上,个人觉得这是最可靠的调试方案。不过这期间涉及到的功能实现都是有很多方案可以备选的:比如在上传文件系统,gdbserver到debian时我用的scp,当然还可以用其他的,ftp也可以,用python也行(python -m SimpleHTTPServer) 如果是新手看到这篇文章的话,一定要注意,文中我虽然是qemu-system模式和IDA远程调试结合进行分析,qemu-user模式和gdb-multiarch结合进行分析。但是实际上,是可以自由组合的。另外,radare2也是可以用于mips的调试的,但是就我个人经验而言没有必要,所以就不再介绍。 最后给出一篇扩展的文章:https://www.ringzerolabs.com/2018/03/the-wonderful-world-of-mips.html 里面介绍了qemu的两种模式仿真,与radare2本地/远程调试,gdb远程/本地调试,ida远程调试等一共九种组合方案的实现。学有余力的话可以去看看。
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |