العودة إلى التحديثات
New releaseAug 5, 2026

Zircolite v3.8.1

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

مشاركة

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

python version

Zircolite هي أداة مستقلة مكتوبة بلغة Python 3 وتتيح لك استخدام قواعد SIGMA على:

  • سجلات MS Windows EVTX (بصيغ EVTX وXML وJSONL)
  • سجلات Auditd
  • Sysmon for Linux
  • EVTXtract
  • سجلات CSV وXML
  • سجلات JSON Array

الميزات الرئيسية

  • كشف تلقائي لنوع السجل: يكتشف تلقائيًا صيغ السجلات وحقول الطوابع الزمنية باستخدام البايتات السحرية وتحليل المحتوى وتراجع قائم على التعبيرات النمطية — دون الحاجة إلى تحديد خيارات الصيغة في معظم الحالات.
  • صيغ إدخال متعددة: يدعم صيغ سجلات متعددة بما في ذلك EVTX وJSON Lines وJSON Arrays وCSV وXML والمزيد. كما يدعم السجلات المضغوطة أو المؤرشفة (gzip وbzip2 وZIP و7-Zip)؛ واستخدم --archive-password لملفات ZIP/7z المشفرة.
  • دعم أصلي لقواعد Sigma: يمكن لـ Zircolite استخدام قواعد Sigma الأصلية (YAML) مباشرة عن طريق تحويلها باستخدام pySigma.
  • الخلفية البرمجية لـ SIGMA: يعتمد على خلفية برمجية لـ SIGMA (SQLite) ولا يستخدم تحويلًا داخليًا من SIGMA إلى صيغ أخرى.
  • معالجة متقدمة للسجلات: يمكنه معالجة سجلات الإدخال عن طريق تقسيم الحقول وتطبيق تحويلات، مما يتيح تحليل سجلات أكثر مرونة وقوة.
  • تحويلات الحقول: طبق تحويلات Python مخصصة على الحقول أثناء المعالجة (مثل فك ترميز Base64 والتحويل من سداسي عشري إلى نص ASCII).
  • تصدير مرن: يمكن لـ Zircolite تصدير النتائج إلى صيغ متعددة باستخدام قوالب Jinja templates، بما في ذلك JSON وCSV وJSONL وSplunk وElastic وOpenSearch وTimesketch وSARIF وATT&CK Navigator والمزيد.
  • مخرجات طرفية غنية: تُعرض نتائج الكشف في جداول مرتبة حسب الخطورة مع معرّفات تقنيات MITRE ATT&CK وخريطة حرارية لأساليب ATT&CK ومقاييس تغطية القواعد وروابط ملفات مخرجات قابلة للنقر.

يمكنك استخدام 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, py7zr
  • يتم استيراد py7zr فقط عند فتح ملف إدخال .7z؛ أما ZIP وgzip وbzip2 فتستخدم المكتبة القياسية.

⚠️ على بعض الأنظمة (Mac وARM وغيرها)، قد تتطلب مكتبة Python evtx تثبيت Rust وCargo.

بدء سريع

اطّلع على الدروس التعليمية (القديمة) التي أعدّها آخرون (بالإنجليزية والإسبانية والفرنسية) هنا.

ملفات EVTX

المساعدة متاحة باستخدام:

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)

يمكنك استخدام قواعد Sigma الأصلية (YAML) مباشرة:

# قاعدة YAML واحدة
python3 zircolite.py --evtx sample.evtx --ruleset path/to/rule.yml

# دليل يحتوي على قواعد Sigma
python3 zircolite.py --evtx sample.evtx --ruleset ./sigma/rules/windows/process_creation

# مع خطوط أنابيب pySigma
python3 zircolite.py --evtx sample.evtx --ruleset rule.yml --pipeline sysmon --pipeline windows-logsources

صيغ سجلات أخرى

تقوم Zircolite بكشف تلقائي لصيغة السجل في معظم الحالات، لذا فإن خيارات الصيغة الصريحة اختيارية:

# الكشف التلقائي (موصى به) - تحدد Zircolite الصيغة تلقائيًا
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

# خيارات صيغة صريحة (تتجاوز الكشف التلقائي)
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 مخصص لاختيار الملفات.
  • استخدم --no-auto-detect لتعطيل الكشف التلقائي عن الصيغة.

[!TIP] إذا كنت تريد تجربة الأداة، يمكنك الاختبار باستخدام EVTX-ATTACK-SAMPLES (ملفات EVTX).

التشغيل باستخدام Docker

# سحب صورة Docker
docker pull wagga40/zircolite:latest
# إذا كانت سجلاتك وقواعدك في دليل محدد
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 مقابل الذاكرة المتاحة ووحدة المعالجة المركزية، وتختار وضع قاعدة البيانات (قاعدة بيانات مشتركة واحدة، أو قاعدة واحدة لكل ملف) وتقرر ما إذا كانت معالجتها بالتوازي تستحق العناء — ثم تكيّف عدد العمال مع ضغط الذاكرة أثناء التشغيل.

python3 zircolite.py --evtx ./logs/ --ruleset rules/rules_windows_merged.json

يمكنك تجاوز أي من ذلك باستخدام --no-auto-mode أو --unified-db (قاعدة بيانات واحدة لجميع الملفات، وهو ما تحتاجه قواعد الارتباط عبر الملفات) أو --no-parallel أو --parallel-workers N. راجع التحسين التلقائي للمعالجة لمعرفة كيفية اتخاذ القرار.

استخدام ملفات إعداد YAML

لأعباء العمل المعقدة أو المتكررة، استخدم ملف إعداد YAML:

# إنشاء ملف إعداد معلّق بالكامل
python3 zircolite.py --generate-config my_config.yaml

# التشغيل به
python3 zircolite.py --yaml-config my_config.yaml

# وسائط سطر الأوامر تتجاوز الملف
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. راجع docs لمهام أخرى (بناء Docker، تنظيف، إلخ).

[!IMPORTANT]
يرجى ملاحظة أن مجموعات القواعد هذه تُقدَّم لاستخدام Zircolite مباشرة، لكن يجب عليك إنشاء مجموعات القواعد الخاصة بك لأنها قد تكون مزعجة أو بطيئة. مجموعات القواعد المحدّثة تلقائيًا متاحة في المستودع المخصص: Zircolite-Rules-v2.

تقسيم الحقول والتحويلات

ميزتا إعداد تشكلان الأحداث أثناء استيعابها، وكلاهما في config/config.yaml:

  • تقسيم الحقول يحوّل حقلًا مكتظًا بقيم مفتاح=قيمة إلى حقول قابلة للاستعلام. حقل Hashes في Sysmon (SHA1=abc123,MD5=def456,SHA256=789xyz) يصبح حقولًا منفصلة SHA1 وMD5 وSHA256، بحيث يمكن للقواعد مطابقة تجزئة مباشرة.
  • تحويلات الحقول تشغّل Python معزولًا (sandboxed) على قيمة الحقل — لفك ترميز سطور أوامر base64، واستخراج مؤشرات الاختراق (IOCs)، وتمييز LOLBins — ويمكنها كتابة النتيجة إلى حقل جديد بدلاً من استبدال الحقل الأصلي. توفر Zircolite 55 تحويلًا عبر 11 فئة، معطّلة افتراضيًا باستثناء تحويلي auditd.
split:
  Hashes:
    separator: ","
    equal: "="

راجع تقسيم الحقول وتحويلات الحقول للحصول على الإعداد الكامل، والتحويلات التي توفرها Zircolite، وكيفية اختبار تحويلاتك الخاصة.

التوثيق

التوثيق الكامل متاح هنا.

الواجهة الرسومية المصغرة (Mini-GUI)

يمكن استخدام الواجهة الرسومية المصغرة دون اتصال بالإنترنت تمامًا. تتيح لك عرض النتائج والبحث فيها. يمكنك إنشاء "حزمة" للواجهة الرسومية المصغرة تلقائيًا باستخدام الخيار --package. استخدم --package-dir لتحديد دليل الإخراج. لمعرفة كيفية استخدام الواجهة الرسومية المصغرة، راجع التوثيق هنا.

الأحداث المكتشفة حسب تقنيات MITRE ATT&CK® ومستويات الخطورة

الخط الزمني للأحداث المكتشفة

الأحداث المكتشفة حسب تقنيات MITRE ATT&CK® المعروضة على المصفوفة

دروس تعليمية ومراجع ومشاريع ذات صلة

دروس تعليمية

مراجع


الترخيص


الفئات