FreeBuf:DLink RCE漏洞CVE-2019-17621分析( 二 )


本文插图
固件模拟运行由两种方式可以考虑:① 将文件系统上传到qemu mips虚拟机中运行;② 借助firmadyne工具运行固件(当然也可以尝试使用AttifyOS VM):
① 使用scp命令将squashfs-root目录上传到qemu mips虚拟机:
FreeBuf:DLink RCE漏洞CVE-2019-17621分析
本文插图
chroot /root/squashfs-root sh
FreeBuf:DLink RCE漏洞CVE-2019-17621分析
本文插图
② 借助firmadyne工具运行固件
Firmadyne是一款自动化和可裁剪的嵌入式Linux系统固件分析框架 , 它支持系统固件逆向QEMU嵌入式系统模拟执行 , 使用其可模拟路由器固件、执行路由器 。 安装和使用方法详见https://github.com/firmadyne/firmadyne 。 注意:Firmadyne安装之前 , 先安装firmware-analysis-toolkit , 安装方法详见https://github.com/attify/firmware-analysis-toolkit , 安装完成之后在firmware-analysis-toolkit目录中创建firmadyne目录并下载安装Firmadyne 。 各自全部安装完成后如下所示(注意两个工具须完全按照步骤安装完成 , 否则后续固件运行会出错):
FreeBuf:DLink RCE漏洞CVE-2019-17621分析
本文插图
首先将firmware-analysis-toolkit目录下的fat.py和reset.py文件移动到firmadyne目录;接着进入firmadyne修改firmadyne.config设置路径如下:
【FreeBuf:DLink RCE漏洞CVE-2019-17621分析】
FreeBuf:DLink RCE漏洞CVE-2019-17621分析
本文插图
将固件bin文件拷贝至firmadyne目录 , 继续执行以下命令:
rm-rf images*python3 reset.pysudo -u postgres createdb -O firmadyne firmwaresudo -u postgres psql -d firmware < ./database/schema./sources/extractor/extractor.py -b Dlink -sql127.0.0.1-np-nk"DIR859Ax_FW105b03.bin"images./scripts/getArch.sh ./images/1.tar.gz./scripts/makeImage.sh1./scripts/inferNetwork.sh1./scratch/1/run.sh
FreeBuf:DLink RCE漏洞CVE-2019-17621分析
本文插图
FreeBuf:DLink RCE漏洞CVE-2019-17621分析
本文插图
Ubuntu中打开浏览器 , 输入192.168.0.1即可访问仿真路由器:
FreeBuf:DLink RCE漏洞CVE-2019-17621分析
本文插图
2、远程调试路由器固件已成功得以运行 , 接下来可以对目标程序进行调试 , 此时可借助物理机中IDA进行远程调试(当然 , IDA也可以安装在ubuntu中) 。 调试仍然有两种思路:
① 在qemu mips虚拟机中 , 借助静态gdbserver和远程IDA的“remote GDB debugger”功能对目标mips程序进行动态调试 , 此处需要注意的是静态gdbserver文件格式必须和mips系统的大/小端完全对应 , 可用file命令查看固件的相关信息:
因此须首先交叉编译得到32bit MSB格式的静态gdbserver文件 , 交叉编译可用选择Openwrt或Buildroot , 此处省略 。
② 在ubuntu解出固件文件系统后 , 使用chroot命令 , 配合qemu-mips-static运行目标文件(cgibin为目标文件) , 然后附件远程IDA进行动态调试 , 首先在ubuntu中执行以下命令:
chroot ../qemu-mips-static-g1235./htdocs/cgibin
FreeBuf:DLink RCE漏洞CVE-2019-17621分析
本文插图
接着在物理集中打开IDA调试器 , 进行如下操作:


推荐阅读