QEMU安装与磊科路由器igdmptd后门程序复现教程

  • A+
所属分类:安全文章

首先先简单介绍一下QEMU:QEMU是一款开源的机器模拟器和虚拟器(virtualizer)。作为机器模拟器,它能够在某一架构之上运行为另一架构而编写的程序,比如在PC上分析一些嵌入式设备的固件。作为虚拟器,能够直接在宿主机CPU上执行代码。


磊科路由器后门事件的话可以看看这篇文章:http://www.freebuf.com/articles/terminal/55300.html。虽然有点久了,但还算经典,值得一试。


在复现后门之前,先讲解安装与配置QEMU的步骤。具体如下:

    1.下载源码,配置与安装:源码下载地址是http://wiki.qemu.org/Download。由于仅需模拟MIPSEL CPU,可使用 ./configure --target-list=mipsel-softmmu来配置Makefile,加快安装速度。在make,make install之前,要先检查一下本机是否有g++编译器,安装时会用到。

    2.下载openwrt-malta-le-vmlinux-initramfs.elf。这个程序为路由器固件提供运行环境。下载地址是:https://downloads.openwrt.org/snapshots/trunk/malta/generic/。malta平台用于在QEMU中模拟MIPS系统。

    3.搭建网桥,以便能从外部访问虚拟机。以Ubuntu为例,首先先安装uml-utilities和bridge-utils,然后执行"sudo gpasswd -a 用户名 uml-net",将运行虚拟主机的用户的用户名(通常是你的ubuntu登录用户名)添加到uml-net用户组,使宿主机机能够访问网络接口,然后重启。随后编辑/etc/network/interfaces文件,添加如下内容:

auto tap0

 iface tap0 inet manual

 up ifconfig $IFACE 0.0.0.0 up

 down ifconfig $IFACE down

 tunctl_user 用户名


auto br0

 iface br0 inet dhcp

 bridge_ports all tap0


最后执行

sudo /sbin/ifup tap0

sudo /sbin/ifup br0

来使设置生效。


    4.搭建虚拟机与宿主机的文件传输通道。方法如下:

1. 使用dd创建一个文件

dd if=/dev/zero of=Desktop/share.img bs=1M count=350
2. 格式化share.img文件
mkfs.ext4 Desktop/share.img
3. 在宿主机上创建一个文件夹,如mkdir /tmp/share,然后执行mount -o loop Desktop/share.img /tmp/share  

这样,在宿主机上把需要传输给虚拟机的文件放到/tmp/share下即可。

准备妥当后,便可以启动虚拟机了:

sudo qemu-system-mipsel -kernel openwrt-malta-le-vmlinuxinitramfs.elf -M malta -net nic,vlan=0,macaddr=23:33:33:33:33:33 -net tap,vlan=0,ifname=tap0,script=no -serial tcp::6666,server –nographic -drive file=Desktop/share.img

其中macaddr和端口地址可以自行指定。

随后便可以以Telnet的形式登陆。登陆完成后,通过dmesg的输出找到新挂载的img的设备名,然后进行挂载。随后设置root账户的密码,此时ssh服务会启动。


至此,安装与配置QEMU的工作完成。接下来讲解固件文件的提取与运行。


固件的提取使用的是binwalk,下载地址是https://github.com/devttys0/binwalk。下载完成后使用其中的setup.py和deps.sh(限Debian/Ubuntu用户,其他操作系统用户请按照INSTALL.md中的内容安装依赖包)安装binwalk及其依赖包。安装完成后执行”binwalk -e 固件名“来解压固件。然后将解压后的固件下载到虚拟机中,使用chroot命令来更改根目录。随后运行igdmptd后门程序。这里“already in use”是因为我之前已经开启过了QAQ。

QEMU安装与磊科路由器igdmptd后门程序复现教程

运行netstat -an可以发现53413端口已开启。


QEMU安装与磊科路由器igdmptd后门程序复现教程


最后便可以测试该后门了。

QEMU安装与磊科路由器igdmptd后门程序复现教程

至此,QEMU安装与磊科路由器igdmptd后门程序复现便完成了,撒花~


参考文献:

http://n1trox.github.io/pdf/NW765firmware.pdf

http://blog.csdn.net/defeattroy/article/details/5261822

http://blog.csdn.net/scaleqiao/article/details/45197093



后记——不可不看的避坑指南:

  1. 安装QEMU时遇到“The following packages have unmet dependencies”怎么办?

    答:看看这个:http://askubuntu.com/a/142808

  2. dmesg返回的内容太多,怎么快速寻找挂载的img的设备名?

    答:dmesg | grep "350 MiB"。其中“350”是之前生成文件时指定的大小。

    QEMU安装与磊科路由器igdmptd后门程序复现教程

  3. 即使是Ubuntu用户,也使用了sudo,安装binwalk依赖库的时候也可能会有部分库安装失败。这时就只能一个个自己手动装了QAQ。

  4. 虚拟机能够ping通,22端口也开了,为什么ssh连接不了?

  5. 答:iptables的问题。配置一下允许访问就行了。别忘了也给53413端口配一下哦。


    QEMU安装与磊科路由器igdmptd后门程序复现教程

    inn0team是一个正在成长的小安全团队

     微信号:inn0team 

    QEMU安装与磊科路由器igdmptd后门程序复现教程

    长按可关注我们

    这篇没有点击阅读原文,哈哈哈哈哈哈



本文始发于微信公众号(inn0team):QEMU安装与磊科路由器igdmptd后门程序复现教程

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: