DanielVihorev/File-Malware-Scanner
GitHub: DanielVihorev/File-Malware-Scanner
这是一个基于 Python 和 YARA 规则的轻量级恶意文件扫描工具,能够通过特征匹配识别压缩包及各类文件中的潜在威胁。
Stars: 0 | Forks: 0
恶意软件特征扫描器
一个基于 Python 的恶意软件特征扫描器,使用 YARA —— 非常适合通过自定义规则检测恶意文件。
安装和 MP4 文件使用示例:
Pdf 扫描示例:
⸻
🧩 使用的库
该项目混合使用了标准 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) 保留所有权利。仅供教育或私人使用。未经书面许可,禁止商业使用。
⸻
Pdf 扫描示例:
⸻
🧩 使用的库
该项目混合使用了标准 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, 病毒扫描, 端点安全, 网络安全, 自动化脚本, 补丁管理, 逆向工具, 逆向工程平台, 配置文件, 隐私保护