简介

icmptunnel的工作原理是将你的内容封装在ICMP echo数据包中,一般在ICMP数据包的 "data "字段中发送,并将其发送到你自己的代理服务器。代理服务器解压缩数据包并转发。传入的以客户为目的地的IP数据包再次被封装在ICMP回复数据包中,并发回给客户。

icmptunnel通过创建一个虚拟的隧道接口来工作。客户端主机上的所有用户流量被路由到icmptunnel在这个接口上监听IP数据包。这些数据包被封装在一个ICMP echo数据包中(即ICMP数据包的payload只是原始IP数据包)。这个新产生的ICMP数据包被发送到客户机外,通过受限的互联网连接发送到代理服务器。

代理服务器收到这些ICMP数据包并解压缩原始IP数据包。再进行IP伪装后被重新传送到互联网上。因此,目标相信是代理服务器发出的请求。然后,目标用一个IP数据包回应代理服务器。这又被icmptunnel捕获,封装在一个ICMP回复包中,并发回给客户端。

在客户端,IP数据包被从ICMP回复数据包的payload中解析和注入。用户应用程序从这个虚拟接口读取,从而获得适当的IP数据包。

+--------------+                         +------------+
|              |       ICMP traffic      |            |       IP traffic
|    Client    |  ------------------->   |   Proxy    |   ------------------>
|              |  <-------------------   |   Server   |   <------------------
|              |    through restricted   |            |     proper internet
+--------------+         internet        +------------+

github仓库:https://github.com/DhavalKapil/icmptunnel

安装使用

  • 编译
git clone https://github.com/DhavalKapil/icmptunnel
cd icmptunnel/
make
  • 在服务器端以root权限运行的隧道:
icmptunnel -s 10.0.1.1
  • 在客户端执行route -n,找到你的网关和相应信息:
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.100.2    0.0.0.0         UG    0      0        0 ens33
  • 编辑client.sh
  • 用代理服务器的IP替换
  • 用上面的Gateway地址替换
  • 用上面的Iface替换
  • 在客户端,以root权限运行:
icmptunnel -c <server>

现在隧道应该成功运行,客户端应该能够访问互联网。所有流量都将通过 ICMP 隧道进行传输。

分析特征

ICMP TTL的设置一般情况下与主机的操作系统相关,当然也可以手动去修改。

操作系统 TTL
UNIX 255
Linux 64
MS Windows 95/98/NT 3.51 32
MS Windows NT 4.0/2000/XP/2003 Server 128
FreeBSD 2.1R 64
VMS/Multinet 64
Windows XP 128

在源代码icmp.c中233行可以看到TTL被固定为255,从流量中也可以看到TTL为255。

void prepare_headers(struct iphdr *ip, struct icmphdr *icmp)
{ip->version = 4;ip->ihl = 5;ip->tos = 0;ip->id = rand();ip->frag_off = 0;ip->ttl = 255;ip->protocol = IPPROTO_ICMP;icmp->code = 0;icmp->un.echo.sequence = rand();icmp->un.echo.id = rand();icmp->checksum = 0;
}

检测思路

  • 检测同一来源 ICMP 数据包的数量。一个正常的 ping 每秒最多只会发送两个数据包。而使用 ICMP 隧道的浏览器在同一时间会产生上千个 ICMP 数据包。
  • 寻找那些响应数据包中 payload 跟请求数据包不一致的 ICMP 数据包。
  • 如果在内网中,可以检查 ICMP 数据包的协议TTL值,icmptunnel 默认会设置所有的 ICMP 的IP层TTL值为255。内网拓扑容易确定具体的跳数,简单计算可以印证。

ICMP隧道检测分析--icmptunnel相关推荐

  1. 内网渗透系列:内网隧道之ICMP隧道

    目录 前言 一.ICMP隧道技术 1.ICMP协议 (1)报文格式 (2)ping 2.ICMP隧道 (1)原理 (2)优缺点 二.ICMP隧道工具 1.icmpsh (1)源码 (2)用法 2.ic ...

  2. ICMP 隧道——将流量封装进 IMCP 的 ping 数据包中,旨在利用 ping 穿透防火墙的检测...

    利用 ICMP 隧道穿透防火墙 转自:http://xiaix.me/li-yong-icmp-sui-dao-chuan-tou-fang-huo-qiang/ 以前穿透防火墙总是使用 SSH 隧道 ...

  3. ICMP隧道通信原理与通信特征

    一 ICMP 隧道技术解析 ICMP协议 ICMP(InternetControl MessageProtocol)Internet控制报文协议.它是TCP/IP协议簇的一个子协议,用于在IP主机.路 ...

  4. 内网穿透从搭建到溯源(内网隧道搭建、绕过、隧道流量分析、日志分析、隧道防护)

    背景 在攻防博弈这个永久的话题中,永远不会缺少一个重要角色即内网穿透.当渗透测试人员在进入内网,需要扩大战果的时候,往往会遇到内网的一些防护策略,不外乎边界设备.防火墙及入侵检测设备对端口或者数据包的 ...

  5. 红蓝对抗之隧道技术第二篇(reGeorg内网穿透、SSH隧道本地Socks代理、SSH远程转发、Earthworm Socks5代理、Tunna正向代理、ICMP隧道、DNS隧道、Frp穿透)

    文章目录 隧道应用 reGeorg内网穿透 SSH本地转发(正向) 场景一 场景二 SSH远程转发(反向) Earthworm Socks5代理 正向代理 反向代理 Tunna正向代理 ICMP隧道 ...

  6. icmp端口_icmptunnel搭建icmp隧道——超详细步骤

    环境搭建: 攻击机kali:192.168.159.129 受害机centos:192.168.159.10 首先我们在攻击机和受害机都需要安装下icmptunnel,并把系统的icmp回显禁用掉,命 ...

  7. 高速公路隧道视频分析解决方案

    一. 交通行业背景需求分析 视频监控是交通管理的不可或缺的辅助手段,如何有效地实现交通违章和突发事件的自动检测以及交通流量自动统计,并根据城市路口.城市道路.快速路.高速公路.治安卡口.隧道.桥梁和停 ...

  8. 【Pingtunnel工具教程】利用ICMP隧道技术进行ICMP封装穿透防火墙

    文章目录 前言 一.ICMP隧道概念 二.复现前的准备工作&相关环境介绍 三.复现步骤 三.总结 前言 web搞太多了,发现csdn上面很少内网的内容,所以今天来整点内网的隧道技术,ICMP隧 ...

  9. 变换域隐写术检测分析

    前言 犯罪分子经常使用隐写术将秘密指令隐藏至图片中做非法操作,以躲避专业人员的检测,因此需要隐写术检测分析来阻止这种恶意行为.本文提出了一个变换域的隐写分析模型,以检测图像中是否使用变换域隐写算法隐写 ...

  10. ICMP隧道工具ptunnel

    ICMP隧道工具ptunnel 在一些网络环境中,如果不经过认证,TCP和UDP数据包都会被拦截.如果用户可以ping通远程计算机,就可以尝试建立ICMP隧道,将TCP数据通过该隧道发送,实现不受限的 ...

最新文章

  1. Anaconda 使用的一些体验与困惑
  2. Android LinearLayout的android:layout_weight属性
  3. Spring 4 CustomEditorConfigurer Example--转
  4. java代码如何能运行起来_Java代码如何运行
  5. dj打碟怎么学_南京学DJ打碟
  6. Android 启动分析 1
  7. cufon,在网页上画出特殊字体
  8. SAP CRM WebClient UI如何将后台存储的timestamp时间戳转换成本地时间
  9. 企业级IM应该帮助员工提高绩效,避免无关的信息干扰
  10. 160 - 34 Cruehead.3
  11. MVC应用程序显示RealPlayer(rm)视频
  12. linux命令——crontab的使用方法
  13. mfc切换office样式_干货搬运工|计算机二级office必读,裸考也能通关的宝典
  14. java 可变参数_90.Java可变参数
  15. Linux 基金会发布 2017 最佳 Linux 发行名单
  16. near、far、huge,based四个个指针的区别
  17. 计算机网络的商业价值和应用,计算机网络建模数学工具的分析与比较
  18. 小程序通过摄像头拍摄个人身份证
  19. dpdk mellanox网卡 多线程hang住的问题
  20. 1750套工装夹具检具治具机械设计机构solidworks模型3d课程图纸sw

热门文章

  1. 旋转矩阵和角速度之间的关系
  2. 苹果手机如何深度清理_手机深度清理app
  3. windows中git输错密码后不能重新输入的问题
  4. 使用AccessibilityService(无障碍服务)自动完成手机设置功能
  5. 逃避追债?贾跃亭把法拉第未来股权转给了外甥,但他还有5套豪宅! | 焦点
  6. Parcel 中文文档 | Parcel 中文网
  7. M - Make Cents?
  8. 最新款服务器主板,新至强处理器御用座驾,技嘉推出MD71和MD61两款服务器主板...
  9. 快速学习-Saturn作业编排
  10. 无论是否跳槽——都要时刻关注自身能力提升