
Zircolite v4.0.0
EVTX, Auditd और Sysmon Linux लॉग्स के लिए एक स्टैंडअलोन SIGMA-आधारित डिटेक्शन टूल

EVTX, Auditd, Sysmon for Linux, XML, CSV, या JSONL/NDJSON लॉग्स के लिए स्टैंडअलोन SIGMA-आधारित डिटेक्शन टूल

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 रूलसेट्स को लोड करता है।
- कोरिलेशन: काउंट्स, सांख्यिकी, टेम्पोरल सीक्वेंस, अनुपस्थिति की शर्तें और चेन्ड नियम, प्रत्येक अलर्ट में सहायक इवेंट्स के साथ। यूनिफाइड मोड क्रॉस-फ़ाइल कोरिलेशन का समर्थन करता है।
- फ़ील्ड प्रोसेसिंग: key-value फ़ील्ड्स को विभाजित करता है और Python ट्रांसफ़ॉर्म लागू करता है, जिसमें Base64 और hex डिकोडिंग शामिल है।
- एक्सपोर्ट: 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, Ubuntu | apt install build-essential python3-dev |
| RHEL, Fedora, Rocky | dnf install gcc python3-devel |
| Alpine | apk add build-base python3-dev |
| macOS | xcode-select --install |
| Windows | Build Tools for Visual Studio ("Desktop development with C++") |
Cython स्वचालित रूप से एक बिल्ड डिपेंडेंसी के रूप में इंस्टॉल होता है।
स्टैंडअलोन बाइनरीज़
प्रत्येक रिलीज़ प्रति प्लेटफ़ॉर्म एक स्व-निहित पैकेज प्रकाशित करती है। प्रत्येक अपना Python और हर डिपेंडेंसी साथ रखता है, इसलिए पहले कुछ भी इंस्टॉल करने की आवश्यकता नहीं होती।
| लक्ष्य | आर्काइव | चलता है |
|---|---|---|
linux-x64 | Zircolite-<version>-linux-x64.zip | glibc 2.28 या बाद का: RHEL 8, Debian 10, Ubuntu 20.04 और नए |
linux-arm64 | Zircolite-<version>-linux-arm64.zip | glibc 2.28 या बाद का |
macos-arm64 | Zircolite-<version>-macos-arm64.zip | macOS 15 या बाद का, Apple silicon |
windows-x64 | Zircolite-<version>-windows-x64.zip | Windows 10 या बाद का |
windows-arm64 | Zircolite-<version>-windows-arm64.zip | Windows 10 या बाद का, ARM64 |
Intel Macs और 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 तब rules/rules_windows_merged.json का उपयोग करता है, जो
Sysmon और सामान्य Windows चैनलों को कवर करता है।
नेटिव 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