
Zircolite v4.0.0
أداة كشف مستقلة قائمة على SIGMA لسجلات EVTX وAuditd وSysmon على لينكس.

أداة كشف مستقلة قائمة على SIGMA لسجلات EVTX وAuditd وSysmon for Linux وXML وCSV أو JSONL/NDJSON

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: يحوّل قواعد YAML الأصلية باستخدام الواجهة الخلفية SQLite الخاصة بـ pySigma أو يحمّل مجموعات قواعد JSON المحوّلة مسبقًا.
- الارتباطات: عمليات العد والإحصاءات والتسلسلات الزمنية وشروط الغياب والقواعد المتسلسلة، مع أحداث داعمة في كل تنبيه. يدعم الوضع الموحّد الارتباطات عبر الملفات.
- معالجة الحقول: يقسّم حقول المفتاح-القيمة ويطبّق تحويلات Python، بما في ذلك فك ترميز Base64 وhex.
- التصدير: JSON وCSV وقوالب Jinja templates لـ JSONL وSplunk وElastic وOpenSearch وTimesketch وSARIF وATT&CK Navigator.
- مخرجات الطرفية: اكتشافات مرتّبة حسب الخطورة، وتقنيات وتكتيكات 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 أولًا
تستخدم عمليات التثبيت من المصدر مُصرّف C لبناء نواة التسوية Cython. إذا فشل التصريف،
تحذّر الواجهة الخلفية للبناء ويستمر التثبيت باستخدام نواة 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 Mac والتوزيعات القائمة على musl مثل Alpine؛ استخدم 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
- يمكن أن تكون وسيطة
--eventsملفًا أو مجلدًا. إذا كانت مجلدًا، فسيتم اختيار جميع ملفات السجلات في المجلد الحالي والمجلدات الفرعية (استخدم--no-recursionللتعطيل). - استخدم
--file-patternلتحديد نمط glob مخصص لاختيار الملفات. - مرّر علم صيغة (
--json-input،--xml-input، ...) لتخطي الكشف التلقائي عن الصيغة.
[!TIP] إذا أردت تجربة الأداة، يمكنك الاختبار باستخدام EVTX-ATTACK-SAMPLES (ملفات EVTX).