收集 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) 存储桶,然后配置 Google SecOps Feed 以注入这些文件。
准备工作
请确保满足以下前提条件:
- Google SecOps 实例
- 启用了 Cloud Storage API 的 Google Cloud 项目
- 创建和管理 GCS 存储分区的权限
- 管理 GCS 存储分区的 IAM 政策的权限
- 有效的 DHS AIS 参与者账号,可访问 TAXII 服务器或 AIS 门户
- 用于 TAXII 服务器身份验证的 AIS 客户端证书和私钥文件
创建 Google Cloud Storage 存储桶
- 前往 Google Cloud 控制台。
- 选择您的项目或创建新项目。
- 在导航菜单中,依次前往 Cloud Storage > 存储分区。
- 点击创建存储分区。
提供以下配置详细信息:
设置 值 为存储桶命名 输入一个全局唯一的名称(例如 dhs-ioc-logs)位置类型 根据您的需求进行选择(区域级、双区域、多区域) 位置 选择离您的 Google SecOps 实例最近的位置(例如 us-central1)存储类别 标准(建议用于经常访问的日志) 访问权限控制 均匀(推荐) 保护工具 可选:启用对象版本控制或保留政策 点击创建。
配置将 DHS IOC 数据自动导出到 GCS
DHS 通过其 AIS TAXII 服务器分发 STIX 格式的 IOC 数据。配置自动化流水线,以按计划提取指标并将其直接写入 GCS。
选项 1:Cloud Scheduler 与 Cloud Build(推荐)
使用由 Cloud Scheduler 触发的 Cloud Build 来运行容器化作业,该作业从 AIS TAXII 服务器提取 STIX 软件包并将其写入 GCS。
将 AIS 客户端证书和密钥存储在 Secret Manager 中:
- 在 GCP 控制台中,依次前往安全性 > Secret Manager。
- 点击创建密钥。
- 创建两个 Secret:
- 名称:
ais-client-cert,值:AIS 客户端证书 PEM 文件的内容。 - 名称:
ais-client-key,值:AIS 客户端私钥 PEM 文件的内容。
- 名称:
为导出作业创建服务账号:
- 在 GCP 控制台中,依次前往 IAM 和管理 > 服务账号。
- 点击创建服务账号。
- 提供以下配置详细信息:
- 服务账号名称:输入
dhs-ioc-export-sa - 服务账号说明:输入
Service account for automated DHS IOC export to GCS
- 服务账号名称:输入
- 点击创建并继续。
- 添加以下角色:
- Storage Object Admin(用于将文件写入 GCS)
- Cloud Build 编辑者(用于运行 Cloud Build 作业)
- Secret Manager Secret Accessor(用于读取 AIS 证书)
- 点击完成。
创建 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'创建 Cloud Scheduler 作业以触发构建:
- 在 GCP Console 中,前往 Cloud Scheduler。
- 点击创建作业。
提供以下配置详细信息:
设置 值 名称 dhs-ioc-export-hourly区域 选择与您的 GCS 存储桶相同的区域 频率 0 * * * *(每小时)时区 世界协调时间 (UTC)(推荐) 目标类型 HTTP 网址 https://cloudbuild.googleapis.com/v1/projects/YOUR_PROJECT_ID/buildsHTTP 方法 POST 身份验证标头 添加 OAuth 令牌 服务账号 dhs-ioc-export-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com点击创建。
方法 2:使用 cron 的 Compute Engine 虚拟机(替代方法)
如果 Cloud Build 不可用,请使用一个小型 Compute Engine 虚拟机,通过 cron 作业拉取 IOC 数据并写入 GCS。
创建 Compute Engine 虚拟机:
- 在 GCP 控制台中,前往 Compute Engine > 虚拟机实例。
- 点击创建实例。
- 选择小型机器类型(例如
e2-micro)。 - 在身份和 API 访问权限下,选择具有 Storage Object Admin 角色的服务账号。
- 点击创建。
通过 SSH 连接到虚拟机,然后创建导出脚本 (
/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"将脚本设为可执行文件,并使用 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 服务账号
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
DHS IOC Feed)。 - 选择 Google Cloud Storage V2 作为来源类型。
- 选择美国国土安全部作为日志类型。
- 点击获取服务账号。
系统会显示一个唯一的服务账号电子邮件地址,例如:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com复制此电子邮件地址,以便在下一步中使用。
向 Google SecOps 服务账号授予 IAM 权限
Google SecOps 服务账号需要您的 GCS 存储桶的 Storage Object Viewer 角色。
- 前往 Cloud Storage > 存储分区。
- 点击您的存储桶名称(例如
dhs-ioc-logs)。 - 前往权限标签页。
- 点击授予访问权限。
- 提供以下配置详细信息:
- 添加主账号:粘贴 Google SecOps 服务账号电子邮件地址(例如
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com)。 - 分配角色:选择 Storage Object Viewer。
- 添加主账号:粘贴 Google SecOps 服务账号电子邮件地址(例如
点击保存。
配置 Google SecOps Feed
- 依次前往 SIEM 设置 > Feed。
- 点击添加新 Feed。
- 点击配置单个 Feed。
- 在 Feed 名称字段中,输入 Feed 的名称(例如
DHS IOC Feed)。 - 选择 Google Cloud Storage V2 作为来源类型。
- 选择美国国土安全部作为日志类型。
- 点击下一步。
为以下输入参数指定值:
存储桶网址:输入 GCS 存储桶 URI:
gs://dhs-ioc-logs/ioc-data/- 将
dhs-ioc-logs替换为您的 GCS 存储桶名称。 - 将
ioc-data替换为您配置的前缀路径。
- 将
来源删除选项:根据您的偏好选择删除选项:
- 永不:转移后永不删除任何文件(建议用于测试)。
删除已转移的文件和空目录:成功转移后删除文件和空目录。
文件存在时间上限:包含在过去指定天数内修改的文件(默认值为 180 天)。
资产命名空间:资产命名空间。
注入标签:要应用于此 Feed 中事件的标签。
点击下一步。
在最终确定界面中查看新的 Feed 配置,然后点击提交。
UDM 映射表
| 日志字段 | UDM 映射 | 逻辑 |
|---|---|---|
| entity.application | 应用名称或标识符 | |
| observable_id | entity.asset.asset_id | 资产标识符 |
| object_id | entity.asset.product_object_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 | Feed 名称 |
| ip_address_value, target_ip | ioc.ip_and_ports.ip_address | IP 地址 |
| 端口 | ioc.ip_and_ports.ports | 端口 |
| 说明、desc1、ttp_description | metadata.description | 说明 |
| entity_type | metadata.entity_type | 实体类型 |
| start_time | metadata.interval.start_time | 时间段的开始时间 |
| object_id | metadata.product_entity_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 的说明 |
| ttp_summary | ttp_security_result.summary | TTP 摘要 |
更新日志
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。