Namanbhatt-01/VirusTotal_Scanner
GitHub: Namanbhatt-01/VirusTotal_Scanner
一款模块化的恶意文件扫描与威胁情报引擎,支持多源情报查询、进程关联分析,并通过 Slack 进行加密告警通知。
Stars: 0 | Forks: 0
# 🛡️ 企业级 VirusTotal 扫描器
**模块化威胁情报与操作系统关联引擎**
[](https://www.python.org/downloads/release/python-3120/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/Namanbhatt-01)
VirusTotal Scanner 是一款高性能、模块化的安全工具,专为本地文件分类处理和进程关联而设计。与简单的脚本不同,本项目实现了生产级架构,用于监控文件系统、查询多源威胁情报 (TI),并通过企业级 Slack Webhooks 提供可操作的警报。
## 🏗️ 架构概述
本项目遵循**模块化领域架构**,将扫描引擎与 API 集成及警报逻辑分离开来。
```
graph TD
A[main.py CLI] --> B[config/settings.py]
B --> C[core/engine.py]
subgraph "Data Pipeline"
C --> D[utils/file_ops.py: SHA256]
D --> E[core/cache.py: Encrypted Cache]
end
subgraph "Intelligence Sources"
E --> F[integrations/virustotal.py]
E --> G[integrations/malshare.py]
E --> H[integrations/valhalla.py]
end
subgraph "Correlation & Response"
C --> I[core/process.py: psutil]
I --> J[notifiers/slack.py]
end
```
## 💎 安全工程亮点
本项目旨在展示高级安全工程能力:
* **模块化扩展性:** 采用插件式架构构建。添加新的威胁情报源(如 CrowdStrike 或 AlienVault)无需对核心引擎进行任何更改。
* **加密的本地状态:** 扫描历史记录存储在 **AES-256 加密缓存** (`history.cache`) 中。这确保了恶意软件无法篡改扫描器的内存,也无法通过编辑本地历史记录来“加白”自身。
* **资源效率:** 为文件哈希实现了**分块二进制读取**。这使得扫描器能够在低资源系统(如 8GB 的 M1 Mac)上处理 20GB 以上的文件,而不会导致内存耗尽。
* **操作完整性:** 使用 **Pydantic** 对环境变量和 API payload 进行严格的类型验证,防止在自动化环境中发生常见的运行时故障。
* **操作系统关联:** 超越简单的哈希匹配,该工具将文件与活动的系统进程进行关联,识别恶意二进制文件当前是否正在内存中执行。
## 🚀 部署与安装
### 1. 前置条件
* Python 3.11+
* VirusTotal API Key (免费版)
* Slack Incoming Webhook URL
### 2. 设置
```
# 克隆并进入 repository
git clone https://github.com/Namanbhatt-01/VirusTotal_Scanner.git
cd VirusTotal_Scanner
# 创建并激活 virtual environment
python -m venv venv
source venv/bin/activate # On Windows use: venv\Scripts\activate
# 安装 dependencies
pip install -r requirements.txt
```
### 3. 配置
在根目录下创建一个 `.env` 文件:
```
VT_API_KEY=your_virustotal_api_key
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/WEBHOOK/URL
```
## 🛠️ 使用与演示
### 基础扫描
扫描特定文件或目录:
```
python main.py -p ./downloads
```
### 专业演示(“捕捉”恶意软件)
为了在面试期间演示该工具的有效性:
1. 在测试文件夹上启动扫描器:`python main.py -p ./scans`
2. 下载 [EICAR 测试文件](https://www.eicar.org/?page_id=3950)。
3. 将该文件移动到 `./scans` 中。
4. **结果:** 在你的 Slack 频道中观察即时的**恶意文件警报**。
### CLI 参数与操作
扫描器支持多种高级标志以自定义其行为:
| 标志 | 描述 | 默认值 |
| :--- | :--- | :--- |
| `-p`, `--paths` | 要监控的文件夹/文件列表 | 必填 |
| `-i`, `--stop_interval` | 扫描周期之间的等待时间(分钟) | `0.0` |
| `-f`, `--cycles` | 要运行的周期数(`0` 表示无限) | `0` |
| `-w`, `--slack_webhook` | 覆盖 Slack Webhook URL | 来自 `.env` |
| `--no_upload` | 跳过将未知文件上传至 VT | `True` |
| `--debug` | 启用详细日志记录以进行故障排除 | `False` |
**示例:生产环境监控**
```
python main.py -p /var/log /home/user/downloads -i 15 --cycles 0
```
*此命令每隔 15 分钟无限期监控两个敏感目录。*
## 🧠 设计哲学:为什么选择这种架构?
安全脚本编写中一个常见的错误是编写“意大利面条式代码”(单个超长文件)。本项目采用**模块化设计模式**进行工程构建,具体原因有三个:
1. **关注点分离:** 引擎 (`core/`) 不关心数据从*哪里*来,也不关心警报*如何*发送。这允许你只需更改一个独立的文件,就能将 Slack 替换为 Microsoft Teams,或将 VirusTotal 替换为 CrowdStrike。
2. **弹性:** 如果 VirusTotal API 宕机,本地**加密缓存**和 **Valhalla/MalShare** 集成将继续提供价值。系统设计为能够优雅地失败。
3. **可测试性:** 每个模块(哈希、API、日志记录)都可以独立测试,这是任何用于真实 SOC 环境的工具的必要条件。
## 🚀 未来路线图:下一步计划是什么?
本项目在不断发展中。计划中的未来增强功能包括:
* **[ ] 自动隔离:** 自动将恶意文件移动到具有 `000` 权限的受限目录中。
* **[ ] YARA 集成:** 添加基于特征的扫描,以检测未知的恶意软件模式。
* **[ ] Web 仪表板:** 基于 Streamlit 的 UI,用于可视化全局扫描统计信息和威胁趋势。
* **[ ] SIEM 导出:** 原生集成 Splunk (HEC) 和 Wazuh (基于 Agent),适用于企业 SOC 环境。
## 🕵️ 面试常见问题 (安全工程深入探讨)
**问:为什么使用 SHA-256 而不是 MD5?**
**问:你如何处理 API 速率限制?**
**问:为什么对本地缓存使用 AES-256?它能防止篡改吗?**
**问:你为什么选择平面文件而不是像 PostgreSQL 这样的数据库?**
**问:如果扫描一个 50GB 的文件会发生什么?**
## 📚 参考与资源
* [VirusTotal API v3 文档](https://docs.virustotal.com/reference/overview)
* [Slack Incoming Webhooks 指南](https://api.slack.com/messaging/webhooks)
* [EICAR 标准反恶意软件测试文件](https://www.eicar.org/)
* [Python Pydantic 文档](https://docs.pydantic.dev/latest/)
## 📊 技术栈
* **逻辑:** Python 3 (面向对象)
* **验证:** Pydantic (类型安全)
* **网络:** Requests (REST API 集成)
* **操作系统/取证:** Psutil (进程关联)
* **密码学:** PyCryptodome (AES-256)
* **警报:** Slack Webhooks (企业级通知)
## 📄 许可证
本项目采用 MIT 许可证授权 - 详情请参阅 [LICENSE](LICENSE) 文件。
由 **Naman Bhatt** 使用 🛡️ 开发。
标签:AES-256加密, Ask搜索, DNS 反向解析, HTTP工具, MalShare, Python, SHA256, Slack通知, VirusTotal, 企业安全, 哈希校验, 威胁关联, 威胁情报, 子域名变形, 字符串匹配, 安全工程, 开发者工具, 恶意软件扫描, 插件架构, 文件分类, 无后门, 端点安全, 网络信息收集, 网络安全, 网络资产管理, 补丁管理, 进程关联, 隐私保护, 高级威胁防御