这是使用 pySigma 库来管理、列出并将 Sigma 规则转换为查询语言的 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 规则转换为适用于 Sysmon 日志的 Splunk 查询,请运行:
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 以 key=value 对的形式向后端传递选项(-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}:源目录的相对路径(例如,rules/windows/rule.yml 的 windows){stem}:不带扩展名的文件名(例如,rule.yml 的 rule){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>
必须通过在 sigma/cli/backends.py 的 backends 字典中创建 Backend 命名元组来添加后端,该元组包含以下参数:
sigma list targets)中向用户显示的名称。-f 参数)映射到格式列表(sigma list formats <backend>)中显示的格式描述。这些格式必须受后端支持!字典键是在 -t 参数中使用的名称。
处理管道在 sigma/cli/pipelines.py 的 pipelines 变量字典中定义。该变量包含一个 ProcessingPipelineResolver,它使用一个字典进行实例化,该字典将可用于 -p 参数的标识符映射到返回 ProcessingPipeline 对象的函数。管道列表(sigma list pipelines)中显示的描述性文本来自 ProcessingPipeline 对象的 name 属性。
该项目目前由以下人员维护: