基于 Neo-reGeorg 的虚拟机内网穿透实验:物理机访问隔离内网 Web 服务
声明
- 本次实验使用的Ptunnel和rdesktop为kali系统内置,(原项目地址分别为:https://github.com/ptunnel-win/ptunnel和https://github.com/rdesktop/rdesktop),更多用法详见项目官方文档;
- 本文仅为个人技术实验记录,工具使用需严格遵守当地法律法规,请勿用于任何未授权的网络活动,违规使用后果自负。
- 个人仍处于初级学习阶段,难免出现原理解释错误与疏漏的问题,若出现谬误之处欢迎各位批评指正。
相关原理介绍
ICMP 协议:ICMP(互联网控制报文协议)的核心功能是网络状态检测(如 ping 命令),绝大多数防火墙默认放行 ICMP 流量,也是本次实验所依托的原理。
Ptunnel 是一种应用程序,允许你通过 ICMP 回声请求和回复包(通常称为 ping 请求和回复)可靠地将 TCP 连接隧道到远程主机。(本条关于ptunnel的介绍引用自原帖https://github.com/ptunnel-win/ptunnel)
环境搭建
-
在vmware中开启三个虚拟机ABC,我使用的配置如下:A(kali系统 NAT模式IP:192.168.245.136(模拟外网攻击机))、B(kali系统 配置双网卡:NAT模式IP:192.168.245.135,lan区段IP为10.0.0.1(模拟内网IP))、C(win7系统 lan区段IP地址为10.0.0.2(模拟和B同段并作为被攻击机))
-
测试ABC之间的ping指令,A无法ping通C,如果B对C的ping失败,可能是win7防火墙拦截原因,前往步骤3设置防火墙拦截规则

-
对win7系统防火墙规则以及远程桌面规则进行确认:启用文件和打印机共享(回显请求 - ICMPv4-In)规则,重新尝试2发现可以ping通C主机,并启用远程桌面 - TCP-In规则,检查是否开启了远程桌面连接(使用cmd命令检查默认3389端口/我的电脑-属性-远程桌面连接)
开始tunnel搭建
-
在B上执行以下命令,-x后面是设置隧道的连接密码,看到下面Ping proxy is listening等字样说明开始运行。

-
在A上执行sudo ptunnel -p 192.168.245.135 -lp 1080 -da 10.0.0.2 -dp 3389 -x ooo123(请分别替换为你的B机IP、A本机运行tunnel端口、C机IP和远连端口、和连接密码) 执行之后,当A机上访问本机1080,数据将打包成 ping 包(ICMP)发给B解包后,把数据转发给C的3389端口,并通过B机打包成 ping 包回传给A的1080端口。

-
接下来涉及如何利用3389传回的数据,我这里用的A机集成的rdesktop接收1080端口数据(其它系统可以去前面的github链接下载)保持 A 机的 ptunnel 客户端终端运行,另开一个终端执行以下命令,通过隧道连接 C 机远程桌面:
rdesktop -u 用户名 -p 密码 127.0.0.1:1080 (用户名和密码为C机的系统用户和密码)

输入yes后成功获取c的桌面连接。
后记
- 在实际服务器中很多防火墙对ICMP协议拦截不严格,常常忽视对 ICMP 报文数据段的深度检测,当可以ping通内网主机的时候,可以尝试利用本次实验提供的思路,使用隧道绕过防火墙的检测,相比暴力,此类基于协议特性的伪装方式更隐蔽,流量表现与正常 ping 请求差异极小,因此较适用于内网横向移动场景,若防火墙对ICMP报文深度检测,也应灵活选择,不单一依赖隧道技术。
- 其它桌面连接工具如freerdp连接失败问题(kali内置xfreerdp3我使用时无法建立连接,去查了查文档发现有以下解释和解决方案),之后我换用了rdesktop可以建立成功,查阅得知:Win7 系统的远程桌面(RDP)是早期版本,仅支持 RDP 弱加密(RC4) 和 TLS 1.0,而rdesktop不强制 TLS 握手,直接通过 RDP 弱加密传输数据,避开了 TLS 版本不兼容的问题,加上仍支持 win7 RDP 依赖的 RC4 加密算法,故可兼容win7.

部分信息可能已经过时







