华为532e
本次使用的固件是华为532e系列路由器
固件下载地址: https://github.com/CcccccccJun/cloud
首先使用binwalk来提取固件 这里要注意一下 如果binwalk没有提取到root文件夹 那么问题出在没有安装相应的文件系统
该固件需要安装的是sasquatch 配置好相关环境后可以成功提取到文件
随后我们将root目录打包成压缩文件 供等下上传到模拟系统中tar -czvf 1.tar squashfs-root/
qemu模拟有多种形式 本次我们使用的是系统模拟 同时通过file观察任意的可执行文件 可以注意到该路由器使用的是MIPS架构
为此 我们需要准备MIPS的内核文件以及一个MIPS架构的虚拟机映像文件
可以在该网站上下载 https://people.debian.org/~aurel32/qemu/mips/
随后我们需要创建一个TUN/TAP虚拟网络接口 其可以在操作系统和用户空间之间进行网络数据包的传输 便于我们在虚拟机中连接到启动后的路由器
tunctl -t top0 -u root |
我们给予的top0接口的ipv4地址的子网号可以为任意 同时要使用默认网关
随后我们利用qemu进行系统模拟qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net nic -net tap,ifname=top0 -nographic
为qemu模拟出来的虚拟机增加了一个TAP设备的虚拟网络接口top0用于通信
默认的登录账号和密码都是root
我们将eth0接口配置和刚才top0接口相同的c段ifconfig eth0 192.169.10.2
随后就可以在ubuntu中访问到debian虚拟机
随后我们利用scp把刚才打包好的压缩文件上传到debian虚拟机中scp 1.tar root@192.168.10.2:/root/
但是这里报错了
大概意思是debian虚拟机中的openssh禁用了ssh-dss算法
我们需要手动加上参数来允许
scp -oHostKeyAlgorithms=+ssh-dss 1.tar root@192.168.10.2:/root/ |
随后回到debian虚拟机 利用tar –zxvf 1.tar
命令进行解压
接着我们需要将/dev目录与squashfs-root目录进行绑定 使得可以访问到所需的设备文件
同理 将/proc目录挂载到squashfs-root对应的目录下
mount -o bind /dev ./squashfs-root/dev |
随后以squashfs-root目录为根目录 执行shellchroot ./squashfs-root/ sh
由于在路由器启动后 eth0接口的ip地址会被更改 所以我们需要在启动路由器的过程中 重新配置eth0接口 这也就意味着我们需要连接两个会话
已有的会话是通过qemu模拟后直接生成的虚拟机 不会随着ip的更改而断开 而通过ssh连接的会话会因为ip受到影响
于是 我们需要在ssh的会话中启动路由器 随后这个ssh进程就会因为ip改变而卡住 然后我们再通过原本的会话重新配置eth0 就可以成功启动路由器的同时 保证我们的eth0还是原本的ip地址
./bin/upnp |
启动路由器的环境
成功启动后 我们就可以在宿主机中访问到路由器了
这里使用360浏览器是因为其他浏览器不支持TLS1.0的协议 导致无法成功访问