mushiDiam/file-monitor

GitHub: mushiDiam/file-monitor

基于 Python 的实时文件系统监控工具,通过 magic bytes 检测和深度格式解析对落地文件进行威胁评分与自动加密隔离。

Stars: 0 | Forks: 0

# 文件监控与检查工具 🛡️ 一个基于 Python 的网络安全工具,可实时监控您的文件系统,检查下载的文件是否存在威胁,并自动隔离危险内容。 本项目作为作品集开发,旨在展示实用的网络安全和逆向工程概念。 ## 功能 - **实时监控** — 监视整个文件系统中的新文件 - **Magic bytes 检测** — 识别真实的文件类型,忽略扩展名 - **基于类型的检查器** — 对 PE、ELF、PDF、ZIP、TAR 和脚本进行专门分析 - **威胁评分** — 根据可疑指标对每个文件进行 0-10 的评分 - **加密隔离** — 自动加密并隔离危险文件 - **VirusTotal 集成** — 将文件哈希与 70 多个 AV 引擎进行交叉比对 - **桌面通知** — 针对可疑/危险文件发出即时警报 - **Web 仪表板** — 带有颜色编码风险等级的扫描历史记录 - **启动扫描** — 启动时扫描“下载”、“桌面”和“文档”文件夹 - **白名单** — 信任已知的安全文件以防止误报 - **CLI 报告** — 无需打开仪表板即可查看快速摘要 ## 工作原理 ``` New file detected ↓ Magic bytes → true MIME type ↓ Route to inspector (PE / ELF / PDF / ZIP / TAR / Script) ↓ Threat score 0-10 ↓ VirusTotal hash lookup ↓ Log → Notify → Quarantine (if score ≥ 7) ``` ## 项目结构 ``` File_monitor/ │ ├── main.py # Entry point ├── monitor.py # Filesystem watcher ├── inspector.py # MIME routing + threat scoring ├── scanner.py # Startup scan ├── logger.py # JSON logging + SHA256 hashing ├── notifier.py # Desktop notifications ├── quarantine.py # Encrypted quarantine + restore ├── virustotal.py # VirusTotal API integration ├── whitelist.py # Trusted file hash management ├── config.py # All settings │ ├── inspectors/ │ ├── pe.py # Windows PE executables │ ├── elf.py # Linux ELF binaries │ ├── pdf.py # PDF embedded content + JS │ ├── zip.py # ZIP recursive inspection │ ├── tar.py # TAR archives │ └── script.py # Shell/Python scripts │ ├── dashboard/ │ ├── app.py # Flask web server │ └── templates/ │ └── index.html # Web UI │ ├── logs/ │ └── scan_log.json # Scan history │ └── quarantine/ # Encrypted dangerous files ``` ## 安装说明 ### 前置条件 - Python 3.10+ - Windows 或 Linux ### 安装依赖 ``` pip install -r requirements.txt ``` ### 仅限 Windows — libmagic ``` pip install python-magic-bin ``` ## 用法 ### 启动监控器 ``` python main.py ``` ### 启动仪表板(在单独的终端中) ``` python -m dashboard.app ``` 然后打开 `http://127.0.0.1:5000` ### 不使用仪表板查看报告 ``` python main.py --report ``` ### 将误报加入白名单 ``` from whitelist import add_to_whitelist add_to_whitelist("sha256_hash_here", "note about file") ``` ### 恢复被隔离的文件 ``` from quarantine import restore_file restore_file("quarantine/filename.quarantine", r"C:\Users\user\Downloads") ``` ## 威胁评分 | 分数 | 标签 | 操作 | |---|---|---| | 0-3 | ✅ 安全 | 静默记录 | | 4-6 | ⚠️ 可疑 | 记录 + 桌面通知 | | 7-10 | 🚨 危险 | 记录 + 通知 + 加密隔离 | ### 增加分数的因素 | 发现项 | 分数 | |---|---| | PE 可执行文件 | +2 基础分 | | 高危导入 (CreateRemoteThread, VirtualAllocEx 等) | 每个 +2 | | 无导入表 — 加壳二进制文件 | +3 | | PDF 内部包含 PE/ELF magic bytes | +5 | | PDF 中包含 JavaScript | +3 | | 打开 PDF 时自动执行操作 | +2 | | PDF 中的启动操作 | +4 | | ZIP/TAR 内部包含可执行文件 | +3 | | 文件设置了 Setuid/Setgid 位 | +2 | | VirusTotal 检出 | +1 到 +5 | ## 配置 编辑 `config.py` 进行自定义: ``` SCORE_DANGEROUS = 7 # quarantine threshold VIRUSTOTAL_ENABLED = False # set True once you have an API key VIRUSTOTAL_API_KEY = "" # get free key at virustotal.com WATCH_PATH = "C:\\" # root path to monitor ``` ## 重要说明 - **quarantine.key** — 切勿删除此文件,没有它将无法恢复被隔离的文件 - **误报** — 包含可执行文件的合法软件(例如 Blender 插件)可能会获得高分。请使用白名单。 - **VirusTotal 免费版** — 限制为每分钟 4 次请求,每天 500 次请求 - **Windows Defender** — 可能会在本工具扫描前锁定文件。监控器会自动重试 3 次。 ## 技术栈 | 库 | 用途 | |---|---| | `watchdog` | 文件系统监控 | | `python-magic` | Magic bytes / MIME 检测 | | `pefile` | Windows PE 解析 | | `pyelftools` | Linux ELF 解析 | | `pdfminer.six` | PDF 结构解析 | | `cryptography` | 隔离文件加密 | | `flask` | Web 仪表板 | | `plyer` | 桌面通知 | | `requests` | VirusTotal API | ## 作者 Moshe Diamandi — 网络安全专业学生
标签:AMSI绕过, Ask搜索, DAST, VirusTotal, 威胁检测, 恶意软件分析, 文件监控, 文件隔离, 终端安全, 逆向工具