平时在渗透测试中大家经常会用到内网渗透,然而内网渗透中很重要的一个步骤就是端口转发。

常见的端口转发

  • lcx.exe
  • nc.exe
  • Using php/jsp/aspx Script
  • iptables端口转发
  • nginx端口转发
  • 等等......

其中lcx.exe、nc.exe以及使用脚本转发,都有可能被防护/杀毒软件拦截,而后者则略微有点麻烦(不会告诉你是因为我真懒!)

我是一个非常喜欢渗透测试的人,并且颜值比较高(啊,打我干啥!)

偶尔也会用到内网渗透,进行端口转发什么的,但时长会遇到XX狗,XX卫士,上传lcx.exe或者nc.exe就会被杀掉...

用后面几种方式又感觉好像很费事的样子..

前言

前几天在工作中遇到了某客户的服务器被利用端口转发来做SEO

分析的文章可以看这里:免杀世界杀软:神奇的端口转发黑帽SEO手法

文章中详细的讲了一下端口转发的实现原理,以及是如何免杀世界杀软的。

但其实这个工具也一样可以用在渗透中。

NetSH (Network Shell) 是windows系统本身提供的功能强大的网络配置命令行工具。

故我们可以使用netsh进行内网端口转发。

使用方法

新增端口转发

netsh interface portproxy add v4tov4 - 添加通过 IPv4 的 IPv4 和代理连接到的侦听项目。
netsh interface portproxy add v4tov6 - 添加通过 IPv6 的 IPv4 和代理连接到的侦听项目。
netsh interface portproxy add v6tov4 - 添加通过 IPv4 的 IPv6 和代理连接到的侦听项目。
netsh interface portproxy add v6tov6 - 添加通过 IPv6 的 IPv6 和代理连接到的侦听项目。

命令语法

netsh interface portproxy add v4tov4为例,其语法格式如下:

netsh interface portproxy add v4tov4 [listenport=]<integer>|<servicename>[connectaddress=]<IPv4 address>|<hostname>[[connectport=]<integer>|<servicename>][[listenaddress=]<IPv4 address>|<hostname>] [[protocol=]tcp] 

参数:

标记
listenport IPv4 侦听端口。
connectaddress IPv4 连接地址。
connectport IPv4 连接端口。
listenaddress IPv4 侦听地址。
protocol 使用的协议。现在只支持 TCP。

说明: 添加通过 IPv4 的 IPv4 和代理连接到的侦听项目。

示例

netsh interface portproxy add v4tov4 listenport=8080 connectaddress=192.168.56.101 connectport=8080 

将本地的8080端口的数据转发至192.168.56.101上的8080端口。

netsh interface portproxy add v4tov4 listenport=9090 connectaddress=192.168.56.101 connectport=9090 

将本地的9090端口的数据转发至192.168.56.101上的9090端口。

查看已经设置转发的端口

netsh interface portproxy show all - 显示所有端口代理参数。
netsh interface portproxy show v4tov4 - 显示 IPv4 代理连接到另一个 IPv4 端口的参数。
netsh interface portproxy show v4tov6 - 显示 IPv4 代理连接到 IPv6 的参数。
netsh interface portproxy show v6tov4 - 显示 IPv6 代理连接到 IPv4 的参数。
netsh interface portproxy show v6tov6 - 显示 IPv6 代理连接到另一个 IPv6 端口的参数。

示例

netsh interface portproxy show all 

修改转发配置

netsh interface portproxy set v4tov4 - 更新通过 IPv4 的 IPv4 和代理连接到的侦听项目。
netsh interface portproxy set v4tov6 - 更新通过 IPv6 的 IPv4 和代理连接到的侦听项目。
netsh interface portproxy set v6tov4 - 更新通过 IPv4 的 IPv6 和代理连接到的侦听项目。
netsh interface portproxy set v6tov6 - 更新通过 IPv6 的 IPv6 和代理连接到的侦听项目。

命令语法

netsh interface portproxy set v4tov4为例,其语法格式如下:

netsh interface portproxy set v4tov4 [listenport=]<integer>|<servicename>[connectaddress=]<IPv4 address>|<hostname>[[connectport=]<integer>|<servicename>][[listenaddress=]<IPv4 address>|<hostname>][[protocol=]tcp] 

参数:

标记
listenport IPv4 侦听端口。
connectaddress IPv4 连接地址。
connectport IPv4 连接端口。
listenaddress IPv4 侦听地址。
protocol 使用的协议。现在只支持 TCP。

说明: 更新通过 IPv4 的 IPv4 和代理连接到的侦听项目。

使用示例

netsh interface portproxy set v4tov4 listenport=9090 connectaddress=192.168.56.101 connectport=9080 

将本地9090端口改成转发至192.168.56.101的9080端口中。

删除端口转发配置

netsh interface portproxy delete v4tov4 - 删除通过 IPv4 的 IPv4 和代理连接到的侦听项目。
netsh interface portproxy delete v4tov6 - 删除通过 IPv6 的 IPv4 和代理连接到的侦听项目。
netsh interface portproxy delete v6tov4 - 删除通过 IPv4 的 IPv6 和代理连接到的侦听项目。
netsh interface portproxy delete v6tov6 - 删除通过 IPv6 的 IPv6 和代理连接到的侦听项目。

netsh interface portproxy delete v4tov4为例,其语法格式如下:

netsh interface portproxy delete v4tov4 [listenport=]<integer>|<servicename>[[listenaddress=]<IPv4 address>|<hostname>][[protocol=]tcp] 

参数:

标记
listenport 要侦听的 IPv4 端口。
listenport 要侦听的 IPv4 地址。
protocol 要使用的协议。当前仅支持 TCP。

注释: 删除要侦听的 IPv4 的项并通过 Ipv4 代理连接。

使用示例

netsh interface portproxy delete v4tov4 listenport=9090 

删除本地端口9090的端口转发配置。

后记

本文仅作学习交流之用,首发于安全盒子论坛,转载需经作者同意方可转载。