
L'interface en ligne de commande Sigma basée sur pySigma
Il s'agit de l'interface en ligne de commande Sigma utilisant la bibliothèque pySigma pour gérer, lister et convertir des règles Sigma en langages de requête.
Le moyen le plus simple d'installer la CLI Sigma est via pipx ou pip. Pour cela, exécutez l'une des commandes suivantes :
python -m pipx install sigma-cli
python -m pip install sigma-cli
sur macOS, utilisez
python3 -m pip install sigma-cli
brew install sigma-cli
Une autre façon est de l'exécuter depuis les sources dans un environnement virtuel géré par Poetry :
git clone https://github.com/SigmaHQ/sigma-cli.git
cd sigma-cli
poetry install
poetry shell
La CLI est disponible sous la commande sigma. Une invocation typique est :
sigma convert -t <backend> -p <processing pipeline 1> -p <processing pipeline 2> [...] <directory or file>
Par exemple, pour convertir les règles Sigma de création de processus d'un répertoire en requêtes Splunk pour les journaux Sysmon, exécutez :
sigma convert -t splunk -p sysmon sigma/rules/windows/process_creation
Les backends requis doivent être installés à l'aide de la commande suivante avant d'effectuer des conversions.
Pour lister tous les plugins disponibles, exécutez la commande suivante :
sigma plugin list
Installez un plugin de votre choix avec :
sigma plugin install <backend>
Par exemple, pour installer le backend splunk, exécutez :
sigma plugin install splunk
Les backends de conversion et les pipelines de traitement disponibles peuvent être listés avec sigma list.
Utilisez -O ou --backend-option pour transmettre des options au backend sous forme de paires clé=valeur (-O testparam=123).
Ce paramètre d'option de backend peut être utilisé plusieurs fois (-O first=123 -O second=456).
Les backends peuvent prendre en charge différents formats de sortie, par exemple des requêtes simples et un fichier pouvant être importé dans le système
cible. Ces formats peuvent être listés avec sigma list formats <backend> et spécifiés pour la conversion avec l'option -f.
De plus, un fichier de sortie peut être spécifié avec -o.
Exemple de formats et de fichiers de sortie :
sigma convert -t splunk -f savedsearches -p sysmon -o savedsearches.conf sigma/rules/windows/process_creation
Génère un fichier savedsearches.conf Splunk contenant les recherches converties.
Pour les scénarios où vous devez convertir plusieurs règles dans des fichiers séparés (par exemple, pour le contrôle de version ou le déploiement sélectif),
utilisez le paramètre --output-dir avec --output-filename-template :
sigma convert -t esql -p ecs_windows --output-dir translated_rules/ rules/
Cela créera un fichier séparé pour chaque règle convertie dans le répertoire translated_rules/.
Variables de modèle :
Le paramètre --output-filename-template accepte les variables suivantes :
{path} : Chemin relatif du répertoire source (par exemple, windows pour rules/windows/rule.yml){stem} : Nom du fichier sans extension (par exemple, rule pour rule.yml){index} : Index de requête pour les règles qui génèrent plusieurs requêtes (vide s'il n'y a qu'une seule requête)Exemples :
Structure de sortie plate (tous les fichiers dans un seul répertoire) :
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{stem}.esql" rules/
Préserver la structure des répertoires :
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{path}/{stem}.esql" rules/
Gérer les règles avec plusieurs requêtes :
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{stem}-{index}.esql" rules/
Étant donné la structure d'entrée suivante :
rules/
├── windows/
│ └── rule_1.yml
├── linux/
│ └── rule_2.yml
Avec --output-filename-template "{path}/{stem}.esql", la sortie sera :
translated/
├── windows/
│ └── rule_1.esql
├── linux/
│ └── rule_2.esql
Les backends et les pipelines peuvent être intégrés en ajoutant les packages correspondants comme dépendance avec :
poetry add <package name>
Un backend doit être ajouté au dictionnaire backends dans sigma/cli/backends.py en créant un tuple nommé Backend avec
les paramètres suivants :
sigma list targets).-f) aux descriptions des formats affichés dans la
liste des formats (sigma list formats <backend>). Les formats doivent être pris en charge par le backend !La clé du dictionnaire est le nom utilisé dans le paramètre -t.
Un pipeline de traitement est défini dans le dictionnaire de variables pipelines dans sigma/cli/pipelines.py. La variable contient un
ProcessingPipelineResolver qui est instancié avec un dictionnaire associant les identifiants pouvant
être utilisés dans le paramètre -p aux fonctions qui retournent des objets ProcessingPipeline. Le texte descriptif affiché dans la liste des pipelines (sigma list pipelines) est fourni à partir
de l'attribut name de l'objet ProcessingPipeline.
Le projet est actuellement maintenu par :