从最近遇到的一个环境学习端口转发

情景模拟

  • 拿下了目标主机的webshell,提权遇阻,于是考虑用ms17-010来提权。

  • 目标主机的445端口只对内网开放。

端口转发

  • 本地转发

  • 远程转发

  • 端口复用

本地转发

本地转发是把一个端口转发到本地的另一个端口。
我现在想用ms17-010去提权,也就是攻击目标的445端口,但是目标的防火墙策略限制了445端口只对内网开放,外网无法连接。
于是,我尝试将目标的445端口转发到能外网能连接的443端口,

lcx -tran 443 127.0.0.1 445

然后尝试连接目标的443端口,

nc -vv targetIP port

1.png

2.png

可以看到,当我们连接目标的443端口时,实际被重定向到了目标的445端口。

远程转发

我们对这个情景再做限制,目标防火墙策略为外网只能访问目标的80端口,目标也只能访问外网的80端口。这时候我们有两种做法,一是端口复用(后面会讲到),二是远程转发。先来说远程转发。
图示:
image.png

首先,在一台有公网IP的主机(vps)上监听80和6666端口,(并在80和6666端口间建立一条通道),

1.png

然后,在目标机上正向连接vps的80端口,此时,目标机和vps就能通过80端口传输数据,而我们又把目标和vps的80通信时收到的数据转发到了445端口。此时,就绕过了防火墙,使得目标的445端口能和外网通信。

2.png

最后,当我们连接vps的6666端口时,就相当于连接到了目标的445端口。

3.png

端口复用

对面上面的情景,如果目标的防火墙策略非常严格,目标无法正向连接到外网任何端口,只有外网只能连接其80端口。而目标的web服务恰好又占用了80端口。显然,此时我们无法将其直接转发到80端口。这时候就要采用端口复用,端口复用指的是在已经开放的端口上进行通讯。我找到的一款windows2003下的端口复用工具(3389->80),需要把iis停掉才可以,动静比较大。端口复用的缺点十分明显,一是动静大,而是需要的权限高,因为要停掉web服务。

总结

上述用经典的lcx来演示主要是为了学习下端口转发的过程,现在我实战中用的最多的还是MSF,在vps上装个MSF是个绝佳的策略。MSF自带的porfwd和路由表都是非常顺手的通向内网的工具,非常强大。实战中用的最多的转发方式是远程转发,因为它能绕过极大多数防火墙策略。
再吐槽下,regeorg虽然简单易用,从理论上来说,一个sock代理就搞定这一切了,但是我每次用这个东西都好卡啊...好不稳定啊...
对于端口通信的更底层并未深入探究,我也只对其略知皮毛,本文免不了有错误之处。

标签: none

添加新评论