ICMP隐蔽隧道攻击分析与检测(三)
• ICMP隧道攻击工具特征分析
一、原理
由于ICMP报文自身可以携带数据,而且ICMP报文是由系统内核处理的,不占用任何端口,因此具有很高的隐蔽性。
通过改变操作系统默认填充的Data,替换成自己构造的数据,这就是ICMP隐蔽隧道的原理。
通常ICMP隧道技术采用ICMP的ICMP_ECHO和ICMP_ECHOREPLY两种报文,把数据隐藏在ICMP数据包的数据域中,利用ping命令建立隐蔽通道。
进行隐蔽隧道传输的时候,被控端(防火墙内部)运行并接受外部攻击端的ICMP_ECHO数据包,攻击端把需要执行的命令隐藏在ICMP_ECHO数据包中,被控端接收到该数据包,解出其中隐藏的命令,并在防火墙内部主机上执行,再把执行结果隐藏在ICMP_ECHOREPLY数据包中,发送给外部攻击端。(本质上就是利用防火墙不禁止ICMP协议的安全漏洞,通过ICMP的请求和应答数据包,伪造Ping命令的数据包形式,实现绕过防火墙和入侵检测系统的阻拦。)

优点:
- 通常防火墙对ICMP_ECHO数据包是放行的,并且内部主机不会检查ICMP数据包所携带的数据内容,隐蔽性高
缺点:
- ICMP隐蔽传输是无连接的,传输不是很稳定,而且隐蔽通道的带宽很低
- 利用隧道传输时,需要接触更低层次的协议 ,这就需要高级用户权限
二、隐蔽隧道工具使用及流量特征分析
1、icmpsh建立隧道及数据包分析
这一工具简单并且便携。受控端(客户端)使用C语言实现。只能运行在目标Windows机器上,而主控端(服务端)由于已经有C和Perl实现的版本,而且之后又移植到了Python上,因此可以运行在任何平台的攻击者机器中。
攻击机:172.16.159.129/24
靶机:172.16.159.153/24
攻击机执行命令建立隐蔽隧道连接

靶机执行命令建立隐蔽隧道连接

执行" whoami "命令抓包查看

Wireshark抓包分析


2、icmptunnel建立隧道及数据包分析
- icmptunnel通过创建一个虚拟的隧道接口来工作
- 客户端主机上的所有用户流量都路由到虚拟网卡tun0
- icmptunnel在此接口上侦听IP数据包
- 这些数据包封装在ICMP回显数据包中
攻击机:172.16.159.2/24
靶机:172.16.159.3/24
整体架构:

攻击机执行命令建立隐蔽隧道连接

观察路由表

靶机执行命令建立隐蔽隧道连接

观察路由表

此时攻击机和靶机之间通过虚拟网卡tun0建立连接,IP地址为:
攻击机:10.0.1.1/24
靶机:10.0.1.2/24
在攻击机执行ssh登陆靶机
抓包物理网卡eth0,可以发现通讯连接全部变成ICMP协议,所有通讯流量都被封装在ICMP协议中传输

抓包虚拟网卡tun0,流量仍然为正常的协议通讯

3、ptunnel建立隧道及数据包分析
ptunnel 全称 PingTunnel,Kali下自带该工具
假设场景,当前已经拿下了一台外网 Web Linux 服务器,想通过它利用 ICMP 协议连接内网的一台已经开启远程桌面的 Windows ,网络结构简化如下:

PC 本机
||
||
||
Kali 攻击机 172.16.159.2 (外网)
||
||
||
Linux Web 跳板机 172.16.159.3 (外网)
|| 172.16.30.3 (内网)
||
||
Win RDP 目标机 172.16.30.2 (内网)
在 Kali 攻击机上执行以下命令
ptunnel -p 172.16.159.3 -lp 3389 -da 172.16.30.2 -dp 3389 -x pass
-p 指定跳板机外网IP
-lp 指定本机的监听端口
-da 指定目标机的内网IP
-dp 指定目标机的端口
-x 设置隧道密码

在 Linux Web 跳板机上执行以下命令
ptunnel -x pass

之后访问 Kali 攻击机 172.16.159.2 的 3389 端口就会连接到 Windows RDP 目标机 192.168.30.2 的 3389 端口了,不过实测发现此ICMP隧道建立的通讯速度慢且不够稳定

抓取 Linux Web 跳板机和 Windows RDP 目标机之间的流量,可以发现流量传输的是TPKT协议
(TPKT协议是一个传输服务协议,我们常用的RDP协议(Remote Desktop Protocol,Windows的远程桌面协议)就是基于TPKT)

抓取 Kali Linux 攻击机和 Linux Web 跳板机之间的流量,可以发现流量传输已经变成ICMP协议

三、HW行动之ICMP隧道攻击的应用
2022年HW病毒木马在反连C2过程中使用的协议呈现出多样化的趋势,不再局限于经典的TCP、HTTP和HTTPS,少量样本开始使用ICMP隧道和DNS隧道进行通信。
|
样本描述
|
样本信息
|
|---|---|
Sha256 |
d145e9a2a6e9e904aa2984ae9282d384631f757a978adf24a09dd2600011834a |
SHA1 |
44bacb493e84a14f9f0dc384b0f9648b50dade8e |
MD5 |
70804a1efac34e4f0e24fd0af5286692 |
文件类型 |
EXE |
文件大小 |
4.67MB |
文件名称 |
投诉举报证据.dоcxㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ ...ㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ .exe |
功能描述 |
后门木马 |
技术特点 |
Go语言加载器,会将后门样本释放本地执行,样本可进行icmp通信 |
这是一个使用ICMP协议进行通信的样本。样本外层使用Go语言编写的加载器,负责将诱饵Word文档和木马模块释放执行。

之后,木马将在C:\Users\Public目录下释放名为svchost.exe木马并启动执行。

样本利用ICMP协议同C2进行通信,ICMP协议中的data字段可写入任意自定义数据,样本会将上线数据填充1024个字节放在ICMP协议的data字段,并且返回的ICMP数据包的data字段也是固定的1024个字节。
C2会对接收的ICMP流量进行判断,如果data数据不符合其格式,将不会发回响应包。在接收到到响应后,样本会基于C2返回的数据执行不同的功能。

ICMP隐蔽隧道攻击分析与检测(三)的更多相关文章
- dns隧道攻击原理及常用工具流量分析
DNS协议是一种请求应答协议,也是一种可用于应用层的隧道技术.虽然DNS流量的异常变化可能会被发现,但是在基于传统socket隧道已经濒临淘汰,TCP.UDP通信大量被安全设备拦截的大背景下,DNS. ...
- Dshell----开源攻击分析框架
前言 随着互联网的高速发展,网络安全问题变得至关重要,随着网络的不断规模化和复杂化,网络中拒绝服务(Denial of Service,DoS)攻击和分布式拒绝服务(Distributed Denia ...
- 带你走进二进制-一次APT攻击分析
原文:https://osandamalith.com/2017/06/04/apt-attack-in-bangladesh/ 由prison翻译整理,首发i春秋 引言; 这是一次来自遥远国 ...
- [web安全]Web应用漏洞攻击分析与防范
网站攻击主要分为以下几类: (1) sql注入攻击 SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.它是利 ...
- 手机自动化测试:appium源码分析之bootstrap三
手机自动化测试:appium源码分析之bootstrap三 研究bootstrap源码,我们可以通过代码的结构,可以看出来appium的扩展思路和实现方式,从中可以添加我们自己要的功能,针对app ...
- 检测三种不同操作系统的Bash脚本
检测三种不同操作系统(GNU/Linux, Mac OS X, Windows NT)的Bash脚本. 设计: 1.使用“uname”命令获取系统信息,带上“-s”参数个打印内核名称. 2.使用“ex ...
- 2018-2019-1 20189221《Linux内核原理与分析》第三周作业
2018-2019-1 20189221<Linux内核原理与分析>第三周作业 实验二 完成一个简单的时间片轮转多道程序内核代码 实验过程 在实验楼中编译内核 编写mymain.c函数和m ...
- 《Linux内核分析》第三周学习报告
<Linux内核分析>第三周学习报告 ——构造一个简单的Linux系统MenuOS 姓名:王玮怡 学号:201351 ...
- 《Linux内核分析》第三周学习笔记
<Linux内核分析>第三周学习笔记 构造一个简单的Linux系统MenuOS 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.stud ...
- 分享下今天研究的流量上限DDos攻击分析和解决方式
分享下今天研究的流量上限DDos攻击分析和解决方式 常常听到或者碰到某个站点被攻击.一般都是流量攻击.今天自己写了个程序測下相关的上限,程序仅仅简单做了个get html操作(不包括图片等资源文件). ...
随机推荐
- 浙大版《C语言程序设计(第3版)》题目集 习题3-1 比较大小(10 分)
本题要求将输入的任意3个整数从小到大输出. 输入格式: 输入在一行中给出3个整数,其间以空格分隔. 输出格式: 在一行中将3个整数从小到大输出,其间以"->"相连. 输入样例 ...
- vue实现按钮多选
需求是这样: 首先考虑使用elementui中的组建实现,但是有时候会忽略组建.实现方式两种: 1.直接使用element实现 let weekTimeData: [ '星期一', '星期二', '星 ...
- Java基础面试笔试大汇总
1面向对象的特征有哪些方面? 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象. 继承:继承就是从已有的类得到继承信息创建新类的过程 封装:封装就是把数据和操作数据的方法绑 ...
- C++ PTA 小于m的最大的10个素数
7-5 小于m的最大的10个素数 (15分) 给定一个整数m(50<m<20000),找出小于m的最大的10个素数. 输入格式: 输入在一行中给出一个正整数m(50<m<200 ...
- char和int的类型转换
char类型是16位的,底层采用unicode编码保存.char类型是可以直接赋值给int类型的,因为是16位到32位低到高.举个例子比如int i='1';打印i的值是49.char类型跟int类型 ...
- nginx中proxy_set_header Host $host的作用
nginx配置upstream负载均衡后请求400,配置proxy_set_header Host $host成功.请问这是什么原理? proxy_set_header Host $host有什么作用 ...
- LeetCode 之 111. 二叉树的最小深度
原题链接 思路: 递归计算每个子树的深度,返回左右子树中深度小的值: 由于题目中要求的是到最近叶子节点的深度,所以需要判断 左右子树为空的情况: python/python3: class Solut ...
- C/S 架构 和 B/S 架构
C/S架构的理解: 官方称:clinet-server 客户端需要下载的软件: 今日头条,爱奇艺等 能在手机和浏览器打开的软件 B/S架构的理解: 官方称:web-server 客户端为浏览器的: ...
- 利用网络复制安装额外域控制器、利用介质安装额外域控制器、安装RODC额外域控制器
一.拥有多台域控制器的优势 1.分担用户身份验证的负担,改善用户登录的效率 2.容错功能:若有域控制器故障,此时仍然可以有其他正常的域控制器来继续提供服务,因此对用户的服务并不会停止 二.系统提供两种 ...
- CH573 CH579 CH582程序烧录讲解
WCH的蓝牙芯片CH57x/CH58x系类大部分是支持串口烧录.USB烧录和LINK烧录的,除了一些特殊的封装,如571K,它引脚较少,只支持串口免按键烧录. 仿真下载:ARM内核的CH579支持Jl ...