QEMU 模拟GL.iNET 路由器设备
0x00 前言
由于需求,所以希望可以通过QEMU虚拟机的方式去模拟一下GL.iNET 路由器设备。感谢走在前路的先驱们。
0x01 固件下载
固件下载地址:https://dl.gl-inet.cn/
首先先下载一个自己想要模拟的固件,比如MT3000,然后直接下载
0x02 binwalk 提取
将下载的固件进行解压, 找到root
然后 binwalk -Me root
提取Squashfs ,这里建议使用linux系统,安全人员直接使用kali或者Ubuntu。
SquashFS 是一种用于 Linux 的只读压缩文件系统。它能够将文件系统中的数据进行压缩,以减少存储空间的占用,同时保持文件系统的结构和特性。
这里可以理解为就是将整个linux文件系统提取出来,看一下提取后的格式:
就是一个linux系统的目录文件
0x03 将系统文件传进去
首先参考此 https://editor.csdn.net/md/?articleId=146356419,开启一个网络连通的Debian的环境
通过 scp -r squashfs-root/ root@192.168.122.130:/root
把文件传上去。
0x04 挂载
在Debian环境中执行
cd squashfs-root/
mount -t proc /proc ./proc/
mount -o bind /dev ./dev/
chroot ../squashfs-root/ sh
CHROOT就是Change Root,也就是改变程序执行时所参考的根目录位置。CHROOT可以增进系统的安全性,限制使用者能做的事。也就是chroot …/squashfs-root/ sh会将shell切换为squashfs-root的root
0x05 启动固件
按照大佬的启动说明,启动这些内容
#第一次运行这些
mkdir /var/log
mkdir /var/log/nginx
mkdir /var/lib
mkdir /var/lib/nginx
mkdir /var/lib/nginx/body
mkdir /var/run
chmod +x /etc/uci-defaults/80_nginx-oui
/etc/uci-defaults/80_nginx-oui
chmod +x /etc/uci-defaults/network_gl
/etc/uci-defaults/network_gl
/etc/init.d/boot boot
#后面重启运行这些即可
/sbin/ubusd &
/usr/sbin/gl-ngx-session &
/usr/bin/fcgiwrap -c 4 -s unix:/var/run/fcgiwrap.socket &
/usr/sbin/nginx -c /etc/nginx/nginx.conf -g 'daemon off;' &
感觉就是在启动nginx的过程,但是具体的过程没有研究过,也没有对对应的内容有足够的了解,所以完全按照指南进行。
0x06 访问
输入对应的http://ip 即可访问,可以看到熟悉的GL.iNET的界面
这里发现功能其实是不完善的,但是也算是勉强启动了,后续有待研究和发现