
新发布Aug 18, 2026
certgraveyard_yara v2026.08.18
从 Cert Central 受损证书数据库中自动生成 YARA 规则。
CertGraveyard YARA规则生成器
从CertGraveyard受损证书数据库自动生成YARA规则。
特性
- 🔄 每日更新:自动检查CertGraveyard是否有新的受损证书
- 📝 YARA规则生成:为每个证书创建独立的YARA规则
- ✅ 验证:使用yara-python验证所有规则
- 📦 发布管理:自动发布包含合并规则集和ZIP归档的版本
- 📋 更新日志:维护所有添加和修改的详细日志
快速开始
安装
# 克隆仓库
git clone https://github.com/tjnel/certgraveyard_yara.git
cd certgraveyard_yara
# 使用UV安装
uv sync --all-extras
使用
# 从CertGraveyard下载最新CSV
cert-graveyard-yara download
# 检查CSV是否已更改
cert-graveyard-yara check-changed
# 生成YARA规则
cert-graveyard-yara generate
# 验证规则
cert-graveyard-yara validate --engine yara
# 创建合并文件和ZIP归档
cert-graveyard-yara combine
cert-graveyard-yara package
# 运行完整流程
cert-graveyard-yara run --all
使用生成的规则
下载最新版本或直接使用规则:
# 使用合并规则集扫描
yara rules/combined/MAL_Compromised_Cert_*.yara /path/to/scan
# 或使用单个规则
yara rules/individual/*.yara /path/to/scan
项目结构
cert-graveyard-yara/
├── .github/workflows/ # GitHub Actions
│ ├── daily-update.yml # 每日CSV检查和规则生成
│ ├── ci.yml # PR验证和测试
│ └── release.yml # 版本发布
├── src/cert_graveyard_yara/ # 源代码
│ ├── __init__.py
│ ├── downloader.py # CSV下载和缓存
│ ├── parser.py # CSV解析
│ ├── generator.py # YARA规则生成
│ ├── validator.py # 规则验证
│ ├── changelog.py # 更新日志管理
│ └── cli.py # 命令行接口
├── tests/ # 测试套件
├── rules/
│ ├── individual/ # 单个YARA规则文件
│ └── combined/ # 合并发布文件
├── data/ # CSV数据和哈希文件
├── templates/ # Jinja2模板
└── CHANGELOG.md
生成规则格式
每条规则遵循以下格式:
import "pe"
rule MAL_Compromised_Cert_Emotet_DigiCert_0a_1b_2c_3d {
meta:
description = "检测使用受损证书的恶意软件Emotet..."
author = "TNEL (https://github.com/tjnel/certgraveyard_yara)"
reference = "https://certgraveyard.org"
hash = "a1b2c3d4..."
malware = "Emotet"
malware_type = "Trojan"
cert_issuer = "DigiCert SHA2 Assured ID Code Signing CA"
cert_serial = "0a:1b:2c:3d"
cert_valid_from = "2024-01-15"
cert_valid_to = "2025-01-15"
condition:
uint16(0) == 0x5a4d and
for any sig in pe.signatures : (
sig.issuer contains "DigiCert SHA2 Assured ID Code Signing CA" and
sig.serial == "0a:1b:2c:3d"
)
}
开发
设置开发环境
# 安装包含开发依赖
uv sync --all-extras
# 运行代码检查
uv run ruff check src tests
# 运行类型检查
uv run mypy src
# 运行测试
uv run pytest
运行测试
# 运行所有测试并带覆盖率
uv run pytest
# 运行特定测试文件
uv run pytest tests/test_generator.py
# 运行并输出详细信息
uv run pytest -v
CLI命令
| 命令 | 描述 |
|---|---|
download | 从CertGraveyard下载CSV |
check-changed | 检查CSV自上次运行后是否有变化 |
generate | 从CSV生成YARA规则 |
validate | 验证YARA规则 |
changelog | 使用变更更新日志 |
combine | 创建合并YARA文件 |
package | 创建规则ZIP归档 |
run | 运行完整流程 |
配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
CERTGRAVEYARD_URL | CSV下载URL | https://certgraveyard.org/api/download_csv |
许可证
MIT许可证 - 详见LICENSE文件。
致谢
- CertGraveyard 提供受损证书数据库
- YARA 模式匹配引擎