路由器环境配置

网桥

网桥(Bridge)在网络中类似于一个虚拟的交换机,能够连接多个网络接口,使这些接口位于同一个局域网内,可以相互通信。在虚拟化环境中,网桥常用于将虚拟机的网络接口与主机的网络接口连接起来,从而使虚拟机和主机能够在同一个网络中相互通信。

网桥相关的概念解释

  1. 什么是网桥(Bridge)? 网桥是一个用于连接多个网络接口的设备(或者说是逻辑设备)。通过网桥,多个网络接口可以共享同一个网络,使得这些接口可以像处于同一物理局域网(LAN)中一样互相通信。对于虚拟机环境而言,网桥允许虚拟机通过主机的网络设备访问外部网络或与主机通信。

  2. 为什么需要网桥? 在虚拟化环境中,例如 QEMU 中,虚拟机默认是隔离的,如果希望虚拟机能够和主机以及外部网络通信,就需要建立一条网络连接。网桥可以实现虚拟机和主机的网络互通,使虚拟机能够使用主机的网络接口,与外部设备通信,或者与其他虚拟机通信。

具体步骤中的网桥配置说明

  1. 安装网络桥接工具
sudo apt-get install bridge-utils

bridge-utils 是管理网桥的工具集,它提供了创建、删除和管理网桥的命令(如 brctl 命令)。

  1. 创建网桥 Virbr0
sudo brctl addbr Virbr0

brctl addbr 是用于创建一个新的网桥的命令。 Virbr0 是你为这个网桥命名的名字(你可以取其他名称,但为了规范和清晰,通常用 Virbr 或 br0 这样的名字)。 网桥的作用:将虚拟机和主机的网络设备(如 tap 设备或物理网卡)连接在一起,让它们处于同一个局域网中。

  1. 为网桥分配 IP 地址并启用
sudo ifconfig Virbr0 192.168.50.51/24 up

ifconfig 是用于配置网络接口的命令。 Virbr0 是刚才创建的网桥接口。 192.168.50.51/24 是为这个网桥分配的 IP 地址(这里假设你的局域网是 192.168.50.x 网段)。 up 表示启用该接口。

为什么要为网桥分配 IP? 虽然网桥本身不需要参与通信,但如果你想通过主机与虚拟机通信,就需要为网桥分配一个 IP 地址,这样你就可以在主机上通过该 IP 地址与虚拟机通信。

  1. 创建 TAP 接口
sudo tunctl -t tap0

tunctl 用于创建虚拟网络接口,tap0 是你创建的虚拟网络接口的名称。 TAP接口的作用:TAP 接口是一种虚拟网络接口,专门用于虚拟机的网络连接。它模拟了一个网卡设备,虚拟机可以通过这个接口与网桥连接,从而与主机和外部网络通信。

  1. 为 TAP 接口分配 IP 地址
sudo ifconfig tap0 192.168.50.52/24 up

为 tap0 接口分配 IP 地址(比如 192.168.50.52),以便虚拟机通过这个 IP 与主机通信。 tap0 其实是虚拟机的网卡接口,它通过网桥连接到主机网络。

  1. 将 TAP 接口添加到网桥
sudo brctl addif Virbr0 tap0

brctl addif 命令用于将一个接口(这里是 tap0)添加到网桥中(这里是 Virbr0)。 作用:将 TAP 接口连接到网桥 Virbr0 上,这样 TAP 接口就可以通过网桥和主机通信。虚拟机通过 tap0 接口连接到网桥,主机通过 Virbr0 接口连接到同一个网桥,二者通过这个网桥通信。

总结: 网桥(Virbr0)相当于一个虚拟交换机,虚拟机通过 tap0 接口与这个网桥连接,主机则通过网桥 Virbr0 与虚拟机进行网络通信。具体步骤如下:

创建网桥:将多个网络接口(如 tap0 和主机的网络接口)加入到同一个网桥(Virbr0)中,使它们能够互通。 创建 TAP 接口:TAP 接口是虚拟机的网络接口,它相当于虚拟机的虚拟网卡。 添加 TAP 接口到网桥:将虚拟机的 TAP 接口与网桥连接,使虚拟机通过这个网桥与主机通信。 通过这种方式,虚拟机可以像物理网络设备一样参与到主机的网络中,实现与主机以及外部设备的通信。

模板

Ubuntu16.04操作系统 qemu虚拟机 HG532eV100R001C01B020_upgrade_packet.bin固件 Ghidra逆向分析工具

1.提取固件 apt-get -y install binwalk #需要提前安装binwalk binwalk -Me HG532eV100R001C01B020_upgrade_packet.bin #解压后主程序位于squashfs-root/目录下

2.下载qemu虚拟机 sudo apt-get install -y qemu binfmt-support qemu-user-static

3.下载镜像 https://people.debian.org/~aurel32/qemu/

wget https://people.debian.org/~aurel32/qemu/mips/debian_squeeze_mips_standard.qcow2 wget https://people.debian.org/~aurel32/qemu/mipsel/vmlinux-3.2.0-4-4kc-malta

  • 这个是在linux虚拟机里面创建一个网桥 4.配置网络,创建网桥,实现虚拟机内部和Ubuntu的连接 sudo apt-get install bridge-utils sudo brctl addbr Virbr0 sudo ifconfig Virbr0 192.168.50.51/24 up

  • 这个是在linux虚拟机里面创建tap接口 5.创建tap接口,添加到网桥 sudo apt install uml-utilities sudo tunctl -t tap0 sudo ifconfig tap0 192.168.50.52/24 up sudo brctl addif Virbr0 tap0

6.qemu虚拟机配置,账号密码都为root apt install qemu-system-mips apt install qemu-system-arm

#记得到下载的镜像下进行启动 sudo qemu-system-mips -M malta -kernel vmlinux-3.2.0-4-4kc-malta -hda debian_squeeze_mips_standard.qcow2 -append “root=/dev/sda1 console=tty0” -netdev tap,id=tapnet,ifname=tap0,script=no -device rtl8139,netdev=tapnet -nographic

#进入qemu虚拟机后,配置ip地址,测试与主机的连通性

  • 这个是在qemu启动后为eth0分配ip地址,同时测试和虚拟机的连通性 ifconfig eth0 192.168.50.53/24 up ping 192.168.50.51 -c 3

7.搭建漏洞环境 #回到linux虚拟机中将squashfs-root文件夹复制到虚拟机,根据提示输入密码root

  • 这个192.168.50.53就是刚才在qemu中为eth0分配的ip地址

  • 后来阅读相关文章说是最好传送压缩包,不要直接传送整个文件系统 tar -czvf squashfs-root.tar.gz squashfs-root scp -r squashfs-root.tar.gz root@192.168.50.53 :~/ tar -xzvf squashfs-root.tar.gz

  • 以下操作都是在qemu虚拟机中 #进入启动的qemu虚拟机,挂载程序文件 mount -o bind /dev ./squashfs-root/dev mount -t proc /proc ./squashfs-root/proc #启动shell,注意:这个shell是用来后面改IP地址的, chroot squashfs-root sh brctl addbr br0 ifconfig br0 192.168.50.100 up

  • 以下操作在linux虚拟机中 #在Ubuntu里面再单独开一个终端,使用ssh连接上去通过ssh启动的终端,启动路由器 ssh root@192.168.50.53 chroot squashfs-root /bin/sh ./bin/upnp ./bin/mic

#此时的qemu虚拟机的路由IP已经发生了变化,ssh已经断开了,所以需要返回qemu虚拟机的终端进行更改IP地址 ifconfig eth0 192.168.50.53/24 up ifconfig br0 192.168.50.52/24 up

其他记录

ps aux | grep qemu

./gdbserver 0.0.0.0:7777 ./bin/httpd gdb-multiarch -q ./bin/httpd target remote 192.168.50.100:7777

cp /usr/bin/qemu-arm-static ./ sudo chroot ./ sh ./qemu-arm-static -g 1234 ./bin/httpd