0x01netsh简介

自Windows XP开始,Windows中就内置网络端口转发的功能。任何传入到本地端口的TCP连接(IPv4或IPv6)都可以被重定向到另一个本地端口,或远程计算机上的端口,并且系统不需要有一个专门用于侦听该端口的服务。

在Linux中,使用iptables可以非常轻松地配置端口重定向。在Windows Server系统上,路由和远程访问服务(RRAS)通过使用虚拟专用网络 (VPN) 或拨号连接支持远程用户或站点到站点连接,但这种方式相对较为麻烦。其实,除此之外还有一种更为简单的方法可以帮助我们在Windows中实现端口转发。

0x02 netsh使用

即我们可以使用命令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= listenaddress=192.168.190.133 connectport= connectaddress=192.168.190.133

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

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

netstat -ano | findstr :3340

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

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

以上条件必须满足,如果没有IP Helper服务且未启用IPv6支持,则端口重定向将不起作用。

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

tasklist | findstr 856

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

如果不出问题的话,连接应该会被成功建立。

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

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

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

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

netsh interface portproxy show all

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

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

netsh interface portproxy dump

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

netsh interface portproxy delete v4tov4 listenport= listenaddress=192.168.190.133 

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

netsh interface portproxy reset

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

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

netsh interface portproxy add v4tov4 listenport= listenaddress=0.0.0.0 connectport= connectaddress=192.168.100.133

此规则将所有传入的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 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。

0x03 03和08中netsh的不同

首先是03中netsh命令选项

08的netsh

明显看到选项参数有不同,而且明显08的netsh选项参数多了一些。

具体的大家可以查询使用帮助和官方文档进行学习使用。

windows自带的netsh的使用的更多相关文章

  1. windows自带的netsh 端口转发

    netsh interface portproxy show v4tov4 (3)添加“端口映射” netsh interface portproxy add v4tov4 listenaddress ...

  2. Windows自带的端口转发工具netsh使用方法_DOS/BAT

    Windows自带的端口转发工具netsh使用方法_DOS/BAT   作者:用户 来源:互联网 时间:2017-02-22 17:24:30 netsh 端口转发 摘要: 下面的代码在windows ...

  3. Windows自带Android模拟器启动失败

    Windows自带Android模拟器启动失败 错误信息:[Critical] XDE Exit Code: InvalidArguments (3)XDE执行的第三个参数为设置内存值,形式为/mem ...

  4. delphi调用windows自带语音功能

    windows自带语音接口 SAPI.SpVoice, 接口说明如下 https://docs.microsoft.com/en-us/previous-versions/windows/deskto ...

  5. 教你用Windows自带工具给优盘/移动硬盘添加密码

    教你用Windows自带工具给优盘/移动硬盘添加密码 本文中优盘,移动硬盘和分区操作方式一样,为方便描述,下文将只说优盘 优盘成了很多人每天都会用到的工具,有时候自己优盘会存着一些不希望别人看到的文件 ...

  6. WINDOWS自带md5校验工具

    WINDOWS自带的工具certutil.exe,   certutil -hashfile chropp.exe MD5; 就可以了

  7. 用windows自带的ftp.exe实现断点续传的方法

    摘自http://www.jb51.net/article/10604.htm 动画下载地址: http://www.chinesehack.org/soft/book/goonftp-jc.rar ...

  8. Java内存泄露分析和解决方案及Windows自带查看工具

    Java内存泄漏是每个Java程序员都会遇到的问题,程序在本地运行一切正常,可是布署到远端就会出现内存无限制的增长,最后系统瘫痪,那么如何最快最好的检测程序的稳定性,防止系统崩盘,作者用自已的亲身经历 ...

  9. windows自带杀毒防火墙

    windows自带杀毒防火墙 Windows Defender FireWall

随机推荐

  1. JAVA测试(选择题)

    1.分析如下所示的Java代码,其中this关键字的意思是(  ) Public class Test { Private String name; Public String getName(){ ...

  2. iptables的删除命令中的相关问题

    最近在做一个VPN中间件的配置工作,在配置iptables的时候,当用户想删除EIP(即释放当前连接),发现使用iptables的相关命令会提示错误. iptables: Bad rule (does ...

  3. Ganglia环境搭建并监控Hadoop分布式集群

    简介 Ganglia可以监控分布式集群中硬件资源的使用情况,例如CPU,内存,网络等资源.通过Ganglia可以监控Hadoop集群在运行过程中对集群资源的调度,作为简单地运维参考. 环境搭建流程 1 ...

  4. C#基础知识总结(一)

    1.什么是匿名函数?匿名函数,就是没有名字的函数,或者说就是一组代码块,他的参数只有在方法块内有效,可以有效的减小创建方法事所需要的系统开销 2.lambda表达式是什么?lambda表达式 就是一个 ...

  5. java+selenium-3.9.1多线程 打开连接截取屏幕截图

    废话不多说上代码:(我是用的chrome举得例子哈) 第一步,需要chromedriver.exe 目的和调起chrome 浏览器打开连接,chromedriver.exe的版本与你的chrome版本 ...

  6. AppScan工具使用-实战一

    本文首发于简书https://www.jianshu.com/p/639cf894838e 工具已经安装完成,废话不多说,直接拿手上的项目使用一下. 1.打开工具,点击文件-新建 2.打开新建扫描 3 ...

  7. 【linux】记录一个yum update和upgrade的区别

    yum update 更新软件包和系统软件.系统内核 yum upgrade只更新软件包,不更新系统软件和系统内核 查看版本号 [root@localhost ~]# uname -r 3.10.0- ...

  8. Hive之行转列与列转行

    行转列 原始数据: 需求: 把星座和血型一样的人归类到一起.结果如下: 射手座,A 大海|凤姐 白羊座,A 孙悟空|猪八戒 白羊座,B 宋宋 实现: vi person_info.txt 孙悟空 白羊 ...

  9. git远程操作相关命令(remote 、push、fetch 、pull)

    git remote 为了便于管理,Git要求每个远程主机都必须指定一个主机名.为了便于管理,Git要求每个远程主机都必须指定一个主机名. git remote[查看创库名] git remote 在 ...

  10. java架构之路-(分布式zookeeper)zookeeper集群配置和选举机制详解

    上次博客我们说了一下zookeeper的配置文件,以及命令的使用https://www.cnblogs.com/cxiaocai/p/11597465.html.我们这次来说一下我们的zookeepe ...