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

Zircolite v3.8.1

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

공유

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

python version

Zircolite는 Python 3로 작성된 독립 실행형 도구로, 다음 로그에 SIGMA 규칙을 사용할 수 있게 해줍니다:

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

주요 기능

  • 빠른 속도: 452,554개 이벤트를 4,319개 Sigma 규칙에 대해 11.6초 만에 처리 — 동일한 로그에서 Rust로 작성된 Hayabusa보다 2.1배, Chainsaw보다 9.8배 빠릅니다. 벤치마크를 참조하세요.
  • 자동 로그 유형 탐지: 매직 바이트, 콘텐츠 분석, 정규식 기반 폴백을 사용하여 로그 형식과 타임스탬프 필드를 자동으로 식별합니다. 대부분의 경우 형식 플래그를 지정할 필요가 없습니다.
  • 다양한 입력 형식: EVTX, JSON Lines, JSON Arrays, CSV, XML 등 다양한 로그 형식을 지원합니다. 압축 또는 아카이브된 로그(gzip, bzip2, ZIP, 7-Zip)를 지원하며, 암호화된 ZIP/7z에는 --archive-password를 사용하세요.
  • 네이티브 Sigma 지원: Zircolite는 pySigma로 변환하여 네이티브 Sigma 규칙(YAML)을 직접 사용할 수 있습니다.
  • SIGMA 백엔드: SIGMA 백엔드(SQLite)를 기반으로 하며 내부적인 SIGMA-to-something 변환을 사용하지 않습니다.
  • 고급 로그 조작: 입력 로그를 필드 분할 및 변환 적용으로 조작할 수 있어 보다 유연하고 강력한 로그 분석이 가능합니다.
  • 필드 변환: 처리 중 필드에 사용자 정의 Python 변환을 적용합니다(예: Base64 디코딩, hex-to-ASCII 변환).
  • 유연한 내보내기: Zircolite는 Jinja 템플릿을 사용하여 결과를 JSON, CSV, JSONL, Splunk, Elastic, OpenSearch, Timesketch, SARIF, ATT&CK Navigator 등 여러 형식으로 내보낼 수 있습니다.
  • 풍부한 터미널 출력: 탐지 결과가 심각도별로 정렬된 테이블에 MITRE ATT&CK 기법 ID, ATT&CK 전술 히트맵, 규칙 커버리지 지표, 클릭 가능한 출력 파일 링크와 함께 표시됩니다.

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

문서는 여기(전용 사이트) 또는 여기(저장소 디렉터리)에서 확인할 수 있습니다.

요구 사항 / 설치

[!NOTE] 이 섹션의 모든 내용은 Zircolite를 소스에서 실행할 때만 적용됩니다. 독립 실행형 바이너리와 Docker 이미지는 자체 Python, 모든 종속성, 컴파일된 커널을 포함하므로 Python, 패키지 관리자, C 컴파일러가 필요하지 않습니다.

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

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

종속성

  • 필수: orjson, xxhash, rich, rich-argparse, RestrictedPython, requests, urllib3, pySigma, evtx (pyevtx-rs), jinja2, lxml, chardet, psutil, pyyaml, py7zr, ijson, pyahocorasick, pyroaring
  • py7zr는 .7z 입력을 열 때만 가져옵니다. ZIP, gzip, bzip2는 표준 라이브러리를 사용합니다.

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

소스에서 설치하면 Zircolite의 평탄화 커널을 Cython으로 컴파일합니다. 하지만 C 컴파일러가 이미 있는 경우에만 그렇습니다. 컴파일러가 없으면 설치 자체는 성공하지만, 모든 실행에서 이벤트를 Python으로 평탄화하므로 더 느립니다. 바이너리와 Docker 이미지는 커널이 이미 컴파일된 상태로 빌드되므로 이 문제와 무관합니다.

따라서 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 파일

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

# Don't forget to prefix with "pdm run" or "uv run" or "poetry run" when needed
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을 사용하세요.
  • 자동 형식 감지를 비활성화하려면 --no-auto-detect를 사용하세요.

[!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를 참조하세요.

자동 처리 최적화

카테고리