JPVLakes/usb-sandbox-scanner
GitHub: JPVLakes/usb-sandbox-scanner
在 Linux 上自动隔离扫描 USB 设备的恶意软件检测工具,结合本地签名库和云端多引擎分析。
Stars: 0 | Forks: 0
# USB 沙箱扫描器
Linux 内核级 USB 恶意软件扫描器。使用 **ClamAV** 在隔离的 **Linux namespace**(只读、noexec、nosuid、nodev)中自动扫描任何插入的 USB 驱动器。可选 **VirusTotal** 多引擎分析。
## 工作原理
```
USB inserted → udev detects → systemd starts sandboxed scan → desktop notification + HTML report
```
1. **udev rule** 检测 USB 块设备并委托给 systemd(无 5 秒超时问题)
2. **udisks2 自动挂载被阻止**(`UDISKS_AUTO=0`),以便扫描器获取原始设备
3. 扫描脚本在新的挂载 namespace(`unshare --mount`)内**以只读方式挂载**
4. **ClamAV** 递归扫描所有文件(归档、PDF、OLE2、HTML、邮件)
5. 如果已配置,可疑文件将提交至 **VirusTotal** 进行多引擎分析
6. 生成 **HTML 报告**并发送**桌面通知**
7. 设备在退出时自动**卸载**(即使发生错误)
## 安全层
| 层级 | 保护机制 |
|-------|------------|
| 挂载 namespace (`unshare`) | 文件系统更改无法泄露到主机 |
| `ro,noexec,nosuid,nodev` | 禁止执行、禁止提权、禁止设备文件 |
| systemd 加固 | `ProtectSystem=strict`、`PrivateTmp`、`MemoryMax=512M`、seccomp 过滤器 |
| ClamAV | 360 万+ 恶意软件签名,通过 `freshclam` 自动更新 |
| VirusTotal (可选) | 70+ 个杀毒引擎进行二次意见扫描 |
## 文件
| 文件 | 描述 |
|------|-------------|
| `install.sh` | 安装程序 — 安装依赖、复制文件、配置系统 |
| `usb-sandbox-scan.sh` | 主扫描脚本 — namespace 隔离 + ClamAV + VirusTotal + HTML 报告 |
| `99-usb-sandbox.rules` | udev 规则 — 在插入 USB 时触发 systemd 服务 |
| `usb-sandbox@.service` | systemd 模板服务 — 运行带有安全加固的扫描 |
## 安装
```
git clone https://github.com/JPVLakes/usb-sandbox-scanner.git
cd usb-sandbox-scanner
chmod +x install.sh usb-sandbox-scan.sh
sudo ./install.sh
```
安装程序将:
- 安装 ClamAV 和依赖项
- 更新病毒签名数据库
- 复制脚本和配置到系统目录
- 可选配置 VirusTotal API 密钥
## VirusTotal (可选)
在 [virustotal.com](https://www.virustotal.com) 获取免费 API 密钥,然后:
- 在 `install.sh` 提示时输入,或者
- 手动配置:
```
echo 'VIRUSTOTAL_API_KEY=your_key_here' | sudo tee /etc/usb-sandbox.env
sudo chmod 600 /etc/usb-sandbox.env
```
## 使用
### 自动(即插即用)
只需插入 USB 驱动器。扫描会自动开始。
### 手动扫描
```
sudo usb-sandbox-scan.sh sdb1
```
### 查看日志
```
journalctl -fu 'usb-sandbox@*'
```
### 报告
HTML 报告保存在 `/var/log/usb-sandbox/reports/`。
## 需求
- 带有 systemd 和 udev 的 Linux
- ClamAV (`clamav`、`clamav-daemon`、`clamav-freshclam`)
- `util-linux`(用于 `unshare`)
- `libnotify-bin`(用于桌面通知)
- `curl`(用于 VirusTotal,可选)
## 许可证
MIT
标签:AMSI绕过, Ask搜索, ClamAV, Systemd, Udev, USB安全, VirusTotal, Web 安全测试, 入侵防御, 内核级, 命名空间, 威胁检测, 应用安全, 开源, 恶意软件扫描, 搜索语句(dork), 文件扫描, 文件系统隔离, 沙箱, 网络安全, 网络调试, 自动化, 设备控制, 隐私保护