
Zircolite v3.8.1
EVTX, Auditd 및 Linux용 Sysmon 로그를 위한 독립형 SIGMA 기반 탐지 도구
EVTX, Auditd, Sysmon for Linux, XML, CSV 및 JSON 로그를 위한 독립형 Sigma 기반 탐지
Zircolite는 로그에 대해 Sigma 규칙을 실행합니다. 이벤트를 SQLite로 평탄화하고, 각 규칙을 SQL 쿼리로 변환한 뒤, 일치하는 항목을 오프라인에서 단일 명령으로 보고합니다.

- 다양한 로그 형식을 자동으로 감지: Windows EVTX(바이너리, XML, JSON), Auditd, Sysmon for Linux, EVTXtract, CSV, XML 및 JSON, 일반 파일 또는 gzip, bzip2, ZIP 및 7-Zip 아카이브.
- Sigma 규칙 그대로 사용: pySigma로 변환된 네이티브 YAML 또는
rules/에 있는 미리 만들어진 규칙 세트. 상관관계 규칙 포함. - 빠른 속도: 컴파일된 평탄화 커널, 병렬 워커 및 규칙 사전 필터링; 벤치마크 참조.
- 필드 처리: 압축된 필드를 분할하고 샌드박스 처리된 Python 변환 실행(Base64 디코딩, IOC 추출, LOLBin 탐지 등).
- 내보내기: JSON, CSV 및 Splunk, Elastic, OpenSearch, Timesketch, SARIF, ATT&CK Navigator용 템플릿.
- 타임라인: 모든 탐지를 시간 순서대로 한 행씩, 이벤트에 대한 한 줄 요약과 함께 CSV 또는 JSON lines로 제공(
--timeline). - Zircolite Viewer: 모든 이벤트와 탐지를 브라우저에서 오프라인으로 열 수 있는 하나의 zip 파일로 제공.
📖 **문서**를 읽어보세요. docs/에도 있습니다.
설치
독립형 바이너리, 설치할 필요 없음: 릴리스에서 플랫폼에 맞는 zip을 다운로드하세요(Linux x64 및 ARM64, macOS Apple silicon, Windows x64 및 ARM64).
Docker:
docker pull wagga40/zircolite:latest
PDM을 사용하여 소스에서 설치, Python 3.11~3.14:
git clone https://github.com/wagga40/Zircolite.git
cd Zircolite
pdm use -f 3.14
pdm install
pdm use는 PDM이 Python 3.15 및 free-threaded 빌드를 사용하지 않도록 유지하는데, 이들은
아직 지원되지 않습니다. 3.11부터 3.13 중 어느 것이든 잘 작동합니다.
uv를 사용하는 경우:
git clone https://github.com/wagga40/Zircolite.git
cd Zircolite
uv sync --python 3.14+gil
소스 설치 시에는 네이티브 평탄화 커널을 컴파일하며 이를 위해 C 컴파일러가 필요합니다. 컴파일러가 없으면 더 느린 Python 커널로 대체됩니다. 컴파일러 패키지, 바이너리 세부 정보(macOS 격리, 체크섬) 및 Docker 권한은 설치를 참조하세요.
빠른 시작
# Windows logs, with the default ruleset (rules/rules_windows_merged.json)
python3 zircolite.py --events sysmon.evtx
# Linux logs: the format is detected
python3 zircolite.py --events auditd.log --ruleset rules/rules_linux.json
# Native Sigma rules, through pySigma pipelines
python3 zircolite.py --events logs/ --ruleset ./sigma/rules/windows/process_creation \
--pipeline sysmon --pipeline windows-logsources
# Every event and detection, for the Zircolite Viewer
python3 zircolite.py --events logs/ --package
# The detections as a timeline, for Timeline Explorer or a spreadsheet
python3 zircolite.py --events logs/ --timeline
바이너리의 경우 python3 zircolite.py 대신 ./Zircolite를 실행하세요. 소스에서 실행할 때는 환경이 활성화되어 있지 않다면 명령 앞에 pdm run(또는 uv run)을 붙이세요. Docker의 경우 로그를 마운트하고 절대 경로를 지정하세요:
docker run --rm --tty -v $PWD:/case/input:ro -v $PWD:/case/output \
wagga40/zircolite:latest --events /case/input -o /case/output/detected_events.json
Linux 호스트에서는 --user "$(id -u):$(id -g)"와 -l /case/output/zircolite.log를 추가하세요. 이미지는 권한이 없는 사용자로 실행되므로 사용자가 소유한 디렉터리에 쓸 수 없습니다.
탐지 결과는 detected_events.json에 기록됩니다. 시험해 볼 로그는
EVTX-ATTACK-SAMPLES를 참고하세요.
[!IMPORTANT] 기본 규칙 세트에는 노이즈가 많거나 느린 규칙이 포함될 수 있습니다. 사용 환경에 맞게 규칙을 선택하고,
python3 zircolite.py -U로 업데이트하세요.
작동 방식
Zircolite는 각 이벤트를 SQLite 테이블의 한 행으로 평탄화하고, 모든 Sigma 규칙을 해당 테이블에 대한 SQL 쿼리로 변환한 뒤, 일치하는 행을 보고합니다.
Zircolite Viewer
--package는 실행 중의 모든 이벤트를 하나의 zip으로 작성하며, 탐지 결과와 상관 관계 알림이
이벤트에 연결됩니다. 압축을 풀고 index.html을 열면 됩니다. 뷰어는 오프라인으로 실행되며
개요, 탐지 결과, 모든 열로 검색·필터·정렬할 수 있는 이벤트 테이블, 타임라인, ATT&CK 매트릭스,
엔터티, 가장 희귀한 값의 스태킹, 로그온 및 측면 이동, 프로세스 트리, SQL 콘솔을 제공합니다.
패키지는 원본 로그와 동일하게 취급하여 공유하세요. Zircolite Viewer를 참고하세요.

벤치마크
10코어 Apple M1 Max에서 각 도구를 기본 설정과 자체 규칙으로 실행한 중앙값 실제 시간:
| 도구 | Sysmon EVTX 4개, 478 MB | 11개 채널에 걸친 EVTX 8개, 13.3 GB |
|---|---|---|
| Zircolite | 7.7 s | 30.2 s |
| Hayabusa 4.2.0 | 23.3 s | 500.3 s |
| Chainsaw 2.17.1 | 48.3 s | 183.0 s |
Zircolite는 병렬 워커(--no-parallel로 끌 수 있음)를 통해 다른 도구보다 메모리를 더 많이 사용하며,
규칙 세트가 서로 다르므로 탐지 건수는 비교할 수 없습니다. 메모리, 설정 및 재현 방법은
Benchmark를 참고하세요.
튜토리얼, 참고 자료 및 관련 프로젝트
이전 버전을 대상으로 작성된 튜토리얼:
- 영어: Sigma and Zircolite, Russ McRee.
- 스페인어: Running Sigma rules on EVTX files, César Marín.
- 프랑스어: Windows log investigation 및 Hack the Box challenge write-up, IT-Connect.
참고 자료:
- Florian Roth는 2021년 10월 EU ATT&CK 워크숍에서 자신의 SIGMA Hall of Fame에서 Zircolite를 언급했습니다.
- Zircolite는 JSAC 2023에서 인용되고 발표되었습니다.
- Zircolite를 인용하거나 사용한 연구 논문:
Zircolite는 KAPE와 Velociraptor 내에서도 실행됩니다.