2

针对U盘文件的盗与防攻略

 1 year ago
source link: https://paper.seebug.org/1972/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

针对U盘文件的盗与防攻略

40分钟之前2022年09月19日经验心得

作者:moyun@墨云科技VLab Team
原文链接:https://mp.weixin.qq.com/s/LcgSc2lNBS6iQgHO88vmKg

近年来,使用U盘作为介质完成的网络攻击屡见不鲜。

  1. 2010年的震网病毒事件,使用了基于U盘来触发的windows 快捷方式漏洞;
  2. 2014年安全研究员在BlackHat上公布了基于U盘的BadUsb攻击,该攻击也基于U盘这个介质;
  3. 2021年,在BlackHat Europe上,安全研究员利用USB协议栈的Double Free漏洞控制了linux 系统,这个攻击同样也基于U盘触发。

以上几种方法都是通过USB设备获得了主机控制权限,本文介绍一种在不获取主机控制权限条件下对U盘文件进行读取的方法。该方法需要一个特制的U盘,在使用这个U盘进行文件的存储、拷贝过程中,可在用户不知情的情况下将U盘里的文件发送给远端的接收者。

一个U盘主要由主控板(USB控制器)、FLASH存储等组成。FLASH分为2部分,一部分是用户可见的存储区,另一部分是用户不可见的固件区域。

图片

当U盘插入电脑后,固件区域的代码便开始运行,固件区域的代码主要为USB协议栈代码,这些代码用来响应主机端(HOST端)发起的各种请求,请求包括查看设备信息、设备容量、读写文件等。如下图1.2所示,U盘接入电脑后,电脑主机会向U盘发起一些请求,U盘的固件代码会对这些请求做出响应。

图片

当主机端向设备端发起请求时,一个“诚实”的U盘(设备端固件)会如实地回答自己的设备信息及其状态,例如,设备名字、设备类型(存储设备,键盘鼠标设备)、设备容量等,而一个“不诚实”的U盘会伪造这些内容来欺骗主机端。用于HID攻击,BADUSB攻击的U盘便属于”不诚实”的U盘,它们在响应主机的请求时,都欺骗了主机设备,把自己伪造成了键鼠设备,在获取主机的信任后,通过执行任意键鼠操作来完成一些恶意操作。

为了达到将U盘的内容发送到远程接收端的目的,需要修改U盘控制器的固件代码,在固件代码中添加文件传输的功能。除此之外,还需要一个支持无线通信功能的U盘控制器,该控制器同时支持WIFI功能和USB功能,通过控制器的WIFI功能,U盘能够连接周围的热点,并且将存储在FLASH中的文件内容发送到文件接收端。

为了实现这个功能,笔者选取了同时支持WIFI和USB功能的芯片作为控制器芯片,芯片同时支持向芯片刷入自定义固件。基于该芯片的开发板更便于开发U盘相关的应用,例如开发制作USB HID设备、USB存储设备等。

图片

该开发板中需要关注的有USB_DEV,USB-to-UART,Micro SD Card,ESP-S3-MINI-1。USB_DEV interface是一个TYPEA公口,可以连接其它USB主机,ESP-S3-MINI-1模组是通用型Wi-Fi MCU模组,具有丰富的外设接口,内部包含了ESP32S3芯片。Micro SD Card Slot可以插入TF卡,ESP32S3芯片通过4-线 SDIO和SPI接口读写TF卡里的内容。USB-to-UART接口是Micro-USB接口,可用作开发板的供电接口,可烧录固件至芯片,也可作为通信接口,通过板载USB转UART桥接器与芯片通信。

本章节介绍如何基于开发板制作一个具有WIFI联网功能的U盘,该U盘具有普通U盘的存储等功能,同时支持将U盘里文件发送给其它接收者。

1.下载安装基于ESP-IDF的交叉编译环境

参考链接如下:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/windows-setup.html#get-started-windows-first-steps

安装成功之后,会在桌面生成ESP-IDF X.X CMD快捷方式,双击快捷方式如果显示如下命令行窗口,代表交叉编译环境安装成功了。

图片

2.下载esp-iot-solution

esp-iot-solution是专门针对物联网应用的示例程序。

git clone --recursive https://github.com/espressif/esp-iot-solution

详细的环境配置步骤参考:

https://github.com/espressif/esp-iot-solution

esp-iot-solution中包含一个usb_msc_wireless_disk示例,该实例会生成一个具有WIFI的 U盘。

3.对无线U盘进行一些配置工作

切换到C:\Espressif\frameworks\esp-idf-v4.4\esp-iot-solution\examples\usb\device\usb_msc_wireless_disk>目录;

usb_msc_wireless_disk项目是一个无线U盘的示例程序,需要在编译之前进行一些基本的配置。

idf.py set-target esp32s3 //设计芯片的类型是esp32s3;

idf.py menuconfig// 配置一些选项,例如,使用内部flash还是外部sdcard,wifi的类型,AP/STA。

图片

选择使用External SDCcard存储,U盘的存储空间比更大(接近TF卡的容量),如果使用Internal Flash,存储空间只有1.4MB,空间比较小。另外,还需要配置U盘的联网方式,STA模式代表U盘会主动连接一个周围的热点,在此模式下,需要设置WIFI的名字和密码, U盘启动会自动连接该WIFI。AP模式代表U盘会生成一个WIFI热点,可以让电脑、手机等其它设备接入。

图片

4.编程将U盘文件发送到服务端

在完成上面配置之后,还需要修改源程序的代码。在U盘初始化完成之后,遍历U盘文件,将U盘里的文件发送给接收端。usb_msc_wireless_disk源程序代码通过运行一个file server来实现文件共享的功能,其它电脑可以经由这file server可以查看U盘的文件内容。可以通过修改源程序逻辑,使其主动向远端接收者发送文件。

5.编译程序并将固件刷入开发板

完成源程序的编码后,接下来就是执行idf.py build 编译固件。

图片

Idf.py –p COMx flash便可以把编译好的固件刷到开发板,开发板再插入电脑之后就会被识别成一个USB存储设备,当把文件拷贝到这个U盘,该文件就会被发送出去,造成文件内容泄露。

想要制作一个具有联网功能并且外观像普通U盘的USB设备,只需通过PCB画板进行硬件设计,把芯片设计到U盘里,一个“不诚实”的U盘便诞生了。

对于普通用户来说,想要防范此类攻击需要提高个人安全意识。不要随便使用不明来源的U盘,也不要轻易接受并使用他人赠送的U盘。尽量从正规渠道购买,切忌从不可信的第三方渠道/二手市场购买U盘。

除此之外,我们在插入使用新U盘时,可以留意下周围是否有新增可疑WIFI热点,如果没有新增可疑WIFI热点,那么基本上可以确定我们并没有受到此类型攻击。


Paper 本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1972/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK