内网穿透技术
目录
1、使用lcx/portmap进行端口转发
2、使用ew进行流量代理
3、使用nps进行流量代理
创建穿透隧道
1. TCP 隧道
2. HTTP 代理
3. SOCKS5 代理
4、使用gost进行流量代理
核心使用
1. 正向代理模式 (客户端→代理→目标)
2. 反向代理模式 (目标→代理→客户端,内网穿透)
3. 端口转发模式 (直接映射端口)
常用命令参数详解
我们知道内网是在只有处于内网的主机才能访问的,那么渗透的时候,那么我们攻击机处于外网的主机是无法访问的,那么这个时候我们需要通过端口代理和流量代理的方式来进行访问。处于内网的全部主机不是都是物理隔离的,那么是存在一个主机负责内外网的流量交换的。一般这个主机一般存在两个或者多个网卡的,一个网卡负责内网的,一个负责外网的流量交换的。在虚拟机中,实现两个网卡很简单,只要使用两个网络适配器,一个仅主机模式,一个NAT模式,即可实现,如下所示,上面的是配置的内网网段,下面是nat模式,这样既可以加入域成为域主机,也可以连通外网进行上网。在我的一个专栏--内网渗透中,我也详细介绍了一些不同层面的隐藏通信隧道技术,比如网络层,传输层,应用层等的,这篇文章是在此基础上扩展一些工具的使用。

可以看到是可以上网的,网络较差,没有页面出来

1、使用lcx/portmap进行端口转发
使用此方法主要是存在中间主机的情况下进行,比如说在内网存在一台边缘主机,主要作用是让内网和外网进行间接的通信,那么在这里我们就可以使用端口转发,在中间主机上使用工具lcx开启端口转发,让内网主机的流量通过中间机打端口转发,然后在攻击机上开启端口监听,中间主机就可以进行连接,那么从内网来的流量通过中间主机的端口转发到达了攻击机,那么就实现了外网访问内网主机的功能。
Lcx的主要命令如下
在攻击机开启:
./lcx_x64.exe -S listen -l 2333 -d 127.0.0.1 -e 3333

在攻击机进行监听,那么我们就上面的主机作为中间机来进行转发流量
在中间机开启:
./lcx_x64.exe -S slave -f 第一个端点IP -g 第一个端点端口 -d 第二个端点IP -e 第二个端点端口


通过上面的语句我们通过中间机转发内网机192.168.129.100的3389端口的流量到攻击机的2333端口,然后我们就可以通过端口进行访问。


2、使用ew进行流量代理
需要使用流量代理的情况是,外网无法访问内网,并且不存在中间主机的流量转发,外网与内网的通信通过在同一个主机上的端口转发,也就是说其内网的主机中不存在能够直接与外网进行通信的主机,而是通过代理的模式进行,那么在这种情况下就需要使用流量代理来进行通信。流量代理中存在正向代理和反向代理。
正向代理就是客户端先访问代理服务器,然后代理服务器再去访问目标服务器,代理服务器返回结果给客户端。
反向代理就是访问代理服务器相当于访问目标服务器,直接访问代理服务器就可以直接获得目标服务器的资源,客户端不需要知道目标服务器任何的信息。
通过ew来进行流量代理,使用的命令如下
在中间主机上开启正向代理:ew.exe -s ssocksd -l 1080

在攻击机上开启桌面版proxifier:然后通过新增代理服务器,填写内网主机的IP地址,以及相应的端口号1080,然后设置为默认的代理规则保存即可。

成功连接


那么尝试一下来访问一下内网主机的RDP服务,这里因为是正向代理,所以直接使用内网主机,就是所要访问的IP地址即可


可以看到成功连接。
Linux系统就使用proxychains来进行流量代理,最主要的就是修改其中的配置文件/etc/proxychains4.conf。这里就不再具体展示了
3、使用nps进行流量代理
Nps主要使用C/S模式,即分为客户端和服务端,那么主要通过在Linux配置服务端,那么就可以通过浏览器进行访问,此工具存在可视化界面。那么我们只要配置好服务端,那么就可以直接在浏览器来配置客户端。需要下载相应的客户端进行连接,由于作者的网络比较差,所以这里就不再展示,这里我们就简单说一下如何配置代理。

创建穿透隧道
登录服务端 Web 管理界面,点击左侧菜单的 "隧道管理" 或对应协议选项:
1. TCP 隧道
比如SSH、RDP、数据库等 TCP 服务
客户端ID: [选择已连接客户端]
服务端端口: [公网访问端口,如8888]
目标: [内网IP:端口,如192.168.1.100:22]
通过公网 IP: 服务端端口 (如123.45.67.89:8888)
2. HTTP 代理
主要是Web 服务、API 接口
客户端ID: [选择已连接客户端]
服务端端口: [公网访问端口]
目标: [内网Web服务IP:端口,如127.0.0.1:80]
域名: [可选,绑定自定义域名]
访问方式: 公网 IP: 服务端端口,也可以绑定域名
3. SOCKS5 代理
主要应用全局网络代理、浏览器代理
客户端ID: [选择已连接客户端]
服务端端口: [如1080]
使用方法: 在浏览器或系统中设置代理为服务器IP:服务端端口
4、使用gost进行流量代理
gost也是和ew差不多的,ubuntu可以通过ubuntu应用商店snap进行下载
snap install gost
基本启动:
# 启动HTTP代理,监听8080端口
gost -L http://:8080# 启动SOCKS5代理,监听1080端口
gost -L socks5://:1080# 启动TCP端口转发(本地8080映射到192.168.1.1:80)
gost -L tcp://:8080/192.168.1.1:80# 启动UDP端口转发
gost -L udp://:10053/192.168.1.1:53
核心使用
1. 正向代理模式 (客户端→代理→目标)
让内网设备通过代理服务器访问外网
# 服务端(公网服务器)
gost -L socks5://:1080?auth=user:pass # 客户端(内网机器)
# 设置系统代理或在应用中配置代理为: 服务器IP:1080
2. 反向代理模式 (目标→代理→客户端,内网穿透)
将内网服务暴露到公网
# 服务端(公网服务器)
gost -L relay://:8024?bind=true # 监听8024端口# 客户端
gost -L rtcp://:8080/192.168.1.1:80 -F relay://服务器IP:8024
访问方式: 公网用户通过http://服务器IP:8080访问内网服务
3. 端口转发模式 (直接映射端口)
场景: 远程访问内网特定服务 (如 SSH/RDP)
# 本地端口转发
gost -L tcp://:8080/192.168.1.1:80 # 本地8080→内网80# 远程端口转发(反向)
gost -L rtcp://:8080/192.168.1.1:80 -F relay://服务器IP:8024
# 公网服务器8080→内网80
常用命令参数详解
| 参数 | 说明 | 示例 |
|---|---|---|
-L | 定义服务,格式:协议://[认证@][监听地址][?参数]/目标地址 | gost -L socks5://:1080 |
-F | 定义转发链,指定上级代理 | gost -L :8080 -F http://192.168.1.1:8080 |
-C | 指定配置文件 (YAML/JSON) | gost -C config.yml |
-O | 输出当前配置到标准输出 | gost -O |
-p | 启用插件 (如认证、负载均衡) | gost -p kcp |
