
pySigma पर आधारित Sigma कमांड लाइन इंटरफ़ेस
यह Sigma कमांड लाइन इंटरफ़ेस है जो Sigma नियमों को प्रबंधित करने, सूचीबद्ध करने और क्वेरी भाषाओं में रूपांतरित करने के लिए pySigma लाइब्रेरी का उपयोग करता है।
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 नियमों को Sysmon लॉग के लिए Splunk क्वेरी में रूपांतरित करने हेतु चलाएँ:
sigma convert -t splunk -p sysmon sigma/rules/windows/process_creation
रूपांतरण करने से पहले आवश्यक बैकएंड को निम्न कमांड का उपयोग करके इंस्टॉल किया जाना चाहिए।
सभी उपलब्ध प्लगइन्स को सूचीबद्ध करने के लिए निम्न कमांड चलाएँ:
sigma plugin list
अपनी पसंद का प्लगइन इसके साथ इंस्टॉल करें:
sigma plugin install <backend>
उदाहरण के लिए, splunk बैकएंड इंस्टॉल करने हेतु चलाएँ:
sigma plugin install splunk
उपलब्ध रूपांतरण बैकएंड और प्रोसेसिंग पाइपलाइनों को sigma list के साथ सूचीबद्ध किया जा सकता है।
बैकएंड को key=value जोड़ों के रूप में विकल्प पास करने के लिए -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}: सापेक्ष स्रोत निर्देशिका पथ (जैसे, rules/windows/rule.yml के लिए windows){stem}: बिना एक्सटेंशन वाला फ़ाइल नाम (जैसे, rule.yml के लिए rule){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>
एक बैकएंड को sigma/cli/backends.py में backends dict में Backend named tuple के निर्माण द्वारा निम्नलिखित पैरामीटरों के साथ जोड़ा जाना चाहिए:
sigma list targets) में उपयोगकर्ता को दिखाया जाने वाला एक प्रदर्शन नाम।-f पैरामीटर में उपयोग किए जाने वाले) को प्रारूप सूची (sigma list formats <backend>) में दिखाए गए प्रारूपों के विवरणों से मैप करता है। प्रारूप बैकएंड द्वारा समर्थित होने चाहिए!dict की कुंजी वह नाम है जो -t पैरामीटर में उपयोग किया जाता है।
एक प्रोसेसिंग पाइपलाइन sigma/cli/pipelines.py में pipelines variable dict में परिभाषित की जाती है। वेरिएबल में एक ProcessingPipelineResolver होता है जिसे एक dict के साथ इंस्टैंशिएट किया जाता है जो -p पैरामीटर में उपयोग किए जा सकने वाले पहचानकर्ताओं को उन फ़ंक्शनों से मैप करता है जो ProcessingPipeline ऑब्जेक्ट लौटाते हैं। पाइपलाइन सूची (sigma list pipelines) में दिखाया गया वर्णनात्मक पाठ ProcessingPipeline ऑब्जेक्ट के name विशेषता से प्राप्त होता है।
परियोजना वर्तमान में निम्न द्वारा अनुरक्षित है: