收集 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 通过 TAXII 从 Cortex XSOAR 或 XSIAM Threat Intelligence Management (TIM) 中以 STIX 2.1 Feed 的形式公开 IOC。Google SecOps 中的 STIX 解析器会将常见的指示器类型(IPv4 地址、网域、网址、文件哈希和电子邮件地址)映射到 UDM。

准备工作

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

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

在 Cortex TIM 中设置 Palo Alto TAXII 2.1 Feed

TAXII2 Server 集成会将您的 Cortex XSOAR 或 XSIAM 指标发布为提取脚本拉取的出站 TAXII 2.1 Feed。

  1. 在 Cortex XSOAR 或 XSIAM 中,依次前往设置和信息 > 设置 > 集成 > Marketplace,然后安装 TAXII Server 内容包。
  2. 依次前往设置 > 集成 > 实例,搜索 TAXII2 服务器,然后点击添加实例
  3. 提供以下配置详细信息:
    • 名称:输入实例的名称(例如 SecOps-TAXII)。
    • 长时间运行的实例:启用此选项。
    • TAXII2 服务器版本:选择 2.1
    • 凭据:设置提取脚本用于 HTTP 基本身份验证的用户名和密码。
  4. Collection 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 密码 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. 授予该服务账号对以下两个密文的访问权限:

    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 专业人士的解答。