
pySigma に基づく Sigma コマンドラインインターフェース
これは、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 で一覧表示できます。
バックエンドにオプションを key=value ペアとして渡すには -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}: ソースディレクトリの相対パス(例: rules/windows/rule.yml の場合は windows){stem}: 拡張子を除いたファイル名(例: rule.yml の場合は rule){index}: 複数のクエリを生成するルールのクエリインデックス(クエリが1つだけの場合は空)例:
フラットな出力構造(すべてのファイルを1つのディレクトリに出力):
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 変数ディクショナリで定義されます。この変数には、-p パラメータで使用できる識別子を ProcessingPipeline オブジェクトを返す関数にマッピングするディクショナリでインスタンス化された ProcessingPipelineResolver が含まれます。パイプライン一覧 (sigma list pipelines) に表示される説明文は、ProcessingPipeline オブジェクトの name 属性から提供されます。
このプロジェクトは現在以下によってメンテナンスされています: