
New releaseAug 6, 2026
certgraveyard_yara v2026.08.06
Автоматизированная генерация правил YARA на основе базы данных скомпрометированных сертификатов Cert Central.
Генератор YARA-правил CertGraveyard
Автоматическая генерация YARA-правил из базы скомпрометированных сертификатов CertGraveyard.
Возможности
- 🔄 Ежедневные обновления: Автоматически проверяет CertGraveyard на наличие новых скомпрометированных сертификатов
- 📝 Генерация YARA-правил: Создаёт отдельные YARA-правила для каждого сертификата
- ✅ Валидация: Проверяет все правила с помощью yara-python
- 📦 Управление релизами: Автоматические релизы с объединённым набором правил и ZIP-архивом
- 📋 История изменений: Ведёт подробный журнал всех добавлений и изменений
Быстрый старт
Установка
# Клонируйте репозиторий
git clone https://github.com/tjnel/certgraveyard_yara.git
cd certgraveyard_yara
# Установите с помощью UV
uv sync --all-extras
Использование
# Загрузите последний CSV из CertGraveyard
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 /путь/к/сканированию
# Или используйте отдельные правила
yara rules/individual/*.yara /путь/к/сканированию
Структура проекта
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 | Загрузка CSV из CertGraveyard |
check-changed | Проверка, изменился ли CSV с последнего запуска |
generate | Генерация YARA-правил из CSV |
validate | Валидация YARA-правил |
changelog | Обновление журнала изменений |
combine | Создание объединённого YARA-файла |
package | Создание ZIP-архива правил |
run | Запуск полного конвейера |
Конфигурация
Переменные окружения
| Переменная | Описание | По умолчанию |
|---|---|---|
CERTGRAVEYARD_URL | URL для загрузки CSV | https://certgraveyard.org/api/download_csv |
Лицензия
Лицензия MIT — см. LICENSE для подробностей.
Благодарности
- CertGraveyard за предоставление базы скомпрометированных сертификатов
- YARA за механизм поиска по шаблонам