
Die Sigma-Kommandozeilenschnittstelle auf Basis von pySigma
Dies ist die Sigma-Kommandozeilenschnittstelle, die die pySigma-Bibliothek verwendet, um Sigma-Regeln zu verwalten, aufzulisten und in Abfragesprachen zu konvertieren.
Der einfachste Weg, die Sigma-CLI zu installieren, ist über pipx oder pip. Führen Sie dazu einen der folgenden Befehle aus:
python -m pipx install sigma-cli
python -m pip install sigma-cli
unter macOS verwenden Sie:
python3 -m pip install sigma-cli
brew install sigma-cli
Eine weitere Möglichkeit besteht darin, dies aus dem Quellcode in einer von Poetry verwalteten virtuellen Umgebung auszuführen:
git clone https://github.com/SigmaHQ/sigma-cli.git
cd sigma-cli
poetry install
poetry shell
Die CLI ist als Befehl sigma verfügbar. Ein typischer Aufruf ist:
sigma convert -t <backend> -p <processing pipeline 1> -p <processing pipeline 2> [...] <directory or file>
Z. B. führen Sie Folgendes aus, um Sigma-Regeln zur Prozesserstellung aus einem Verzeichnis in Splunk-Abfragen für Sysmon-Protokolle zu konvertieren:
sigma convert -t splunk -p sysmon sigma/rules/windows/process_creation
Erforderliche Backends müssen vor der Durchführung von Konvertierungen mit dem folgenden Befehl installiert werden.
Um alle verfügbaren Plugins aufzulisten, führen Sie den folgenden Befehl aus:
sigma plugin list
Installieren Sie ein Plugin Ihrer Wahl mit:
sigma plugin install <backend>
Z. B. führen Sie Folgendes aus, um das Splunk-Backend zu installieren:
sigma plugin install splunk
Verfügbare Konvertierungs-Backends und Verarbeitungs-Pipelines können mit sigma list aufgelistet werden.
Verwenden Sie -O oder --backend-option, um Optionen als Schlüssel-Wert-Paare (-O testparam=123) an das Backend zu übergeben.
Dieser Backend-Optionsparameter kann mehrfach verwendet werden (-O first=123 -O second=456).
Backends können verschiedene Ausgabeformate unterstützen, z. B. einfache Abfragen und eine Datei, die in das Zielsystem importiert werden kann.
Diese Formate können mit sigma list formats <backend> aufgelistet und mit der Option -f für die Konvertierung angegeben
werden.
Zusätzlich kann eine Ausgabedatei mit -o angegeben werden.
Beispiel für Ausgabeformate und -dateien:
sigma convert -t splunk -f savedsearches -p sysmon -o savedsearches.conf sigma/rules/windows/process_creation
Gibt eine Splunk savedsearches.conf aus, die die konvertierten Suchen enthält.
Für Szenarien, in denen Sie mehrere Regeln in separate Dateien konvertieren müssen (z. B. für Versionskontrolle oder selektive Bereitstellung), verwenden Sie den Parameter --output-dir zusammen mit --output-filename-template:
sigma convert -t esql -p ecs_windows --output-dir translated_rules/ rules/
Dadurch wird für jede konvertierte Regel eine separate Datei im Verzeichnis translated_rules/ erstellt.
Vorlagenvariablen:
Der Parameter --output-filename-template akzeptiert die folgenden Variablen:
{path}: Relativer Quellverzeichnispfad (z. B. windows für rules/windows/rule.yml){stem}: Dateiname ohne Erweiterung (z. B. rule für rule.yml){index}: Abfrageindex für Regeln, die mehrere Abfragen erzeugen (leer, wenn nur eine Abfrage vorhanden ist)Beispiele:
Flache Ausgabestruktur (alle Dateien in einem Verzeichnis):
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{stem}.esql" rules/
Verzeichnisstruktur beibehalten:
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{path}/{stem}.esql" rules/
Regeln mit mehreren Abfragen behandeln:
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{stem}-{index}.esql" rules/
Bei folgender Eingabestruktur:
rules/
├── windows/
│ └── rule_1.yml
├── linux/
│ └── rule_2.yml
Mit --output-filename-template "{path}/{stem}.esql" sieht die Ausgabe wie folgt aus:
translated/
├── windows/
│ └── rule_1.esql
├── linux/
│ └── rule_2.esql
Backends und Pipelines können integriert werden, indem die entsprechenden Pakete mit folgendem Befehl als Abhängigkeit hinzugefügt werden:
poetry add <package name>
Ein Backend muss zum backends-Dictionary in sigma/cli/backends.py hinzugefügt werden, indem ein benanntes Tupel Backend mit den folgenden Parametern erstellt wird:
sigma list targets) angezeigt wird.-f) Beschreibungen der Formate zuordnet, die in der Formatliste (sigma list formats <backend>) angezeigt werden. Die Formate müssen vom Backend unterstützt werden!Der Dictionary-Schlüssel ist der Name, der im Parameter -t verwendet wird.
Eine Verarbeitungs-Pipeline wird im pipelines-Dictionary in sigma/cli/pipelines.py definiert. Die Variable enthält einen ProcessingPipelineResolver, der mit einem Dictionary instanziiert wird, das im Parameter -p verwendbare Bezeichner Funktionen zuordnet, die ProcessingPipeline-Objekte zurückgeben. Der beschreibende Text, der in der Pipeline-Liste (sigma list pipelines) angezeigt wird, stammt aus dem name-Attribut des ProcessingPipeline-Objekts.
Das Projekt wird derzeit betreut von: