업데이트로 돌아가기
New releaseAug 6, 2026

certgraveyard_yara v2026.08.06

Cert Central 손상된 인증서 데이터베이스에서 자동화된 YARA 규칙 생성

공유

CertGraveyard YARA - 인증서 분석을 위한 YARA 규칙

CertGraveyard YARA 규칙 생성기

GitHub license made-with-python

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 명령어

명령어설명
downloadCertGraveyard에서 CSV 다운로드
check-changed마지막 실행 이후 CSV 변경 여부 확인
generateCSV에서 YARA 규칙 생성
validateYARA 규칙 검증
changelog변경 사항으로 변경 로그 업데이트
combine결합 YARA 파일 생성
package규칙 ZIP 아카이브 생성
run전체 파이프라인 실행

구성

환경 변수

변수설명기본값
CERTGRAVEYARD_URLCSV 다운로드 URLhttps://certgraveyard.org/api/download_csv

라이선스

MIT 라이선스 - 자세한 내용은 LICENSE를 참조하세요.

감사의 말

  • CertGraveyard - 손상 인증서 데이터베이스 제공
  • YARA - 패턴 매칭 엔진

카테고리