
Интерфейс командной строки Sigma на основе pySigma
Это интерфейс командной строки Sigma, использующий библиотеку pySigma для управления, перечисления и конвертации правил Sigma в языки запросов.
Самый простой способ установить 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 о создании процессов из каталога в запросы Splunk для журналов Sysmon, выполните:
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.
Используйте -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}: относительный путь к исходному каталогу (например, windows для rules/windows/rule.yml){stem}: имя файла без расширения (например, rule для rule.yml){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>
Бэкенд должен быть добавлен в словарь backends в sigma/cli/backends.py путём создания именованного кортежа Backend со следующими параметрами:
sigma list targets).-f) с описаниями форматов, которые показываются в списке форматов (sigma list formats <backend>). Форматы должны поддерживаться бэкендом!Ключ словаря — это имя, используемое в параметре -t.
Конвейер обработки определяется в переменной-словаре pipelines в sigma/cli/pipelines.py. Переменная содержит ProcessingPipelineResolver, который создаётся со словарём, сопоставляющим идентификаторы, которые можно использовать в параметре -p, с функциями, возвращающими объекты ProcessingPipeline. Описательный текст, показываемый в списке конвейеров (sigma list pipelines), берётся из атрибута name объекта ProcessingPipeline.
В настоящее время проект сопровождают: