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设备内容;
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
usbsas需要USB设备的读写权限,因此我们需要创建一个指定用户,并提供
对应权限:
ACTION=="add", SUBSYSTEM=="usb", ENV{ID_USB_INTERFACES}=="*:080650:*", MODE="0660", OWNER="usbsas"
$ ./target/release/usbsas-server
$ ./target/release/usbsas-analyzer-server
$ $BROWSER http://localhost:8080
$ ./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:https://github.com/cea-sec/usbsas
https://en.wiki*pedia.org/wiki/Seccomp
https://en.wiki*pedia.org/wiki/Sheep_dip_(computing)
精彩推荐