deconvolute-labs/yaramint

GitHub: deconvolute-labs/yaramint

YaraMint 通过从正负样本中挖掘统计特征,自动生成标准 YARA 规则,解决手工编写规则效率低与误报率高的问题。

Stars: 1 | Forks: 0

# YaraMint [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/deconvolute-labs/yaramint/actions/workflows/ci.yml) [![License](https://img.shields.io/pypi/l/yaramint.svg)](https://pypi.org/project/yaramint/) [![PyPI version](https://img.shields.io/pypi/v/yaramint.svg?color=green)](https://pypi.org/project/yaramint/) [![Python](https://img.shields.io/badge/python-3.13-blue.svg)](https://pypi.org/project/yaramint/) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) ## 从样本生成 YARA 规则,告别手工编写 YaraMint 可以从标记数据中生成 YARA 规则。只需提供一组对抗样本和一个良性控制语料库。随后,它会挖掘具有统计学区分度的 n-gram 模式,根据在控制集上的误报率对其进行评分,并将最终保留的特征签名写入标准的 `.yar` 文件中。 完整的算法说明在此。 ## 使用场景 **密钥和 API key 检测** — 以已知的 key 格式作为训练集,以良性代码作为控制集。获取针对您特定模式调优的规则,且误报率极低。 **数据 pipeline 中的 PII 检测** — 自定义 PII 格式因行业和组织而异。通用的 regex 规则集无法覆盖内部 ID 方案、地区性文档格式或特定领域的标识符。YaraMint 可以从您自己的样本中学习这些规则。 **Prompt 注入和越狱检测** — 从已知的攻击数据集生成规则,并在部署到您的 RAG pipeline 或 agent 基础设施之前,针对良性 prompt 语料库进行验证。 **威胁狩猎和恶意软件分析** — 给定安全事件中的样本,生成狩猎规则以扫描您整个机群中的变体。正/负样本的设定直接契合分析师的工作流。 **供应链和合规性扫描** — 在 CI 中检测大规模代码库里不兼容许可证的代码片段、已知存在漏洞的代码模式或被禁用的依赖项。 ## 安装 要求 Python 3.13 或更高版本。 ``` pip install yaramint ``` 使用 uv(推荐): ``` uv pip install yaramint ``` ## 快速开始 本示例使用良性源代码语料库作为控制集,生成一组用于检测泄漏 API key 的规则。 **第 1 步 — 准备您的良性语料库** 如果您的良性数据集较大,可以预先准备一次,并在后续的规则生成中重复使用: ``` ymint prepare ./data/source_code_corpus.jsonl \ --adapter jsonl \ --output ./data/benign_code.jsonl ``` **第 2 步 — 生成规则** 将 yaramint 指向您的正样本(已知的 API key 格式)和准备好的良性控制集: ``` ymint generate ./data/api_keys.jsonl \ --adversarial-adapter jsonl \ --benign-dataset ./data/benign_code.jsonl \ --benign-adapter jsonl \ --output ./data/api_key_rules.yar ``` **第 3 步 — 部署** 输出的是标准的 `.yar` 文件。您可以将其加载到任何 YARA 引擎、您的 CI pipeline、pre-commit hook 或 SIEM 中。无需额外的 runtime: ``` yara ./data/api_key_rules.yar ./target_directory/ ``` **可选步骤 — 寻找最佳配置** 运行 grid search 为您的数据集寻找最佳超参数,然后再生成生产环境的规则: ``` ymint optimize ./data/api_keys.jsonl \ --benign-dataset ./data/benign_code.jsonl \ --config optimization_config.yaml ``` 优化器会输出一条可直接使用的、应用了最佳 flag 的 `ymint generate` 命令。 ## 命令 ### `ymint prepare` 预处理大型良性数据集,以便高效复用。运行一次,即可在后续每次 `generate` 调用中引用它。接受本地文件或 Hugging Face 数据集: ``` ymint prepare bigcode/the-stack-smol \ --adapter huggingface \ --output ./data/benign_code.jsonl ``` ### `ymint generate` 主命令。从您的对抗样本中挖掘具有区分度的模式,针对良性控制集进行验证,并写入 YARA 规则文件: ``` ymint generate ./data/pii_examples.jsonl \ --adversarial-adapter jsonl \ --benign-dataset ./data/benign_text.jsonl \ --benign-adapter jsonl \ --engine ngram \ --output ./data/pii_rules.yar ``` 使用 `--set` flag 调整灵敏度: ``` ymint generate ./data/pii_examples.jsonl \ --benign-dataset ./data/benign_text.jsonl \ --set engine.score_threshold=0.9 \ --output ./data/pii_rules.yar ``` 正在迭代现有规则?可以跳过已被覆盖的模式: ``` ymint generate ./data/new_samples.jsonl \ --benign-dataset ./data/benign_text.jsonl \ --existing-rules ./data/baseline.yar \ --output ./data/updated_rules.yar ``` ### `ymint optimize` 运行超参数 grid search,并为您的数据集输出最佳的 `ymint generate` 命令。在为新数据集生成生产规则之前使用此命令: ``` ymint optimize ./data/samples.jsonl \ --benign-dataset ./data/benign_text.jsonl \ --config optimization_config.yaml ``` ## 输出与兼容性 yaramint 生成标准的 `.yar` 文件,这些文件具有以下特点: - 兼容任何支持 YARA 的引擎 - 原生集成 VirusTotal、大多数 SIEM、EDR、osquery 和 Velociraptor - 像其他任何代码一样具备人类可读性、可审计性,并支持版本控制 - 无需专有 runtime 即可部署 ## 延伸阅读 - [用户指南](docs/User_Guide.md) — 完整的配置参考、adapter 选项、dot-notation 覆盖设置及引擎调优 - [算法与设计](https://deconvoluteai.com/blog/yara-rules-llm-prompt-security) — 了解模式挖掘引擎的工作原理
标签:DAST, DNS信息、DNS暴力破解, DNS 反向解析, LLM应用, LNA, YARA规则, 大模型安全, 恶意软件分析, 敏感数据发现, 文档结构分析, 逆向工具, 零日漏洞检测