freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

如何使用usbsas安全地读取不受信任的USB大容量存储设备
2022-10-24 22:17:25
所属地 广西

关于usbsas

usbsas是一款功能强大的开源(GPLv3)工具&框架,该工具可以帮助广大用户以安全的方式读取不受信任的USB大容量存储设备。

该工具的实现遵循深度防御的概念和最小特权原则,usbsas的目标是减少USB堆栈的攻击面。为了实现这一点,通常在(特权)内核空间中执行的大多数与USB相关的任务(解析USB数据包、SCSI命令、文件系统等)已被移动到用户空间,并在不同的进程(微内核风格)中分离,每个进程都以其自己的受限安全计算模式执行。

该工具基于Rust语言开发,并且支持在GNU/Linux上运行。

功能介绍

1、从不受信任的USB设备读取文件(不使用uas、USB_storage和文件系统等内核模块)。支持的文件系统有FAT、exFat、ext4、NTFS和ISO9660;

2、使用远程防病毒软件分析文件;

3、将新文件系统上的文件复制到受信任的USB设备,支持的文件系统有FAT、exFAT和NTFS;

4、将文件上传到远程服务器;

5、支持制作USB设备镜像;

6、擦除USB设备内容;

usbsas架构

1、Web客户端/服务器:作为usbsas的主程序,可以部署一个安全的USB文件传输中转站;

2、Fuse实现:使用usbsas以只读模式挂载USB设备;

3、Python:usbsas可以和Python搭配使用,并使用脚本将数据从一台设备拷贝到另一台设备;

工具依赖组件

ntfs3g

FatFs

fontawesome

bootstrap

Lato

工具体系架构/运行机制

工具下载

广大研究人员可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/cea-sec/usbsas.git

工具构建

$ cargo build --release

$ cargo build --release -p usbsas-analyzer-server

$ cargo build --release -p usbsas-tools

$ cargo build --release --manifest-path=usbsas-hid/hid-user/Cargo.toml

$ cargo build --release --manifest-path=usbsas-hid/hid-dealer/Cargo.toml

工具使用

内核模式

usbsas最大的一个优势就是在用户空间中运行,因此Linux内核不能有usb_storage和uas模块。在未设置CONFIG_USB_STORAGE和CONFIG_ USB_UAS的情况下编译内核,或者至少阻止加载此模块,因为如果存在,它们将在插入USB设备时自动加载:

$ cat << EOF > /etc/modprobe.d/usbsas.conf

install usb_storage /bin/false

blacklist usb_storage

install uas /bin/false

blacklist uas

EOF

$ rmmod usb_storage

$ rmmod uas

$ depmod

USB权限

usbsas需要USB设备的读写权限,因此我们需要创建一个指定用户,并提供对应权限:

ACTION=="add", SUBSYSTEM=="usb", ENV{ID_USB_INTERFACES}=="*:080650:*", MODE="0660", OWNER="usbsas"

Web客户端/服务器

$ ./target/release/usbsas-server

$ ./target/release/usbsas-analyzer-server

$ $BROWSER http://localhost:8080

Fuse使用

$ ./target/release/usbsas-fuse-mount --help

usbsas-fuse-mount 1.0

Mount a (fuse) filesystem with usbsas

 

USAGE:

    usbsas-fuse-mount [OPTIONS] <busnum> <devnum> <mountpoint>

 

ARGS:

    <busnum>        设备加载的总线编号

    <devnum>        设备加载的Dev编号

    <mountpoint>     设备加载的路径

 

OPTIONS:

    -h, --help                  打印帮助信息

    -n, --part-num <PARTNUM>    加载的分区编号 [默认: 1]

    -V, --version               打印版本信息

工具运行截图

许可证协议

本项目的开发与发布遵循GPL-3.0开源许可证协议。

项目地址

usbsas:【GitHub传送门

参考资料

https://en.wiki*pedia.org/wiki/Seccomp

https://en.wiki*pedia.org/wiki/Sheep_dip_(computing)

# USB数据 # USB # USB设备 # 数据存储安全 # 存储安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录