MISP IOC ログを収集する
以下でサポートされています。
Google SecOpsSIEM
概要
このパーサーは、JSON または CSV 形式の MISP データから IOC を抽出します。入力を解析し、フィールドを UDM にマッピングし、さまざまな IOC タイプ(IP、ドメイン、ファイル ハッシュなど)を処理し、信頼度や重大度などの脅威インテリジェンスのコンテキストでデータを拡充します。また、パーサーはさまざまなデータ形式に固有のロジックを実行し、フィールドが欠落している場合やサポートされていない場合のケースを処理します。
始める前に
- Google SecOps インスタンスがあることを確認します。
- MISP への特権アクセス権があることを確認します。
MISP 脅威インテリジェンス ログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [新しく追加] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: MISP ログ)。
- [ソースタイプ] として [Webhook] を選択します。
- [ログタイプ] として [MISP Threat Intelligence] を選択します。
- [次へ] をクリックします。
- 省略可: 次の入力パラメータの値を指定します。
- 分割区切り文字: ログ行を区切るために使用される区切り文字(
\n
など)。 - アセットの名前空間: アセットの名前空間。
- 取り込みラベル: このフィードのイベントに適用されるラベル。
- 分割区切り文字: ログ行を区切るために使用される区切り文字(
- [次へ] をクリックします。
- [Finalize] 画面でフィードの設定を確認し、[送信] をクリックします。
- [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
- シークレット キーをコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、この操作により以前の秘密鍵は無効になります。
- [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。このエンドポイント URL は、クライアント アプリケーションで指定する必要があります。
- [完了] をクリックします。
Webhook フィードの API キーを作成する
Google Cloud コンソール > [認証情報] に移動します。
[認証情報を作成] をクリックして [API キー] を選択します。
API キーのアクセスを Google Security Operations API に制限します。
エンドポイント URL を指定する
- クライアント アプリケーションで、Webhook フィードで指定された HTTPS エンドポイント URL を指定します。
次の形式でカスタム ヘッダーの一部として API キーとシークレット キーを指定して、認証を有効にします。
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
推奨事項: API キーは URL ではなくヘッダーとして指定してください。
Webhook クライアントがカスタム ヘッダーをサポートしていない場合は、次の形式のクエリ パラメータを使用して API キーとシークレット キーを指定できます。
ENDPOINT_URL?key=API_KEY&secret=SECRET
次のように置き換えます。
ENDPOINT_URL
: フィードのエンドポイント URL。API_KEY
: Google Security Operations の認証に使用する API キー。SECRET
: フィードの認証用に生成したシークレット キー。
MISP で外部 URL への HTTP リクエストの送信を有効にする
- MISP がデプロイされているマシンにアクセスします。
app/Config/
にある config.php ファイルを編集します。rest_client_enable_arbitrary_urls
の構成を見つけて、True に設定します。none 'rest_client_enable_arbitrary_urls' => true
- ファイルを保存します。
Google SecOps 用に MISP で Webhook を構成する
- MISP Threat Intelligence にログインします。
- [管理] > [ワークフロー] > [モジュールを一覧表示] に移動します。
- [Webhook] を選択します。
- [アクション] 列に移動し、[有効にする] をクリックします。
- [Workflows] > [List triggers] に移動します。
- 任意の Webhook トリガーを選択します。
- モジュールのリストから [Webhook] を選択します。
- ワークスペースにドラッグ&ドロップします。
- 入力をトリガーの出力に接続します。
- Webhook モジュールで、次のフィールドに入力します。
- URL: ENDPOINT_URL に続けて、API_KEY と SECRET を入力します。
- [HTTP Request Method](HTTP リクエスト メソッド): [POST] を選択します。
- [保存] をクリックします。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
Attribute.category |
event.idm.entity.metadata.threat.category_details |
「data」フィールド内のネストされた JSON オブジェクトの Attribute.category から直接マッピングされます。JSON 解析パスで使用されます。 |
Attribute.comment |
event.idm.entity.metadata.threat.summary |
「data」フィールド内のネストされた JSON オブジェクトの Attribute.comment から直接マッピングされます。JSON 解析パスで使用されます。 |
Attribute.deleted |
event.idm.entity.metadata.threat.detection_fields.value |
Attribute.deleted から直接マッピングされ、キー「Attribute deleted」の検出フィールドとして追加されました。JSON 解析パスで使用されます。 |
Attribute.event_id |
event.idm.entity.metadata.threat.detection_fields.value |
Attribute.event_id から直接マッピングされ、キー「Attribute event_id」を持つ検出フィールドとして追加されました。JSON 解析パスで使用されます。 |
Attribute.first_seen |
event.idm.entity.metadata.threat.detection_fields.value |
Attribute.first_seen から直接マッピングされ、キー「Attribute first_seen」の検出フィールドとして追加されました。JSON 解析パスで使用されます。 |
Attribute.id |
event.idm.entity.metadata.threat.detection_fields.value |
Attribute.id から直接マッピングされ、解析パスに応じてキー「Attribute id」または「Attribute id $$」を持つ検出フィールドとして追加されます。CSV と JSON の両方の解析パスで使用されます。 |
Attribute.timestamp |
event.idm.entity.metadata.threat.detection_fields.value |
Attribute.timestamp から直接マッピングされ、キー「Attribute timestamp」の検出フィールドとして追加されました。JSON 解析パスで使用されます。 |
Attribute.to_ids |
event.idm.entity.metadata.threat.detection_fields.value |
Attribute.to_ids から直接マッピングされ、キー「Attribute to_ids」を持つ検出フィールドとして追加されました。JSON 解析パスで使用されます。 |
Attribute.type |
log_type |
「data」フィールド内のネストされた JSON オブジェクトの Attribute.type から直接マッピングされます。暫定的なフィールドとして使用され、後で他の UDM フィールドに入力するために使用されます。JSON 解析パスで使用されます。 |
Attribute.uuid |
event.idm.entity.metadata.product_entity_id |
「data」フィールド内のネストされた JSON オブジェクトの Attribute.uuid から直接マッピングされます。JSON 解析パスで使用されます。 |
Attribute.value |
複数 | このフィールドの値は、Attribute.type (または Attribute.type から派生する場合は log_type )に応じて、複数の UDM フィールドに入力するために使用されます。- type が「ドメイン」の場合、event.idm.entity.entity.hostname 。- type が「md5」の場合、event.idm.entity.entity.file.md5 。- type が「sha1」の場合、event.idm.entity.entity.file.sha1 。- type が「sha256」の場合、event.idm.entity.entity.file.sha256 。- type が「mutex」の場合、event.idm.entity.entity.resource.name 。- type が「regkey」の場合、event.idm.entity.entity.registry.registry_key 。- type が「threat-actor」の場合、event.idm.entity.entity.user.email_addresses 。- type が「uri」または「url」の場合、event.idm.entity.entity.url 。- type が「filename」の場合、event.idm.entity.entity.file.full_path 。- type が「ip-dst|port」、「ip-dst」、「ip-src」の場合、IP とポートを解析します。JSON 解析パスで使用されます。 |
column1 |
event.idm.entity.metadata.product_entity_id |
CSV 解析パスの column1 から直接マッピングされます。 |
column14 |
event.idm.entity.metadata.threat.description 系列 |
description と連結して、脅威メタデータの最終的な説明を形成します。CSV 解析パスで使用されます。 |
column16 |
event.idm.entity.metadata.threat.threat_feed_name 、event.ioc.feed_name |
column16 から直接マッピングされます。CSV 解析パスで使用されます。 |
column18 |
event.idm.entity.metadata.threat.severity_details 、event.ioc.raw_severity |
column18 から直接マッピングされます。CSV 解析パスで使用されます。 |
column21 |
event.idm.entity.metadata.threat.description 、event.ioc.description の一部 |
説明のベースとして使用され、後で event_info と連結されます。CSV 解析パスで使用されます。 |
column3 |
event.ioc.categorization 系列 |
column3 から直接マッピングされ、「IOC」と連結されて最終的な分類が形成されます。CSV 解析パスで使用されます。 |
column4 |
event.idm.entity.metadata.description |
column4 から直接マッピングされます。CSV 解析パスで使用されます。 |
column5 |
複数 | このフィールドの値は、column4 フィールド(type にマッピング)に応じて複数の UDM フィールドに入力されます。- type が「ドメイン」の場合、event.idm.entity.entity.hostname 。- type が「ip-dst|port」、「ip-dst」、「ip-src」の場合、IP とポートを解析します。- type が「md5」の場合、event.idm.entity.entity.file.md5 。- type が「sha1」の場合、event.idm.entity.entity.file.sha1 。- type が「sha256」の場合、event.idm.entity.entity.file.sha256 。- type が「mutex」の場合、event.idm.entity.entity.resource.name 。- type が「regkey」の場合、event.idm.entity.entity.registry.registry_key 。- type が「threat-actor」の場合、event.idm.entity.entity.user.email_addresses 。- type が「uri」または「url」の場合、event.idm.entity.entity.url 。- type が「filename」の場合、event.idm.entity.entity.file.full_path 。CSV 解析パスで使用されます。 |
column6 |
event.idm.entity.metadata.threat.summary |
column6 から直接マッピングされます。CSV 解析パスで使用されます。 |
column8 |
event.ioc.active_timerange.start 、event.idm.entity.metadata.interval.start_time |
UNIX タイムスタンプとして解析されます。CSV 解析パスで使用されます。 |
date description |
event.idm.entity.metadata.threat.description |
「data」フィールド内のネストされた JSON オブジェクトの description から直接マッピングされます。JSON 解析パスで使用されます。 |
event_creator_email |
event.idm.entity.entity.labels.value |
event_creator_email から直接マッピングされ、キー「event_creator_email」を持つラベルとして追加されました。JSON 解析パスで使用されます。 |
event_id Feed.publish |
event.idm.entity.metadata.threat.detection_fields.value |
Feed.publish から直接マッピングされ、キー「フィード公開」の検出フィールドとして追加されました。JSON 解析パスで使用されます。 |
first_seen |
event.ioc.active_timerange.start 、event.idm.entity.metadata.interval.start_time |
「yyyy-MM-ddTHH:mm:ssZZ」形式のタイムスタンプとして解析されます。JSON 解析パスで使用されます。 |
id info |
event.idm.entity.metadata.description |
「data」フィールド内のネストされた JSON オブジェクトの info から直接マッピングされます。JSON 解析パスで使用されます。 |
last_seen |
event.ioc.active_timerange.end |
「yyyy-MM-ddTHH:mm:ssZZ」形式のタイムスタンプとして解析されます。JSON 解析パスで使用されます。 |
Org.name |
event.idm.entity.metadata.threat.detection_fields.value |
Org.name から直接マッピングされ、キー「組織名」の検出フィールドとして追加されました。JSON 解析パスで使用されます。 |
published |
event.idm.entity.metadata.threat.detection_fields.value |
published から直接マッピングされ、キー「published」の検出フィールドとして追加されました。JSON 解析パスで使用されます。 |
Tag.colour |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.colour から直接マッピングされ、キー「tag colour」の検出フィールドとして追加されました。JSON 解析パスで使用されます。 |
Tag.exportable |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.exportable から直接マッピングされ、キー「tag exportable」を持つ検出フィールドとして追加されました。JSON 解析パスで使用されます。 |
Tag.hide_tag |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.hide_tag から直接マッピングされ、キー「tag hide_tag」で検出フィールドとして追加されました。JSON 解析パスで使用されます。 |
Tag.id |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.id から直接マッピングされ、キー「tag id」を持つ検出フィールドとして追加されました。JSON 解析パスで使用されます。 |
Tag.is_custom_galaxy |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.is_custom_galaxy から直接マッピングされ、キー「tag is_custom_galaxy」の検出フィールドとして追加されました。JSON 解析パスで使用されます。 |
Tag.is_galaxy |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.is_galaxy から直接マッピングされ、キー「tag is_galaxy」の検出フィールドとして追加されました。JSON 解析パスで使用されます。 |
Tag.isinherited |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.isinherited から直接マッピングされ、キー「tag isinherited」を持つ検出フィールドとして追加されました。JSON 解析パスで使用されます。 |
Tag.name |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.name から直接マッピングされ、キー「tag name」の検出フィールドとして追加されます。JSON 解析パスで使用されます。 |
Tag.numerical_value |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.numerical_value から直接マッピングされ、キー「tag numerical_value」の検出フィールドとして追加されました。JSON 解析パスで使用されます。 |
Tag.user_id |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.user_id から直接マッピングされ、キー「tag user_id」を持つ検出フィールドとして追加されました。JSON 解析パスで使用されます。 |
threat_level_id |
event.idm.entity.entity.labels.value |
threat_level_id から直接マッピングされ、キー「threat_level_id」を持つラベルとして追加されました。JSON 解析パスで使用されます。 |
timestamp |
event.idm.entity.metadata.collected_timestamp 、event.idm.entity.metadata.interval.start_time |
UNIX タイムスタンプとして解析されます。CSV 解析パスで使用されます。 |
uuid |
event.idm.entity.metadata.vendor_name |
パーサーによって「MISP」に設定されます。パーサーによって「MISP」に設定されます。かなり先のデフォルト値(エポックからの経過秒数 253402300799)に設定します。type フィールドまたは log_type フィールドに基づいてパーサーによって決定されます。「FILE」、「DOMAIN_NAME」、「IP_ADDRESS」、「MUTEX」、「RESOURCE」、「USER」のいずれか。Attribute.type に応じて Attribute.comment または Attribute.value から派生できます。タイプが IP 関連の場合は、Attribute.value または column5 から解析されます。タイプが「ip-dst|port」の場合は、Attribute.value または column5 から解析されます。CSV 解析では column3 から、JSON 解析では Attribute.category から派生します。CSV 解析の column21 と column14 から派生します。column8 または first_seen から派生した値。last_seen から派生しました。grok パターンを使用して description から派生します。column16 から派生するか、「MISP」に設定します。column18 から派生しました。タイプが IP 関連の場合は、Attribute.value または column5 から解析されます。タイプが「ip-dst|port」の場合は、Attribute.value または column5 から解析されます。タイプが「domain」の場合は、Attribute.value または column5 から派生します。description フィールドから抽出された confidence フィールドから派生します。値は「HIGH_CONFIDENCE」、「MEDIUM_CONFIDENCE」、「LOW_CONFIDENCE」、「UNKNOWN_CONFIDENCE」のいずれかです。description フィールドから抽出された confidence フィールドから直接マッピングされます。CSV 解析パスの column18 から派生した threat_level フィールドから直接マッピングされます。CSV 解析パスの column16 から派生した feed_name フィールドから直接マッピングされます。CSV 解析の column21 と column14 から派生します。CSV 解析では column6 から、JSON 解析では Attribute.comment から派生します。いくつかのフィールドが検出フィールドとして追加され、対応するキーが付与されます。複数のフィールドが、対応するキーとともにラベルとして追加されます。元のログの最上位の timestamp フィールドからコピーされます。 |
変更点
2023-09-26
- 「published」、「Feed.publish」、「Org.name」、「Attribute.id」、「Attribute.event_id」、「Attribute.to_ids」、「Attribute.timestamp」、「Attribute.comment」、「Attribute.deleted」、「Attribute.first_seen」、すべての「tag.names」を「threat.detection_fields」にマッピングしました。
2023-08-17
- バグの修正 :
- ログが JSON でない場合のみ、余分なバックスラッシュを削除する「gsub」オペレーションを実行する条件を追加しました。
2023-07-20
- バグの修正 :
- ログのタイプが mutex の場合に、metadata.entity_type を MUTEX に変更しました。
2023-07-04
- 新しく作成されたパーサー。