
0x01前言
本文主要介绍研究路由器固件安全性时常用的两种调试方法,即IDA远程调试和gdb远程调试。这里应该注意的是,由于路由器基本上是mips架构,因此以下以mips为例进行说明,但是如果遇到了arm,则同样如此。
0x02
IDA Pro远程调试
以qemu系统模式运行的脚本如下:

这里涉及的两个文件是内核文件和磁盘映像文件
请注意,此处涉及的固件采用big-endian格式,如下所示:

因此,请使用* mips而不是* mipsel
对于以后的调试,我们还需要准备可由自己编译的gdbserver,但我建议在Internet上使用静态编译的gdbserver。这是Rapid7的发行版:

这次我使用大端字节,所以使用gdbserver.mipe。
在运行脚本之前,除了准备这两个文件之外,还必须执行下图中的命令


将其复制到当前目录
此路径下的文件包括:

因此可以启动

成功启动后如图所示

输入root / root。
查看ip

通过scp将先前提取的文件系统上传到计算机上

再次上传gdbserver

返回debian,查看上传成功


然后将gdbserver复制到squashfs-root目录

下一步,挂载根文件系统

通过这种方式,文件系统已成功安装并在mips系统中运行
接下来,通过gdbserver进行远程调试:

命令中的ip是Debian的ip,端口号由您自己设置,然后是要调试的程序
然后在win中打开ida,加载本地cgibin,并在main下设置断点

下一个调试器->选择调试器

选择远程gdb调试器
只需单击确定

调试器->处理选项

在上面的debian中填写路径,下面是ip和相应的端口,单击“确定”。
调试器->附加到进程

选择第一个,单击“确定”,即可开始调试

点击左上角的箭头后,它将自动运行并击中下面的断点

已设置调试环境。
0x03
GDB远程调试
打开两个终端
终端在qemu-user模式下运行stack_bof_01


不同于直接运行,该端口在-g此处指定
接下来,在另一个终端中通过gdb调试

-multiarch用于支持其他架构,例如此处的mips架构
接下来,首先将架构设置为mips

然后设置IP和端口

通过pwndbg的扩展,我们可以轻松调试。

0x04
阅读本文后,每个人都知道我的重点是ida动态调试。我个人认为这是最可靠的调试解决方案。但是,此期间涉及的功能实现有很多替代方法:例如,在将文件系统,gdbserver上传到debian时,我使用的是scp,当然,您也可以使用other,ftp也可以,而python也可以好的(python -m SimpleHTTPServer)
如果您是阅读本文的新手,则必须注意它。尽管我使用qemu系统模式和IDA远程调试进行分析,但是使用qemu用户模式和gdb-multiarch进行分析。但实际上,它可以自由组合。另外,radare2也可以用于mips调试,但是根据我的个人经验不是必需的,因此我将不介绍它。
最后给出扩展文章:
介绍了qemu仿真的两种模式,分别是radare2本地/远程调试,gdb远程/本地调试,ida远程调试等,共有九种组合方案。如果您有更多的学习时间,可以查看一下。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxingongju/article-326928-1.html
机巡航南海中国岛礁12海里