STIX Threat Intelligence ログを収集する

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

このドキュメントでは、Bindplane エージェントを使用して STIX 脅威インテリジェンス ログを Google Security Operations に取り込む方法について説明します。

STIX(Structured Threat Information Expression)は、組織間でセキュリティ侵害インジケーター(IOC)と脅威インテリジェンス データを共有するための標準化された言語と形式です。通常、STIX データは TAXII サーバーまたは脅威インテリジェンス プラットフォームから JSON ファイルまたは XML ファイルとして受信されます。Bindplane エージェントは、ローカル ファイル システムから STIX データファイルを直接収集します。

始める前に

次の前提条件を満たしていることを確認してください。

  • Google SecOps インスタンス
  • Windows Server 2016 以降、または systemd を使用する Linux ホスト
  • プロキシの背後で実行している場合は、Bindplane エージェントの要件に従ってファイアウォール ポートが開いていることを確認します。
  • STIX 形式のファイル(JSON または XML)をローカル ディレクトリに保存する TAXII クライアントまたは脅威インテリジェンス プラットフォーム

Bindplane エージェントの Google SecOps 認証情報を取得する

Bindplane エージェントを Google SecOps に対して認証するには、次のいずれかの方法を選択します。

  • 新しいデプロイ: Chronicle API(オプション 1)を使用します。
  • 以前のデプロイ: 2027 年 7 月 20 日に Ingestion API が廃止されるまで、取り込み認証ファイル(オプション 2)を引き続き使用します。
  1. Google Cloud コンソールにログインし、Google SecOps インスタンスにリンクされている Google Cloud プロジェクトを選択します。
  2. [IAM と管理] > [サービス アカウント] に移動します。
  3. [サービス アカウントを作成] をクリックします。
  4. 次の構成情報を指定します。
    • サービス アカウント名: アカウントの名前を入力します(例: bindplane-ingest)。
    • サービス アカウントの説明: 説明を入力します(例: Bindplane agent log ingestion)。
  5. [作成して続行] をクリックします。
  6. [このサービス アカウントにプロジェクトへのアクセスを許可する] セクションで、[ロールを選択] をクリックし、[Chronicle 編集者] を選択します。
  7. [続行] をクリックして [完了] をクリックします。
  8. 作成したサービス アカウントをクリックし、[キー] タブに移動します。
  9. [鍵を追加] > [新しい鍵を作成] の順にクリックします。
  10. [JSON] を選択し、[作成] をクリックします。鍵ファイルがパソコンにダウンロードされます。
  11. 鍵ファイルを ingestion-auth.json として Bindplane コレクタ ディレクトリ(Linux の場合は /opt/observiq-otel-collector/ingestion-auth.json、Windows の場合は C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json)に保存するか、config.yaml の creds_file_path を更新して、保存先のパスと一致させます。
  12. [IAM と管理] > [設定] に移動し、[プロジェクト番号] をコピーします。エクスポーターの構成に必要になります。

オプション 2: 取り込み認証ファイルをダウンロードする(レガシー)

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [収集エージェント] に移動します。
  3. 取り込み認証ファイルをダウンロードします。
  4. Bindplane エージェントがインストールされるシステムにファイルを安全に保存します。

Google SecOps のお客様 ID を取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [プロファイル] に移動します。
  3. [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。

Bindplane エージェントをインストールする

次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。

Windows へのインストール

  1. 管理者としてコマンド プロンプトまたは PowerShell を開きます。
  2. 次のコマンドを実行します。

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sc query observiq-otel-collector
    

    サービスは RUNNING と表示されます。

Linux のインストール

  1. root 権限または sudo 権限でターミナルを開きます。
  2. 次のコマンドを実行します。

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. インストールが完了するまで待ちます。

  4. 次のコマンドを実行して、インストールの内容を確認します。

    sudo systemctl status observiq-otel-collector
    

    サービスが active (running) と表示されます。

その他のインストール リソース

その他のインストール オプションとトラブルシューティングについては、Bindplane エージェントのインストール ガイドをご覧ください。

ログを取り込んで Google SecOps に送信するように Bindplane エージェントを構成する

構成ファイルを探します。

  • Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

構成ファイルを編集します。

  • config.yaml の内容全体を次の構成に置き換えます。

    receivers:
      filelog:
        include:
          - /var/log/stix/*.json
        start_at: beginning
    
    exporters:
      chronicle/stix:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: STIX
        raw_log_field: body
        ingestion_labels:
          env: production
    
    service:
      pipelines:
        logs/stix_to_chronicle:
          receivers:
            - filelog
          exporters:
            - chronicle/stix
    

構成パラメータ

各プレースホルダを次のように置き換えます。

  • レシーバーの構成:

    • filelog: ディスクからログファイルを収集するためのレシーバー タイプ
    • include: モニタリングするファイルパスのリスト。STIX ファイルが保存されているディレクトリに設定します。
      • Linux: /var/log/stix/*.json
      • Windows: C:\Logs\stix\*.json
    • start_at: 既存のログを読み取る場合は beginning、新しいエントリのみを読み取る場合は end に設定します。
  • エクスポータの構成:

    • stix: エクスポータのわかりやすい名前
    • creds_file_path: サービス アカウントの JSON キーファイルのフルパス(オプション 1):
      • Linux: /opt/observiq-otel-collector/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • <customer_id>: 前のステップで取得したお客様 ID
    • location: <LOCATION> は、Google SecOps インスタンスのリージョン(us、europe、asia-southeast1 など)に置き換えます。エクスポーターは、chronicle.googleapis.com の先頭にこの値を付加します。完全なリストについては、リージョン エンドポイントをご覧ください。
    • project: <PROJECT_NUMBER> を [IAM と管理] > [設定] のプロジェクト番号に置き換えます。
    • endpoint: chronicle.googleapis.com に設定したままにします。
    • STIX: Chronicle に表示されるログタイプ
    • ingestion_labels: YAML 形式のオプションのラベル(例: env: production)
  • パイプラインの構成:

    • stix_to_chronicle: パイプラインのわかりやすい名前

以前の取り込み API エクスポータ

  • オプション 2 の取り込み認証ファイルを使用する場合は、exporters ブロックを次のように置き換えます。creds_file_path を取り込み認証ファイルのパスに設定します。インスタンスが米国以外にある場合は、malachiteingestion-pa.googleapis.com をリージョン エンドポイント(例: europe-malachiteingestion-pa.googleapis.com)に置き換えます。

    exporters:
      chronicle/stix:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: STIX
        raw_log_field: body
        ingestion_labels:
          env: production
    

構成ファイルを保存する

  • 編集後、ファイルを保存します。
    • Linux: Ctrl+O、Enter、Ctrl+X の順に押します。
    • Windows の場合: [ファイル] > [保存] をクリックします。

Bindplane エージェントを再起動して変更を適用する

  • Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。

    sudo systemctl restart observiq-otel-collector
    
    1. サービスが実行されていることを確認します。

      sudo systemctl status observiq-otel-collector
      
    2. ログでエラーを確認します。

      sudo journalctl -u observiq-otel-collector -f
      
  • Windows で Bindplane エージェントを再起動するには、次のいずれかのオプションを選択します。

    • 管理者としてコマンド プロンプトまたは PowerShell を開きます。

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • サービス コンソール:

      1. Win+R を押し、「services.msc」と入力して Enter キーを押します。
      2. observIQ OpenTelemetry Collector を見つけます。
      3. 右クリックして [再起動] を選択します。
      4. サービスが実行されていることを確認します。

        sc query observiq-otel-collector
        
      5. ログでエラーを確認します。

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

STIX データファイルの収集を構成する

STIX はプロダクトではなく、データ形式です。STIX 脅威インテリジェンス データは通常、TAXII クライアント、脅威インテリジェンス プラットフォーム、または手動ダウンロードから JSON ファイルまたは XML ファイルとして受信されます。これらのファイルは、Bindplane エージェントがモニタリングするディレクトリに配置する必要があります。

Linux

  1. STIX データファイルを保存するディレクトリを作成します。

    sudo mkdir -p /var/log/stix
    
  2. STIX ファイルを /var/log/stix/ に保存するように TAXII クライアントまたは脅威インテリジェンス プラットフォームを構成します。

  3. Bindplane エージェント サービス アカウントに、ディレクトリへの読み取りアクセス権があることを確認します。

    sudo chmod 755 /var/log/stix
    

Windows

  1. STIX データファイルを保存するディレクトリを作成します。

    mkdir C:\Logs\stix
    
  2. TAXII クライアントまたは脅威インテリジェンス プラットフォームを構成して、STIX ファイルを `C:\Logs\stix` に保存します。

  3. config.yaml の Bindplane エージェントの include パスを更新して、一致するようにします。

    include:
      - C:\Logs\stix\*.json
    

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
entity.administrative_domain 「TEST」に設定
assetid_value entity.asset.asset_id assetid_value が空でない場合は、その値
condition_label, related_indicators_relationship_label, related_indicators_scope, indicator_types_label, valid_start_time_label, controlled_structure_label, marking_structure_label entity.asset.attribute.labels さまざまなラベルから統合
name entity.file.full_path 値が直接コピーされる
val、hash.simple_hash_value、MD5_val、hash_value entity.file.md5 MD5 正規表現に一致する場合は val の値、MD5 タイプの場合は hash.simple_hash_value、それ以外の場合は MD5_val、それ以外の場合は hash_value
値 entity.file.names 値を直接コピーする
val, hash.simple_hash_value, sha1_val, hash_value entity.file.sha1 sha1 正規表現と一致する場合は val の値、タイプが SHA1 の場合は hash.simple_hash_value、それ以外の場合は sha1_val、それ以外の場合は hash_value
val, hash.simple_hash_value, sha256val, sha_value, sha_value entity.file.sha256 sha256 正規表現と一致する場合は val の値、タイプが SHA256 の場合は hash.simple_hash_value、それ以外の場合は sha256val、それ以外の場合は sha_value
observable.object.properties.value, dom, value, host, name, external_references.0.source_name entity.hostname タイプが FQDN の場合は observable.object.properties.value の値、それ以外の場合は grok の dom、それ以外でタイプが domain-name の場合は value、それ以外の場合は host、それ以外で main_observable_type が domain/hostname の場合は name、それ以外の場合は external_references.0.source_name
ip_val、ipval、ip、source_ip、value、src_ip entity.ip Grok が一致した場合は ip_val の値、カテゴリが ipv4-addr の場合は ipval、パターン Grok の ip、source_ip、タイプが ipv4 の場合は値、Grok の src_ip
source_port、src_port entity.port source_port または src_port の値
indicator_label、extension_value1、extension_value2、extension_value3、extension_value4、revoked_value、spec_version_value、object_marking_ref_value、label_value entity.resource.attribute.labels さまざまなラベルから統合
observable.object.properties.value、url_val、value、observable_properties_value entity.url タイプが URL の場合は observable.object.properties.value の値、それ以外の場合は grok の url_val、それ以外でタイプが url の場合は値、それ以外で空でない場合は observable_properties_value
email_val、mail、value entity.user.email_addresses Grok が一致した場合は email_val の値、それ以外の場合は Grok のメール、それ以外の場合はタイプが email-addr の値
timestamp metadata.collected_timestamp 日付照合 ISO8601/RFC 3339 を使用して変換
title、description metadata.description タイトルまたは説明文の値
entity_type metadata.entity_type 値が直接コピーされる
timestamp、valid_until metadata.interval.end_time ISO8601/RFC 3339 の日付一致を使用して、timestamp または valid_until から変換
timestamp、valid_from、created metadata.interval.start_time timestamp、valid_from、created、または timestamp から、ISO8601/RFC 3339 に一致する日付を使用して変換
id metadata.product_entity_id 値を直接コピーする
version metadata.product_version 値が直接コピーされる
threat_detail metadata.threat threat_detail から統合
threat_detail_category threat.category 値を直接コピーする
confidence_value、confidence、x_stix_confidence、x_ctix_confidence_score threat.confidence_details confidence_value の値。no_value の場合は confidence、それ以外の場合は x_stix_confidence、それ以外の場合は x_ctix_confidence_score
value, confidence, x_ctix_confidence_score threat.confidence_score 名前が Confidence Score の場合は値から取得した値、それ以外の場合は confidence、それ以外の場合は x_ctix_confidence_score。浮動小数点数に変換されます。
property_label、sha512_value、observable_id、observable_object_id、keyword_label threat.detection_fields さまざまなラベルから統合
説明 threat.description 値が直接コピーされる
value, extensions.extension-definition--ea279b3e-5c71-4632-ac08-831c66a786ba.score threat.risk_score 名前が Risk の場合は値から値、それ以外の場合は拡張機能のスコアを浮動小数点数に変換
metadata.product_name 「STIX」に設定
metadata.vendor_name 「STIX」に設定
dom event.idm.entity.entity.hostname 変更履歴からマッピング
name event.idm.entity.entity.url 変更履歴からマッピング
valid_from event.idm.entity.entity.resource.attribute.labels 変更履歴からマッピング
valid_until event.idm.entity.entity.resource.attribute.labels 変更履歴からマッピング
pattern_version event.idm.entity.entity.resource.attribute.labels 変更履歴からマッピング
observable.object.properties.value.condition event.idm.entity.entity.asset.attribute.labels 変更履歴からマッピング
handling.controlled_structure event.idm.entity.entity.asset.attribute.labels 変更履歴からマッピング
handling.marking_structures.color event.idm.entity.entity.asset.attribute.labels 変更履歴からマッピング
related_indicators.related_indicators event.idm.entity.entity.asset.attribute.labels 変更履歴からマッピング
related_indicators.scope event.idm.entity.entity.asset.attribute.labels 変更履歴からマッピング
indicator_types event.idm.entity.entity.asset.attribute.labels 変更履歴からマッピング
valid_time_positions event.idm.entity.entity.asset.attribute.labels 変更履歴からマッピング
observable.object.properties.custom_properties event.idm.entity.metadata.threat.detection_fields 変更履歴からマッピング
observable.object.properties.value event.ioc.domain_and_ports.domain 変更履歴からマッピング
mitre-extension-definition.extension_type entity.resource.attribute.labels.value 変更履歴からマッピング
sco-extension-definition.extension_type entity.resource.attribute.labels.value 変更履歴からマッピング
x_ctix_confidence_score threat_detail.confidence_score 変更履歴からマッピング
modified timestamp 変更履歴からマッピング
valid_from entity_event.metadata.interval.start_time 変更履歴からマッピング
confidence threat_detail.confidence_score 変更履歴からマッピング
name entity.entity.file.full_path 変更履歴からマッピング
description threat_detail.description 変更履歴からマッピング
external_references.0.source_name entity_event.entity.hostname 変更履歴からマッピング
entity_type IP_ADDRESS 変更履歴からマッピング
entity_type USER 変更履歴からマッピング
entity_type FILE 変更履歴からマッピング
entity_type DOMAIN_NAME 変更履歴からマッピング

変更ログ

このパーサーの変更ログを表示する

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。