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


Zircolite는 Python 3로 작성된 독립형 도구로, SIGMA 규칙을 다음 로그에 사용할 수 있습니다:
--archive-password를 사용하십시오.Zircolite는 Python으로 직접 사용할 수 있습니다.
문서는 여기 (전용 사이트) 또는 여기 (저장소 디렉터리)에서 확인할 수 있습니다.
이 프로젝트는 Python 3.10 이상에서 테스트되었습니다. 다음 명령으로 의존성을 설치하십시오: pip3 install -r requirements.txt.
orjson, xxhash, rich, rich-argparse, RestrictedPython, requests, urllib3, pySigma, evtx (pyevtx-rs), jinja2, lxml, chardet, psutil, pyyaml, py7zrpy7zr는 입력이 열릴 때만 가져오며, ZIP, gzip 및 bzip2는 표준 라이브러리를 사용합니다.⚠️ 일부 시스템(Mac, ARM 등)에서는 evtx Python 라이브러리를 설치하려면 Rust와 Cargo가 필요할 수 있습니다.
다른 사람들이 만든 (이전) 튜토리얼(EN, ES, FR)은 여기에서 확인하세요.
도움말은 다음 명령으로 확인할 수 있습니다:
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
네이티브 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
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으로 비활성화 가능).--file-pattern을 사용하십시오.--no-auto-detect를 사용하십시오.[!TIP] 도구를 사용해 보려면 EVTX-ATTACK-SAMPLES로 테스트할 수 있습니다 (EVTX 파일).
# 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를 로그와 규칙/규칙셋이 저장된 디렉터리(절대 경로만)로 바꾸십시오.여러 파일이 주어지면 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 구성 파일을 사용하십시오:
# 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
# CLI arguments override the file
python3 zircolite.py --yaml-config my_config.yaml --evtx ./other_logs/
생성된 파일은 지원되는 모든 키를 문서화합니다. config/zircolite_example.yaml은
실행 예시입니다. 병합 규칙과 YAML에 해당하는 옵션이 없는 항목은
YAML 구성을 참조하세요.
python3 zircolite.py -U
또는 Task (go-task)를 사용하는 경우 프로젝트 루트에서 task update-rules를 실행하여 Zircolite-Rules-v2에서 규칙을 업데이트하십시오. 다른 작업(Docker 빌드, 정리 등)은 docs를 참조하세요.
[!IMPORTANT]
이 규칙셋은 기본 상태의 Zircolite를 사용할 수 있도록 제공되지만, 규칙이 시끄럽거나 느릴 수 있으므로 자체 규칙셋을 생성해야 합니다. 이 자동 업데이트 규칙셋은 전용 저장소에서 제공됩니다: Zircolite-Rules-v2.
두 가지 구성 기능이 이벤트를 수집할 때 형태를 변환하며, 둘 다 config/config.yaml에 있습니다:
Hashes 필드(SHA1=abc123,MD5=def456,SHA256=789xyz)는 별도의 SHA1, MD5, SHA256 필드가 되어 규칙이 해시를 직접 매칭할 수 있습니다.split:
Hashes:
separator: ","
equal: "="
전체 구성, Zircolite가 기본 제공하는 변환, 자체 변환을 테스트하는 방법은 필드 분할 및 필드 변환을 참조하세요.
전체 문서는 여기에서 확인할 수 있습니다.
미니 GUI는 완전히 오프라인으로 사용할 수 있습니다. 결과를 표시하고 검색할 수 있습니다. --package 옵션으로 미니 GUI "패키지"를 자동 생성할 수 있습니다. 출력 디렉터리를 지정하려면 --package-dir을 사용하십시오. 미니 GUI 사용 방법은 여기 문서를 참조하세요.



evtx_dump는 MIT 라이선스입니다..7z