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


Zircolite هي أداة مستقلة مكتوبة بلغة Python 3 وتتيح لك استخدام قواعد SIGMA على:
--archive-password لملفات ZIP/7z المشفرة.يمكنك استخدام 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 وغيرها)، قد تتطلب مكتبة Python evtx تثبيت Rust وCargo.
اطّلع على الدروس التعليمية (القديمة) التي أعدّها آخرون (بالإنجليزية والإسبانية والفرنسية) هنا.
المساعدة متاحة باستخدام:
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) مباشرة:
# قاعدة 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 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:
# إنشاء ملف إعداد معلّق بالكامل
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، بحيث يمكن للقواعد مطابقة تجزئة مباشرة.split:
Hashes:
separator: ","
equal: "="
راجع تقسيم الحقول وتحويلات الحقول للحصول على الإعداد الكامل، والتحويلات التي توفرها Zircolite، وكيفية اختبار تحويلاتك الخاصة.
التوثيق الكامل متاح هنا.
يمكن استخدام الواجهة الرسومية المصغرة دون اتصال بالإنترنت تمامًا. تتيح لك عرض النتائج والبحث فيها. يمكنك إنشاء "حزمة" للواجهة الرسومية المصغرة تلقائيًا باستخدام الخيار --package. استخدم --package-dir لتحديد دليل الإخراج. لمعرفة كيفية استخدام الواجهة الرسومية المصغرة، راجع التوثيق هنا.



الإنجليزية: نشر Russ McRee درسًا تفصيليًا حول SIGMA وZircolite على مدونته.
الإسبانية: نشر César Marín درسًا تعليميًا بالإسبانية هنا.
الفرنسية: نشر IT-connect.fr درسًا تعليميًا موسعًا عن Zircolite بالفرنسية.
الفرنسية: نشر IT-connect.fr أيضًا حلاً لتحدي Hack the Box باستخدام Zircolite.
evtx_dump مرخص بموجب رخصة MIT..7z