隐秘通信-使用PingTunnel搭建ICMP隧道实验

news2024/11/17 14:41:12

目录

引言

实验目的

实验内容

基础知识

ICMP协议简介

ICMP隧道简介

ICMP隧道搭建工具介绍

PingTunnel简介

实验过程

前置准备

PingTunnel搭建ICMP隧道步骤

CentOS 7更换阿里源

CentOS 7安装make及词法分析工具

CentOS 7安装libpcap依赖库

CentOS 7安装PingTunnel

CentOS 7启动ptunnel

 Kali Linux桥接模式上网

Kali Linux更换阿里源

Kali Linux安装词法分析工具

Kali Linux安装libpcap依赖库

Kali Linux安装PingTunnel

Kali Linux打通隧道

Win 10测试3389连接

Kali Linux测试22端口连接

 CentOS 7隧道观测

 实验总结

总结

参考连接


引言

实验目的

  • 掌握PingTunnel搭建ICMP隧道的步骤
  • 掌握PingTunnel的使用方法及应用场景

实验内容

  • PingTunnel及相关依赖环境的安装
  • 使用PingTunnel搭建ICMP隧道

基础知识

ICMP协议简介

Internet Control Message Protocol Internet控制报文协议,简称ICMP协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用于网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

CMP协议主要提供两种功能,一种是差错报文,一种是信息类报文。信息类报文包括回显请求和回显应答,以及路由器通告和路由器请求。常见的差错报文类型包括目的不可达、重定向、超时和参数问题。

ICMP协议具有如下特点:

  • 确认IP数据包是否成功到达目的地
  • 通知源主机发送IP数据包丢失的原因
  • ICMP是基于IP协议工作的
  • ICMP只能作用于IPV4,IPV6下,使用ICMPv6

ICMP隧道简介

ICMP协议是一种特殊的协议,在一般的通信协议里,如果两台设备要进行通信,肯定需要开放端口,而在ICMP协议下就不需要。最常见的ping命令就是利用的ICMP协议,攻击者可以利用命令行得到比回复更多的ICMP请求。在通常情况下,每个ping命令都有相应的回复与请求。

在一些网络环境中,如果攻击者使用各类上层隧道(例如:HTTP隧道、DNS隧道、常规正/反向端口转发等)进行的操作都失败了,常常会通过ping命令访问远程计算机,尝试建立ICMP隧道,将TCP/UDP数据封装到ICMP的ping数据包中,从而穿过防火墙(防火墙一般不会屏蔽ping的数据包),实现不受限制的访问访问。

由于ICMP报文自身可以携带数据,而且ICMP报文是由系统内核处理的,不占用任何端口,因此具有很高的隐蔽性。

通常ICMP隧道技术采用ICMP的ICMP_ECHO和ICMP_ECHOREPLY两种报文,把数据隐藏在ICMP数据包包头的选项域中,利用ping命令建立隐蔽通道。简单说就是,改变操作系统默认填充的Data,替换成我们自己的数据。所以现在的ICMP隧道技术,基本采用修改ICMPECHO和ICMPECHOREPLY两种报文,把消息隐藏在数据中,利用ping或 tracert 命令建立隐蔽通道。

ICMP隧道具有如下优缺点

优点:

  • 防火墙对ICMP_ECHO数据包是放行的,并且内部主机不会检查ICMP数据包所携带的数据内容,隐蔽性高

缺点:

  • 隐蔽传输是无连接的,传输不是很稳定,而且隐蔽通道的带宽很低。
  • 利用隧道传输时,需要接触更低层次的协议,这就需要高级用户权限。

ICMP隧道搭建工具介绍

ICMP隧道搭建的工具有很多,包括但不限于以下工具:

  • PingTunnel: http://www.cs.uit.no/~daniels/PingTunnel/  【C语言】
  • Pingtunnel:https://github.com/esrrhs/pingtunnel/  【Go语言】
  • icmptunnel:https://github.com/jamesbarlow/icmptunnel  【C语言】
  • Icmpsh:https://github.com/bdamele/icmpsh  【多语言混合】
  • Invoke-PowerShellIcmp: https://github.com/samratashok/nishang/blob/master/Shells/Invoke-PowerShellIcmp.ps1  【Powershell】

PingTunnel简介

PingTunnel是一个基于网络层面ICMP协议的内网穿透工具,常用于搭建ICMP隧道,为了避免隧道被滥用,还可以为隧道设置密码。

PingTunnel可以传递以下参数:

  • -x :指定ICMP隧道连接的验证密码
  • -lp:指定要监听的本地TCP端口
  • -da:指定要转发的目标机器的IP地址
  • -dp:指定要转发的目标机器的TCP端口
  • -p:指定ICMP隧道连一段的IP地址

实验过程

前置准备

网络拓扑如下:

物料清单如下:

  • Kali Linux攻击机:192.168.161.142(Host-Only模式)
  • Win10攻击机:192.168.161.144(Host-Only模式)
  • CentOS7 Web服务器:192.168.161.2(Host-Only模式)192.168.27.252(NAT模式)
  • Win7内网PC机:192.168.27.248(NAT模式)
  • Ubuntu 16.04 内网PC机:192.168.27.251(NAT模式)

Host-Only模式模拟互联网、NAT模式模拟内网。CentOS7模拟企业对外提供的Web服务器,该机器是双网卡,可以通内网,同时向互联网提供Web服务。

实验场景为:我们已经获取了该Web服务器的权限,试图搭建ICMP隧道,连接内网Win7的3389端口和Ubuntu 16.04的22端口,进行内网横移。

该实验中,CentOS 7 充当跳板机,内网的Win 7 和 Ubuntu 16.04 是我们的两台靶机。

PingTunnel搭建ICMP隧道步骤

CentOS 7更换阿里源

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

 非阿里云ECS用户防止出现 Couldn't resolve host 'mirrors.cloud.aliyuncs.com' 信息,需执行如下命令:

sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

执行如下命令:

sudo rpm --rebuilddb 重新安装包头数据库索引目录
sudo yum clean al  清理所有yum缓存
Sudo yum -y updat  安装所有更新软件

CentOS 7安装make及词法分析工具

yum -y install gcc automake autoconf libtool make

yum -y install byacc flex bison

CentOS 7安装libpcap依赖库

wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz
tar -xzvf libpcap-1.9.0.tar.gz
cd libpcap-1.9.0
sudo ./configure
sudo make && sudo make install

CentOS 7安装PingTunnel

wget http://www.cs.uit.no/~daniels/PingTunnel/PingTunnel-0.72.tar.gz
tar -xzvf PingTunnel-0.72.tar.gz
cd PingTunnel
sudo make && sudo make install

CentOS 7启动ptunnel

sudo  ptunnel -x  icmptest

-x为隧道指定连接密码

 Kali Linux桥接模式上网

为了能够让Kali Linux在实验环境上网,便于我后面可以使用apt-get命令安装软件。我新增了块网卡,采用桥接模式,因此多出来一个IP:192.168.110.101。

Kali Linux更换阿里源

 修改 /etc/apt/sources.list , 将相关 url 改成阿里云的源。

deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src https://mirrors.aliyun.com/kali kali-rolling main non-free contrib

执行命令:sudo apt-get update

Kali Linux安装词法分析工具

sudo apt-get install byacc flex bison

Kali Linux安装libpcap依赖库

wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.gz
tar -xzvf libpcap-1.9.0.tar.gz
cd libpcap-1.9.0
sudo ./configure
sudo make && sudo make install

Kali Linux安装PingTunnel

wget http://www.cs.uit.no/~daniels/PingTunnel/PingTunnel-0.72.tar.gz
tar -xzvf PingTunnel-0.72.tar.gz
cd PingTunnel
sudo make && sudo make install

Kali Linux打通隧道

sudo ptunnel -p 192.168.161.2 -lp 2899 -da 192.168.27.248 -dp 3389 -x icmptest

命令解释:将内网IP为192.168.27.248的win7 PC机器的3389端口转发到互联网IP为Kali 192.168.161.2的2899端口,建立icmp隧道,并设置连接密码为icmptest

sudo ptunnel -p 192.168.161.2 -lp 2822 -da 192.168.27.251 -dp 22 -x icmptest

命令解释:将内网IP为192.168.27.251的ubuntu PC机器的22端口转发到互联网IP为Kali 192.168.161.2的2822端口,建立icmp隧道,并设置连接密码为icmptest

Win 10测试3389连接

 用win10 攻击机,连接Kali Linux的2899端口,192.168.161.142:2899,通过隧道登录到win7靶机。

Kali Linux测试22端口连接

ssh -p 2822 mxi4oyu@192.168.161.142

用Kali Linux 攻击机,连接本机的2822端口,通过隧道登录到ubuntu 16.04靶机。

 CentOS 7隧道观测

ICMP隧道的建立,其实是在CentOS7上建立了一个虚拟网卡。通过创建虚拟网卡,将所有流量都经过这个虚拟网卡。

  通过隧道的连接记录我们可以看到,一共有两个session。一个是连接到内网win7的,一个是连接到内网ubuntu 16.04的。

 实验总结

总结

我们在CentOS 7 这个跳板机上安装了PingTunnel,并启动server端。在Kali Linux这个攻击机上也安装了PingTunnel,并启动client端。利用PingTunnel,我们在攻击机Kali Linux和跳板机CentOS 7上建立了ICMP隧道。之后我们分别通过Win10和Kali Linux这两台攻击机,去连接内网的Win7和Ubuntu 16.04这两台靶机。

参考连接

https://cloud.tencent.com/developer/article/2098581 https://blog.csdn.net/qq_45300786/article/details/110943803

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/852896.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Scikit-learn聚类方法代码批注及相关练习

一、代码批注 代码来自:https://scikit-learn.org/stable/auto_examples/cluster/plot_dbscan.html#sphx-glr-auto-examples-cluster-plot-dbscan-py import numpy as np from sklearn.cluster import DBSCAN from sklearn import metrics from sklearn.datasets …

机器学习深度学习——RNN的从零开始实现与简洁实现

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——循环神经网络RNN 📚订阅专栏:机器学习&&深度学习 希望文章对你们有所帮…

php后端实现调用高德地图进行POI搜索

对于当前位置或者选定省市位置进行查询 接口实现 /*** 查询地址* ApiTitle (查询地址)* ApiSummary (查询地址)* ApiMethod (POST)* ApiRoute (/api/demo/address)* ApiParams (name"dart", type"integer", requiredtrue, description"省…

项目经理的性格与情绪控制︱小象智能COO、原腾讯项目集管理经理王炼

小象智能COO、原腾讯项目集管理经理王炼女士受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾,演讲议题:项目经理的性格与情绪控制。大会将于8月12-13日在北京举办,敬请关注! 议题简要: 众所周知,项…

光模块故障:能否继续发射光信号?

光模块是一种关键的光通信组件,负责将电信号转换为光信号进行传输。然而,光模块也可能出现故障,导致其无法正常工作。那么,如果光模块坏了,是否还能发射光信号呢?本文将探讨光模块故障对光信号发射的影响&a…

【ArcGIS】经纬度数据转化成平面坐标数据

将点位置导入Gis中,如下(经纬度表征位置): 如何利用Gis将其转化为平面坐标呢? Step1 坐标变换 坐标变换,打开ArcToolbox,找到“数据管理工具”->“投影和变换”->“要素”->“投影”…

0基础学习VR全景平台篇 第81篇:全景相机-临云镜如何直播推流

临云镜全景相机是阿里巴巴定制全景设备,实现空间三维信息的快速采集,与阿里云三维空间重建平台搭配,帮助品牌商与平台以较低的成本完成空间的快速采集,并支持对室内/室外空间的三维全景展示及空间漫游,同时支持VR浏览、…

论文图表--pyecharts使用

python中使用matplotlib画图颜色不好看,所以选取了pyecharts来画图表。 echarts介绍 pyecharts是echarts的python接口,echarts本身是基于javascript的,由于javascript搭建也比较麻烦,这里使用pyecharts来画图。 echarts常用来pp…

语音同声翻译软件到底谁更胜一筹呢

嘿!你是否曾经遇到过需要在不同语言之间进行实时翻译的情况?别担心,现在有许多翻译软件可供选择,让你的沟通变得更加简便和愉快。无论你是旅行者、国际商务人士还是语言爱好者,这些软件都将成为你的得力助手&#xff0…

PyQt学习笔记-Windows系统版本兼容问题踩坑记录

1 Pyinstaller打包的exe在Win10上可以使用&#xff0c;在Win7上缺提示找不到dll。 错误信息&#xff1a; Traceback (most recent call last): File "main.py", line 4, in <module> ImportError: DLL load failed while importing QtWidgets: 找不到指定的…

Beautiful Sequence 2023牛客暑期多校训练营7 C

登录—专业IT笔试面试备考平台_牛客网 题目大意&#xff1a;给出一长度n-1的数组b&#xff0c;要求构造一个长度为n的数组a&#xff0c;满足a[i]^a[i1]b[i]&#xff0c;a[i]<a[i1]&#xff0c;求字典序第k小的数组 1<n<1e6;0<a[i],b[i]< 思路&#xff1a;因为…

快速引流推广,快速引流推广策略分享,教你精准引流

科思创业汇 大家好&#xff0c;这里是科思创业汇&#xff0c;一个轻资产创业孵化平台。赚钱的方式有很多种&#xff0c;我希望在科思创业汇能够给你带来最快乐的那一种&#xff01; 在当今互联网的快速发展中&#xff0c;短视频脱颖而出&#xff0c;成为互联网的新秀&#xf…

Python-OpenCV中的图像处理-几何变换

Python-OpenCV中的图像处理-几何变换 几何变换图像缩放图像平移图像旋转仿射变换透视变换 几何变换 对图像进行各种几个变换&#xff0c;例如移动&#xff0c;旋转&#xff0c;仿射变换等。 图像缩放 cv2.resize() cv2.INTER_AREAv2.INTER_CUBICv2.INTER_LINEAR res cv2.r…

PDCA、4Y(循环质量管理)

PDCA是什么&#xff1f; PDCA是由英语单词Plan(计划)、Do(执行)、Check(检查)和Act(修正)的第一个字母组成的&#xff0c;PDCA是按照这样的顺序进行质量管理的循环。PDCA四个英文字母及其在PDCA循环中所代表的含义如下&#xff1a; P&#xff08;Plan&#xff09;&#xff1a…

做电商的老哥注意,不干的淘宝产品记得下架,别被薅羊毛了

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 提醒所有电商人&#xff1a;不干了就把链接下架&#xff0c;别被薅羊毛了。 关注卢松松的人都知道&#xff0c;虽然卢松松不做电商&#xff0c;但我还是有好几个店铺的。6月份我的某一个僵尸店铺就…

PROFIBUS-DP主站转ETHERCAT网关连接西门子支持ethercat吗

大家好&#xff0c;今天要给大家介绍一款捷米的神秘产品&#xff0c;它的名字叫JM-DPM-ECT&#xff0c;是一款兼具PROFIBUS-DP主站功能的通讯网关。想象一下&#xff0c;它既能和PROFIBUS总线打交道&#xff0c;又能与ETHERCAT网络愉快地交流&#xff0c;是不是感觉很神奇&…

校对软件趋势:人工智能技术的应用和未来发展

校对软件正处于人工智能技术应用和未来发展的前沿。以下是校对软件的一些趋势&#xff1a; 1.自然语言处理&#xff1a;随着自然语言处理(NLP)技术的不断发展&#xff0c;校对软件能够更准确地理解和分析文本。通过深度学习和语言模型的应用&#xff0c;校对软件可以更好地捕捉…

法律监督大数据平台有什么作用?

大数据赋能时代法律监督&#xff0c;构建法律行业领域大数据监督模型。法律监督大数据研判系统助力检察机关以社会公正为核心价值追求&#xff0c;对执法不严、司法不公“零容忍”&#xff0c;强化对诉讼活动的法律监督&#xff0c;坚决维护法律尊严&#xff0c;坚决捍卫公平正…

爬虫013_函数的定义_调用_参数_返回值_局部变量_全局变量---python工作笔记032

然后再来看函数,可以避免重复代码 可以看到定义函数以及调用函数

第六章代码题(四)

8.在以孩子兄弟二叉链表存储的树中&#xff0c;求树的叶子结点数。 首先要了解孩子兄弟存储结构&#xff0c;简单来说就是每个结点的左孩子不变&#xff0c;在同一层的结点都依次连在该层的结点的右孩子上。 如图 &#xff1a; 将上述的左孩子域改为第一个孩子指针&#xff0c…