vanity1412/Automated-YARA-Rule-Generation-Tool

GitHub: vanity1412/Automated-YARA-Rule-Generation-Tool

基于yarGen引擎的桌面GUI工具,自动化完成恶意软件家族样本分析、YARA规则生成、验证测试和评分报告的完整工作流。

Stars: 0 | Forks: 0

# yarGen GUI - 恶意软件家族 YARA 构建器

一款桌面工具,旨在支持根据恶意软件家族的通用特征自动生成 YARA 签名

## 简介 **yarGen GUI - 恶意软件家族 YARA 构建器** 是一款桌面工具,用于支持根据属于同一恶意软件家族的多个样本生成 YARA 签名的工作流程。 该工具使用 `yarGen.py` 作为核心引擎来提取特征并生成 YARA 规则。GUI 不会更改 yarGen 的核心算法,而是补充了图形界面、工作流、环境检查、进度监控、规则验证、误报测试以及报告导出功能。 该项目的主要目的是服务于以下课题: ## 本工具解决了什么问题? 在**恶意软件分析**这门课程中,在分析了同一恶意软件家族的多个样本后,分析人员通常需要创建检测签名以识别类似的变种。 如果手动进行,工作流程通常包括: 1. 收集同一恶意软件家族的样本。 2. 对每个样本进行静态分析。 3. 提取 strings、hash、PE info、import/export。 4. 寻找样本之间的共同特征。 5. 编写 YARA 规则。 6. 验证语法。 7. 在恶意软件上进行测试。 8. 在正常软件上测试以检查误报。 9. 撰写报告。 本工具自动化并可视化了这个工作流程: ``` Malware samples cùng family → phân tích sample → chạy yarGen.py → tạo YARA rule → giám sát tiến trình → validate syntax → test malware/goodware → chấm điểm rule → xuất báo cáo ``` ## 主要特性 ### 1. 易用的 GUI 工作流 - 分步骤的侧边栏。 - 为新手提供指导的 Home Dashboard。 - 面向新手的 Basic Mode。 - 面向技术用户的 Advanced Mode。 - 亮色/暗色主题。 - 支持越南语和英语。 ### 2. 环境检查 **Setup** 选项卡会检查: - Python 可执行文件。 - 工作目录。 - `yarGen.py`。 - `requirements.txt`。 - `dbs/` 文件夹。 - `3rdparty/` 文件夹。 - 所需的 Python 模块,如 `pefile`、`lxml`、`yara`。 ### 3. 样本分析 **Samples** 选项卡支持: - 扫描恶意软件文件夹。 - 计算 MD5。 - 计算 SHA256。 - 识别文件类型。 - 警告未解压的压缩文件。 - 提取轻量级 strings 以辅助聚类。 - 对相似样本进行聚类。 ### 4. 恶意软件家族工作流 **Family** 选项卡支持: - 输入恶意软件家族名称。 - 创建 `identifier.txt`。 - 检查样本数量。 - 应用家族规则预设。 - 确保用户正在基于同一家族的多个样本创建规则。 ### 5. 生成 YARA 规则 **Generate** 选项卡支持: - 选择恶意软件样本文件夹。 - 选择输出 `.yar` 文件。 - 选择 string 导出文件夹。 - 选择预设。 - 选择 DB 模式。 - 在运行前查看 yarGen 命令。 - 保存 `.bat` 或 `.sh` 格式的命令。 - 使用 subprocess 运行 `yarGen.py`。 ### 6. 实时监控 **Monitor** 选项卡显示: - 实时日志。 - 进度条。 - 阶段表。 - 预览 `.yar` 文件。 - 规则、简单规则、超级规则和 strings 的数量统计。 ### 7. 验证与测试 **Validate/Test** 选项卡支持: - 使用 `yara-python` 或 `yarac` 验证语法。 - 在恶意软件文件夹上测试规则。 - 在正常软件文件夹上测试规则。 - 检测误报。 - 导出 CSV/HTML 报告。 ### 8. 数据库检查器 **Database** 选项卡支持: - 查看 `dbs/` 文件夹的状态。 - 查看数据库分组: - `good-strings` - `good-opcodes` - `good-exports` - `good-imphashes` - 查看大小和条目数。 - 预览数据库。 - 创建/更新正常软件数据库。 ### 9. 规则评分报告 **Reports** 选项卡支持: - 读取 `.yar/.yara` 文件。 - 提取每个 string 的分数。 - 计算最大分数、平均分数、最小分数。 - 评估每条规则的可靠性。 - 绘制最大分数图表。 - 导出 Markdown/CSV 报告。 ## 项目架构 项目采用模块化架构,以便于修改和扩展。 ``` . ├── main.py ├── app.py ├── requirements.txt ├── README.md │ ├── core/ │ ├── config.py │ ├── settings.py │ ├── i18n.py │ ├── state.py │ ├── utils.py │ ├── yargen_command.py │ ├── validators.py │ ├── yara_score.py │ ├── report_builder.py │ └── runner.py │ ├── widgets/ │ ├── sidebar.py │ ├── statusbar.py │ └── cards.py │ └── screens/ ├── welcome_screen.py ├── home_screen.py ├── setup_screen.py ├── samples_screen.py ├── family_screen.py ├── generate_screen.py ├── monitor_screen.py ├── validate_screen.py ├── database_screen.py ├── reports_screen.py └── settings_screen.py ``` ## 模块职责 | 文件/文件夹 | 功能 | |---|---| | `main.py` | 应用程序入口点 | | `app.py` | 创建主窗口、顶栏、侧边栏、状态栏 | | `core/config.py` | 常规配置、预设、扩展名、数据库前缀 | | `core/settings.py` | 读取/写入 `settings.json` | | `core/i18n.py` | 越南语/英语双语系统 | | `core/state.py` | GUI 中使用的共享变量 | | `core/utils.py` | 关于路径、浏览、打开文件夹的工具函数 | | `core/yargen_command.py` | 构建 yarGen CLI 命令 | | `core/validators.py` | 环境验证 | | `core/runner.py` | 运行 subprocess 并实时读取日志 | | `core/yara_score.py` | 分析 YARA 规则中的分数 | | `core/report_builder.py` | 导出 CSV/HTML 报告 | | `widgets/` | 可复用的 widget 组件 | | `screens/` | 各个功能屏幕界面 | ## 安装说明 ### 前置条件 - Python 3.10+ - 推荐 Windows 10/11 - `yarGen.py` - `dbs/` 文件夹 - `3rdparty/` 文件夹 - 必需的 Python 包 ### 安装依赖包 ``` pip install -r requirements.txt ``` 如果缺少 `yara-python`: ``` pip install yara-python ``` 如果使用旧版 yarGen 并遇到缺少 `scandir` 的错误: ``` pip install scandir ``` ## 运行说明 建议将 GUI 源码与 `yarGen.py`、`dbs/`、`samples/` 放在同一个文件夹中。 例如: ``` C:\DACK_MALWARE ├── main.py ├── app.py ├── core\ ├── widgets\ ├── screens\ ├── yarGen.py ├── dbs\ ├── 3rdparty\ ├── samples\ ├── rules\ ├── strings_out\ └── reports\ ``` 运行应用: ``` cd C:\DACK_MALWARE python main.py ``` 如果使用虚拟环境: ``` cd C:\DACK_MALWARE .\venv\Scripts\python.exe main.py ``` ## 使用工作流 ### 第 1 步:Setup 进入 **Setup** 选项卡并点击: ``` Validate environment ``` 目标是检查 Python、`yarGen.py`、数据库以及各项依赖。 ### 第 2 步:Samples 进入 **Samples** 选项卡: 1. 选择恶意软件样本文件夹。 2. 点击 **Scan folder**。 3. 检查文件类型、MD5、SHA256。 4. 如果需要,点击 **Cluster similar samples**。 ### 第 3 步:Family 进入 **Family** 选项卡: 1. 输入家族名称,例如 `TrickBot`。 2. 创建 `identifier.txt`。 3. 点击 **Apply Family Rule preset**。 ### 第 4 步:Generate 进入 **Generate** 选项卡: 1. 选择预设。 2. 选择 DB 模式。 3. 检查输入/输出。 4. 点击 **Preview command**。 5. 点击 **Generate YARA rule**。 ### 第 5 步:Monitor 进入 **Monitor** 选项卡以查看: - 数据库加载。 - 处理样本。 - 生成统计信息。 - 生成简单/超级规则。 - 预览规则。 - YARA 摘要。 ### 第 6 步:Validate/Test 进入 **Validate/Test** 选项卡: 1. 点击 **Validate syntax**。 2. 点击 **Test malware**。 3. 点击 **Test goodware**。 4. 如果需要,导出 CSV/HTML。 ### 第 7 步:Reports 进入 **Reports** 选项卡: 1. 选择 `.yar` 文件。 2. 点击 **Analyze Rule Scores**。 3. 查看分数表和图表。 4. 导出 Markdown/CSV。 ## 预设说明 | 预设 | 目的 | |---|---| | Beginner | 为首次运行提供的平衡配置 | | PE Deep | 更深入的 PE 分析,可能会比较慢 | | Script Malware | 适用于 PowerShell、JS、VBS、BAT/CMD | | Webshell | 适用于 PHP、ASP、ASPX、JSP | | Fast Scan | 快速运行,用于演示或分类 | | TrickBot Demo | 为 TrickBot 样本提供的平衡配置 | | Loose Debug | 当 yarGen 生成 0 条规则时用于调试,请勿将其作为最终规则使用 | ## DB 模式说明 | DB 模式 | 含义 | |---|---| | Full quality DB | 使用完整的数据库,质量更高但速度较慢 | | Fast strings DB | 使用更轻量的 strings 数据库 | | Fast no-opcodes DB | 跳过较重的 opcodes 数据库,适合快速演示 | ## 正常软件数据库 正常软件数据库是包含干净软件特征的数据库。 yarGen 使用正常软件数据库来: - 对常见的 string 进行扣分。 - 移除容易导致误报的 string。 - 生成更可靠的规则。 常见的数据库分组: ``` good-strings-part*.db good-opcodes-part*.db good-exports-part*.db good-imphashes-part*.db ``` ## SIMPLE 规则和 SUPER 规则 ### SIMPLE 规则 为每个样本或每个具体文件生成的规则。 ### SUPER 规则 基于在多个样本中出现的共同特征生成的规则。 在本课题中,**SUPER 规则非常重要**,因为它体现了寻找恶意软件家族共同特征的过程。 ## 规则评分 当开启 `--score` 时,yarGen 会为每个 string 附上分数。 例如: ``` $x1 = "ReflectiveLoader" ascii fullword /* score: '41.00' */ $s2 = "kernel32.dll" ascii fullword /* score: '-5.00' */ ``` 含义: ``` Score cao → string đặc trưng hơn Score thấp → string bình thường Score âm → string phổ biến hoặc dễ false positive ``` GUI 中的评分等级: | 最大分数 | 评价 | |---:|---| | > 35 | 非常高 | | > 25 | 高 | | > 10 | 中等 | | <= 10 | 低 | | 没有分数 | 数据不足 | ## 快速演示 ``` Setup → Validate environment Samples → Chọn samples\TrickBot → Scan folder Family → Family name = TrickBot → Apply Family Rule preset Generate → Preset = TrickBot Demo → DB Mode = Fast no-opcodes DB hoặc Full quality DB → Generate YARA rule Monitor → Xem log và progress Validate/Test → Validate syntax → Test malware → Test goodware Reports → Analyze Rule Scores → Export Markdown/CSV ``` ## 常见错误 ### 找不到数据库 原因通常是工作目录设置错误。 解决方法: ``` Setup → Working directory = thư mục chứa yarGen.py và dbs/ ``` ### 生成过程耗时过长 原因: - 完整质量数据库过大。 - Opcode 数据库较重。 - 样本数量众多。 解决方法: - 在演示时使用 `Fast no-opcodes DB`。 - 如果不需要,请不要开启 `--opcodes`。 - 在生成最终规则时使用 Full quality DB。 ### yarGen 生成了 0 条规则 可能的原因: - 样本被加壳/加密。 - 样本的 strings 过少。 - 文件尚未解压。 - 文件夹混杂了多个恶意软件家族。 - 参数设置过于严格。 解决方法: - 使用 `Loose Debug` 预设。 - 开启 `--score`。 - 开启 `--strings`。 - 降低 `-z` 值。 - 降低 `-x` 值。 - 增大 `-s` 值。 - 在 Samples 选项卡中检查样本。 ### 报告中没有分数 原因: - 在生成时没有开启 `--score`。 解决方法: ``` Generate → bật --score → Generate lại ``` ### 规则匹配到了正常软件 这属于误报。 解决方法: - 增大 `-z` 值。 - 增大 `-x` 值。 - 移除常见的 string。 - 使用 Full quality DB。 - 重新在正常软件上进行测试。 ## 安全注意事项 - 仅在虚拟机或沙箱中分析恶意软件。 - 不要双击/运行真实的恶意软件。 - 不要将真实的恶意软件上传到 GitHub。 - 不要提交 `samples/`、`malware/`、`dbs/`、`venv/` 文件夹。 - 本项目仅用于学习、研究和防御目的。 ## `.gitignore` 建议 ``` # 数据库文件 dbs/ *.db # 虚拟环境 venv/ .venv/ env/ # Python 缓存 __pycache__/ *.pyc *.pyo # IDE 文件 .vscode/ .idea/ # OS 文件 .DS_Store Thumbs.db desktop.ini # 日志和临时文件 logs/ *.log *.tmp *.temp # 生成的输出 rules/ strings_out/ reports/ clusters/ _gui_runtime/ # 恶意软件样本 samples/ malware/ goodware/ # Archives 和 binaries *.zip *.rar *.7z *.tar *.gz *.exe *.dll *.sys *.scr *.com *.bin # 本地设置 settings.json *.local.json ``` ## 用于报告的简短描述 ## 免责声明 本工具出于信息安全学习、研究和防御目的而构建。 请勿使用本工具来开发、传播或运营恶意软件。 `yarGen.py` 是属于原项目/原作者的外部引擎。本 GUI 只是一个辅助工作流的界面层,并未更改 yarGen 的核心算法。 ## 25. 快速命令 ``` cd C:\DACK_MALWARE .\venv\Scripts\python.exe main.py ``` 如果是首次运行: ``` Welcome → chọn ngôn ngữ Setup → Validate environment Samples → Scan folder Generate → Generate YARA rule Monitor → xem progress Validate/Test → kiểm tra rule Reports → Analyze rule scores ``` # A u t o m a t e d - Y A R A - R u l e - G e n e r a t i o n - T o o l # A u t o m a t e d - Y A R A - R u l e - G e n e r a t i o n - T o o l
标签:DAST, DInvoke, DNS枚举, EDR规则, PE文件分析, Python, Tkinter, URL发现, YARA规则生成, yarGen, 云安全监控, 图形界面, 威胁情报, 安全检测, 开发者工具, 恶意软件分析, 恶意软件家族, 无后门, 样本分析, 桌面应用, 签名生成, 网络安全工具, 规则验证, 误报测试, 逆向工具, 静态分析