快捷搜索:  网络  后门  CVE  渗透  木马  扫描  黑客  as

怎么样在Windows中使用netsh命令进行端口转发

自Windows XP最先,Windows中就内置收集端口转发的功能。任何传入到内陆端口的TCP连接(IPv4或IPv6)都可以被重定向到另一个内陆端口,或遥程计算机上的端口,并且体系不需要有一个专程用于侦听该端口的服务。

在Linux中,使用iptables可以无比轻松地设置端口重定向。在Windows Server体系上,路由以及遥程走访服务(RRAS)通过使用捏造专用收集 (VPN) 或拨号连接支持遥程用户或站点到站点连接,但这类方式相对于较为麻烦。实在,除此之外还有一种更为简单的要领可以帮助我们在Windows中完成端口转发,即我们可以使用命令Netsh的Portproxy模式设置Windows中的端口转发。该命令的语法以下:

netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport

listenaddress – 守候连接的内陆IP地址。

listenport – 内陆侦听TCP端口。

connectaddress – 将传入连接重定向到内陆或遥程IP地址(或DNS名称)。

connectport – 一个TCP端口,来自listenport的连接会被转发到该端口。假设当前我们的RDP服务端口在一个非标准端口上进行响应,如3340(端口可以在服务配置中更改)。为此,我们需要将传入流量从TCP端口3340重定向到另一个内陆端口 – 3389(即标准rdp端口)。

我们以治理员身份启动命令提示符并执行下列命令:

netsh interface portproxy add v4tov4 listenport=3340 listenaddress=10.1.1.110 connectport=3389 connectaddress=10.1.1.110

如何在Windows中使用netsh命令进行端口转发

10.10.1.110 – 计算机的当前IP地址。

使用netstat确保3340端口当前处于被侦听状态:

netstat -ano | findstr :3340

如何在Windows中使用netsh命令进行端口转发

注意:要是该命令未返归任何内容并且通过netsh interface portproxy进行端口转发不成功,则请确保iphlpsvc(IP Helper)服务当前已在你的体系上运行。

如何在Windows中使用netsh命令进行端口转发

必须在为其创建端口转发规则的收集接口上启用IPv6支持。

如何在Windows中使用netsh命令进行端口转发

以上前提必须餍足,要是没有IP Helper服务且未启用IPv6支持,则端口重定向将不起作用。

你可以使用其PID找出正在侦听此端口的进程(在我们的示例中PID为636):

tasklist | findstr 636

让我们使用任意的RDP客户端尝试从遥程体系连接到此计算机。指定RDP端口3340,在RDP服务器地址后以冒号分隔,例如10.10.1.110:3340

如何在Windows中使用netsh命令进行端口转发

要是不出问题的话,连接应该会被成功确立。

重要:请确保防火墙(Windows防火墙或通常包含在杀毒软件中的第三方防火墙)允许到新端口的传入连接。 若有必要,可以使用下列命令添加新的Windows防火墙规则:

netsh advfirewall firewall add rule name=”forwarded_RDPport_3340” protocol=TCP dir=in localip=10.1.1.110  localport=3340 action=allow

你可以创建任意数量的Windows端口转发规则。所有netsh interface portproxy规则都是持久性的,黑客漏洞,并会在Windows体系重启后被保存。

显示体系中的转发规则列表:

netsh interface portproxy show all

在我们的例子中,只有一个转发规则即从3340到3389端口的转发:

Listen on ipv4:             Connect to ipv4:
Address         Port        Address         Port
--------------- ----------  --------------- ----------
10.1.1.110     3340        10.1.1.110     3389

如何在Windows中使用netsh命令进行端口转发

Tip:此外,portproxy配置可以通过下列命令查看:

netsh interface portproxy dump
#========================
# Port Proxy configuration
#========================
pushd interface portproxy
reset
add v4tov4 listenport=3340 connectaddress=10.1.1.110 connectport=3389
popd
# End of Port Proxy configuration

如何在Windows中使用netsh命令进行端口转发

删除指定的端口转发规则:

netsh interface portproxy delete v4tov4 listenport=3340 listenaddress=10.1.1.110

清除所有当前的端口转发规则:

netsh interface portproxy reset

重要:以上端口转发仅适用于TCP端口,对于UDP端口将不起作用,并且不能使用127.0.0.1作为连接地址。

要是要将传入的TCP连接转发至另一台计算机,则命令以下:

netsh interface portproxy add v4tov4 listenport=3389 listenaddress=0.0.0.0 connectport=3389 connectaddress=192.168.100.101

此规则将所有传入的RDP要求(到3389端口)从此计算机重定向到IP地址为192.168.1.101的遥程计算机上。

portproxy的另一个特性就是可以让它看起来像任意的遥程收集服务在内陆运行。

例如,将连接从内陆端口5555转发至遥程地址157.166.226.25(CNN网站):

netsh interface portproxy add v4tov4 listenport=5555 connectport=80 connectaddress= 157.166.226.25 protocol=tcp

现在,要是你在阅读器中走访http://localhost:5555/,则将关上CNN网站的主页。因此,绝管阅读器对内陆计算机进行了寻址,但它仍会关上一个遥程页面。

如何在Windows中使用netsh命令进行端口转发

端口转发还可用于将端口从网卡的外部地址,转发到在同一计算机上运行的捏造机端口。

此外,在Windows Server 2012 R2中情形可能会有所不同。在Windows Server 2012 R2中,端口转发规则仅在体系重启之前有用,并且在重启后它们会被重置。出现这类病情形,你需要检查收集接口上是否存在定期断开连接,和操作体系引导时IP地址是否发生更改(最佳使用静态IP地址)。作为一种解决方案,我会添加一个使用netsh interface portproxy规则的脚本到Windows scheduler,以在体系启动时运行。

在Windows Server 2003/XP中,必须在注册表项HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters中另外将IPEnableRouter参数配置为1。

*参考来源:woshub, secist 编译,

您可能还会对下面的文章感兴趣: