
واجهة سطر الأوامر Sigma المبنية على pySigma
هذه هي واجهة سطر الأوامر Sigma التي تستخدم مكتبة pySigma لإدارة قواعد Sigma وسردها وتحويلها إلى لغات استعلام.
أسهل طريقة لتثبيت Sigma CLI هي عبر pipx أو pip. لهذا الغرض، شغّل أحد الأوامر التالية:
python -m pipx install sigma-cli
python -m pip install sigma-cli
على macOS استخدم
python3 -m pip install sigma-cli
brew install sigma-cli
طريقة أخرى هي تشغيله من المصدر في بيئة افتراضية تُدار بواسطة Poetry:
git clone https://github.com/SigmaHQ/sigma-cli.git
cd sigma-cli
poetry install
poetry shell
يتوفر CLI كأمر sigma. الاستدعاء النموذجي هو:
sigma convert -t <backend> -p <processing pipeline 1> -p <processing pipeline 2> [...] <directory or file>
مثال: لتحويل قواعد Sigma الخاصة بإنشاء العمليات من دليل إلى استعلامات Splunk لسجلات Sysmon، شغّل:
sigma convert -t splunk -p sysmon sigma/rules/windows/process_creation
يجب تثبيت الواجهات الخلفية (backends) المطلوبة باستخدام الأمر التالي قبل إجراء التحويلات.
لسرد جميع الإضافات المتاحة، شغّل الأمر التالي:
sigma plugin list
ثبّت الإضافة التي تختارها باستخدام:
sigma plugin install <backend>
مثال: لتثبيت الواجهة الخلفية splunk، شغّل:
sigma plugin install splunk
يمكن سرد الواجهات الخلفية للتحويل وخطوط المعالجة المتاحة باستخدام sigma list.
استخدم -O أو --backend-option لتمرير الخيارات إلى الواجهة الخلفية كأزواج مفتاح=قيمة (-O testparam=123) .
يمكن استخدام معامل خيار الواجهة الخلفية هذا عدة مرات (-O first=123 -O second=456).
يمكن أن تدعم الواجهات الخلفية تنسيقات إخراج مختلفة، مثل الاستعلامات العادية وملف يمكن استيراده إلى النظام الهدف.
يمكن سرد هذه التنسيقات باستخدام sigma list formats <backend> وتحديدها للتحويل باستخدام الخيار -f.
بالإضافة إلى ذلك، يمكن تحديد ملف إخراج باستخدام -o.
مثال على تنسيقات المخرجات والملفات:
sigma convert -t splunk -f savedsearches -p sysmon -o savedsearches.conf sigma/rules/windows/process_creation
يُخرج ملف Splunk savedsearches.conf يحتوي على عمليات البحث المحولة.
للسيناريوهات التي تحتاج فيها إلى تحويل قواعد متعددة إلى ملفات منفصلة (مثل التحكم في الإصدارات أو النشر الانتقائي)،
استخدم المعامل --output-dir مع --output-filename-template:
sigma convert -t esql -p ecs_windows --output-dir translated_rules/ rules/
سيؤدي هذا إلى إنشاء ملف منفصل لكل قاعدة محولة في دليل translated_rules/.
متغيرات القالب:
يقبل المعامل --output-filename-template المتغيرات التالية:
{path}: مسار دليل المصدر النسبي (مثل windows بالنسبة إلى rules/windows/rule.yml){stem}: اسم الملف بدون الامتداد (مثل rule بالنسبة إلى rule.yml){index}: فهرس الاستعلام للقواعد التي تُنشئ استعلامات متعددة (فارغ إذا كان هناك استعلام واحد فقط)أمثلة:
بنية إخراج مسطحة (جميع الملفات في دليل واحد):
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{stem}.esql" rules/
الحفاظ على بنية الدليل:
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{path}/{stem}.esql" rules/
معالجة القواعد ذات الاستعلامات المتعددة:
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{stem}-{index}.esql" rules/
لنفترض بنية الإدخال التالية:
rules/
├── windows/
│ └── rule_1.yml
├── linux/
│ └── rule_2.yml
مع --output-filename-template "{path}/{stem}.esql"، سيكون الإخراج:
translated/
├── windows/
│ └── rule_1.esql
├── linux/
│ └── rule_2.esql
يمكن دمج الواجهات الخلفية وخطوط المعالجة عن طريق إضافة الحزم المقابلة كاعتماديات باستخدام:
poetry add <package name>
يجب إضافة الواجهة الخلفية إلى قاموس backends في sigma/cli/backends.py عن طريق إنشاء صف مسماة Backend تحتوي على
المعاملات التالية:
sigma list targets).-f) بأوصاف التنسيقات التي تظهر في
قائمة التنسيقات (sigma list formats <backend>). يجب أن تكون التنسيقات مدعومة من الواجهة الخلفية!مفتاح القاموس هو الاسم المستخدم في المعامل -t.
يتم تعريف خط المعالجة في قاموس المتغير pipelines في sigma/cli/pipelines.py. يحتوي المتغير على
ProcessingPipelineResolver يتم إنشاؤه باستخدام قاموس يربط المعرفات التي يمكن
استخدامها في المعامل -p بالدوال التي تُرجع كائنات ProcessingPipeline. النص الوصفي الذي يظهر في قائمة خطوط المعالجة (sigma list pipelines) مُقدَّم من
خاصية name لكائن ProcessingPipeline.
يُشرف على المشروع حاليًا: