Назад к обновлениям
New releaseAug 6, 2026

certgraveyard_yara v2026.08.06

Автоматизированная генерация правил YARA на основе базы данных скомпрометированных сертификатов Cert Central.

Поделиться

CertGraveyard YARA - YARA-правила для анализа сертификатов

Генератор YARA-правил CertGraveyard

GitHub license made-with-python

Автоматическая генерация 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_URLURL для загрузки CSVhttps://certgraveyard.org/api/download_csv

Лицензия

Лицензия MIT — см. LICENSE для подробностей.

Благодарности

  • CertGraveyard за предоставление базы скомпрометированных сертификатов
  • YARA за механизм поиска по шаблонам

Категории