MISP IOC ログを収集する

以下でサポートされています。

概要

このパーサーは、JSON または CSV 形式の MISP データから IOC を抽出します。入力を解析し、フィールドを UDM にマッピングし、さまざまな IOC タイプ(IP、ドメイン、ファイル ハッシュなど)を処理し、信頼度や重大度などの脅威インテリジェンスのコンテキストでデータを拡充します。また、パーサーはさまざまなデータ形式に固有のロジックを実行し、フィールドが欠落している場合やサポートされていない場合のケースを処理します。

始める前に

  • Google SecOps インスタンスがあることを確認します。
  • MISP への特権アクセス権があることを確認します。

MISP 脅威インテリジェンス ログを取り込むように Google SecOps でフィードを構成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [新しく追加] をクリックします。
  3. [フィード名] フィールドに、フィードの名前を入力します(例: MISP ログ)。
  4. [ソースタイプ] として [Webhook] を選択します。
  5. [ログタイプ] として [MISP Threat Intelligence] を選択します。
  6. [次へ] をクリックします。
  7. 省略可: 次の入力パラメータの値を指定します。
    • 分割区切り文字: ログ行を区切るために使用される区切り文字(\n など)。
    • アセットの名前空間: アセットの名前空間
    • 取り込みラベル: このフィードのイベントに適用されるラベル。
  8. [次へ] をクリックします。
  9. [Finalize] 画面でフィードの設定を確認し、[送信] をクリックします。
  10. [秘密鍵を生成する] をクリックして、このフィードを認証するためのシークレット キーを生成します。
  11. シークレット キーをコピーして保存します。この秘密鍵を再び表示することはできません。必要に応じて、新しい秘密鍵を再生成できますが、この操作により以前の秘密鍵は無効になります。
  12. [詳細] タブで、[エンドポイント情報] フィールドから、フィードのエンドポイント URL をコピーします。このエンドポイント URL は、クライアント アプリケーションで指定する必要があります。
  13. [完了] をクリックします。

Webhook フィードの API キーを作成する

  1. Google Cloud コンソール > [認証情報] に移動します。

    [認証情報] に移動

  2. [認証情報を作成] をクリックして [API キー] を選択します。

  3. API キーのアクセスを Google Security Operations API に制限します。

エンドポイント URL を指定する

  1. クライアント アプリケーションで、Webhook フィードで指定された HTTPS エンドポイント URL を指定します。
  2. 次の形式でカスタム ヘッダーの一部として API キーとシークレット キーを指定して、認証を有効にします。

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    推奨事項: API キーは URL ではなくヘッダーとして指定してください。

  3. Webhook クライアントがカスタム ヘッダーをサポートしていない場合は、次の形式のクエリ パラメータを使用して API キーとシークレット キーを指定できます。

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    次のように置き換えます。

    • ENDPOINT_URL: フィードのエンドポイント URL。
    • API_KEY: Google Security Operations の認証に使用する API キー。
    • SECRET: フィードの認証用に生成したシークレット キー。

MISP で外部 URL への HTTP リクエストの送信を有効にする

  1. MISP がデプロイされているマシンにアクセスします。
  2. app/Config/ にある config.php ファイルを編集します。
  3. rest_client_enable_arbitrary_urls構成を見つけて、True に設定します。 none 'rest_client_enable_arbitrary_urls' => true
  4. ファイルを保存します。

Google SecOps 用に MISP で Webhook を構成する

  1. MISP Threat Intelligence にログインします。
  2. [管理] > [ワークフロー] > [モジュールを一覧表示] に移動します。
  3. [Webhook] を選択します。
  4. [アクション] 列に移動し、[有効にする] をクリックします。
  5. [Workflows] > [List triggers] に移動します。
  6. 任意の Webhook トリガーを選択します。
  7. モジュールのリストから [Webhook] を選択します。
  8. ワークスペースにドラッグ&ドロップします。
  9. 入力をトリガーの出力に接続します。
  10. Webhook モジュールで、次のフィールドに入力します。
    • URL: ENDPOINT_URL に続けて、API_KEYSECRET を入力します。
    • [HTTP Request Method](HTTP リクエスト メソッド): [POST] を選択します。
  11. [保存] をクリックします。

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_nameevent.ioc.feed_name column16 から直接マッピングされます。CSV 解析パスで使用されます。
column18 event.idm.entity.metadata.threat.severity_detailsevent.ioc.raw_severity column18 から直接マッピングされます。CSV 解析パスで使用されます。
column21 event.idm.entity.metadata.threat.descriptionevent.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.startevent.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.startevent.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_timestampevent.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 解析の column21column14 から派生します。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 解析の column21column14 から派生します。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

  • 新しく作成されたパーサー。