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. .Net基础篇_学习笔记_第四天_switch-case

    swith-case 用来处理多条件的定值的判断. 语法: switch(变量或者表达式的值) { case 值1:要执行的代码: break: case 值2:要执行的代码: break: case ...

  2. window 定时关机小程序bat

    复制以下文本,新建txt文件并修改为bat后缀 如图: @echo off title 定时关机 echo 定时关机程序 echo ---------------------------------- ...

  3. Winforn中导入Excel并显示然后获取多选框选中的内容

    场景 使用NPOI导入Excel并赋值给DataTable,然后显示在DataGrdView上,并且添加多选框,然后获取选中行的内容. Winform中使用NPOI实现Excel导入并赋值给DataT ...

  4. JS权威指南需要注意的知识点(1-6章)

    客官快来看一看了,都给你浓缩好了,确定不进来搂一眼嘛,走过路过不要错过哟 in运算符 in运算符希望它的左操作数是一个字符串或可以转化为字符串,希望它的右操作数是一个对象,如果右侧的对象拥有一个名为左 ...

  5. 取html里的img和去html标签

    C#  : public string RemoveHTML(string html) { html = Regex.Replace(html, @"<script[^>]*?& ...

  6. idea使用Deployment部署项目到阿里云服务器的全过程

    一.前言 之前玩了一下 Alibaba Cloud Toolkit 一键部署插件 这里顺便再提一下idea原生的Deployment自动部署项目吧,该功能也很强大,也不需要离开idea就可以直接将项目 ...

  7. 迥异和诡异的SendMessage和PostMessage

    1       故障现象 故障现象1:能够收到SendMessage()发出的消息,但收不到PostMessage()发出的消息. 故障现象2:能够收到PostMessage()发出的消息,但收不到S ...

  8. 使用 Eslint & standard 规范前端代码

    前言 JavaScript的动态语言类型,给它带来了独特的魅力,产生了风格多样的开发范式,同时也带来了一些问题,从运行时常见的 undefined .null 报错,到代码随意的加减分号.换行.空格, ...

  9. C#使用Oxyplot绘制监控界面

    C#中可选的绘图工具有很多,除了Oxyplot还有DynamicDataDisplay(已经改名为InteractiveDataDisplay)等等.不过由于笔者这里存在一些环境上的特殊要求,.Net ...

  10. 【已解决】关于IDEA中 Tomcat 控制台打印日志中文乱码的解决

    在 Idea 上面使用 Tomcat 时,发现控制台打印信息的时候,出行中文乱码问题; 可以通过以下几种解决办法 1:在-Dfile.encoding=UTF-8 在vm中设置编码方式 2.然后从Fi ...