前言
今天是大年三十,先给大家拜个早年,虽然是年末最后一天,但对于有技术信仰的我们来说,其实每一天都是第0天,遂积跬步,记录一篇。前面我们学习了ssh隧道、dns隧道,这些隧道从tcp/ip七层协议来看,多是通过应用层或传输层协议穿透防火墙。那么当防火墙如果不开任何端口,我们应该如何穿透绕过防火墙出站规则呢,本节我们通过学习icmpsh来解决服务器未开端口时,如何通过icmp隧道穿透防火墙,其原理虽然简单,但动手一试发现有很多坑值得避免。
一、icmp隧道原理
前面说到,icmp隧道实战中多用于服务器未开启任何端口时,但双方能够通过icmp协议通讯,即能够ping通对方。因此我们设计实验拓扑如下:

二、环境配置
1.攻击机kali配置(master)
icmpsh软件虽然不通过TCP协议通讯,但它依然是基于C/S架构开发的,因此我们在服务端攻击机kali进行如下配置
首先从github上clone项目到本地
安装依赖库python-impacket
安装python-impacket遇到 错
这里提示安装python3-impacket,但icmpsh软件是基于python2开发的,因此必须要安装python-impacket,从github上下载impacket并安装。
设置icmp_echo 文忽略不响应。如果不设置,攻击机可以收到靶机反馈的信息,但靶机将无法收到攻击机发出的指令。
此时再进入icmpsh目录执行命令,即可,这里的python是2.X版本,第一个参数是攻击机ip,第二个参数是防火墙WAN口ip。
对于防火墙WAN口IP,我们在内 通过命令ipconfig是无法获得的。因此,我们可以通过ping命令,从内 主机ping攻击机,再在攻击机上抓包,从而获取WAN口IP地址。
通过目录查看,我们知道,对于icmpsh软件,在服务端(攻击机)可以一般运行在*unix操作系统,可以通过C语言、perl语言和python2环境运行。
2.靶机配置(slave)
对于靶机icmpsh软件只提供了对于windows靶机的二进制文件icmpsh.exe,即此软件只适合靶机是windows操作系统,攻击机是*unix操作系统的环境。靶机运行命令如下:
攻击机界面返回shell
总结
icmpsh原理简单,但其应用广泛,虽然已经出现多年,但越来越多红队人员发现icmp协议其实对逃避流量监测有着很好的隐蔽作用。我们可以通过学习,触类旁通,用icmp协议封装传输数据,在其他的渗透测试活动中发挥更大的威力。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!