内网端口映射与转发

本文详细介绍了端口转发、端口映射及其区别,包括正向代理和反向代理的概念。此外,还探讨了内网穿透技术的重要性,并以frp和nps为例,展示了如何设置端口转发和映射,实现内网服务的远程访问。最后,提到了reGeorg工具在特殊场景下的应用,用于通过内网web服务器的正向代理建立隧道。
摘要由CSDN通过智能技术生成

1.端口转发

将内网端口转发到别的端口上。

例如一个攻击机,一个服务器,一个内网的被攻击机;攻击机想远程桌面连接内网的被攻击机,可以通过服务器的端口转发,将内网的被攻击机的3389端口转发到服务器上的3333端口,攻击机访问服务器的3333端口就相当与访问内网主机的3389端口。

使用lcx.exe向服务器进行转发端口

lcx.exe -slave 服务器ip 3333 127.0.0.1 3389

服务器端将3333端口再转发到3331端口

lcx.exe -listen 3333 3331

攻击机访问服务器的3331端口,就相当于访问了内网被攻击机的3389端口。

2.端口映射

将内网端口完全映射到外网的端口上。

例如:一个内网的web服务器,不是一个内网的客户端没有办法访问它,那就将内网的web服务器的80端口映射到外网的指定端口,客户端就可以访问外网的指定端口来向内网的web服务器进行访问,访问后路由器将信息转发给内网服务器,服务器收到信息将返回信息发给路由器,路由器有一个身份识别session,会对从服务器发过来的信息进行区分,发给指定客户端。

3.端口转发和端口映射的区别

两者可以说是用不同的方式进行相同的目的。

就像饭店做菜一样,厨师就像内网的端口,服务员就像路由器,客人就像客户端。

端口转发:客人点完菜,服务员会跟厨师说是哪位客人点的菜。

端口映射:客人点完菜,厨师不知道是谁点的菜,只管做菜,将菜做好交给服务员,服务员进行上菜给指定客人。

还有一个区别:

端口转发相对来说私密性。

端口映射是开放的。

4. 正向代理和反向代理

4.1 正向代理

客户端访问web服务器,正向代理就是有一个代理服务器代替客户端访问web服务器,客户端讲请求发给代理服务器,代理服务器再将请求发给web服务器,然后再依次返回到客户端。也就是客户端代理。

因为web服务器接收到的是来自代理服务器发来的请求,没办法判断是客户端还是服务器。

4.2 反向代理

客户端访问web服务器,也是在中间设置一个代理服务器,但这个是代理web服务器的,代理服务器接收到客户端的请求,将请求发送给web服务器,再依次返回到客户端。也就是服务端代理。

反向代理的服务器可以代理很多web服务器,所以反向代理服务器可以作为公网的域名,客户端无法知道访问的是代理服务器还是web服务器。

4.3 区别

举个栗子

正向代理:饭店里只有一个厨师,好几桌客人点完菜后,服务员跟厨师说炒哪些菜,厨师不知道是呢做客人点,只管做完,由服务员上菜。

反向代理:饭店里有4位厨师,有一桌客人点了4个菜,服务员跟厨师说谁点的哪些菜,4个菜一个厨师做一道,由服务员上菜,客人不知道是哪位厨师做的。

还有可能正向代理反向代理都有。

内网穿透技术

在自己的vps和内网的主机之间建立连接,然后外网的主机通过自己的vps就可以更加方便的访问到内网的主机。

内网穿透和端口映射和端口转发的区别:

端口映射是一种开放的服务,内网穿透是一个隧道,较为私密的。其实内网穿透相当与是一个私密型的端口映射。

内网穿透也和端口转发相似,但内网穿透根本没有转发。

就像你在内网有一台web服务器,没有任何操作的情况下外网是无法访问这个web服务器的,但你想简简单单的让几个人连接的的话可以用内网穿透,如果你想让web服务器对外网开放就要用端口映射。

常见内网穿透工具:frp、nps、reGeorg

1. frp

frp工具支持很多种协议,来适应不同的环境

类型

描述

tcp

单纯的 TCP 端口映射,服务端会根据不同的端口路由到不同的内网服务。

udp

单纯的 UDP 端口映射,服务端会根据不同的端口路由到不同的内网服务。

http

针对 HTTP 应用定制了一些额外的功能,例如修改 Host Header,增加鉴权。

https

针对 HTTPS 应用定制了一些额外的功能。

stcp

安全的 TCP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。

sudp

安全的 UDP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。

xtcp

点对点内网穿透代理,功能同 stcp,但是流量不需要经过服务器中转。

tcpmux

支持服务端 TCP 端口的多路复用,通过同一个端口访问不同的内网服务。

在客户端配置中的type中设置即可

1.1 服务端设置

在vps上下载frp,并配置frps.ini文件

[common]

bind_addr = 0.0.0.0        #绑定的ip,为本机(0.0.0.0为任意ip)

bind_port = 6666           #绑定的端口

dashboard_addr = 0.0.0.0   #管理后台地址

dashboard_port = 6661      #管理管理后台端口

dashboard_user = root      #管理的用户名

dashboard_pwd  = neo       #管理用户的密码

token = admin123           #客户端服务端连接的密码

heartbeat_timeout = 90     #心跳超时时间

max_pool_count = 5         #最大同时连接数

log_file = ./frps.log     #frp默认日志输出位置

log_level = info           #日志级别(debug,ifo,warn,error)

log_max_days = 20          #日志最大保存天数

subdomain_host = neo.com   #指明域名

vhost_http_port = 5566     #代理内网web端口

vhost_https_port = 5567    #代理内网web端口

开启服务端frp:

./frps -c frps.ini

查看日志:

tail -f 日志目录

1.2 客户端设置

配置frpc.ini文件

[common]

server_addr = 0.0.0.0         #frp服务端的ip

server_port = 6666            #服务端端口

token = admin123              #token

pool_count = 5                #连接数量

log_file = ./frps.log         #日志

log_level = info

log_max_days = 3

heartbeat_timeout = 90          

use_encryption = true         #是否加密

use_gzip = true               #是否进行压缩

[ssh] #将当前内网机器的ssh端口映射到vps端口上

type = tcp                    #类型

local_ip = 0.0.0.0            #本地ip

local_port = 22               #本地ssh端口

remote_port = 10000           #映射到vps上的端口

[rdp] #将当前内网机器的rdp端口映射到vps端口上

type = tcp                    #类型

local_ip = 0.0.0.0            #本地ip

local_port = 3389             #本地rdp端口

remote_port = 6389            #映射到vps上的端口

[mysql] #将当前内网机器的rdp端口映射到vps端口上

type = tcp

local_ip = 0.0.0.0

local_port = 3306

remote_port = 1306

[ftp]

type = tcp

local_ip = 0.0.0.0

local_port = 21

remote_port = 2121

[http]

type = http

local_port = 80

subdomain = neo.com          #子域名

[anquan]

type = stcp

sk = 123456789

local_ip =  0.0.0.0

local_port = 3390

[dns] #dns端口映射到vps端口上

type = udp

local_ip = 0.0.0.0

local_port = 53

remote_port = 6000

#上面建立客户端的端口映射可以选填,需要那个设置哪个

开启客户端frp:

./frpc -c frpc.ini

即可自动连接

如下图所示:

客户端连接成功:

 

服务器端连接成功:

 

2. nps

nps有可视化界面,比较好理解。

2.1 服务端

在vps上下载服务端的nps解压缩后,打开nps/conf/nps.conf

配置如下:

appname = weblogger    #名称

runmode = dev          #指定运行模式(dev,pro)

bridge_type=tcp        #通信协议(tcp,kcp)

bridge_port=9099       #服务端通信端口(默认8024)

bridge_ip=0.0.0.0      #服务端的ip

public_vkey=Pksly2312df70i5osc  #设置连接密钥

log_level=7            #日志等级

log_path=weblogger.log #输出日志位置

web_host=login.neo.com #web控制面板域名

web_username=neo       #账号

web_password=neo       #密码

web_port = 8081        #web面板端口

web_ip=0.0.0.0         #web面板ip

http_proxy_ip=         #http代理(没参数表示不开启)

http_proxy_port=

https_proxy_port=      #https代理

https_just_proxy=

运行./nps start

然后再登录web控制面板,进行添加客户端,等一系列隧道。

例如创建3389连接

点击客户端进行配置

 

 

2.2 客户端

在目标主机上下载客户端的nps,解压缩,运行nps/npc

输入命令,这个命令在客户端上创建特定的客户端时会生成一个命令,复制过来就好,然后web界面上就会显示在线

 

3. reGeorg

外网主机通过内网web服务器的正向代理建立http/https隧道访问内网主机。

如果有一个web服务器已经拿到shell,但内网主机因为防火墙策略,无法通过内网渗透、端口转发、反弹shell等连接内网目标主机,但能与web服务器进行http通信。我们可以用web服务器做代理来访问内网目标主机。

在getshell的web服务器上上传reGeorg的脚本,有很多类型,具体看服务器。

 

然后在攻击机上打开reGeorg,输入

python reGeorgSocksProxy.py -p 6666(本地任意端口) http://web服务器域名

 

然后用Proxifier进行socks5代理

 

 

可以在这里添加需要代理的软件或者放行

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小韩韩啊

你的鼓励是对我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值