deconvolute-labs/yaramint
GitHub: deconvolute-labs/yaramint
YaraMint 通过从正负样本中挖掘统计特征,自动生成标准 YARA 规则,解决手工编写规则效率低与误报率高的问题。
Stars: 1 | Forks: 0
# YaraMint
[](https://github.com/deconvolute-labs/yaramint/actions/workflows/ci.yml)
[](https://pypi.org/project/yaramint/)
[](https://pypi.org/project/yaramint/)
[](https://pypi.org/project/yaramint/)
[](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规则, 大模型安全, 恶意软件分析, 敏感数据发现, 文档结构分析, 逆向工具, 零日漏洞检测