Abdelrhman-Mohamedd/Automatic-ML-YARA-Rule-Generation

GitHub: Abdelrhman-Mohamedd/Automatic-ML-YARA-Rule-Generation

基于 TF-IDF 机器学习和 DBSCAN 聚类的自动化 YARA 规则生成工具,从恶意软件样本中自动提取高区分度特征并合成检测签名,免去手动逆向和字符串筛选的负担。

Stars: 0 | Forks: 0

# YAAB (Yet Another Awesome Builder) ### 自主机器学习驱动的 YARA 规则生成器 YAAB (`yara-ml-gen`) 是一个先进的自动化流水线,用于为恶意软件家族合成高精度的 YARA 规则。它通过使用 **TF-IDF 机器学习** 和 **DBSCAN 聚类**,自动识别恶意软件数据集中最具区分度的特征,从而完全消除了逆向工程和字符串选择的手动负担。 ## 🎯 核心特性 * **多格式解析:** 原生解析 Windows PE、Linux ELF、macOS Mach-O 和 Office 文档(OOXML 和 OLE)的元数据。 * **机器学习评分:** 使用词频-逆文档频率(TF-IDF)对比“善意软件”语料库,确保生成的规则忽略常见的合法软件字符串。 * **变种聚类:** 使用 DBSCAN 聚类自动对不同的恶意软件变种进行分组,为每个结构子集生成独特的规则,以防止签名过于宽泛。 * **反混淆(XOR 恢复):** 通过香农熵分析检测加壳/加密的 payload,并能暴力破解单字节 XOR 密钥以恢复隐藏的字符串,利用了 YARA 4.x 的 `xor` 修饰符。 * **激进噪声过滤:** 阻止常见的编译器伪影(例如,MSVC RTTI、`.rdata`、`.rtc$IAA`)和低熵填充泄漏到签名中。 * **家族内聚性验证:** 在生成签名之前,通过数学验证输入样本是否确实属于同一恶意软件家族,从而防止生成错误的规则。 * **双重界面:** 具有适用于 CI/CD 流水线的无头 CLI,以及美观、交互式的终端 UI (TUI) 向导。 ## 🛠 安装说明 前置条件: * Python 3.9+ * `yara-python` * `scikit-learn` * `pefile`、`rich`、`questionary`、`requests` ``` # Clone 仓库 git clone https://github.com/yourusername/yara-ml-gen.git cd yara-ml-gen # 设置 virtual environment python -m venv .venv source .venv/bin/activate # 安装 dependencies pip install -r requirements.txt ``` *(可选)* 如果希望下载器能够解压加密的 zip 文件,强烈建议安装 `pyzipper`: ``` pip install pyzipper ``` ## 🚀 快速入门 ### 1. 交互式 TUI(推荐) YAAB 提供了一个完全引导式的交互式文本用户界面。只需运行: ``` python -m yaramlgen.cli tui ``` 该向导将引导您完成以下操作: 1. 从 MalwareBazaar 获取样本。 2. 选择您的恶意软件和善意软件目录。 3. 自动生成并验证 YARA 规则。 *注意:系统会询问一次您的 MalwareBazaar API 密钥,并将其安全地保存到 `~/.yaramlgen_config` 以供将来运行使用。* ### 2. 命令行界面 对于自动化和脚本编写,CLI 提供了完整的流水线。 **获取恶意软件样本:** ``` python -m yaramlgen.cli fetch --tag Emotet --limit 50 --out data/emotet/ ``` **生成 YARA 规则:** ``` python -m yaramlgen.cli generate \ --samples data/emotet/ \ --goodware data/goodware/ \ --family Emotet \ --out rules/emotet.yar \ --xor ``` *(`--xor` 标志可为加壳样本启用暴力破解解密)。* **验证 YARA 规则:** 根据您的数据集检查规则的召回率和误报率: ``` python -m yaramlgen.cli validate \ --rule rules/emotet.yar \ --samples data/emotet/ \ --goodware data/goodware/ ``` ## 🧠 大规模训练 对于海量数据集(1000+ 个样本),您可以将提取的特征缓存到磁盘,以避免在机器学习调优期间重新解析二进制文件。 ``` # 提取并 cache 到 JSONL python -m yaramlgen.cli extract-features --samples data/huge_family/ --out cache/family.jsonl # 从 cache 快速生成 python -m yaramlgen.cli generate-from-cache \ --features cache/family.jsonl \ --family "HugeFamily" \ --out rules/huge.yar ``` ## ⚙️ 工作原理 1. **特征提取:** 提取二进制结构(导入表、节区、动态符号、XML 流)和标准字符串。 2. **噪声剔除:** 匹配已知结构化编译器伪影或未通过字母数字/熵检查的特征将被销毁。 3. **内聚性检查:** 计算 TF-IDF 矩阵。如果平均两两余弦相似度 < 20%,该工具会警告分析师这些样本是不相关的。 4. **评分:** TokenScorer 拟合 TF-IDF 模型。恶意软件高度独有的 token 会获得高分;与善意软件语料库重叠的 token 将受到惩罚。 5. **规则合成:** 排名前 *K* 的 token 组成 YARA 字符串。基于聚类密度计算动态匹配条件(`M of them`)。 ## 📄 许可证 本项目是开源的。请确保遵守相关依赖项(`pefile`、`scikit-learn`、`yara-python`)的许可条款。
标签:Apex, CI/CD安全集成, DAST, DBSCAN聚类, DNS 反向解析, IP 地址批量处理, Linux ELF解析, macOS Mach-O解析, Office文档解析, Python安全工具, scikit-learn, Shannon熵, TF-IDF, TUI终端界面, URL发现, Windows PE解析, XOR解密, yara-python, YARA规则生成, 分页抓取, 反混淆, 威胁情报, 字符串提取, 安全检测, 开发者工具, 恶意软件分析, 恶意软件家族分类, 机器学习, 特征工程, 网络安全, 自动化安全工具, 自动化逆向工程, 逆向工具, 隐私保护