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), 文件扫描, 文件系统隔离, 沙箱, 网络安全, 网络调试, 自动化, 设备控制, 隐私保护