ICMP隧道学习(ptunnel学习)
网传有各种ICMP隧道版本的博文,但我发现看的越多越是凌乱,还是要自己做测试理解才好。总之一句话:把TCP流量封装在ICMP报文中进行传输的一种技术。ptunnel参考链接。
一、 环境搭建
三个Debian的kali虚拟机,其实都是一个虚拟机克隆出来的,环境也都是一个网段,主要是懒。按步骤配置即可,注意要先在跳板机开启ptunnel,然后攻击机再开启ptunnel才算连接上,ICMP隧道建立成功会有提示,然后就会挂起。想执行其他命令,再次新建窗口即可。
攻击机:10.91.214.179
跳板机:10.91.214.180
受害机:10.91.214.183
1.受害机要求
①、开启ssh服务
②、受害机允许跳板机ssh
反正受害机在本地,想怎么改配置就怎么改,gedit /etc/ssh/sshd_config。第一个箭头指的是配置文件位置,第二个表示允许以root权限登录受害机,真实的情况可能不是root权限。第三个箭头表示最大会话数,设置60防止因丢包造成连接失败,ICMP不是很稳定,有丢包。
2. 跳板机要求
①、开启ptunnel服务
ptunnel -s以服务端模式开启ptunnel。没权限就sudo ptunnel -s 。
②、开启ssh_client服务,能ssh受害机即可
没安装就安装,然后启动服务。
apt-get install openssh-client
service ssh start
3.攻击机要求
①、ptunnel -p 10.91.214.180 -lp 2019 -da 10.91.214.183 -dp 22
-p:指向跳板机的地址
-lp:指向本地监听端口
-da:指向受害机地址
-dp:指向连接的受害机的端口
②、ssh -p 2019 localhost
攻击机连接自身的2019端口,其实连接的指向是受害机。有点意思了,我的理解是ptunnel建立的是一个命令转发的隧道,还是一个能回显命令执行结果的隧道。
每个人理解可能不同,自己看抓包验证去理解。
就是一旦隧道建立起来,跳板机类似命令复读机,复制攻击机的命令。但是端口之间应该是映射关系,本地的端口自己设,-p 2019;跳板机的端口是跳板机自己设,不用管,然后就是想连接的受害机的端口,也可以理解为要连接的服务。
二、抓包验证
抓取攻击机数据包,发现原本是TCP的流量包变为ICMP数据包,我做了筛选ICMP,方便观察。
三个机器都抓了,发现ICMP报文通信只存在在180和179之间,发现TCP的报文只在180和183之间,三个机器情况均是这样,其实我有点怀疑是克隆的机器,所以网卡是同一块,有相同数据的嫌疑,但这不影响,数据相同不相同无所谓,但不是假的就好了。
我的总结:
①、跳板机和攻击机之间是ICMP包通信,已成功进行流量隐藏。
②、跳板机和受害机之间是ssh数据包通信,即真正的ssh连接是跳板机和受害机,攻击机和跳板机之间只是数据的转发而已(包括ssh连接命令)。
查下端口
攻击机的:
跳板机的:
受害机的:
可以看到建立连接的只有两处,因为我ssh命令执行了两次。建立TCP连接的还是跳板机和受害机,至于攻击机的两条连接,我猜想是因为环回地址造成的,两个互相连,最上边一条表明攻击机开启了2019端口。
测试不易,如果你有其他想法请评论探讨,如果你认为文中有错误请批评指正我,如果你感觉有帮助请点赞鼓励我。
本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。