업데이트로 돌아가기
New releaseSep 21, 2026

Zircolite v4.0.0

EVTX, Auditd 및 Linux용 Sysmon 로그를 위한 독립형 SIGMA 기반 탐지 도구

공유

EVTX, Auditd, Sysmon for Linux, XML, CSV 또는 JSONL/NDJSON 로그를 위한 독립 실행형 SIGMA 기반 탐지 도구

python version

Zircolite는 Sigma 탐지 규칙을 다음에 적용합니다:

  • MS Windows EVTX (EVTX, XML, JSONL 형식)
  • Auditd 로그
  • Sysmon for Linux
  • EVTXtract
  • CSV 및 XML 로그
  • JSON Array 로그

주요 기능

  • 형식 감지: 로그 형식과 타임스탬프 필드를 자동으로 식별합니다. gzip, bzip2, ZIP 및 7-Zip 입력을 읽으며, 암호화된 ZIP/7z 입력은 --ask-archive-password 또는 ZIRCOLITE_ARCHIVE_PASSWORD 환경 변수에서 비밀번호를 가져옵니다.
  • Sigma 규칙: pySigma의 SQLite 백엔드로 네이티브 YAML 규칙을 변환하거나 미리 변환된 JSON 규칙셋을 로드합니다.
  • 상관 분석: 카운트, 통계, 시간적 시퀀스, 부재 조건 및 연쇄 규칙을 지원하며, 각 경보에 지원 이벤트가 포함됩니다. 통합 모드는 파일 간 상관 분석을 지원합니다.
  • 필드 처리: 키-값 필드를 분할하고 Base64 및 hex 디코딩을 포함한 Python 변환을 적용합니다.
  • 내보내기: JSONL, Splunk, Elastic, OpenSearch, Timesketch, SARIF 및 ATT&CK Navigator용 JSON, CSV 및 Jinja 템플릿.
  • 터미널 출력: 심각도별로 정렬된 탐지 결과, MITRE ATT&CK 기법 및 전술, 규칙 커버리지 및 출력 링크.

Zircolite는 Python과 함께 직접 사용하거나, Python 설치가 필요 없는 독립 실행형 바이너리를 다운로드하여 사용할 수 있습니다.

문서 사이트 또는 저장소 문서를 참조하세요.

요구 사항 / 설치

[!NOTE] 소스 설치에는 Python과 패키지 관리자가 필요합니다. 독립 실행형 바이너리와 Docker 이미지에는 Python, 의존성 및 컴파일된 커널이 포함되어 있습니다.

이 프로젝트는 Python 3.10 이상에서 테스트되었습니다. 의존성은 pyproject.toml에 선언되어 있으며, 클론한 저장소에서 PDM (pdm install), uv (uv sync) 또는 Poetry (poetry install)로 설치하세요.

아래 예제는 python3 zircolite.py를 실행합니다: 도구가 생성한 환경을 활성화하거나, pdm run, uv run 또는 poetry run을 앞에 붙이세요.

의존성

의존성은 pyproject.toml에 선언되어 있습니다. 각각의 역할은 의존성을 참조하세요.

⚠️ 먼저 C 컴파일러를 설치하세요

소스 설치는 Cython 플래트닝 커널을 빌드하기 위해 C 컴파일러를 사용합니다. 컴파일이 실패하면 빌드 백엔드가 경고하고 더 느린 Python 커널로 설치가 계속됩니다. ZIRCOLITE_REQUIRE_NATIVE=1을 설정하면 네이티브 빌드 성공을 필수로 요구합니다.

네이티브 가속을 위해서는 pdm install 전에 툴체인을 설치하세요:

플랫폼사전 요구 사항
Debian, Ubuntuapt install build-essential python3-dev
RHEL, Fedora, Rockydnf install gcc python3-devel
Alpineapk add build-base python3-dev
macOSxcode-select --install
WindowsBuild Tools for Visual Studio ("Desktop development with C++")

Cython은 빌드 의존성으로 자동 설치됩니다.

독립 실행형 바이너리

모든 릴리스는 플랫폼별로 자체 포함된 패키지를 게시합니다. 각 패키지는 자체 Python과 모든 의존성을 포함하므로 아무것도 먼저 설치할 필요가 없습니다.

대상아카이브실행 환경
linux-x64Zircolite-<version>-linux-x64.zipglibc 2.28 이상: RHEL 8, Debian 10, Ubuntu 20.04 이상
linux-arm64Zircolite-<version>-linux-arm64.zipglibc 2.28 이상
macos-arm64Zircolite-<version>-macos-arm64.zipmacOS 15 이상, Apple silicon
windows-x64Zircolite-<version>-windows-x64.zipWindows 10 이상
windows-arm64Zircolite-<version>-windows-arm64.zipWindows 10 이상, ARM64

Intel Mac과 Alpine 같은 musl 기반 배포판에는 바이너리가 없습니다. 해당 환경에서는 Python 또는 Docker를 사용하세요.

unzip Zircolite-<version>-linux-x64.zip
cd Zircolite-<version>-linux-x64
./Zircolite --events sysmon.evtx --ruleset rules/rules_windows_merged.json

아래 예제에서는 python3 zircolite.py를 실행 파일 경로로 바꾸세요.

바이너리는 코드 서명이 되어 있지 않습니다. macOS는 브라우저로 다운로드한 파일을 격리하고, 추출된 파일이 이 플래그를 상속받으면 Gatekeeper가 실행 파일과 _internal/의 모든 라이브러리를 차단합니다. 첫 실행 전에 전체 디렉터리에서 재귀적으로 해제하세요:

xattr -dr com.apple.quarantine Zircolite-<version>-macos-arm64

빠른 시작

튜토리얼은 이전 버전을 영어, 스페인어, 프랑스어로 다룹니다.

EVTX 파일

도움말은 다음으로 확인할 수 있습니다:

# Prefix with pdm run, uv run or poetry run if the environment is not active
python3 zircolite.py -h

EVTX 파일의 확장자가 ".evtx"인 경우:

# python3 zircolite.py --evtx <EVTX FOLDER or EVTX FILE> --ruleset <SIGMA RULESET> [--ruleset <OTHER RULESET>]
python3 zircolite.py --evtx sysmon.evtx --ruleset rules/rules_windows_merged.json

--ruleset은 생략할 수 있습니다: 이 경우 Zircolite는 Sysmon과 일반 Windows 채널을 포괄하는 rules/rules_windows_merged.json을 사용합니다.

네이티브 Sigma 규칙(YAML) 사용

네이티브 Sigma 규칙(YAML)을 직접 사용할 수 있습니다:

# Single YAML rule
python3 zircolite.py --evtx sample.evtx --ruleset path/to/rule.yml

# Directory of Sigma rules
python3 zircolite.py --evtx sample.evtx --ruleset ./sigma/rules/windows/process_creation

# With pySigma pipelines
python3 zircolite.py --evtx sample.evtx --ruleset rule.yml --pipeline sysmon --pipeline windows-logsources

--pipeline-list는 설치된 파이프라인을 표시합니다. 설치되지 않은 파이프라인을 지정하면 규칙이 변환되기 전에 종료 코드 2와 함께 실행이 중단됩니다.

기타 로그 형식

Zircolite는 대부분의 경우 로그 형식을 자동 감지하므로 명시적 형식 플래그는 선택 사항입니다:

# Auto-detection (recommended) - Zircolite identifies the format automatically
python3 zircolite.py --events auditd.log --ruleset rules/rules_linux.json
python3 zircolite.py --events sysmon.log --ruleset rules/rules_linux.json
python3 zircolite.py --events <JSON_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json

# Explicit format flags (override auto-detection)
python3 zircolite.py --events auditd.log --ruleset rules/rules_linux.json --auditd
python3 zircolite.py --events sysmon.log --ruleset rules/rules_linux.json --sysmon4linux
python3 zircolite.py --events <JSON_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json --jsononly
python3 zircolite.py --events <JSON_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json --json-array
python3 zircolite.py --events <CSV_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json --csv-input
python3 zircolite.py --events <XML_FOLDER_OR_FILE> --ruleset rules/rules_windows_merged.json --xml-input
  • --events 인수는 파일 또는 폴더일 수 있습니다. 폴더인 경우 현재 폴더와 하위 폴더의 모든 로그 파일이 선택됩니다(비활성화하려면 --no-recursion 사용).
  • 파일 선택을 위한 사용자 지정 glob 패턴을 지정하려면 --file-pattern을 사용하세요.
  • 형식 플래그(--json-input, --xml-input, ...)를 전달하면 자동 형식 감지를 건너뜁니다.

[!TIP] 도구를 사용해 보려면 EVTX-ATTACK-SAMPLES(EVTX 파일)로 테스트할 수 있습니다.

Docker로 실행

# Pull the Docker image
docker pull wagga40/zircolite:latest
# If your logs and rules are in a specific directory
docker run --rm --tty \
    -v $PWD:/case/input:ro \
    -v $PWD:/case/output \
    wagga40/zircolite:latest \
    -e /case/input \
    -o /case/output/detected_events.json \
    -r /case/input/a_sigma_rule.yml
  • $PWD를 로그와 규칙/규칙셋이 저장된 디렉터리(절대 경로만)로 바꾸세요.
  • Linux 호스트에서는 --user "$(id -u):$(id -g)"와 -l /case/output/zircolite.log를 추가하세요: 이미지는 소유한 디렉터리에 쓸 수 없는 비권한 사용자로 실행됩니다. Docker를 참조하세요.

자동 처리 최적화

여러 파일의 경우 Zircolite는 파일 크기, 사용 가능한 RAM 및 CPU 수를 사용하여 데이터베이스 레이아웃과 워커 수를 선택합니다. 메모리 압박이 있을 때는 새 작업을 제한합니다.

python3 zircolite.py --evtx ./logs/ --ruleset rules/rules_windows_merged.json

--no-auto-mode, --unified-db(모든 파일에 대해 하나의 데이터베이스, 상관 규칙이 로드될 때마다 자동 모드에서도 선택됨), --no-parallel 또는 --parallel-workers N으로 이를 재정의할 수 있습니다. 선택 방식은 자동 처리 최적화를 참조하세요.

YAML 구성 파일 사용

재사용 가능한 실행 옵션을 YAML 구성 파일에 저장하세요:

# Generate a fully commented configuration file
python3 zircolite.py --generate-config my_config.yaml

# Run with it
python3 zircolite.py --yaml-config my_config.yaml

카테고리