
La interfaz de línea de comandos de Sigma basada en pySigma
Esta es la interfaz de línea de comandos de Sigma que utiliza la librería pySigma para gestionar, listar y convertir reglas Sigma en lenguajes de consulta.
La forma más sencilla de instalar la CLI de Sigma es mediante pipx o pip. Para ello, ejecute uno de los siguientes comandos:
python -m pipx install sigma-cli
python -m pip install sigma-cli
en macOS utilice
python3 -m pip install sigma-cli
brew install sigma-cli
Otra forma es ejecutarlo desde el código fuente en un entorno virtual gestionado por Poetry:
git clone https://github.com/SigmaHQ/sigma-cli.git
cd sigma-cli
poetry install
poetry shell
La CLI está disponible como comando sigma. Una invocación típica es:
sigma convert -t <backend> -p <processing pipeline 1> -p <processing pipeline 2> [...] <directory or file>
P. ej., para convertir reglas Sigma de creación de procesos de un directorio en consultas Splunk para registros de Sysmon, ejecute:
sigma convert -t splunk -p sysmon sigma/rules/windows/process_creation
Los backends necesarios deben instalarse con el siguiente comando antes de realizar conversiones.
Para listar todos los plugins disponibles, ejecute el siguiente comando:
sigma plugin list
Instale un plugin de su elección con:
sigma plugin install <backend>
P. ej., para instalar el backend splunk, ejecute:
sigma plugin install splunk
Los backends de conversión y los pipelines de procesamiento disponibles pueden listarse con sigma list.
Utilice -O o --backend-option para pasar opciones al backend como pares clave=valor (-O testparam=123).
Este parámetro de opción de backend puede utilizarse varias veces (-O first=123 -O second=456).
Los backends pueden admitir diferentes formatos de salida, p. ej., consultas simples y un archivo que pueda importarse en el sistema de destino. Estos formatos pueden listarse con sigma list formats <backend> y especificarse para la conversión con la opción -f.
Además, se puede especificar un archivo de salida con -o.
Ejemplo de formatos y archivos de salida:
sigma convert -t splunk -f savedsearches -p sysmon -o savedsearches.conf sigma/rules/windows/process_creation
Genera un archivo savedsearches.conf de Splunk que contiene las búsquedas convertidas.
Para escenarios en los que necesite convertir varias reglas en archivos separados (p. ej., para control de versiones o despliegue selectivo), utilice el parámetro --output-dir junto con --output-filename-template:
sigma convert -t esql -p ecs_windows --output-dir translated_rules/ rules/
Esto creará un archivo separado para cada regla convertida en el directorio translated_rules/.
Variables de plantilla:
El parámetro --output-filename-template acepta las siguientes variables:
{path}: Ruta relativa del directorio de origen (p. ej., windows para rules/windows/rule.yml){stem}: Nombre de archivo sin extensión (p. ej., rule para rule.yml){index}: Índice de consulta para reglas que generan múltiples consultas (vacío si solo hay una consulta)Ejemplos:
Estructura de salida plana (todos los archivos en un directorio):
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{stem}.esql" rules/
Conservar la estructura de directorios:
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{path}/{stem}.esql" rules/
Manejar reglas con múltiples consultas:
sigma convert -t esql -p ecs_windows --output-dir translated/ --output-filename-template "{stem}-{index}.esql" rules/
Dada la estructura de entrada:
rules/
├── windows/
│ └── rule_1.yml
├── linux/
│ └── rule_2.yml
Con --output-filename-template "{path}/{stem}.esql", la salida será:
translated/
├── windows/
│ └── rule_1.esql
├── linux/
│ └── rule_2.esql
Los backends y pipelines pueden integrarse añadiendo los paquetes correspondientes como dependencia con:
poetry add <package name>
Un backend debe añadirse al dict backends en sigma/cli/backends.py mediante la creación de una tupla nombrada Backend con los siguientes parámetros:
sigma list targets).-f) a descripciones de los formatos que se muestran en la lista de formatos (sigma list formats <backend>). ¡Los formatos deben ser compatibles con el backend!La clave del dict es el nombre utilizado en el parámetro -t.
Un pipeline de procesamiento se define en el dict de la variable pipelines en sigma/cli/pipelines.py. La variable contiene un ProcessingPipelineResolver que se instancia con un dict que asigna identificadores, que pueden utilizarse en el parámetro -p, a funciones que devuelven objetos ProcessingPipeline. El texto descriptivo que se muestra en la lista de pipelines (sigma list pipelines) se obtiene del atributo name del objeto ProcessingPipeline.
El proyecto está actualmente mantenido por: