検出ルールは、Elastic Security で使用されるルールのホームです。このリポジトリは、Elastic Security の検出エンジンのルールの開発、メンテナンス、テスト、検証、リリースに使用されます。
このリポジトリは、Elastic のブログ投稿「Elastic Security がパブリック検出ルール リポジトリをオープン」で初めて発表されました。追加のコンテンツについては、付属のウェビナー「Elastic Security: 検出ルールのパブリック リポジトリの紹介」を参照してください。
検出ルール
目次
このリポジトリの概要
はじめる
貢献方法
ライセンス
質問がありますか?問題がありますか?提案はありますか?
検出ルールには、静的なルール ファイルだけではありません。このリポジトリには、Python での単体テストと Kibana の検出エンジンとの統合のためのコードも含まれています。
フォルダ | 説明 |
---|---|
detection_rules/ | ルールの解析、検証、パッケージ化のための Python モジュール |
etc/ | ECS や Beats スキーマなどのその他のファイル |
hunting/ | 脅威ハンティング パッケージとクエリが保存されるルート ディレクトリ |
kibana/ | Kibana および検出エンジンへの API 呼び出しを処理するための Python ライブラリ |
kql/ | Kibana クエリ言語を解析および検証するための Python ライブラリ |
rta/ | 攻撃者の手法をエミュレートするために使用される Red Team Automation コード、ルールのテストに使用される |
rules/ | ルールが保存されるルート ディレクトリ |
rules_building_block/ | ビルディング ブロック ルールが保存されるルート ディレクトリ |
tests/ | 単体テストルールのPythonコード |
ルールは.toml
ファイルを手動で作成して追加できますが、お勧めしません。このリポジトリは、ルールの作成と単体テストを支援する Python モジュールでも構成されています。 Python 3.12 以降を使用していると仮定して、メイクファイルを使用して以下のコマンドを実行し、依存関係をインストールします。
✗ makepython3.12 -m pip install --upgrade pip setuptoolsインデックスの検索: https://pypi.org/simpleRequirement はすでに満たされています: pip in /opt/homebrew/lib/python3.12/site-packages (24.0)要件はすでに満たされています: /opt/homebrew/lib/python3.12/site-packages の setuptools (69.1.1)python3.12 -m venv ./env/detection-rules-build./env/detection-rules-build/bin/pip install --upgrade pip setuptoolsインデックスの検索: https://pypi.org/ simpleRequirement はすでに満たされています: ピップイン./env/detection-rules-build/lib/python3.12/site-packages (24.0)キャッシュされた setuptools-69.1.1-py3-none-any.whl.metadata を使用した setuptools の収集 (6.2 kB)キャッシュされた setuptools-69.1 の使用.1-py3-none-any.whl (819 kB)インストール収集されたパッケージ: setuptoolssetuptools が正常にインストールされました-69.1.1kql および kibana パッケージをインストールしています....
または、次のコマンドを使用して依存関係をインストールします。
$ pip3 install ".[dev]"jsl==0.2.4 の収集中 jsl-0.2.4.tar.gz のダウンロード (21 kB)jsonschema==3.2.0 の収集中 jsonschema-3.2.0-py2.py3-none-任意の.whl (56 KB) |████████████████████████████████| 56 kB 318 kB/s リクエストの収集==2.22.0 リクエストのダウンロード-2.22.0-py2.py3-none-any.whl (57 kB) |█████████████████ ███████████████| 57 kB 1.2 MB/秒 Click==7.0 のダウンロード Click-7.0-py2.py3-none-any.whl (81 kB) |█████████████████████ ███████████| 81KB 2.6MB/秒...
注: kibana
およびkql
パッケージは PyPI では使用できないため、 lib
ディレクトリからインストールする必要があります。 hunting
パッケージにはpip3 install ".[hunting]
でインストールされるオプションの依存関係があります。
# リポジトリからインストールpip3 install git+https://github.com/elastic/detection-rules.git#subdirectory=kibanapip3 install git+https://github.com/elastic/detection-rules.git#subdirectory=kql#または、開発のためにローカルにpip3 install lib/kibana lib/kql
仮想環境を使用している場合は、必ず仮想環境をアクティブ化してください。 make
経由でインストールした場合、関連する仮想環境がenv/detection-rules-build/
に作成されます。 Python 3.12 環境の使用で問題が発生した場合は、トラブルシューティング ガイドの関連セクションを参照してください。
すべてが正しくインストールされたことを確認するには、 --help
フラグを指定して実行します。
$ python -m detect_rules --helpUsage: detect_rules [OPTIONS] COMMAND [ARGS]... 検出ルール リポジトリのコマンド。オプション: -d, --debug / -n, --no-debug エラー時に完全な例外スタックトレースを出力します。 -h, --help このメッセージを表示して終了します。コマンド: create-rule 検出ルールを作成します。 dev 内部による開発および管理用のコマンド... es Elasticsearch と統合するためのコマンド。 import-rules json、toml、または Kibana からエクスポートされたルールからルールをインポートします... kibana Kibana と統合するためのコマンド。 Mass-update eql の結果に基づいて複数のルールを更新します。 Normalize-data Elasticsearch データのタイムスタンプを正規化し、並べ替えます。 rules-search KQL または EQL を使用して、一致するルールを検索します。 test すべてのルールに対して単体テストを実行します。 toml-lint 単純な toml フォーマットを使用してファイルをクリーンアップします。 validate-all すべてのルールがスキーマに対して検証されるかどうかを確認します。 validate-rule rules dir でステージングされたルールが... view-rule 内部ルールまたは指定されたルール ファイルを表示するかどうかを確認します。
注記:
仮想環境を使用している場合は、上記のコマンドを実行する前に必ず仮想環境をアクティブ化してください。
Windows を使用している場合は、Python のバージョンに応じて、 <venv_directory>Scriptspywin32_postinstall.py -install
も実行する必要がある場合があります。
コントリビューション ガイドでは、検出ルールにコントリビュートするときに、 create-rule
とtest
コマンドを使用して新しいルールを作成およびテストする方法について説明します。
より高度なコマンド ライン インターフェイス (CLI) の使用方法については、CLI ガイドを参照してください。
検出ルールへの貢献を歓迎します。貢献する前に、このリポジトリ、そのディレクトリ構造、およびルール作成に関する当社の哲学をよく理解してください。貢献する準備ができたら、貢献ガイドを読んで、検出のアイデアを運用ルールに変換し、テストで検証する方法を学びましょう。
このリポジトリ内のすべてのもの (ルール、コード、RTA など) は、Elastic License v2 に基づいてライセンスされています。これらのルールは、Elastic Security アプリケーション内の検出エンジンのコンテキストで使用されるように設計されています。 Elastic Cloud マネージド サービス、または無料機能のフルセットを含む Elastic Stack ソフトウェアのデフォルトのディストリビューションを使用している場合は、初めて検出エンジンに移動したときに最新のルールを取得します。
場合によっては、MIT や Apache 2.0 など、すでにライセンスを持っている別のリポジトリからルールをインポートしたい場合があります。 Elastic License v2 に基づくサブライセンスがライセンスで許可されている限り、これは歓迎されます。これらのライセンス通知はNOTICE.txt
に保存され、他のすべてのルールとともに Elastic License v2 としてサブライセンスが付与されます。また、Elastic リポジトリにコードを寄稿する前に、寄稿者が寄稿者ライセンス契約に署名することも求められます。
検出エンジンについて詳しく知りたいですか? Kibana で概要を確認してください。
このリポジトリには、まだリリースされていない新しいルールと更新されたルールが含まれています。スタックとともにリリースされた最新のルール セットを確認するには、「事前構築ルール リファレンス」を参照してください。
誤検知またはその他の種類のバグを報告したい場合は、GitHub の問題を作成し、最初に既存の問題があるかどうかを確認してください。
検出ルールについてサポートが必要ですか?問題を投稿するか、セキュリティ ディスカッション フォーラムまたは Slack ワークスペース内の#security-detection-rulesチャネルに質問してください。