收集 Palo Alto Networks IOC 記錄

支援語言:

本文說明如何透過 TAXII 上的 STIX,將 Palo Alto Networks 侵害指標 (IOC) 擷取至 Google Security Operations。stix_taxii 擷取指令碼 (Cloud Run 函式) 會依排程從 Palo Alto TAXII 2.1 伺服器提取指標,並使用 STIX 記錄類型將指標傳送至 Google SecOps。

Palo Alto Networks 會透過 TAXII,從 Cortex XSOAR 或 XSIAM 威脅情報管理 (TIM) 服務,將 IOC 顯示為 STIX 2.1 資訊提供。Google SecOps 中的 STIX 剖析器會將常見指標類型 (IPv4 位址、網域、網址、檔案雜湊和電子郵件地址) 對應至 UDM。

事前準備

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

  • Google SecOps 執行個體,以及 Google SecOps 擷取驗證檔案 (服務帳戶 JSON) 和客戶 ID。
  • 已啟用帳單的專案,以及建立服務帳戶、Secret Manager 密鑰、Cloud Run functions 和 Cloud Scheduler 工作的權限。 Google Cloud
  • Palo Alto Cortex XSOARXSIAM,並具備威脅情報管理 (TIM) 授權,以及設定整合的權限存取權。

在 Cortex TIM 中設定 Palo Alto TAXII 2.1 資訊提供

TAXII2 伺服器整合功能會將 Cortex XSOAR 或 XSIAM 指標發布為外送 TAXII 2.1 資訊提供,供擷取指令碼提取。

  1. 在 Cortex XSOAR 或 XSIAM 中,從「設定與資訊」>「設定」>「整合」>「市集」安裝 TAXII 伺服器內容套件。
  2. 依序前往「設定」>「整合」>「執行個體」,搜尋「TAXII2 Server」,然後按一下「新增執行個體」
  3. 提供下列設定詳細資料:
    • 名稱:輸入執行個體的名稱 (例如 SecOps-TAXII)。
    • 長時間執行的執行個體:啟用這個選項。
    • TAXII2 伺服器版本:選取 2.1
    • 憑證:設定擷取指令碼用於 HTTP 基本驗證的使用者名稱和密碼。
  4. 在「集合 JSON」欄位中,貼上下列內容。這個檔案會發布名為 SecOpsIOCs 的集合,其中包含 STIX 剖析器支援的指標類型:

    {
        "SecOpsIOCs": {
            "query": "type:IP or type:Domain or type:URL or type:File or type:Email",
            "description": "Indicators exported to Google SecOps"
        }
    }
    
  5. 按一下「儲存並結束」,然後啟用執行個體。確認執行個體狀態顯示為「執行中」。

  6. 在 Google SecOps 練習環境或整合的指令列中,執行下列指令並儲存輸出內容:

    !taxii-server-info
    !taxii-server-list-collections
    
  7. 在指令輸出中,儲存下列值以供部署步驟使用:

    • 導覽網址!taxii-server-info 傳回的 API 根網址 (例如 https://ext-TENANT.crtx.REGION.paloaltonetworks.com/xsoar/instance/execute/SecOps-TAXII/threatintel/)。
    • 集合名稱SecOpsIOCs
    • 「使用者名稱」和「密碼」:您設定的基本驗證憑證。

啟用必要的 Google Cloud API

  1. 在 Google Cloud 控制台中開啟 Cloud Shell,然後執行下列指令:

    gcloud services enable \
        cloudfunctions.googleapis.com \
        cloudbuild.googleapis.com \
        cloudscheduler.googleapis.com \
        secretmanager.googleapis.com
    

將憑證儲存在 Secret Manager 中

指令碼會從 Secret Manager 讀取 Google SecOps 服務帳戶 JSON 和 TAXII 密碼。

  1. 從擷取驗證檔案建立 Google SecOps 擷取服務帳戶密鑰:

    gcloud secrets create secops-ingestion-sa --data-file=./ingestion-auth.json
    
  2. 建立 TAXII 密碼私密金鑰:

    printf '%s' 'YOUR_TAXII_PASSWORD' | gcloud secrets create taxii-password --data-file=-
    
  3. 請以 projects/PROJECT_ID/secrets/SECRET_NAME/versions/latest 格式儲存這兩個資源名稱。您會在 .env.yml 中使用這些值。

為函式建立服務帳戶

  1. 為 Cloud Run 函式建立執行階段服務帳戶:

    gcloud iam service-accounts create stix-taxii-sa \
        --display-name="STIX/TAXII ingestion function"
    
  2. 授予存取下列兩個密鑰的權限:

    gcloud secrets add-iam-policy-binding secops-ingestion-sa \
        --member="serviceAccount:stix-taxii-sa@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/secretmanager.secretAccessor"
    gcloud secrets add-iam-policy-binding taxii-password \
        --member="serviceAccount:stix-taxii-sa@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/secretmanager.secretAccessor"
    

部署擷取指令碼

stix_taxii 擷取指令是 Cloud Run 函式,可從 TAXII 伺服器提取指標,並使用 Ingestion API 將指標串流至 Google SecOps。一律使用 STIX 記錄類型擷取資料。

  1. Cloud Shell 中,複製擷取指令碼存放區:

    git clone https://github.com/chronicle/ingestion-scripts.git
    cp -r ingestion-scripts/common ingestion-scripts/stix_taxii/common
    cd ingestion-scripts/stix_taxii
    
  2. 建立名為 .env.yml 的檔案,並在其中加入下列內容。將預留位置值替換為先前儲存的值:

    CHRONICLE_CUSTOMER_ID: "YOUR_CUSTOMER_ID"
    CHRONICLE_REGION: "us"
    CHRONICLE_SERVICE_ACCOUNT: "projects/PROJECT_ID/secrets/secops-ingestion-sa/versions/latest"
    TAXII_VERSION: "2.1"
    TAXII_DISCOVERY_URL: "https://ext-TENANT.crtx.REGION.paloaltonetworks.com/xsoar/instance/execute/SecOps-TAXII/threatintel/"
    TAXII_COLLECTION_NAMES: "SecOpsIOCs"
    TAXII_USERNAME: "YOUR_TAXII_USERNAME"
    TAXII_PASSWORD_SECRET_PATH: "projects/PROJECT_ID/secrets/taxii-password/versions/latest"
    POLL_INTERVAL: "60"
    
  3. 部署函式:

    gcloud functions deploy stix-taxii-ingestion \
        --gen2 \
        --entry-point main \
        --trigger-http \
        --runtime python312 \
        --region us-central1 \
        --service-account stix-taxii-sa@PROJECT_ID.iam.gserviceaccount.com \
        --timeout 540 \
        --memory 512MB \
        --no-allow-unauthenticated \
        --env-vars-file .env.yml
    
  4. 從部署輸出內容中儲存函式的觸發網址 (例如 https://us-central1-PROJECT_ID.cloudfunctions.net/stix-taxii-ingestion)。

使用 Cloud Scheduler 排定函式執行時間

  1. 將可叫用函式的權限授予該服務帳戶:

    gcloud functions add-invoker-policy-binding stix-taxii-ingestion \
        --region=us-central1 \
        --member="serviceAccount:stix-taxii-sa@PROJECT_ID.iam.gserviceaccount.com"
    
  2. 建立排程器工作,每小時呼叫函式 (頻率與 POLL_INTERVAL 相符):

    gcloud scheduler jobs create http stix-taxii-scheduler \
        --location=us-central1 \
        --schedule="0 */1 * * *" \
        --uri="FUNCTION_TRIGGER_URL" \
        --http-method=POST \
        --oidc-service-account-email="stix-taxii-sa@PROJECT_ID.iam.gserviceaccount.com" \
        --oidc-token-audience="FUNCTION_TRIGGER_URL"
    

驗證 Deployment

  1. 觸發初始執行:

    gcloud scheduler jobs run stix-taxii-scheduler --location=us-central1
    
  2. 查看函式記錄:

    gcloud functions logs read stix-taxii-ingestion --region=us-central1 --gen2 --limit=50
    
  3. 在 Google SecOps 中,搜尋 STIX 記錄類型事件,確認指標已擷取。

UDM 對應表

記錄欄位 UDM 對應 邏輯
observable.object.properties.type categorization 直接對應
type categorization 直接對應
x_ctix_confidence_score confidence_score 已重新命名/對應
name domain_and_ports.domain 直接對應
observable.object.properties.value domain_and_ports.domain 直接對應
value domain_and_ports.domain 直接對應
type feed_name 對應:"ipv4","ipv4-addr", "scan_ip", "mal_ip"STIX-IOC、`"phish_domain"、"domain"、"...
src_ip ip_and_ports.ip_address 直接對應
value ip_and_ports.ip_address 直接對應
src_port ip_and_ports.ports 已合併
type ip_and_ports.ports 已對應:"ipv4","ipv4-addr", "scan_ip", "mal_ip"src_portipv4-addrsrc_port
created metadata.event_timestamp 已剖析為 ISO8601
modified metadata.event_timestamp 已剖析為 ISO8601
timestamp metadata.event_timestamp 已剖析為 ISO8601
valid_from metadata.event_timestamp 已剖析為 ISO8601
valid_until metadata.event_timestamp 已剖析為 ISO8601
不適用 feed_name 常數:STIX-IOC

變更記錄

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

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