引用本文:张敬义. 物理隔离网络双向数据传输关键技术研究[J].通信技术,2020,56(10):.

摘要

构建了一种实用的物理隔离网络双向数据传输模型,通过恶意软硬件植入、自主建立无线通道,为物理隔离网络数据窃取和双向传输创造了可能。围绕双向数据传输,研究了目标机控制、HID控制、无线AP控制、远程攻击机四个模块的功能和技术,实现了目标机和攻击机经由USB直连和无线网络转发的数据双向传输模式,支持目标机锁屏情况下的数据稳定传输。设计了集成度高、便携、可拓展的STM32Ducky便携设备。

关键词:隐蔽信道;植入;物理隔离;双向数据传输

内容目录:

0 引 言

1 物理隔离网络隐蔽信道通信模型

1.1 隐蔽信道通信一般模型

1.2 基于HID便携设备的双向数据传输模型

2 物理隔离网络双向数据传输关键技术

2.1 植入技术:Breaching the Air-Gap

2.2 双向数据传输技术:Bridging the Air-Gap

3 双向数据传输测试

3.1 软硬件设备植入测试

3.2 数据测试

3.3 重难点问题

4 结 语

引言

高防护环境是计算机防护等级下的概念,对于计算机网络中重要的数据和文件,可采用网络隔离技术提高防护能力。网络隔离通常分为物理隔离和逻辑隔离。逻辑隔离是通过协议阻隔数据交互的隔离手段;物理隔离,又称为“气隙”隔离(air-gap),通过阻断网络的物理连接,将重要的、需高防护的目标网络或节点与其他网络隔离,是一种更为彻底、安全性更高的安全防护方法。

对于物理隔离的计算机网络主机,以色列古里安大学Guri团队依托电磁波、磁场、热量、声波、可见光等介质,实现了对物理隔离网络主机的数据窃取。这种利用物理隔离网络主机自主产生的介质建立数据传输通道的方法,又称为侧信道攻击,其突出的优点是隐蔽性好,缺点是技术难度高。

在2014年美国的一次黑客会议上,首次出现了利用USB HID协议漏洞的攻击方法,攻击设备称为BADUSB。随后,国内也陆续出现了“烧鹅”、Leonardo、WifiDucky、USBninja数据线、树莓派系列的BADUSB等,以上设备在网上商城基本都能购买,价格在几十元到几百元不等。这些设备的共同点是,将USB接口设备模拟成HID设备,通过模拟键盘或鼠标的方法对物理隔离网络主机进行攻击(前提是目标主机USB接口可用),其突出优点是技术门槛低,缺点是单向控制,无法双向数据传输。

基于USB HID攻击技术,2016年吕志强等人利用microPython开发板,使用2.4G无线模块主动构建无线传输信道,基本实现了对物理隔离网络主机的恶意软件植入、远控、双向数据传输等功能,传输速率2.4kB/s,在功能上较为接近美国“水蝮蛇”攻击设备[8]。然而,该攻击方法没有设计出基于最小开发系统芯片的便携设备。

文章利用STM32F103C8T6和ESP8266无线模块设计了最小开发系统芯片的设备,即STM32Ducky便携设备,针对物理隔离网络主机构建了有效的双向传输模型,具有较好的实践性,对USB HID类的便携设备开发有一定参考意义。

物理隔离网络隐蔽信道通信模型

1.1 隐蔽信道通信一般模型

图1 利用隐蔽信道攻击物理隔离网络模型

如图1所示,假定目标主机位于物理隔离网络,与互联网等外界网络无任何通信。攻击者利用社会工程学等方法将恶意软件或硬件植入目标主机中;恶意软硬件按照攻击者意图收集敏感信息,并通过电磁波、磁场、声波等介质与攻击者建立隐蔽通信信道;最终攻击者窃取到目标机敏感信息。

隐蔽通信信道是一种突破物理隔离网络封锁,进行数据窃取和双向控制的较为有效的方法。具体实现过程中,往往需要攻击者抵近到目标区域,直接将恶意程序植入或间接利用社工的方法植入,同时需要借助物理隔离网络主机本身提供的电磁波、光等传输介质或攻击者主动构建的传输通道。文章主要对主动构建隐蔽信道的实现技术和可行性方法进行探索研究。

1.2 基于HID便携设备的双向数据传输模型

如图2所示,模型主要涉及两项关键技术,分别为植入技术和双向数据传输技术,前者解决物理隔离网络“破”的问题,即打破物理隔离的封锁;后者解决物理隔离网络“出”的问题,即通过主动建立隐蔽通道,实现双向控制和数据传输。

目标主机假定,物理隔离网络计算机主机,操作系统为Windows系统,已禁用或拆除网卡,不存在有线和无线的网络接入;计算机安全策略禁止大容量存储设备接入。

双向数据传输的关键是,在攻击机和目标机之间主动构建双向数据传输通道。文章中采用STM32Ducky便携设备(核心模块为STM32芯片和ESP8266无线模块)构建无线网络信道,其中STM32芯片模拟HID设备,实现隐蔽性植入,ESP8266模块用来构建无线网络;同时利用“客户端/服务器(C/S,即client/server)模式”,实现攻击机和目标机的双向数据传输。

图2 基于STM32Ducky便携设备的双向数据传输模型

物理隔离网络双向数据传输关键技术

2.1 植入技术:Breaching the Air-Gap

(1)恶意软件植入

对物理隔离网络目标主机数据窃取,不能采取传统互联网通过上传或下载文件的方法。有效的方法是,借助恶意软件将敏感信息和文件保存到移动存储介质中或远程实时传输。恶意软件的作用包括搜索目标主机系统信息、敏感文件,根据远程攻击端指令,建立稳定的数据传输通道。

恶意软件的植入包括软件的上传和软件的触发。软件上传的关键问题是免杀,即躲避目标杀软系统和入侵检测系统。文章使用的恶意软件为client.exe,经前期测试,基本不会被杀软系统拦截。可利用社会工程学的方法,让物理隔离网络内部人员主动接触和下载程序;也可利用BADUSB模拟键盘执行的方式,将存储在HID设备芯片固件中的client.exe触发执行,并设置为随开机启动,执行后无窗口界面,隐蔽运行。

(2)硬件植入

硬件设备植入的关键是隐蔽性。文章中使用的STM32Ducky本质是HID模拟设备,即采用STM32最小开发芯片模拟HID设备;实际应用中,可嵌入目标主机的USB键盘、鼠标等具有USB接口的设备中。目标主机对接入的HID设备无法枚举为普通的移动存储设备,也无法对其内部闪存上的恶意代码进行检测,基本上可规避杀毒软件和安全策略的检测。

2.2 双向数据传输技术:Bridging the Air-Gap

Bridging the Air-Gap,即物理隔离网络桥接,实际上是在远程攻击机和物理隔离网络主机之间建立一个稳定的C&C通道(即Command命令和Control控制),最终实现双向数据传输。具体内容如下:

(1)无线网络通道的建立

无线网络通道的建立,采用ESP8266 无线传输模块,该模块集成在STM32芯片上。ESP8266模块的作用是,使物理隔离网络主机实现了无线基站拓展。由无线模块在目标机建立AP(access point)网络节点,并作为服务器;同时,远端的攻击机利用无线网卡主动接入目标机的AP网络中,从而实现了无线通道的建立。因此,远端攻击机进行指令控制和数据传输的距离与无线模块直接相关,经测试,有效传输距离不小于15米。

(2)数据通道建立和远控

图3 数据通道建立和远控过程

在无线通道的基础上,数据通道建立依赖四个程序,分别是目标机上的client.exe、STM32模块上的stm32.ino、esp8266模块的esp.ino、攻击机上的server.exe。具体实现过程如下:

第一,目标机程序client.exe

client.exe程序,可通过社工的方法植入目标机中,并隐蔽运行,根据指令执行文件搜索、数据回传等功能。

目标机与STM32模块的交互是通过client.exe完成的,程序功能主要包括STM32Ducky设备识别、控制指令交互、文件传输交互。实际上,攻击机远控的shell权限也是基于client.exe实现的,client.exe存储运行的位置和权限,即为攻击机远控的权限,攻击机远控的shell文件目录即为client.exe所处的路径。

图3中目标机程序client.exe主要包含hidapi.h、hidclient.cpp。

其中hidapi.h是一个跨平台的、用于USB HID设备通信的库文件,提供了hid设备识别函数(包括hid_device_info结构体、hid_enumerate设备枚举函数、hid_open设备打开函数等),hid设备读写函数(包括hid_write()设备写、hid_read()设备读等);hidclient.cpp文件调用hidapi.h,完成设备识别、远程控制和文件传输等。

在远控指令识别方面,文章将指令类型放在数据缓存buffer的第一个字节,即buffer[0],并定义系统控制指令(即DOS环境中能识别的命令)识别符为0x40,文件传输识别符为0x50。client.exe根据buffer判断是控制指令还是文件双向传输指令,并作出响应。

第二,STM32控制程序stm32.ino

STM32Ducky便携设备中的STM32模块是通过USB口直接与目标主机连接的。stm32.ino程序基于Arduino IDE环境开发,通过ST-link或J-link的方式烧录到STM32开发板中。

stm32.ino程序依赖USBComposite.h库文件,该库文件是USB HID设备兼容库,在文章中的主要功能是:将STM32模块USB接口定义为HID设备,并对设备描述符、接口描述符、中断传输中端点等进行了定义;提供了双向数据传输的API接口。

STM32模块和目标机读写交互。与client.exe中的hid_write()和hid_read()相对应,在stm32.ino中,通过getOutput()和send()函数与目标机数据交互。

STM32模块和ESP8266无线模块双向交互。STM32模块主要负责转发目标机和无线模块的数据。STM32Ducky便携设备内部,两个模块在物理端口连接的基础上,通过serial.read()和serial.write()函数进行串口通信。

第三,无线基站控制程序esp.ino

ESP8266模块建立的无线网络AP热点,是在物理隔离网络和远控主机之间主动构建无线信道的关键。程序基于Arduino IDE环境开发,完成初步的编译和固件生成,由ESP6266Flasher烧录程序将固件通过ST-link烧录到ESP8266模块的闪存中。其主要功能是:提供无线网络的接入,实现STM32模块和攻击机的双向数据转发。

ESP8266模块和攻击机的双向数据传输。esp.ino程序调用ESPAsyncTCP.h库文件,并通过onData()函数响应和接收远控端server.exe的数据;通过库文件中的send()函数将STM32模块的数据转发到远控端server.exe。

第四,攻击端控制程序server.exe

攻击端控制程序server.exe运行在远程攻击机主机上,借助攻击机主机自带的无线网卡,按照约定的无线网络配置,接入AP网络中。程序由Python语言编写,直接在攻击机主机上运行。其主要功能是:接入AP无线网络中;主动与目标机client.exe建立通信;发送控制指令到目标机,接收回传的指令和文件。

server.exe在python开发环境中,调用socket库文件,通过socket.send()和socket.recv()函数与esp.ino双向数据交互。

双向数据传输测试

3.1 软硬件设备植入测试

图4 STM32Ducky便携设备

图4是设计的STM32Ducky便携设备,可根据需要对其加壳封装成“U盘”、数据线等设备。当便携设备植入目标机后,通过目标机设备管理器查看,如图5所示,仅识别为“符合HID标准的供应商设备”。

图5 设备管理器中识别为HID

植入目标机的软件client.exe如图6所示,在建立连接和数据传输过程中,没有任何代码和指令显示,实际应用中,可根据需要将client.exe控制台程序隐藏。

图6 client植入软件

3.2 数据测试

在client.exe运行、便携设备植入、攻击机通过server.exe主动与目标机建立连接的整体过程中,目标机杀软系统不报毒。

如图7所示,在攻击机的server.exe中输入cmd dir命令,查看目标机client所在位置和目录文件。通过命令getfile 11.txt将目标机的11.txt文件下载到攻击机计算机,下载过程中,攻击机显示文件传输实时进程。

图7 控制指令和文件传输测试

图8中,通过cmd netstat -ano命令,可以查看目标机当前端口连接状态,没有发现任何基于TCP/UDP的端口连接状态,这是由于STM32Ducky与目标机通过USB HID协议数据交互,无需建立socket,这使得整个双向控制过程较为隐蔽和安全。

图8 查看目标机端口状态

如图9所示,在指令控制和数据传输过程中,攻击机通过命令netstat -ano查看本机端口连接状态,仅有192.168.4.2(2523)-192.168.4.1(7050)链路,即攻击机与ESP8266无线网络的连接。

图9 查看本机端口连接状态

总体来看,STM32Ducky双向数据传输隐蔽安全,直接获取了目标机的shell权限,传输文件较为稳定。不同于BADUSB等传统攻击设备,其在目标机锁屏情况下,无法进行模拟键盘攻击;而STM32Ducky基于USB HID协议传输,非模拟键盘攻击,一旦链路建立成功,即使目标机锁屏,仍然能够隐蔽、稳定地实现指令控制和双向数据传输。

3.3 重难点问题

(1)传输速率

STM32Ducky在HID读写过程中,采用HID中断传输方式,端点1为in,中断输入,即hid设备到目标机,中断输出和控制端点均为端点0。中断传输最小时间间隔1ms,每一个单独的事务处理能力为wMaxPacketSize =8字节,则读写速率为8×(1s/0.001s),即8kB/s。实际测试中,除去双向传输中用于协议控制的额外消耗,双向传输实际速率约为1.5-2.5kB/s。

(2)传输稳定性控制

影响数据双向传输稳定性的主要因素是硬件缓存速率的不匹配。目标机USB接口的速率远大于HID缓存速率,HID缓存速率也明显低于ESP8266无线网络速率处理能力。因此,缓存速率的不同会造成数据传输的不稳定性。

解决数据传输稳定性的一种做法是数据分段校验。如超过2kB的文件传输时,可在client.exe和stm32.ino程序模块中,每512个字节校验一次;由stm32.ino发出停止传输请求,client.exe收到请求后停止发送,stm32.ino收到停止校验符后,发出继续传输请求,client.exe收到继续传输指令后续传数据。数据分段校验类似于“TCP三次握手”,通过这种方法,将目标机发送速率和stm32模块的接收速率匹配起来。该方法的缺点是,小幅度地影响整体传输速率;实际上,校验的数据块数越小,则需要校验的测试越多,传输稳定性越高。经过测试,在没有文件重传技术的支持下,传输距离15米范围内,能够稳定传输500kB大小的文件。

(3)数据传输隐蔽性问题

首先,当设备植入目标机后,会通过ESP8266无线模块产生AP热点,存在被发现的问题,文章考虑将无线模块的AP模式设置为隐藏,远端攻击机通过约定的SSID和密码主动登录即可,以此来降低被发现的概率。其次,采用了USB HID协议的数据传输方式,不依赖socket通信,因此,在目标机不禁用HID“写”的情况下,数据传输较为隐蔽。最后,硬件设备的植入,可根据需要伪装成鼠标、键盘、数据线、U盘等。

结语

围绕物理隔离网络的数据窃取,文章采用ESP8266模块主动建立了无线信道,构建了系统、完善、可行的模型,支持在目标机锁屏情况下的数据稳定传输,在技术拓展层面,为超声波隐蔽信道建立、可见光隐蔽信道建立等提供了重要的参考。基于STM32芯片的HID硬件接口丰富,可根据需要附加SD卡、红外、SIM卡等存储和通信模块。便携设备的实际应用仍然有很多需要改进的地方,如双向传输中的文件重传、恶意程序快速唤醒、通过便携设备向目标机指定路径上传文件等。

作者简介

张敬义,硕士,助教,主要研究方向为物理隔离网络安全。

选自《通信技术》2020年第10期(为便于排版,已省去原文参考文献)

声明:本文来自信息安全与通信保密杂志社,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。