
New releaseAug 6, 2026
certgraveyard_yara v2026.08.06
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 - 패턴 매칭 엔진