
Nuevo releaseAug 6, 2026
certgraveyard_yara v2026.08.06
Generación automatizada de reglas YARA a partir de la base de datos de certificados comprometidos de Cert Central.
Generador de Reglas YARA de CertGraveyard
Generación automatizada de reglas YARA a partir de la base de datos de certificados comprometidos de CertGraveyard.
Características
- 🔄 Actualizaciones Diarias: Comprueba automáticamente CertGraveyard en busca de nuevos certificados comprometidos
- 📝 Generación de Reglas YARA: Crea reglas YARA individuales para cada certificado
- ✅ Validación: Valida todas las reglas con yara-python
- 📦 Gestión de Lanzamientos: Lanzamientos automatizados con conjunto de reglas combinado y archivo ZIP
- 📋 Registro de Cambios: Mantiene un registro detallado de todas las adiciones y modificaciones
Inicio Rápido
Instalación
# Clonar el repositorio
git clone https://github.com/tjnel/certgraveyard_yara.git
cd certgraveyard_yara
# Instalar con UV
uv sync --all-extras
Uso
# Descargar el último CSV de CertGraveyard
cert-graveyard-yara download
# Verificar si el CSV ha cambiado
cert-graveyard-yara check-changed
# Generar reglas YARA
cert-graveyard-yara generate
# Validar reglas
cert-graveyard-yara validate --engine yara
# Crear archivo combinado y archivo ZIP
cert-graveyard-yara combine
cert-graveyard-yara package
# Ejecutar el pipeline completo
cert-graveyard-yara run --all
Usar las Reglas Generadas
Descarga la última versión o usa las reglas directamente:
# Escanear con el conjunto de reglas combinado
yara rules/combined/MAL_Compromised_Cert_*.yara /ruta/a/escanear
# O usar reglas individuales
yara rules/individual/*.yara /ruta/a/escanear
Estructura del Proyecto
cert-graveyard-yara/
├── .github/workflows/ # GitHub Actions
│ ├── daily-update.yml # Verificación diaria de CSV y generación de reglas
│ ├── ci.yml # Validación y pruebas de PR
│ └── release.yml # Creación de lanzamientos
├── src/cert_graveyard_yara/ # Código fuente
│ ├── __init__.py
│ ├── downloader.py # Descarga y caché de CSV
│ ├── parser.py # Análisis de CSV
│ ├── generator.py # Generación de reglas YARA
│ ├── validator.py # Validación de reglas
│ ├── changelog.py # Gestión del registro de cambios
│ └── cli.py # Interfaz de línea de comandos
├── tests/ # Suite de pruebas
├── rules/
│ ├── individual/ # Archivos de reglas YARA individuales
│ └── combined/ # Archivos de lanzamiento combinados
├── data/ # Datos CSV y archivos hash
├── templates/ # Plantillas Jinja2
└── CHANGELOG.md
Formato de Regla Generada
Cada regla sigue este formato:
import "pe"
rule MAL_Compromised_Cert_Emotet_DigiCert_0a_1b_2c_3d {
meta:
description = "Detecta el malware Emotet utilizando certificado comprometido..."
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"
)
}
Desarrollo
Configuración del Entorno de Desarrollo
# Instalar con dependencias de desarrollo
uv sync --all-extras
# Ejecutar linting
uv run ruff check src tests
# Ejecutar verificación de tipos
uv run mypy src
# Ejecutar pruebas
uv run pytest
Ejecutar Pruebas
# Ejecutar todas las pruebas con cobertura
uv run pytest
# Ejecutar un archivo de prueba específico
uv run pytest tests/test_generator.py
# Ejecutar con salida detallada
uv run pytest -v
Comandos CLI
| Comando | Descripción |
|---|---|
download | Descargar CSV de CertGraveyard |
check-changed | Verificar si el CSV ha cambiado desde la última ejecución |
generate | Generar reglas YARA desde el CSV |
validate | Validar reglas YARA |
changelog | Actualizar el registro de cambios con las modificaciones |
combine | Crear archivo YARA combinado |
package | Crear archivo ZIP de las reglas |
run | Ejecutar el pipeline completo |
Configuración
Variables de Entorno
| Variable | Descripción | Valor por Defecto |
|---|---|---|
CERTGRAVEYARD_URL | URL de descarga del CSV | https://certgraveyard.org/api/download_csv |
Licencia
Licencia MIT - consulta el archivo LICENSE para más detalles.
Agradecimientos
- CertGraveyard por proporcionar la base de datos de certificados comprometidos
- YARA por el motor de coincidencia de patrones