DHS IOC のログを収集する

パーサーのバージョン: 1.0

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

このドキュメントでは、Google Cloud Storage V2 を使用して国土安全保障省(DHS)の IOC ログを Google Security Operations に取り込む方法について説明します。

DHS は、自動インジケーター共有(AIS)プログラムを通じて脅威インテリジェンスを配布し、悪意のある IP アドレス、ドメイン、URL、ファイルハッシュなどのセキュリティ侵害インジケーターを STIX/TAXII 形式で提供しています。AIS は IOC データをダウンロード可能な STIX バンドルとして提供するため、これらのファイルを Google Cloud Storage(GCS)バケットにエクスポートしてから、Google SecOps フィードを構成して取り込む必要があります。

始める前に

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

  • Google SecOps インスタンス
  • Cloud Storage API が有効になっている Google Cloud プロジェクト
  • GCS バケットを作成および管理する権限
  • GCS バケットの IAM ポリシーを管理する権限
  • TAXII サーバーまたは AIS ポータルにアクセスできる有効な DHS AIS 参加者アカウント
  • TAXII サーバー認証用の AIS クライアント証明書と秘密鍵ファイル

Google Cloud Storage バケットを作成する

  1. Google Cloud コンソールに移動します。
  2. プロジェクトを選択するか、新しいプロジェクトを作成します。
  3. ナビゲーション メニューで、[Cloud Storage > バケット] に移動します。
  4. [バケットを作成] をクリックします。
  5. 次の構成情報を提供してください。

    設定 値
    バケットに名前を付ける グローバルに一意の名前(dhs-ioc-logs など)を入力します。
    ロケーション タイプ ニーズに応じて選択します(リージョン、デュアルリージョン、マルチリージョン)。
    ロケーション Google SecOps インスタンスに最も近いロケーションを選択します(例: us-central1)。
    ストレージ クラス Standard(アクセス頻度の高いログにおすすめ)
    アクセス制御 均一(推奨)
    保護ツール 省略可: オブジェクトのバージョニングまたは保持ポリシーを有効にする
  6. [作成] をクリックします。

DHS IOC データの GCS への自動エクスポートを構成する

DHS は、AIS TAXII サーバーを介して STIX 形式の IOC データを配布します。スケジュールに従ってインジケーターを pull し、GCS に直接書き込むように自動化パイプラインを構成します。

Cloud Scheduler によってトリガーされる Cloud Build を使用して、AIS TAXII サーバーから STIX バンドルを取得し、GCS に書き込むコンテナ化されたジョブを実行します。

  1. AIS クライアント証明書と鍵を Secret Manager に保存します。

    1. GCP コンソールで、[セキュリティ> Secret Manager] に移動します。
    2. [シークレットの作成] をクリックします。
    3. 2 つの Secret を作成します。
      • 名前: ais-client-cert、値: AIS クライアント証明書 PEM ファイルの内容。
      • 名前: ais-client-key、値: AIS クライアントの秘密鍵 PEM ファイルの内容。
  2. エクスポート ジョブのサービス アカウントを作成します。

    1. GCP コンソールで、[IAM と管理>サービス アカウント] に移動します。
    2. [サービス アカウントを作成] をクリックします。
    3. 次の構成情報を指定します。
      • サービス アカウント名: 「dhs-ioc-export-sa」と入力します。
      • サービス アカウントの説明: Service account for automated DHS IOC export to GCS と入力します。
    4. [作成して続行] をクリックします。
    5. 次のロールを追加します。
      • Storage オブジェクト管理者(GCS にファイルを書き込むため)
      • Cloud Build 編集者(Cloud Build ジョブを実行するため)
      • Secret Manager のシークレット アクセサー(AIS 証明書を読み取るため)
    6. [完了] をクリックします。
  3. Cloud Build 構成ファイル(cloudbuild.yaml)を作成します。

    steps:
      - name: 'gcr.io/cloud-builders/gcloud'
        entrypoint: 'bash'
        args:
          - '-c'
          - |
            apt-get update && apt-get install -y curl
            # Retrieve AIS certificates from Secret Manager
            gcloud secrets versions access latest --secret=ais-client-cert > /tmp/ais-cert.pem
            gcloud secrets versions access latest --secret=ais-client-key > /tmp/ais-key.pem
            # Fetch IOC data from AIS TAXII server
            TIMESTAMP=$(date -u +%Y%m%d_%H%M%S)
            FROM=$(date -u -d '-60 minutes' +"%Y-%m-%dT%H:%M:%SZ")
            curl -s --cert /tmp/ais-cert.pem --key /tmp/ais-key.pem \
              -H "Accept: application/taxii+json;version=2.1" \
              "https://ais2.cisa.dhs.gov/taxii2/ais2/collections/${_COLLECTION_ID}/objects?added_after=$${FROM}" \
              -o /workspace/dhs_ioc_$${TIMESTAMP}.json
            # Upload to GCS
            gcloud storage cp /workspace/dhs_ioc_$${TIMESTAMP}.json \
              gs://${_BUCKET_NAME}/ioc-data/
            # Clean up certificates
            rm -f /tmp/ais-cert.pem /tmp/ais-key.pem
    substitutions:
      _BUCKET_NAME: 'dhs-ioc-logs'
      _COLLECTION_ID: 'YOUR_AIS_COLLECTION_ID'
    
  4. ビルドをトリガーする Cloud Scheduler ジョブを作成します。

    1. GCP Console で、[Cloud Scheduler] に移動します。
    2. [ジョブを作成] をクリックします。
    3. 次の構成情報を提供してください。

      設定 値
      名前 dhs-ioc-export-hourly
      リージョン GCS バケットと同じリージョンを選択する
      周波数 0 * * * *(1 時間ごと)
      タイムゾーン UTC(推奨)
      ターゲット タイプ HTTP
      URL https://cloudbuild.googleapis.com/v1/projects/YOUR_PROJECT_ID/builds
      HTTP メソッド POST
      Auth ヘッダー OAuth トークンを追加
      サービス アカウント dhs-ioc-export-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com
    4. [作成] をクリックします。

オプション 2: cron を使用する Compute Engine VM(代替)

Cloud Build が使用できない場合は、cron ジョブを含む小規模な Compute Engine VM を使用して IOC データを取得し、GCS に書き込みます。

  1. Compute Engine VM を作成する

    1. GCP Console で、[Compute Engine] > [VM インスタンス] に移動します。
    2. [インスタンスを作成] をクリックします。
    3. 小規模なマシンタイプ(e2-micro など)を選択します。
    4. [ID と API へのアクセス] で、Storage オブジェクト管理者ロールを持つサービス アカウントを選択します。
    5. [作成] をクリックします。
  2. VM に SSH 接続し、エクスポート スクリプト(/opt/dhs-ioc/export.sh)を作成します。

    #!/usr/bin/env bash
    set -euo pipefail
    
    TAXII_URL="https://ais2.cisa.dhs.gov/taxii2"
    API_ROOT="ais2"
    COLLECTION_ID="YOUR_AIS_COLLECTION_ID"
    CERT="/etc/ais/client-cert.pem"
    KEY="/etc/ais/client-key.pem"
    BUCKET="dhs-ioc-logs"
    
    TIMESTAMP=$(date -u +%Y%m%d_%H%M%S)
    FROM=$(date -u -d '-60 minutes' +"%Y-%m-%dT%H:%M:%SZ")
    
    curl -s --cert "$CERT" --key "$KEY" \
      -H "Accept: application/taxii+json;version=2.1" \
      "${TAXII_URL}/${API_ROOT}/collections/${COLLECTION_ID}/objects?added_after=${FROM}" \
      -o "/tmp/dhs_ioc_${TIMESTAMP}.json"
    
    gcloud storage cp "/tmp/dhs_ioc_${TIMESTAMP}.json" "gs://${BUCKET}/ioc-data/"
    rm -f "/tmp/dhs_ioc_${TIMESTAMP}.json"
    
  3. スクリプトを実行可能にして、cron でスケジュールします。

    chmod +x /opt/dhs-ioc/export.sh
    (crontab -l ; echo "0 * * * * /opt/dhs-ioc/export.sh >> /var/log/dhs-ioc-export.log 2>&1") | crontab -
    

Google SecOps サービス アカウントを取得する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. [単一フィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: DHS IOC Feed)。
  5. [ソースタイプ] として [Google Cloud Storage V2] を選択します。
  6. [ログタイプ] として [Department of Homeland Security] を選択します。
  7. [サービス アカウントを取得する] をクリックします。
  8. 一意のサービス アカウントのメールアドレスが表示されます(例:)。

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. このメールアドレスをコピーして、次のステップで使用します。

Google SecOps サービス アカウントに IAM 権限を付与する

Google SecOps サービス アカウントには、GCS バケットに対する Storage オブジェクト閲覧者のロールが必要です。

  1. [Cloud Storage] > [バケット] に移動します。
  2. バケット名(dhs-ioc-logs など)をクリックします。
  3. [権限] タブに移動します。
  4. [アクセス権を付与] をクリックします。
  5. 次の構成情報を指定します。
    • プリンシパルを追加: Google SecOps サービス アカウントのメールアドレス(例: chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com)を貼り付けます。
    • ロールを割り当てる: [Storage オブジェクト閲覧者] を選択します。
  6. [保存] をクリックします。

Google SecOps フィードを構成する

  1. [SIEM 設定] > [フィード] に移動します。
  2. [Add New Feed] をクリックします。
  3. [単一フィードを設定] をクリックします。
  4. [フィード名] フィールドに、フィードの名前を入力します(例: DHS IOC Feed)。
  5. [ソースタイプ] として [Google Cloud Storage V2] を選択します。
  6. [ログタイプ] として [Department of Homeland Security] を選択します。
  7. [次へ] をクリックします。
  8. 次の入力パラメータの値を指定します。

    • ストレージ バケットの URL: GCS バケットの URI を入力します。

      gs://dhs-ioc-logs/ioc-data/
      
      • dhs-ioc-logs は、GCS バケット名に置き換えます。
      • ioc-data は、構成したプレフィックス パスに置き換えます。
    • Source deletion option: 必要に応じて削除オプションを選択します。

      • なし: 転送後にファイルを削除しません(テストにおすすめ)。
      • 転送されたファイルと空のディレクトリを削除する: 転送が完了した後にファイルと空のディレクトリを削除します。

    • ファイルの最大経過日数: 過去の日数以内に変更されたファイルを含めます(デフォルトは 180 日)。

    • アセットの名前空間: アセットの名前空間。

    • Ingestion labels: このフィードのイベントに適用されるラベル。

  9. [次へ] をクリックします。

  10. [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
entity.application アプリケーション名または識別子
observable_id entity.asset.asset_id アセット ID
object_id entity.asset.product_object_id 商品オブジェクト ID
hash_value entity.file.md5 ファイルの MD5 ハッシュ
hash_value entity.file.sha1 ファイルの SHA1 ハッシュ
hash_value entity.file.sha256 ファイルの SHA256 ハッシュ
file_size entity.file.size ファイルのサイズ(バイト単位)
fuzzy_hash_value entity.file.ssdeep ファイルの SSDEEP ハッシュ
file_path entity.file.full_path フルファイルパス
ip_address_value entity.ip IP アドレス
country entity.location.country_or_region 国または地域
administrativeArea entity.location.state 都道府県
ポート entity.port ポート番号
file_name_label entity.resource.attribute.labels リソースの属性ラベル
URL entity.url URL
organisationInfo entity.user.department 部門
email_address、email entity.user.email_addresses メール アドレス
organisationName entity.user.userid ユーザー ID
ioc.domain_and_ports.domain ドメイン名
indicator_type、confidence_value ioc.feed_name フィード名
ip_address_value、target_ip ioc.ip_and_ports.ip_address IP アドレス
ポート ioc.ip_and_ports.ports ポート
description、desc1、ttp_description metadata.description 説明
entity_type metadata.entity_type エンティティのタイプ
start_time metadata.interval.start_time インターバルの開始時刻
object_id metadata.product_entity_id 商品エンティティ ID
sightings_count_label metadata.source_labels ソースラベル
security_result_data、ttp_security_result metadata.threat 脅威に関する情報
metadata.vendor_name ベンダー名または会社名
metadata.product_name 製品名
address_label、subject_label、file_label security_result.about.labels セキュリティ結果に関するラベル
indicator_type security_result_data.category_details カテゴリの詳細
desc1 security_result_data.description 説明
confidence_value security_result_data.severity 重大度
host、domain_name target.hostname ターゲット ホスト名
target_ip target.ip ターゲット IP アドレス
domain_name target.url ターゲット URL
malware_category ttp_security_result.category_details TTP のカテゴリの詳細
ttp_id_label ttp_security_result.detection_fields TTP の検出フィールド
ttp_description ttp_security_result.description TTP の説明
ttp_summary ttp_security_result.summary TTP の概要

変更ログ

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

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