
L'interfaccia a riga di comando di Sigma basata su pySigma
Questa è l'interfaccia a riga di comando di Sigma che utilizza la libreria pySigma per gestire, elencare e convertire le regole Sigma in linguaggi di query.
Il modo più semplice per installare la CLI di Sigma è tramite pipx o pip. A tale scopo, eseguire uno dei seguenti comandi:
python -m pipx install sigma-cli
python -m pip install sigma-cli
su macOS utilizzare
python3 -m pip install sigma-cli
brew install sigma-cli
Un altro modo è eseguirlo dal sorgente in un ambiente virtuale gestito da Poetry:
git clone https://github.com/SigmaHQ/sigma-cli.git
cd sigma-cli
poetry install
poetry shell
La CLI è disponibile come comando sigma. Un'invocazione tipica è:
sigma convert -t <backend> -p <processing pipeline 1> -p <processing pipeline 2> [...] <directory or file>
Ad esempio, per convertire le regole Sigma di creazione processi da una directory in query Splunk per i log Sysmon, eseguire:
sigma convert -t splunk -p sysmon sigma/rules/windows/process_creation
I backend richiesti devono essere installati utilizzando il seguente comando prima di effettuare le conversioni.
Per elencare tutti i plugin disponibili, eseguire il seguente comando:
sigma plugin list
Installare un plugin a scelta con:
sigma plugin install <backend>
Ad esempio, per installare il backend splunk, eseguire:
sigma plugin install splunk
I backend di conversione e le pipeline di elaborazione disponibili possono essere elencati con sigma list.
Utilizzare -O o --backend-option per passare opzioni al backend come coppie chiave=valore (-O testparam=123) .
Questo parametro per le opzioni del backend può essere utilizzato più volte (-O first=123 -O second=456).
I backend possono supportare diversi formati di output, ad esempio query semplici e un file che può essere importato nel sistema di destinazione. Questi formati possono essere elencati con sigma list formats <backend> e specificati per la conversione con l'opzione -f.
Inoltre, è possibile specificare un file di output con -o.
Esempio di formati e file di output:
sigma convert -t splunk -f savedsearches -p sysmon -o savedsearches.conf sigma/rules/windows/process_creation
Genera un file Splunk savedsearches.conf contenente le ricerche convertite.
Per scenari in cui è necessario convertire più regole in file separati (ad esempio, per il controllo di versione o la distribuzione selettiva), utilizzare il parametro --output-dir insieme a --output-filename-template:
sigma convert -t esql -p ecs_windows --output-dir translated_rules/ rules/
In questo modo verrà creato un file separato per ogni regola convertita nella directory translated_rules/.
Variabili del Template:
Il parametro --output-filename-template accetta le seguenti variabili:
{path}: Percorso relativo della directory di origine (ad esempio, windows per rules/windows/rule.yml){stem}: Nome del file senza estensione (ad esempio, rule per rule.yml){index}: Indice della query per le regole che generano più query (vuoto se c'è una sola query)Esempi:
Struttura di output piatta (tutti i file in una directory):
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{stem}.esql" rules/
Preserva la struttura delle directory:
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{path}/{stem}.esql" rules/
Gestione di regole con più query:
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{stem}-{index}.esql" rules/
Data la seguente struttura di input:
rules/
├── windows/
│ └── rule_1.yml
├── linux/
│ └── rule_2.yml
Con --output-filename-template "{path}/{stem}.esql", l'output sarà:
translated/
├── windows/
│ └── rule_1.esql
├── linux/
│ └── rule_2.esql
I backend e le pipeline possono essere integrati aggiungendo i pacchetti corrispondenti come dipendenza con:
poetry add <package name>
Un backend deve essere aggiunto al dict backends in sigma/cli/backends.py creando una named tuple Backend con i seguenti parametri:
sigma list targets).-f) alle descrizioni dei formati mostrati nell'elenco dei formati (sigma list formats <backend>). I formati devono essere supportati dal backend!La chiave del dict è il nome utilizzato nel parametro -t.
Una pipeline di elaborazione è definita nel dict della variabile pipelines in sigma/cli/pipelines.py. La variabile contiene un ProcessingPipelineResolver che viene istanziato con un dict che mappa gli identificatori utilizzabili nel parametro -p a funzioni che restituiscono oggetti ProcessingPipeline. Il testo descrittivo mostrato nell'elenco delle pipeline (sigma list pipelines) è fornito dall'attributo name dell'oggetto ProcessingPipeline.
Il progetto è attualmente mantenuto da: