DanielVihorev/File-Malware-Scanner

GitHub: DanielVihorev/File-Malware-Scanner

这是一个基于 Python 和 YARA 规则的轻量级恶意文件扫描工具,能够通过特征匹配识别压缩包及各类文件中的潜在威胁。

Stars: 0 | Forks: 0

恶意软件特征扫描器 一个基于 Python 的恶意软件特征扫描器,使用 YARA —— 非常适合通过自定义规则检测恶意文件。 安装和 MP4 文件使用示例: Screenshot 2026-04-06 at 14 49 24 Pdf 扫描示例: Screenshot 2026-04-06 at 14 50 41 ⸻ 🧩 使用的库 该项目混合使用了标准 Python 库和一个第三方模块: 库 描述 zipfile 用于读取和解压 .zip 归档文件的标准 Python 模块。用于扫描压缩的恶意软件样本。 rarfile 用于处理 .rar 归档文件的第三方库。让扫描器能够查看 RAR 压缩的恶意软件样本内部。需要安装 unrar 或 rarfile 后端。 os 提供对操作系统级功能的访问,如文件路径、目录遍历和环境变量。 threading 用于创建并发扫描线程,允许扫描器同时处理多个文件(在大数据集上提高性能)。 queue 线程安全的队列结构,用于在生产者(扫描器)和消费者(工作线程)之间传递文件路径。有助于安全地协调多线程执行。 hashlib 计算文件的加密哈希(如 SHA-256)。用于识别重复项、记录日志和创建唯一签名。 fnmatch 使用 Unix shell 风格的通配符简化文件名模式匹配。有助于在扫描文件夹时识别 *.exe、*.dll 或 *.js 等文件。 这些库共同支持: • 归档解压 (zipfile, rarfile) • 高效的文件遍历 (os, fnmatch) • 并发文件扫描 (threading, queue) • 文件指纹识别 (hashlib) ⸻ 目的 该工具模仿杀毒软件特征扫描器,使用 YARA 规则识别文件和目录中的恶意软件。它记录检测结果,并通过命令行选项提供灵活性。    ⸻ 功能 • 扫描目录或单个文件以查找 YARA 规则匹配项 • 从工作区或用户指定的文件夹读取规则 • 记录带有时间戳的检测结果 • 灵活的 CLI 用于自定义扫描: python3 MalwareSig.py -r /path/to/rules -m /path/to/samples ⸻ 依赖与安装 • Python 3.8+ • yara-python – YARA 的 Python 绑定(模式匹配引擎) 安装 YARA: pip3 install yara-python ⸻ 用法 # 使用默认规则扫描内置的 'malware_files': ^[python3 MalwareSig.py]({"attribution":{"attributableIndex":"1253-0"}}) # 指定自定义规则和恶意软件目录: ^[python3 MalwareSig.py -r rules/ -m test_samples/]({"attribution":{"attributableIndex":"1253-1"}}) # 查看 CLI 选项: ^[python3 MalwareSig.py -h]({"attribution":{"attributableIndex":"1253-2"}}) 检测日志保存在 logs/ 目录中,并带有时间戳。 ⸻ 项目结构 / ├── logs/ # 检测日志 ├── malware_files/ # 待扫描的样本文件 ├── rules/ # YARA 规则文件 ├── MalwareSig.py # CLI + 扫描编排器 └── YaraScanner.py # 用于规则编译和扫描的 YaraScanner 类 ⸻ 工作原理 在 YaraScanner.py 内部: 1. make_dict() 构建规则文件名到路径的映射,用于编译 2. scan_files() 编译规则并迭代样本 3. yara_sig_check() 将规则应用于文件,记录任何匹配项 MalwareSig.py 处理参数解析,分发给 YaraScanner,并管理日志生成。 ⸻ 来源与参考 • 灵感来源于一个演示基于 YARA 的特征扫描的大学项目  • 使用 YARA——领先的恶意软件模式引擎,可移植于 Windows/Linux/macOS 并可通过 yara-python 进行脚本编写 ⸻ 后续步骤 • 添加交互式 CLI 而不是标志 • 模块级扫描(整个驱动器) • 实现从远程源更新特征,以模仿真实的杀毒软件工作流程 ⸻ 许可证 (包含您选择的许可证,例如 MIT、Apache 2.0,或像以前一样的学术荣誉守则声明。) ⸻ 注意:此 README 模板专为 GitHub 显示而格式化。随着代码的发展,请调整路径和功能。 ⸻ 太棒了!添加这些额外内容将真正提升项目展示效果,使其对开发者更友好。以下是您的 README.md 的完整扩展,包含附加部分: ⸻ ✅ 测试说明 您可以使用包含的样本文件和 YARA 规则或自定义规则来测试扫描器: 1. 使用包含的样本 python3 MalwareSig.py 这将: • 扫描 malware_files/ 文件夹中的文件 • 使用 rules/ 文件夹中的 YARA 规则 • 将检测结果写入 logs/ 目录中带有时间戳的 .log 文件 2. 使用您自己的文件和规则进行测试 python3 MalwareSig.py -r /your/rules/path -m /your/samples/path 3. 示例输出 [2025-06-09 13:05:22] MATCH: Rule 'Suspicious_JS' in file '/test/malware.js' ⸻ 📄 示例 YARA 规则 rule Suspicious_JS { meta: description = "Detects obfuscated JavaScript with eval and hex" strings: $eval = "eval(" $hex = /\\x[0-9a-fA-F]{2}/ condition: $eval and $hex } 保存为 rules/suspicious_js.yar 并对包含可疑 .js 文件的文件夹运行扫描器。 ⸻ 🔁 CI/CD 集成(可选设置) 如果您想将此扫描器集成到 CI/CD 流水线中(例如:在开发/测试流程中扫描上传的文件),这里有一个基本的 GitHub Actions 设置: .github/workflows/yara-scan.yml name: YARA Malware Scanner on: push: paths: - '**.py' - 'rules/**' - 'malware_files/**' jobs: scan: runs-on: ubuntu-latest ``` steps: - name: Checkout code uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.10' - name: Install dependencies run: pip install yara-python rarfile - name: Run scanner run: python3 MalwareSig.py -r rules/ -m malware_files/ ``` 这将每次您向 rules/ 或 malware_files/ 推送新更改时,自动扫描仓库中的文件。 ⸻ 🔍 高级增强(想法) 如果您想更进一步: • ✅ 添加从 GitHub 或外部源自动更新规则 • 🔄 启用实时目录监控(使用 watchdog) • 🧪 为 YaraScanner.py 中的核心方法包含单元测试(使用 unittest 或 pytest) • 🌐 集成 Web 仪表板以显示扫描结果(Flask 或 FastAPI) • 📬 当特征匹配时发送电子邮件/Slack 警报 👥 作者 • Daniel Vihorev • Ilay Zendani(Cyber Consultent) (Wild Life Cyber Security) ⸻ 📜 许可证 Daniel Vihorev 和 Ilay Zendani (Wild Life Cyber Security) 保留所有权利。仅供教育或私人使用。未经书面许可,禁止商业使用。 ⸻
标签:Python, RAR扫描, YARA, ZIP扫描, 云资产可视化, 反病毒, 多线程扫描, 开源安全工具, 恶意代码分析, 恶意活动检测, 数字取证, 文件哈希, 无后门, 特征码扫描, 生成式UI, 病毒扫描, 端点安全, 网络安全, 自动化脚本, 补丁管理, 逆向工具, 逆向工程平台, 配置文件, 隐私保护