正反向连接、反弹Shell与 OOB 实战:基于 WSL2 Kali + VMware Win10 的攻防场景复现(一)
文章目录实验环境架构环境组成为什么选择这个架构核心概念预览第一步网络配置1.1 获取 WSL2 Kali IP 地址1.2 配置 VMware 网络模式方案一NAT 模式本文示例采用此种模式方案二桥接模式可直接连接1.3 WSL2 与 VMware 网络连通性问题情况一使用 NAT 模式情况二使用桥接模式1.4 验证网络连通性1.5 创建测试工具可选环境信息速查表总结免责声明本文内容仅用于授权的安全测试和教学研究。未经授权的渗透测试行为违反《中华人民共和国网络安全法》及相关法律法规。系列导读本系列共 5 篇从环境搭建到完整攻击流程循序渐进讲解渗透测试中的核心技术。[第一篇环境搭建与网络配置]当前第二篇OOB 带外数据验证技术第三篇工具上传与文件传输第四篇反弹 Shell 实战第五篇完整攻击流程与防御在网络安全渗透测试中获得初始的命令执行权限往往只是第一步。面对目标系统复杂的网络环境如防火墙策略、内网隔离和应用限制如命令无回显如何建立一个稳定、可交互的控制通道Shell是后续操作的关键。本系列将通过一个实战场景系统性地解析反弹 Shell、带外OOB数据验证以及正反向连接等核心技术的原理与应用并详细说明如何在 WSL2 Kali VMware Win10 环境中模拟这些场景。实验环境架构环境组成宿主机Windows 10攻击机WSL2 Kali Linux嵌套在宿主机内目标机VMware Workstation 内的 Windows 10 虚拟机为什么选择这个架构这个架构的优势在于隔离性VMware 虚拟机与宿主机网络隔离适合模拟真实渗透场景灵活性WSL2 提供完整的 Linux 渗透工具链安全性所有操作在本地完成不会影响外部网络可重复性可以随时重置虚拟机状态核心概念预览在深入实战之前我们先了解几个关键概念这些概念将在后续文章中详细展开反弹 Shell (Reverse Shell)由目标机器主动向攻击者的监听端口发起连接核心目的是绕过目标侧的防火墙入站限制。带外数据 (Out-of-Band, OOB)当命令执行结果无法直接显示时利用目标服务器能够发起外部网络请求如 DNS 查询、ICMP Ping、HTTP 请求的特性间接获取数据。正向与反向连接正向连接 (Bind Shell)攻击机主动连接目标机反向连接 (Reverse Shell)目标机主动连接攻击机第一步网络配置1.1 获取 WSL2 Kali IP 地址在 WSL2 Kali 终端中执行ipaddr show eth0记录inet字段中的 IP 地址例如172.30.154.92为什么需要获取 WSL2 IPWSL2 使用虚拟网络适配器与宿主机不在同一网段。VMware 虚拟机需要知道攻击机的 IP 地址才能发起反向连接。WSL2 的 IP 地址通常是动态分配的每次重启可能会变化。1.2 配置 VMware 网络模式首先选择网络模式将 VMware Win10 虚拟机的网络适配器设置为NAT 模式推荐或桥接模式。方案一NAT 模式本文示例采用此种模式NAT 模式的特点虚拟机通过 VMware NAT 服务获取 IP如192.168.147.128可以与 Windows 主机通信需要配合端口转发访问 WSL2适合隔离测试环境配置步骤打开 VMware Workstation右键点击 Win10 虚拟机 → 设置选择网络适配器选择NAT 模式点击确定方案二桥接模式可直接连接桥接模式的特点虚拟机尝试直接从路由器获取 IP如果成功与宿主机在同一网段如192.168.0.x优势虚拟机、宿主机、WSL2 都在同一网段无需端口转发即可直接通信需要配置需要正确设置 VMware 的桥接网卡可能的问题某些网络环境如路由器 DHCP 限制、交换机端口安全策略可能导致虚拟机获取到169.254.x.x自动配置地址配置步骤步骤一选择桥接模式打开 VMware Workstation右键点击 Win10 虚拟机 → 设置选择网络适配器选择桥接模式直接连接物理网络勾选复制物理网络连接状态点击确定步骤二配置 VMware 虚拟网络编辑器关键打开 VMware Workstation管理员方式打开点击编辑 → “虚拟网络编辑器”点击更改设置需要管理员权限找到类型为桥接模式的网络通常是 VMnet0在桥接至下拉菜单中选择你正在使用的物理网卡如果使用有线网络选择对应的以太网卡如 Realtek PCIe GbE Family Controller如果使用无线网络选择对应的无线网卡如 Intel Wi-Fi 6 AX200不要选择自动手动指定正确的网卡点击确定保存如何确认正在使用的物理网卡按Win R输入ncpa.cpl回车查看网络连接窗口找到状态为已连接的网络适配器记住网卡名称然后在 VMware 中选择对应的步骤三重启虚拟机网络在虚拟机中执行以下命令刷新网络# 释放 IP ipconfig /release # 重新获取 IP ipconfig /renew步骤四验证 IP 地址在虚拟机中执行ipconfig如果配置成功你应该看到IPv4 地址 . . . . . . . . . . . . : 192.168.0.xxx 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关 . . . . . . . . . . . . : 192.168.0.1桥接模式失败的表现在虚拟机中执行ipconfig如果看到自动配置 IPv4 地址 . . . . . . . : 169.254.161.103说明桥接模式没有获取到有效 IP。此时应切换到 NAT 模式。常见问题排查问题 1获取到 169.254.x.x 地址原因DHCP 获取失败解决检查路由器 DHCP 服务是否正常尝试手动设置静态 IP切换回 NAT 模式问题 2找不到对应的物理网卡解决在虚拟网络编辑器中点击“还原默认设置”重启 VMware 相关服务以管理员身份运行 PowerShellRestart-ServiceVMwareNATServiceRestart-ServiceVMnetDHCP问题 3公司/学校网络限制某些网络环境会限制 MAC 地址导致桥接模式无法获取 IP。解决使用 NAT 模式1.3 WSL2 与 VMware 网络连通性问题重要提示连通性解决方案取决于你选择的网络模式。情况一使用 NAT 模式在 WSL2 VMware 的架构中NAT 模式下的虚拟机无法直接 ping 通WSL2 Kali。问题现象在 VMware 虚拟机中执行ping 172.30.154.92可能会看到来自 192.168.0.104 的回复无法访问目标主机。问题原因WSL2 使用 Hyper-V 虚拟交换机这个虚拟网络对 VMware 不可见Windows 主机没有启用路由转发Windows 默认不会将 VMware 虚拟网络的流量转发到 WSL2 虚拟网络网络隔离WSL2 的虚拟网络172.16.0.0/12与 VMware 的虚拟网络不在同一网段解决方案Windows 端口转发这是最可靠的方案通过 Windows 主机作为中转实现间接连通。步骤一配置端口转发以管理员身份打开 Windows PowerShell执行# 转发反弹 Shell 端口netsh interface portproxy add v4tov4 listenport5566 listenaddress0.0.0.0 connectport5566 connectaddress172.30.154.92# 转发 HTTP 服务器端口用于文件上传netsh interface portproxy add v4tov4 listenport8000 listenaddress0.0.0.0 connectport8000 connectaddress172.30.154.92步骤二验证端口转发netsh interface portproxy show all你应该看到监听 0.0.0.0:5566 连接 172.30.154.92:5566 监听 0.0.0.0:8000 连接 172.30.154.92:8000步骤三配置 Windows 防火墙New-NetFirewallRule-DisplayNameAllow Port 5566-Direction Inbound-LocalPort 5566-Protocol TCP-Action AllowNew-NetFirewallRule-DisplayNameAllow Port 8000-Direction Inbound-LocalPort 8000-Protocol TCP-Action Allow流量路径VMware 虚拟机 → 192.168.0.108:5566 → Windows 端口转发 → 172.30.154.92:5566 (Kali)注意请将192.168.0.108替换为你的实际物理机 IP 地址。步骤四自动配置脚本可选由于 WSL2 重启后 IP 可能变化可以创建一个 PowerShell 脚本自动配置# setup-portproxy.ps1$kaliIP(wsl hostname-I).Trim()Write-HostKali IP:$kaliIP# 清除现有转发规则netsh interface portproxy reset# 添加新的转发规则netsh interface portproxy add v4tov4 listenport5566 listenaddress0.0.0.0 connectport5566 connectaddress$kaliIPnetsh interface portproxy add v4tov4 listenport8000 listenaddress0.0.0.0 connectport8000 connectaddress$kaliIPWrite-HostPort proxy configured successfully!netsh interface portproxy show all步骤五实验结束后清理netsh interface portproxy delete v4tov4 listenport5566 listenaddress0.0.0.0 netsh interface portproxy delete v4tov4 listenport8000 listenaddress0.0.0.0情况二使用桥接模式如果桥接模式配置成功虚拟机与宿主机在同一网段如192.168.0.x。验证连通性在虚拟机中执行# ping 宿主机 ping 192.168.0.108 # 尝试 ping WSL2取决于路由配置 ping 172.30.154.92注意即使使用桥接模式由于 WSL2 使用 Hyper-V 虚拟网络可能仍然需要配置路由或端口转发才能访问 WSL2。1.4 验证网络连通性验证 Windows 到 WSL2 的连通性在 Windows 主机上执行ping 172.30.154.92验证 VMware 到 Windows 的连通性在 VMware 虚拟机中执行ping 192.168.0.108将192.168.0.108替换为你的实际物理机 IP 地址。验证端口转发是否生效在 VMware 虚拟机中执行Test-NetConnection -ComputerName 192.168.0.108 -Port 5566将192.168.0.108替换为你的实际物理机 IP 地址。如果TcpTestSucceeded为True说明端口转发配置成功。为什么需要验证连通性网络连通性是后续所有操作的基础。如果两台机器无法互相通信反弹 Shell 和文件上传都无法成功。常见问题排查ping 不通 WSL2这是正常现象使用端口转发方案端口转发失败检查 Windows 防火墙是否放行端口WSL2 IP 变化重新运行自动配置脚本Test-NetConnection 失败检查端口转发规则和防火墙设置虚拟机获取到 169.254.x.x 地址VMware NAT 服务未启动按照 1.3 节修复桥接模式无法获取 IP切换到 NAT 模式1.5 创建测试工具可选为了后续演示命令执行漏洞的不同场景可以在目标机上准备一个测试用的批处理文件。创建simulate_vuln.bat在 VMware Win10 虚拟机中创建批处理文件保存到桌面echo off setlocal enabledelayedexpansion set cmd%~1 !cmd!保存路径C:\Users\Administrator\Desktop\simulate_vuln.bat用途说明这个批处理文件用于模拟真实的命令执行漏洞环境有回显模式直接执行命令并显示结果模拟理想情况无回显模式盲注修改为!cmd! nul 21后命令执行但不显示结果模拟真实渗透中常见的盲注场景注意此工具仅用于教学演示后续的 OOB 验证和反弹 Shell 操作可以直接在 PowerShell 中执行不一定依赖此批处理文件。环境信息速查表组件IP 地址说明WSL2 Kali172.30.154.92攻击机动态分配Windows 主机192.168.0.108端口转发中转VMware Win10192.168.147.128目标机NAT 模式总结通过本文的配置你已经完成了以下工作获取了 WSL2 Kali 的 IP 地址配置了 Windows 端口转发解决了 WSL2 与 VMware 的网络连通性问题配置了 VMware 网络模式验证了网络连通性创建了测试工具simulate_vuln.bat下一步环境搭建完成后我们需要准备一个关键工具——DNSLog 服务用于后续的命令执行验证。下一篇将详细介绍 DNSLog 的原理与配置以及如何在盲注场景下使用 OOB 技术获取命令执行结果。下一篇预告OOB 带外数据验证技术当命令执行漏洞存在但看不到输出时如何验证漏洞如何使用 DNS 查询间接获取命令结果下一篇将为你揭晓。