无线安全的高级利用:隔离网络里你不知道的Wi-Fi隐蔽传输通道
cac55 2025-06-10 13:20 6 浏览 0 评论
2018 年 4 月,在荷兰阿姆斯特丹 Hack In The Box 安全会议上,我们分享了一个关于隔离网攻击技术的议题——Ghost Tunnel: Covert Data Exfiltration Channel to Circumvent Air Gapping(适用于隔离网络的 Wi-Fi 隐蔽传输通道)。
Ghost Tunnel 是一种可适用于隔离环境下的后门传输方式。一旦 payload(攻击载荷)在目标设备释放,Ghost Tunnel 可在用户无感知情况下对目标进行控制并将信息回传到攻击者的设备。相比于现有的其他类似研究(如 WHID,一种通过 Wi-Fi 进行控制的 HID 设备),Ghost Tunnel 不创建或依赖于任何有线、无线网络,甚至不需要外插任何硬件模块。
继该会议上分享后,同年 8 月 Ghost Tunnel 再次入选了 Black Hat USA 2018 Arsenal。
1. 常见的远控木马上线方式
说起远控木马,大家可能会想到一串耳熟能详的名称,如灰鸽子、冰河、byshell、PCShare、gh0st等。在此,我们以上线方式的不同来对远控木马进行简单分类,详见《木马的前世今生:上线方式的发展及新型上线方式的实现》(网址为
http://www.freebuf.com/articles/terminal/77412.html)。
- 主动连接型。被控端开启特定端口,主控端通过被控端的 IP 及端口连接到被控端,该类型有3389 远程桌面、VNC 远程桌面等远控方式。
- 反弹连接型。由于主动连接方式不适用于许多攻击目标所处的内网环境,因此许多木马采用反弹连接的方式进行上线。与主动连接的方式相反,反弹连接是由主控端监听特定端口,被控端执行木马后反向连接主控端。由于该方式的适用性更广,因此大部分木马都采用这种方式上线,如利用 FTP 上线、DNS 上线等,如图 2-118 所示。
- 通过第三方域名型。出于隐蔽性或反追踪的目的,有些新型木马采用第三方网站来进行上线,例如将知名博客类网站的文章内容及评论区、QQ 空间、微博、推特的推送内容甚至 QQ 个性签名作为上线地址,如图 2-119 所示。利用知名网站的好处是可以绕过某些防火墙的白名单限制。
其实,Ghost Tunnel 也可以理解为一种木马的上线方式,只是它更针对于隔离网络的场景。
2. 什么是隔离网闸
简单来说,隔离网闸(air gapping)是一种用于保护特定网络的物理隔离安全措施,被用来防止利用网络连接实施入侵行为的发生。
隔离网闸的常见原理为:① 切断网络之间的通用协议连接;② 将数据包分解或重组为静态数据;③ 对静态数据进行安全审查,包括网络协议检查和代码扫描等;④ 确认后的安全数据流入内部单元; ⑤ 内部用户通过严格的身份认证机制获取所需数据。隔离网闸经常被使用在涉密网与非涉密网之间。
攻击者无论是想利用操作系统、应用软件还是想利用通信协议的漏洞,都需要通过网络触碰目标主机,因此攻击者在网络隔离的环境中就很难实施攻击了。不过凡事没有绝对,利用恶意 USB 就是一种具有可操作性的攻击方式,如震网病毒(Stuxnet Worm)、水蝮蛇一号(COTTONMOUTH-I)就是针对隔离网攻击的经典案例。
(1) 震网病毒
著名的震网病毒利用 USB 将病毒传入隔离网络。病毒随后会逐渐传播到网络中的其他设备上,并在适当的时候给工控设备(用于工业自动化控制的设备)下发错误指令,导致设备异常直至报废。据相关媒体披露,震网病毒导致伊朗的核计划被迫延迟至少两年。
(2) 水蝮蛇一号
在斯诺登披露的 NSA 秘密武器中包含了该工具,水蝮蛇一号的内部包含了一套 ARMv7 芯片和无线收发装置。当它插入目标主机后会植入恶意程序并创建一个无线网桥,配套的设备可通过 RF 信号与其进行交互并传输命令和数据。同样,它被 NSA 用于攻击伊朗的秘密机构,从物理隔离的设备中窃取数据长达数年。
3. Ghost Tunnel 的应用
对于隔离网络的攻击一般有两个步骤:
① 在目标系统中植入恶意软件;
② 建立数据通道(infiltrate 和exfiltrate),以便执行命令和窃取数据。
根据之前的案例可以知道,任何可承载数据的媒介都可以用来建立数据通信的通道。Ghost Tunnel便是一个利用 Wi-Fi 信号的隐蔽传输通道。
以 HID 攻击为例,可以使用 BashBunny 或 DuckHunter 等 HID 工具(将在 6.1 节中介绍)将恶意程序植入受害者设备,随后恶意程序将使用受害者设备的内置无线通信模块与另一台由攻击者控制的设备建立端到端的 Wi-Fi 传输通道。此时,攻击者就可以远程执行命令并窃取数据。
值得注意的是,Ghost Tunnel 并不仅局限于使用 HID 攻击来植入恶意程序,用其他方式植入也是可行的。
Ghost Tunnel 的实现方式具有以下几个优势。
- HID 设备只用于植入攻击代码,当植入完成后就可以移除了(HID 攻击外的其他植入形式也是可以的)。
- 没有正常的网络连接,可以绕过防火墙。
- 不会对现有的网络通信及连接状态造成影响。
- 跨平台支持。该攻击可用于任何拥有Wi-Fi 模块的设备,已在Windows 7、Windows 10、Mac OS X上进行测试。
- 可在几十米内工作,配合信号桥接设备后,理论上可做到无限远。
(1) 原理
在正常的 Wi-Fi 通信中,一个站点必须经历 Beacon、Probe、Authentication 及 Association 等过程后才能建立与接入点的连接,其整个流程如图 2-120 所示。
Ghost Tunnel 并没有使用正常的 Wi-Fi 连接,而只用到了其中前三步,如图 2-121 所示。
为什么用这 3 个帧呢?在 802.11 的状态机中,取决于认证和关联所处的状态一共分为 3 个阶段,如图 2-122 所示。
在阶段 1(State 1)时,客户端处于 unauthenticated 和 unassociated 状态。而该阶段可以使用的 802.11 帧有如图 2-123 列举的几种,其中就包括了 Probe Request 帧、Probe Response 帧和 Beacon 帧。
总而言之,Ghost Tunnel 通过 Probe 帧和 Beacon 帧进行通信,并不建立完整的 Wi-Fi 连接。首先攻击者创建一个具有特殊 SSID 的 AP,攻击者和受害设备都使用它作为通信的标识符(而不是常规Wi-Fi 通信中的 MAC)。此时,攻击者通过解析受害者设备所发出的 Probe Request 帧得到数据,受害者设备上的恶意程序将解析攻击者发出的 Beacon 帧及 Probe Response 帧来执行命令并返回数据,如图 2-124 所示。这便是 Ghost Tunnel Wi-Fi 隐蔽传输通道的秘密。
(2) 实现
前面提到,控制端与被控端采用 Beacon 帧和 Probe Request 帧进行通信,通信数据嵌入到 Information Elements 的 SSID 或 Vendor Specific 元素中,使用 1 字节的标识符进行数据识别,如图 2-125 和图 2-126所示。
在控制端,使用了 Aircrack-ng 项目中的 osdep 模块,并利用一块具有“监听模式”和“包注入” 功能的无线网卡进行数据收发。相关底层原理可参考图 2-127。
在 Windows 被控端,通过 Windows Native WiFi API 来操作 Windows 设备的无线网卡进行数据收发。关于 Windows 的 802.11 软件架构可参考图 2-128。
(3) 代码架构设计
配合着在 Black Hat 会议上的分享,我们将 Ghost Tunnel 的服务端与 Windows 受控端进行了开源(地址为
https://github.com/PegasusLab/GhostTunnel),读者可自行下载、编译、安装并搭建实验环境,命令行界面如图 2-129 所示。
控制端和被控端依照数据的流向按照模块化的方式进行设计,如图 2-130 所示。
控制端和被控端的代码文件及目录说明如下:
控制端
- gt_common.h:负责数据格式等相关定义。
- gt_server 类:负责初始化及总体功能控制。
- gt_console 类:负责控制台的输入输出。
- edit 目录:hostapd 项目关于console 的操作功能。
- packet 目录:mdk4 项目关于802.11 数据帧组装部分的功能。
- libwifi 目录:Aircrack-ng 中osdep 数据收发功能,以及Kismet WiFi 网卡控制功能。
Windows 被控端
- wtunnel 类:数据收发功能。
- data_handler 类:数据处理功能。
通信数据格式如下:
typedef struct _tunnel_data_header
{
unsigned char flag; // 数据标志
unsigned char data_type; // 数据类型
unsigned char seq; // 发送数据包编号
unsigned char client_id; // 被控端ID
unsigned char server_id; // 控制端ID
unsigned char length; // 数据长度
}tunnel_data_header;
基于传输效率的考虑,代码中并没有对数据进行确认及校验,只是对重复的数据进行了过滤。数据类型定义如下:
#define TUNNEL_CON 0x10 // 建立连接
#define TUNNEL_SHELL 0x20 // shell 功能
#define TUNNEL_FILE 0x30 // 文件下载功能
#define DATA_IN_VENDOR 0x80 // 发送数据不超过32 字节,只填充SSID
typedef enum _TUNNEL_DATA_TYPE
{
TUNNEL_CON_CLIENT_REQ = 0x11,
TUNNEL_CON_SERVER_RES,
TUNNEL_CON_HEARTBEAT,
TUNNEL_SHELL_INIT = 0x21,
TUNNEL_SHELL_ACP,
TUNNEL_SHELL_DATA,
TUNNEL_SHELL_QUIT,
TUNNEL_FILE_GET = 0x31,
TUNNEL_FILE_INFO,
TUNNEL_FILE_DATA,
TUNNEL_FILE_END,
TUNNEL_FILE_ERROR,
}TUNNEL_DATA_TYPE;
USB 攻击平台——P4wnP1 项目(
https://github.com/mame82/P4wnP1)受到了Ghost Tunnel 启发,在新版本种加入了类似的利用方式,如图2-131 所示。
本文节选自《黑客大揭秘:近源渗透测试》
本书主要讲解了当渗透测试人员靠近或位于目标建筑内部,如何利用各类无线网络、物理接口、智能设备的安全缺陷进行近源渗透测试。书中首先以Wi-Fi举例,介绍基于无线网络的安全攻防技术及实例测试,包含对家庭、企业级无线环境的常见渗透测试方法,无线入侵防御解决方案等。
相关推荐
- 基于FPGA的伪随机序列发生器设计(fpga伪随机数发生器)
-
基于FPGA的伪随机序列发生器设计1基本概念与应用1)LFSR:线性反馈移位寄存器(linearfeedbackshiftregister,LFSR)是指给定前一状态的输出,将该输出的线性...
- 基于MATLAB的BP神经网络预测计算App
-
BP(BackPropagation)神经网络可用于数据的预测,是经常使用的预测方法之一。之前介绍了基于MATLAB的guide制作的BP神经网络预测计算GUI界面,但是随着MATLAB版本的更新,之...
- 《matlab/simulink仿真ROS学习笔记》第1期
-
PC平台:window10软件平台:MATLABR2016a备注:不知道具体的matlab版本号,可以打开matlab在终端界面输入:version查看一,调用matlab软件中自带的ROS步骤:...
- matlab读取表格数据以固定周期通过串口发送
-
如题,这里对数据的处理对于熟悉matlab各函数操作的同学来讲,是常规操作,但对于matlab新手或只是想借用matlab工具将存于PC端文件中的数据通过串口发送出去的工程人员来说,由于对matlab...
- 选择电磁阀必须要知道的8个因素(电磁阀的选择应从哪些方面考虑)
-
如何正确选择电磁阀,电磁阀的种类、规格、标准以及根据不同的介质选择的型号各不相相同,电磁阀的参数选择不全面的话,会影响使用寿命、诱发各种潜在危险甚至事故,下面诺伊曼的工程师将与您一起探讨关于正确选择电...
- 一种图像局部特征快速匹配算法(图像局部特征描述和提取方法研究)
-
摘要:在图像处理和机器视觉领域,SIFT是目前被广泛应用的一种基于局部特征的图像匹配算法。针对SIFT算法匹配速度较慢和常常存在错误匹配对的问题,本文提出在匹配过程中采用角度相似性分析替代传统的欧...
- 增益映射耦合局部正则化的图像重构算法
-
朱莉(西安科技大学计算机学院,陕西西安710054)摘要:针对当前的图像重构方法在对多帧超分辨率图像复原时,存在明显的模糊效应与振铃效应的不足,提出增益映射控制耦合局部正则化的图像重构算法。首...
- 每天一个MATLAB小技巧(9)(matlab简单教程)
-
欢迎关注公众号:【阿波兹得】上文接:每天一个MATLAB小技巧(8)如果你觉得我的文章对你有亿点点帮助的话,兄弟姐妹们看的时候顺便戳一下关注、点赞、收藏~谢谢朋友们,大家的支持就是我不断更新的最大动力...
- 零基础入门Matlab:两小时快速上手指南
-
前言Matlab作为一款强大的数学计算和可视化工具,广泛应用于工程、科研和数据分析领域。本文为零基础学习者量身定制,通过简洁明了的讲解和案例,助你快速掌握Matlab核心功能,两小时轻松入门!1.界...
- 用改进的深度差分特征识别人体部位
-
摘要:为了进一步提高人体部位识别正确率,考虑人体部位尺寸不一特性,提出了改进型深度差分特征。改进型深度差分特征根据人体部位尺寸大小确定特征偏移量取值,然后利用随机森林算法训练分类模型,实现了人体部...
- MATLAB《自动控制原理》相关编程(二)
-
摘要:本文主要讲解自动控制原理中涉及的相关MATLAB函数,包括拉式变换和反拉式变换、传递函数的化简(并联和串联)、带延时的传递函数、单位速度、单位加速度和其他任意输入的响应。1.拉式变换时域函数转...
- MATLAB-图片自动编号、命名及保存
-
在进行运算的可以,可能经常需要对图形进行保存,手动操作比较繁琐,可以自动的生成图片并按照一定的规律自动命名,这样可以提高效率。实现功能会涉及到一些函数的使用和往期介绍的图像的保存方法。下面简单回顾一下...
- MATLAB的Simulink常用模块(一)(simulink的matlab function模块)
-
在MATLAB的Simulink中有些常用的模块,今天主要介绍常数模块、示波器模块、以及模块属性的操作函数。1.模块的构成元素输入/输出端口:作为模块之间传递数据的纽带,连接输入信号和输出信号。模块...
- 闪耀金色光芒的冥王侍卫,掌管宇宙睡意的使者,温柔杀手修普诺斯
-
在极乐净土中有两位守护冥王哈迪斯的神,一个是死神塔纳多斯,另一个就是他的哥哥修谱诺斯。这两个神明一个是能掌握人类生死的大权,另一个则是负责人类和神仙的睡眠。可以说这两个人都十分的厉害。那么作者就给大...
- 无线安全的高级利用:隔离网络里你不知道的Wi-Fi隐蔽传输通道
-
2018年4月,在荷兰阿姆斯特丹HackInTheBox安全会议上,我们分享了一个关于隔离网攻击技术的议题——GhostTunnel:CovertDataExfiltratio...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 如何绘制折线图 (52)
- javaabstract (48)
- 新浪微博头像 (53)
- grub4dos (66)
- s扫描器 (51)
- httpfile dll (48)
- ps实例教程 (55)
- taskmgr (51)
- s spline (61)
- vnc远程控制 (47)
- 数据丢失 (47)
- wbem (57)
- flac文件 (72)
- 网页制作基础教程 (53)
- 镜像文件刻录 (61)
- ug5 0软件免费下载 (78)
- debian下载 (53)
- ubuntu10 04 (60)
- web qq登录 (59)
- 笔记本变成无线路由 (52)
- flash player 11 4 (50)
- 右键菜单清理 (78)
- cuteftp 注册码 (57)
- ospf协议 (53)
- ms17 010 下载 (60)