收集 Palo Alto Networks IOC 日志

支持:

本文档介绍了如何使用 STIX over TAXII 将 Palo Alto Networks 失陷指标 (IOC) 注入到 Google Security Operations。stix_taxii 提取脚本(Cloud Run 函数)会按计划从 Palo Alto TAXII 2.1 服务器提取指示器,并使用 STIX 日志类型将其发送到 Google SecOps。

Palo Alto Networks 通过 Cortex XSOAR 或 XSIAM 威胁情报管理 (TIM) 的 TAXII 将 IOC 公开为 STIX 2.1 Feed。Google SecOps 中的 STIX 解析器会将常见的指示器类型(IPv4 地址、网域、网址、文件哈希和电子邮件地址)映射到 UDM。

准备工作

请确保满足以下前提条件:

  • Google SecOps 实例,以及 Google SecOps 提取身份验证文件(服务账号 JSON)和客户 ID。
  • 已启用结算功能的 Google Cloud 项目,并且拥有创建服务账号、Secret Manager Secret、Cloud Run 函数和 Cloud Scheduler 作业的权限。
  • Palo Alto Cortex XSOAR 或 XSIAM(具有威胁情报管理 (TIM) 许可),以及配置集成的特权访问权限。

在 Cortex TIM 中设置 Palo Alto TAXII 2.1 Feed

TAXII2 Server 集成会将您的 Cortex XSOAR 或 XSIAM 指示器发布为出站 TAXII 2.1 Feed,供注入脚本拉取。

  1. 在 Cortex XSOAR 或 XSIAM 中,依次前往设置和信息 > 设置 > 集成 > Marketplace,然后安装 TAXII 服务器内容包。
  2. 依次前往设置 > 集成 > 实例,搜索 TAXII2 服务器,然后点击添加实例。
  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 注入服务账号 Secret:

    gcloud secrets create secops-ingestion-sa --data-file=./ingestion-auth.json
    
  2. 创建 TAXII 密码 Secret:

    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. 向其授予对这两个 Secret 的访问权限:

    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_port,ipv4-addr → src_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 专业人士的解答。