收集 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 XSOAR 或 XSIAM,以及用于配置集成的特权访问权限。
在 Cortex TIM 中设置 Palo Alto TAXII 2.1 Feed
TAXII2 Server 集成会将您的 Cortex XSOAR 或 XSIAM 指标发布为提取脚本拉取的出站 TAXII 2.1 Feed。
- 在 Cortex XSOAR 或 XSIAM 中,依次前往设置和信息 > 设置 > 集成 > Marketplace,然后安装 TAXII Server 内容包。
- 依次前往设置 > 集成 > 实例,搜索 TAXII2 服务器,然后点击添加实例。
- 提供以下配置详细信息:
- 名称:输入实例的名称(例如
SecOps-TAXII)。 - 长时间运行的实例:启用此选项。
- TAXII2 服务器版本:选择 2.1。
- 凭据:设置提取脚本用于 HTTP 基本身份验证的用户名和密码。
- 名称:输入实例的名称(例如
在 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" } }点击保存并退出,然后启用实例。确认实例状态显示为“正在运行”。
在 Google SecOps 演练环境中或集成功能的命令栏中,运行以下命令并保存输出:
!taxii-server-info !taxii-server-list-collections在命令输出中,保存以下值以供部署步骤使用:
- 发现网址:由
!taxii-server-info返回的 API 根网址(例如https://ext-TENANT.crtx.REGION.paloaltonetworks.com/xsoar/instance/execute/SecOps-TAXII/threatintel/)。 - 集合名称:
SecOpsIOCs。 - 用户名和密码:您设置的基本身份验证凭据。
- 发现网址:由
启用必需的 Google Cloud API
在 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 密码。
根据您的提取身份验证文件创建 Google SecOps 提取服务账号密钥:
gcloud secrets create secops-ingestion-sa --data-file=./ingestion-auth.json创建 TAXII 密码 Secret:
printf '%s' 'YOUR_TAXII_PASSWORD' | gcloud secrets create taxii-password --data-file=-以
projects/PROJECT_ID/secrets/SECRET_NAME/versions/latest格式保存这两个资源名称。您可以在.env.yml中使用它们。
为函数创建服务账号
为 Cloud Run 函数创建运行时服务账号:
gcloud iam service-accounts create stix-taxii-sa \ --display-name="STIX/TAXII ingestion function"授予该服务账号对以下两个密文的访问权限:
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 日志类型进行提取。
在 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创建名为
.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"部署函数的方法如下:
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保存部署输出中的函数触发器网址(例如
https://us-central1-PROJECT_ID.cloudfunctions.net/stix-taxii-ingestion)。
使用 Cloud Scheduler 安排函数运行时间
授予服务账号调用该函数的权限:
gcloud functions add-invoker-policy-binding stix-taxii-ingestion \ --region=us-central1 \ --member="serviceAccount:stix-taxii-sa@PROJECT_ID.iam.gserviceaccount.com"创建一个每小时调用一次该函数的调度器作业(使频率与
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
触发初始运行:
gcloud scheduler jobs run stix-taxii-scheduler --location=us-central1查看函数日志:
gcloud functions logs read stix-taxii-ingestion --region=us-central1 --gen2 --limit=50在 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 |