当前位置:   article > 正文

流量转发之端口转发

流量转发

概述

在做内网渗透时,并不是说获取了shell就拥有权限了,这个时候我们要进行提权等操作,但实际上实际情况是很复杂的,有时候并不能提权成功,比如无法搞定杀软等情况,这个时候我们想要访问到内网的其他机器(不与外网相通的),这时候我们可以选择上传工具到服务器进行操作或者将我们的攻击流量代理到内网中才能进一步的对内网进行渗透,但是第一种方式是及其麻烦而且会改变服务器的环境的,所以不推荐。那么就将流量代理到内网中。

代理方式

代理可以分为正向代理和反向代理两种,对于正向代理,最容易理解了,就是大家常用的vps、vpn之类的,反向代理嘛,可以这么说就是内网服务器去建立流量隧道(当然是我们操纵的),然后让我们可以访问到,说白了就是谁主动的事。

正向代理

我们使用已拿下的攻击目标的公网服务器,设置一个转发代理,这时流量隧道建立是由我们的公网服务器发起建立的,然后攻击目标服务器进行转发。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NxPg94aV-1639559310072)(4A307E8CBBB943C9A908AD62CFA96E61)]

反向代理

假设:网络环境时目标公网服务器之前有一台防火墙,除了sqlserver端口允许访问,其他统统不允许访问,出网不限制,我们通过sqlserver 的弱口令拿下了改服务器,这时我们可以在自己的公网服务器上做监听,然后在攻击目标公网服务器上执行相关命令或使用相关工具,主动的与外界发起连接,建立隧道,我们就可以将流量代理到内网了

在这里插入图片描述

这个是以我的理解写出的东西哈,大家也可以参考一下这个:https://cloud.tencent.com/developer/article/1418457,
来加深理解。

在涉及端口转发的时候,又是什么端口转发和端口映射,其实也是差不多的概念。

端口转发

端口转发一般就是用来访问内网服务器的特定端口的,ssh的动态端口转发就跟vpn超级像了,可以访问内网服务器的所有的端口,这时就要配合代理工具一起使用了,比如proxy-chains,这个在Linux系统上用的还挺多的(本地)

ssh 端口转发

SSH会自动加密和解密所有SSH客户端与服务端之间的网络数据。但是,SSH还能够将其他TCP端口的网络数据通SSH链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做"隧道"。

首先对ssh端口转发进行讲解,虽然一般用不到,但是比较好理解正向代理,反正代理,动态代理等种种情况,只要明白了原理,使用什么工具都是可以很快上手的,除非特别复杂,难用的工具。

首先来准备一下环境,我是用的ubuntu14的系统,本来都是没有开启允许ssh 远程访问的,看一下你的系统有没有开启22端口就知道了,然后用自带的安装软件apt 命令进行安装一下就好了。

顺道可以激活一下root 账号,终端下输入sudo passwd 或者sudo passwd root 设置密码激活账户。

基本的实验环境如图所示
在这里插入图片描述

创建隧道时的常用选项有:

"-L选项":表示使用本地端口转发创建ssh隧道

"-R选项":表示使用远程端口转发创建ssh隧道

"-N选项": 表示创建隧道以后不连接到sshServer端,通常与"-f"选项连用

"-f选项":表示在后台运行ssh隧道,通常与"-N"选项连用

"-g选项":表示ssh隧道对应的转发端口将监听在主机的所有IP中,不使用"-g选项"时,转发端口默认只监听在主机的本地回环地址中,"-g"表示开启网关模式,远程端口转发中,无法开启网关功能。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
本地端口转发

本地端口转发就是将访问本机某个端口的流量代理到目标服务器的目标端口上。

语法

ssh -L 本地网卡地址(可省略):本地端口:目标地址:目标端口 用户名@代理服务器IP
  • 1

如图所示,A 服务器无法访问C服务器,我们通过B服务器转发,来访问C服务器的80端口

语法

ssh -L 8000:192.168.74.133:80 test@192.168.220.146
  • 1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3IvAyIxJ-1639559310074)(5C9C3942D1B848D6A01C9C3E710530F6)]

在这里插入图片描述

远程端口转发

假设服务器AB 直接有防火墙,A无法访问B的ssh 端口,但是出网不限制,下图所示,这时我们通过在B服务器上执行命令来与A服务器建立隧道,大家一定要记得的是,目标地址:目标端口,是要抵达的,最后要访问到的,就不会出现某些问题了。

在这里插入图片描述

命令格式

ssh -R 远程IP地址:远程端口:目标地址:目标端口 用户名@远程IP地址
  • 1

执行,可以访问到。

ssh -R 192.168.220.129:8000:192.168.74.133:80 root@192.168.220.129(服务器A)
  • 1

在这里插入图片描述

动态端口转发

动态端口就相当于搭建vps 或者vpn 了,可以将你的访问本地端口的流量代理到任何代理服务器可以访问的地址以及端口,这时可以配合proxychains 进行使用

ssh命令

ssh  -D 本地网卡地址:本地端口 root@代理服务器IP
  • 1

首先在服务器A上下载proxychains ,直接只用apt 安装就好了

apt search proxychains
  • 1

然后修改一下配置文件

sudo vim /etc/proxychains.conf
  • 1

在这里插入图片描述

在这里插入图片描述

使用proxychains4 代理访问
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hfmVGazX-1639559310078)(30DAE898E81C487A81B6B228E71B0E10)]

系统防火墙端口转发

Linux 系统与windows 系统中防火墙也可以进行端口转发,设置成功后访问该IP得某个端口,会主动转发到目的端口上,网络中的位置就是服务器B的位置

windows 系统

创建

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

注意:如果该命令未返回任何内容并且通过netsh interface portproxy进行端口转发不成功,则请确保iphlpsvc(IP Helper)服务当前已在你的系统上运行。

同时应当注意防火墙应当允许访问相关端口。

删除指定的端口转发规则:

netsh interface portproxy delete v4tov4 listenport=3340 listenaddress=10.1.1.110
  • 1

清除所有当前的端口转发规则:

netsh interface portproxy reset
  • 1
Linux系统

通过 192.168.1.168 的 6666 端口访问 192.168.1.8 的 7777 端口,在 192.168.1.168 上设置:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport 6666 -j DNAT --to-destination 192.168.1.8:7777
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.8 --dport 7777 -j SNAT --to-source 192.168.1.168
  • 1
  • 2
  • 3
其他工具
portfwd

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PGXKcUuO-1639559310078)(D6C263A3A4FD4E03947D1FD78CA6BAB4)]

    -L <opt>  Forward: local host to listen on (optional). Reverse: local host to connect to.
    -R        Indicates a reverse port forward.
    -h        Help banner.
    -i <opt>  Index of the port forward entry to interact with (see the "list" command).
    -l <opt>  Forward: local port to listen on. Reverse: local port to connect to.
    -p <opt>  Forward: remote port to connect to. Reverse: remote port to listen on.
    -r <opt>  Forward: remote host to connect to.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

简单使用以下,将192.168.74.133的80 端口转发到本地的10000端口上,

命令

portfwd add -l 10000 -p 80 -r 192.168.74.133
  • 1

在这里插入图片描述

lcx

顺便使用meterperter中的upload 上传文件试试,可以看到,直接执行upload ,不知道后续如何带参数,直接TAB,看看怎么补齐有时候也是有用的。

在这里插入图片描述

上传的时候可以通过cd 到别的文件夹,ls 查看有写入和执行权限的文件夹进行上传,Temp就是这样的一个文件夹,这时,直接像在cmd 中执行是不行的,可以在前面加上execute 来执行相关的工具和命令。

一般可以通过cmd shell 的方式来执行上传的工具,毕竟,这样大家比较习惯。

execute -f cmd.exe -H -i
  • 1

lcx 用法示例。

  1. B主机(公网IP:20.30.40.50): lcx -listen 2222 6666

  2222为转发端口,6666为B主机任意未被占用的端口

  2. A肉鸡服务器:lcx.exe -slave 20.30.40.50 2222 127.0.0.1 3389

  20.30.40.50为B主机的IP,2222为转发端口,127.0.0.1为A肉鸡内网IP,3389为远程终端端口

  3. B主机连接A肉鸡3389时格式:mstsc 127.0.0.1:6666
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

因为事先准备的环境不太一样,就不做演示了,也比较好理解反正

端口转发的工具有很多就不列举了,常见的几种大家了解以下,之后遇到新的工具也会很快上手的。

参考

https://zhuanlan.zhihu.com/p/75648110
https://hsk.oray.com/news/6164.html
https://www.zhihu.com/question/52943496
https://www.hacking8.com/MiscSecNotes/zhuanfa.html
https://www.freebuf.com/articles/web/256415.html
https://mp.weixin.qq.com/s/lTAsjyfuQQLrta9vx1WXNg
https://xz.aliyun.com/t/6349
https://zhuanlan.zhihu.com/p/74500527
https://cloud.tencent.com/developer/article/1418457
https://cloud.tencent.com/developer/article/1418457
https://blog.csdn.net/zhouguoqionghai/article/details/81947603
https://www.cnblogs.com/linmilove/p/14806157.html
https://www.offensive-security.com/metasploit-unleashed/portfwd/#Options

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/224831
推荐阅读
相关标签
  

闽ICP备14008679号