sandeep0428/usb-device-control-monitoring
GitHub: sandeep0428/usb-device-control-monitoring
一个面向 Windows 的 SOC 风格 USB 安全监控框架,实现实时检测、威胁情报联动与自动化报告。
Stars: 1 | Forks: 0
# USB设备控制与监控框架



🚀 一个轻量级的**SOC风格USB安全监控框架**,能够实时检测、控制和分析USB设备活动。
专为**蓝队操作、端点监控和威胁检测模拟**而设计,本项目展示了实用的安全工作流程,包括设备控制、文件监控、威胁情报集成和自动报告生成。
## ⭐ 关键亮点
- 实时USB威胁检测系统
- SOC风格的端点监控流程
- 集成威胁情报(VirusTotal API)
- 结合预防、检测和报告
- 模块化且可扩展的架构
## 功能
- 可移动存储设备USB设备检测
- 新检测到的USB设备允许或阻止决策
- 本地允许列表和阻止列表支持
- 插入USB驱动器上的实时文件监控
- SHA-256文件哈希
- VirusTotal哈希信誉查询
- 自动尝试删除被归类为恶意的文件
- 检测潜在敏感文件名,如 `password`、`token` 或 `credential`
- 事件关联以标记可疑的批量复制和删除行为
- 会话日志和基于CSV的哈希历史记录
- 基于DOCX的关机报告生成
## 项目结构
```
usb-device-control-monitoring/
│
├── config/
│ ├── allowlist.txt
│ └── blocked.txt
├── screenshots/
│
├── main.py
├── usb_monitor.py
├── file_monitor.py
├── device_manager.py
├── correlation_engine.py
├── hash_scanner.py
├── hash_logger.py
├── vt_checker.py
├── logger.py
├── popup.py
├── report_generator.py
├── shared_state.py
├── threat_intel.json
├── requirements.txt
├── README.md
├── LICENSE
└── .gitignore
```
## 🔄 工作流程
1. 插入USB设备
2. 验证设备(允许/阻止)
3. 监控文件活动
4. 对文件进行哈希并检查VirusTotal
5. 关联事件
6. 生成日志和DOCX报告
## 工作原理
1. `main.py` 启动监控工作流程并初始化CSV日志记录。
2. `usb_monitor.py` 检测可移动驱动器并识别USB存储设备。
3. `device_manager.py` 询问用户是否允许或阻止未知设备。
4. `file_monitor.py` 扫描复制到USB驱动器的文件并监控后续更改。
5. `hash_scanner.py` 为每个文件生成SHA-256哈希。
6. `vt_checker.py` 检查文件哈希的VirusTotal信誉。
7. `correlation_engine.py` 跟踪快速复制/删除行为以标记可疑活动。
8. `threat_intel.json` – 存储分析期间使用的威胁情报数据
9. `report_generator.py` 在程序停止时创建最终的DOCX报告。
## 📊 日志与报告
该框架在 `logs/` 目录中生成运行时日志和报告:
- 事件日志(`.log`)
- 哈希历史记录(`.csv`)
- 调查报告(`.docx`)
注意:此目录在执行期间自动创建,并不包含在仓库中。
## 要求
- Windows操作系统(使用WMI和pywin32)
- 推荐使用Python 3.10或更高版本
- 可能需要管理员权限来启用/禁用设备操作
- VirusTotal查询需要互联网连接
## 安装
```
git clone https://github.com/sandeep0428/usb-device-control-monitoring.git
cd usb-device-control-monitoring
pip install -r requirements.txt
```
## VirusTotal API密钥设置
本项目从名为 `VT_API_KEY` 的环境变量中读取VirusTotal API密钥。
### Windows命令提示符
```
set VT_API_KEY=your_api_key_here
python main.py
```
### Windows PowerShell
```
$env:VT_API_KEY="your_api_key_here"
python main.py
```
## 🔐 USB设备控制配置
应用程序使用两个配置文件:
- `config/allowlist.txt` → 授权USB设备ID列表
- `config/blocked.txt` → 阻止的USB设备ID列表
⚡ 注意:
- 这些文件在首次运行时如果不存在将**自动创建**。
- 您可以手动编辑它们以允许或阻止特定USB设备。
### 示例条目:
USBSTOR\DISK&VEN_HP&PROD_V220W&REV_1100\2015091971
## 用法
从根文件夹运行项目:
```
python main.py
```
当检测到新的USB存储设备时:
- 弹出窗口询问是否允许或阻止设备
- 监控插入的可移动驱动器上的文件活动
- 复制的文件会被哈希并检查VirusTotal
- 恶意文件可能会自动删除
- 敏感活动会被写入日志文件
## 🛑 停止程序
按 `Ctrl + C` 安全停止监控并生成最终报告。
## 示例输出
```
USB Monitoring System Started
2026-04-07 04:06:39 [INFO] CSV hash log initialized
USB Monitoring Started...
2026-04-07 04:06:49 [INFO] USB INSERTED -> E:\
2026-04-07 04:07:03 [INFO] Scanning file -> E:\New Text Document.txt
2026-04-07 04:07:03 [INFO] HASH ->
2026-04-07 04:07:04 [INFO] VT RESULT -> CLEAN | Ratio: 0/72 | Code: 200
```
## 📁 日志文件详情
该框架在 `logs/` 文件夹中存储输出:
- `events_YYYY-MM-DD.log` - 所有事件
- `alerts.log` - 告警级别事件
- `threat_hash_log.csv` - 扫描的文件哈希历史记录
- `report_YYYY-MM-DD_HH-MM-SS.docx` - 关机时生成的调查报告
## 📸 截图
### 🔍 分析执行

### 📊 生成的报告

### 📊 生成的日志


### 🧬 哈希历史记录日志(CSV)

## 当前优势
- 清晰的模块化设计
- 实用的命令行工作流程
- 预防、监控和日志记录的有用结合
- 实时USB事件处理
- 通过环境变量更好地处理API密钥
## 当前限制
- 专门为Windows构建
- 依赖VirusTotal哈希信誉而非完整的沙箱分析
- 文件监控主要是基于轮询的,因此非常大的目录可能会影响性能
- `active_scans` 未受线程锁保护,因此大量并行活动可能导致竞态条件
- 插入USB时扫描现有文件,但摘要计数器主要针对新检测到的复制文件增加
- 当前生成的报告基于DOCX格式,可以扩展以支持PDF导出
## 建议的未来改进
- 使用 `threading.Lock` 添加线程安全的扫描计数器
- 在可能的情况下用文件系统事件监视器替换轮询
- 添加可配置文件扩展名策略
- 使用文件大小、文件类型和时间阈值改进关联规则
- 导出PDF格式报告(除了现有的DOCX支持)
- 添加结构化JSON日志记录以进行SOC风格分析
- 添加单元测试和特定异常错误处理
## 致谢
本项目是在一个网络安全问题陈述的背景下开发的,反映了我自己的实现、设计决策和针对实用SOC用例的增强。
使用AI辅助工具来支持开发、优化和代码精炼。
## 🛡️ 安全注意事项
- 永远不要将您的VirusTotal API密钥上传到GitHub
- API密钥通过环境变量安全加载
- 日志和报告通过 `.gitignore` 排除
## 许可证
本项目根据MIT许可证授权。详细信息请参见 `LICENSE` 文件。
## 👨💻 作者
Sandeep Kumar
标签:AMSI绕过, Ask搜索, Cloudflare, MITRE ATT&CK, Python, SHA256哈希, USB安全, VirusTotal, Windows端点, 事件关联, 可移动介质, 威胁情报, 威胁检测, 安全模拟, 开发者工具, 开源安全工具, 敏感文件检测, 文件监控, 无后门, 端点安全, 端点监测, 自动化响应, 自动阻断, 补丁管理, 设备控制, 逆向工具, 逆向工程平台