• 【Pingtunnel工具教程】利用ICMP隧道技术进行ICMP封装穿透防火墙



    前言

    web搞太多了,发现csdn上面很少内网的内容,所以今天来整点内网的隧道技术,ICMP隧道。
    由于网络上很多人用的是老工具Ptunnel,现在最新的是Pingtunnel了,所以我就打算用最新的Pingtunnel工具来做这个ICMP隧道技术实验。


    提示:以下是本篇文章正文内容,下面案例可供参考

    一、ICMP隧道概念

    在一些网络环境中,如果不经过认证,TCP和UDP数据包都会被拦截。如果用户可以ping通远程计算机,就可以尝试建立ICMP隧道,将TCP数据通过该隧道发送,实现不受限的网络访问。用户需要在受限制网络之外,预先启动该工具建立代理服务器。再以客户端模式运行该工具,就可以建立ICMP隧道。为了避免该隧道被滥用,用户还可以为隧道设置使用密码。

    一、imcptunnel可以将IP流量封装进ICMP的ping数据包中,旨在利用ping穿透防火墙的检测,因为通常防火墙是不会屏蔽ping数据包的。

    二、请求端的ping工具会在ICMP数据包后面附加上一段随机的数据作为payload,而响应端则会拷贝这段payload到ICMP响应数据包中返还给请求端,用于识别和匹配ping请求。

    三、在使用pingtunnel进行内网穿透时,客户端会将IP帧封装在ICMP请求数据包汇总发送给服务端,而服务端则会使用相匹配的ICMP响应数据包进行回复。这样子在旁人看来,网络中传播的仅仅只是正常的ICMP数据包。

    二、复现前的准备工作&相关环境介绍

    首先,先看网络拓扑图:
    在这里插入图片描述
    假设,主机A是黑客主机,A与B能通信,B与C能通信,但是A与C不能,这里我在主机C上放了一个hello文件,当访问它时,就会显示以下内容:
    在这里插入图片描述
    为了方便复现,我选择了3台kali系统的虚拟机来做测试,从左往右,分别代表拓扑图里的主机A、B、C。
    访问C主机的80端口,hello文件,会出现
    hello this is : 192.168.25.138
    这些内容,而192.168.25.138就是C主机的ip地址。
    所以到这里来做个小结:
    kali_主机A(左边第一台):192.168.25.130
    kali_主机B(左边第二台):192.168.25.137
    kali_主机C(左边第三台):192.168.25.138

    主机B成功访问C的80端口hello文件:
    在这里插入图片描述
    主机A则访问不到:
    在这里插入图片描述

    怎么样设置主机A不能访问主机C呢?下面的命令就是禁止主机A通过tcp协议来访问主机C的命令。
    -s 参数后面的ip地址是主机A的地址

    iptables -A INPUT -p tcp -s 192.168.25.130 -j DROP
    
    • 1

    在这里插入图片描述
    查看当前防火墙策略:

    iptables -L
    
    • 1

    清空还原默认的防火墙策略:

    iptables -F
    
    • 1

    在这里插入图片描述
    因为ICMP隧道的核心就是防火墙没有拦截ICMP协议,所以可以用ping命令来做测试,如果A能ping通C,则可以使用ICMP隧道。
    各个主机之间的测试:
    A与B(通):
    在这里插入图片描述
    B与C(通):
    在这里插入图片描述
    A与C(通):
    在这里插入图片描述


    三、复现步骤

    由于三者之间都能ping通的,说明防火墙没有拦截ICMP协议。接下来就要用到ICMP协议的工具,pingtunnel
    这个工具是github上面的项目,支持多种系统版本,只需要找到自己版本的下载就行:
    https://github.com/esrrhs/pingtunnel/releases/tag/2.6
    在这里插入图片描述
    下载完成之后,就可以进行后续的操作了。
    在主机B上执行:

    ./pingtunnel -type server -key 1234 #设置密码
    
    • 1

    -key参数后面跟的是密码,我设置的是1234
    在这里插入图片描述

    在主机A上执行:

    pingtunnel.exe -type client -l :4455 -s 192.168.25.137 -t 192.168.25.138:80 -tcp 1 -key 1234 #监听本地的 4455 端口,发送到4455端口的流量将通过 ICMP 隧道转发到 47.244.96.168 服务器的 80 端口
    
    
    • 1
    • 2

    在这里插入图片描述


    所以所以所以,在执行完上面两条命令之后,在主机A上访问http://localhost:4455即可访问C的目标80端口。
    在这里插入图片描述
    nice!没毛病,这个时候加上hello文件试试:

    在这里插入图片描述
    完美。这样我们就突破了防火墙的限制,直接访问到了。


    三、总结

    隧道是一个非常有魅力的技术,无论是我刚学那会还是我现在做总结,两次给我的感觉都非常美妙,ICMP隧道是所有隧道里面最简单理解登录,后面我还会写一些dns的和其他协议的隧道,当做补充吧。


        文章原创,欢迎转载,请注明文章出处: 【Pingtunnel工具-隧道技术】利用ICMP隧道技术进行ICMP封装穿透防火墙.。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

  • 相关阅读:
    《WEB前端框架开发技术》HTML5响应式旅游景区网站——榆林子州HTML+CSS+JavaScript
    《Python+Kivy(App开发)从入门到实践》自学笔记:简单UX部件——Slider滑块
    软考考后常见问题详解~
    【DL】使用pytorch从零实现线性回归
    2个表差分的比较
    Lodash-js工具库
    oppo前端开发一面
    Spring Security认证成功后自定义额外校验功能
    ChatGPT重磅升级 奢侈品VERTU推出双模型AI手机
    Android Frgment中onActivityResult无效的问题
  • 原文地址:https://blog.csdn.net/weixin_43847838/article/details/125879778