收集 DHS IOC 記錄

剖析器版本:1.0

支援的國家/地區:

本文說明如何使用 Google Cloud Storage V2,將美國國土安全部 (DHS) IOC 記錄檔擷取至 Google Security Operations。

美國國土安全部 (DHS) 會透過自動指標共用 (AIS) 計畫發布威脅情報,以 STIX/TAXII 格式提供入侵指標,例如惡意 IP 位址、網域、網址和檔案雜湊。由於 AIS 會以可下載的 STIX 組合形式提供 IOC 資料,因此您必須將這些檔案匯出至 Google Cloud Storage (GCS) bucket,然後設定 Google SecOps 動態饋給來擷取這些檔案。

事前準備

請確認您已完成下列事前準備事項:

  • Google SecOps 執行個體
  • 已啟用 Cloud Storage API 的 Google Cloud 專案
  • 建立及管理 GCS bucket 的權限
  • 管理 Google Cloud Storage 值區 IAM 政策的權限
  • 有效的 DHS AIS 參與者帳戶,可存取 TAXII 伺服器或 AIS 入口網站
  • 用於 TAXII 伺服器驗證的 AIS 用戶端憑證和私密金鑰檔案

建立 Google Cloud Storage bucket

  1. 前往 Google Cloud 控制台
  2. 選取專案或建立新專案。
  3. 在導覽選單中,依序前往「Cloud Storage」>「Bucket」
  4. 按一下「建立值區」
  5. 請提供下列設定詳細資料:

    設定
    為 bucket 命名 輸入全域不重複的名稱 (例如 dhs-ioc-logs)
    位置類型 根據需求選擇 (區域、雙區域、多區域)
    位置 選取最接近 Google SecOps 執行個體的位置 (例如 us-central1)
    儲存空間級別 標準 (建議用於經常存取的記錄)
    存取控管 統一 (建議)
    保護工具 選用:啟用物件版本管理或保留政策
  6. 點選「建立」

設定將 DHS IOC 資料自動匯出至 GCS

DHS 會透過 AIS TAXII 伺服器,以 STIX 格式發布 IOC 資料。設定自動化管道,依排程提取指標並直接寫入 GCS。

使用 Cloud Scheduler 觸發的 Cloud Build,執行容器化工作,從 AIS TAXII 伺服器擷取 STIX 組合,並寫入 GCS。

  1. 將 AIS 用戶端憑證和金鑰儲存在 Secret Manager:

    1. GCP 控制台中,依序前往「Security」(安全性) >「Secret Manager」
    2. 點選「建立密鑰」
    3. 建立兩個密鑰:
      • 名稱ais-client-cert:AIS 用戶端憑證 PEM 檔案的內容。
      • 名稱ais-client-key:AIS 用戶端私密金鑰 PEM 檔案的內容。
  2. 為匯出工作建立服務帳戶:

    1. GCP 控制台中,依序前往「IAM & Admin」(IAM 與管理) >「Service Accounts」(服務帳戶)
    2. 按一下「Create Service Account」(建立服務帳戶)
    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 主控台的「Cloud Scheduler」
    2. 點選「建立工作」
    3. 請提供下列設定詳細資料:

      設定
      名稱 dhs-ioc-export-hourly
      區域 選取與 GCS bucket 相同的區域
      頻率 0 * * * * (每小時)
      時區 世界標準時間 (建議)
      目標類型 HTTP
      網址 https://cloudbuild.googleapis.com/v1/projects/YOUR_PROJECT_ID/builds
      HTTP 方法 POST
      驗證標頭 新增 OAuth 權杖
      服務帳戶 dhs-ioc-export-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com
    4. 點選「建立」

選項 2:使用 Cron 的 Compute Engine VM (替代方案)

如果無法使用 Cloud Build,請使用小型 Compute Engine VM 搭配 cron 工作,擷取 IOC 資料並寫入 GCS。

  1. 建立 Compute Engine VM:

    1. GCP 主控台中,前往「Compute Engine」>「VM 執行個體」
    2. 點選「建立執行個體」
    3. 選取小型機型 (例如 e2-micro)。
    4. 在「身分及 API 存取權」下方,選取具有「Storage 物件管理員」角色的服務帳戶。
    5. 點選「建立」
  2. 透過 SSH 連線至 VM,然後建立匯出指令碼 (/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. 按一下「新增動態消息」
  3. 按一下「設定單一動態饋給」
  4. 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如 DHS IOC Feed)。
  5. 選取「Google Cloud Storage V2」做為「來源類型」
  6. 選取「國土安全部」做為「記錄類型」
  7. 按一下「取得服務帳戶」
  8. 系統會顯示專屬服務帳戶電子郵件地址,例如:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. 複製這個電子郵件地址,以便在下一步中使用。

將 IAM 權限授予 Google SecOps 服務帳戶

Google SecOps 服務帳戶需要 GCS bucket 的「Storage 物件檢視者」角色。

  1. 依序前往「Cloud Storage」>「Buckets」
  2. 點按 bucket 名稱 (例如 dhs-ioc-logs)。
  3. 前往「權限」分頁標籤。
  4. 按一下「授予存取權」
  5. 請提供下列設定詳細資料:
    • 新增主體:貼上 Google SecOps 服務帳戶電子郵件地址 (例如 chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com)。
    • 指派角色:選取「Storage 物件檢視者」
  6. 按一下 [儲存]

設定 Google SecOps 動態饋給

  1. 依序前往「SIEM 設定」>「動態饋給」
  2. 按一下「新增動態消息」
  3. 按一下「設定單一動態饋給」
  4. 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如 DHS IOC Feed)。
  5. 選取「Google Cloud Storage V2」做為「來源類型」
  6. 選取「國土安全部」做為「記錄類型」
  7. 點選「下一步」
  8. 指定下列輸入參數的值:

    • 儲存空間 bucket URL:輸入 GCS bucket URI:

      gs://dhs-ioc-logs/ioc-data/
      
      • 請將 dhs-ioc-logs 替換為您的 GCS bucket 名稱。
      • ioc-data 替換為您設定的前置字串路徑。
    • 來源刪除選項:根據偏好設定選取刪除選項:

      • 永不:移轉後一律不刪除任何檔案 (建議用於測試)。
      • 刪除已轉移的檔案和空白目錄:成功轉移後刪除檔案和空白目錄。

    • 檔案存在時間上限:包含在過去天數內修改的檔案 (預設為 180 天)。

    • 資產命名空間資產命名空間

    • 擷取標籤:要套用至這個動態饋給事件的標籤。

  9. 點選「下一步」

  10. 在「Finalize」(完成) 畫面中檢查新的動態饋給設定,然後按一下「Submit」(提交)

UDM 對應表

記錄欄位 UDM 對應 邏輯
entity.application 應用程式名稱或 ID
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 位址
國家/地區 entity.location.country_or_region 國家/地區
administrativeArea entity.location.state 州或省
通訊埠 entity.port 通訊埠編號
file_name_label entity.resource.attribute.labels 資源的屬性標籤
網址 entity.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 目標網址
malware_category ttp_security_result.category_details TTP 的類別詳細資料
ttp_id_label ttp_security_result.detection_fields TTP 的偵測欄位
ttp_description ttp_security_result.description 戰術、技術和程序說明
ttp_summary ttp_security_result.summary TTP 摘要

變更記錄

查看這個剖析器的變更記錄

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。