收集 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 存储桶

  1. 前往 Google Cloud 控制台
  2. 选择您的项目或创建新项目。
  3. 在导航菜单中,依次前往 Cloud Storage > 存储分区
  4. 点击创建存储分区
  5. 提供以下配置详细信息:

    设置
    为存储桶命名 输入一个全局唯一的名称(例如 dhs-ioc-logs
    位置类型 根据您的需求进行选择(区域级、双区域、多区域)
    位置 选择离您的 Google SecOps 实例最近的位置(例如 us-central1
    存储类别 标准(建议用于经常访问的日志)
    访问权限控制 均匀(推荐)
    保护工具 可选:启用对象版本控制或保留政策
  6. 点击创建

配置将 DHS IOC 数据自动导出到 GCS

DHS 通过其 AIS TAXII 服务器分发 STIX 格式的 IOC 数据。配置自动化流水线,以按计划提取指标并将其直接写入 GCS。

使用由 Cloud Scheduler 触发的 Cloud Build 来运行容器化作业,该作业从 AIS TAXII 服务器提取 STIX 软件包并将其写入 GCS。

  1. 将 AIS 客户端证书和密钥存储在 Secret Manager 中:

    1. GCP 控制台中,依次前往安全性 > Secret Manager
    2. 点击创建密钥
    3. 创建两个 Secret:
      • 名称ais-client-cert:AIS 客户端证书 PEM 文件的内容。
      • 名称ais-client-key:AIS 客户端私钥 PEM 文件的内容。
  2. 为导出作业创建服务账号:

    1. GCP 控制台中,依次前往 IAM 和管理 > 服务账号
    2. 点击创建服务账号
    3. 提供以下配置详细信息:
      • 服务账号名称:输入 dhs-ioc-export-sa
      • 服务账号说明:输入 Service account for automated DHS IOC export to GCS
    4. 点击创建并继续
    5. 添加以下角色:
      • Storage Object Admin(用于将文件写入 GCS)
      • Cloud Build 编辑者(用于运行 Cloud Build 作业)
      • Secret Manager Secret Accessor(用于读取 AIS 证书)
    6. 点击完成
  3. 创建 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'
    
  4. 创建 Cloud Scheduler 作业以触发构建:

    1. GCP Console 中,前往 Cloud Scheduler
    2. 点击创建作业
    3. 提供以下配置详细信息:

      设置
      名称 dhs-ioc-export-hourly
      区域 选择与您的 GCS 存储桶相同的区域
      频率 0 * * * *(每小时)
      时区 世界协调时间 (UTC)(推荐)
      目标类型 HTTP
      网址 https://cloudbuild.googleapis.com/v1/projects/YOUR_PROJECT_ID/builds
      HTTP 方法 POST
      身份验证标头 添加 OAuth 令牌
      服务账号 dhs-ioc-export-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com
    4. 点击创建

方法 2:使用 cron 的 Compute Engine 虚拟机(替代方法)

如果 Cloud Build 不可用,请使用一个小型 Compute Engine 虚拟机,通过 cron 作业拉取 IOC 数据并写入 GCS。

  1. 创建 Compute Engine 虚拟机:

    1. GCP 控制台中,前往 Compute Engine > 虚拟机实例
    2. 点击创建实例
    3. 选择小型机器类型(例如 e2-micro)。
    4. 身份和 API 访问权限下,选择具有 Storage Object Admin 角色的服务账号。
    5. 点击创建
  2. 通过 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"
    
  3. 将脚本设为可执行文件,并使用 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 服务账号

  1. 依次前往 SIEM 设置 > Feed
  2. 点击添加新 Feed
  3. 点击配置单个 Feed
  4. Feed 名称字段中,输入 Feed 的名称(例如 DHS IOC Feed)。
  5. 选择 Google Cloud Storage V2 作为来源类型
  6. 选择美国国土安全部作为日志类型
  7. 点击获取服务账号
  8. 系统会显示一个唯一的服务账号电子邮件地址,例如:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. 复制此电子邮件地址,以便在下一步中使用。

向 Google SecOps 服务账号授予 IAM 权限

Google SecOps 服务账号需要您的 GCS 存储桶的 Storage Object Viewer 角色。

  1. 前往 Cloud Storage > 存储分区
  2. 点击您的存储桶名称(例如 dhs-ioc-logs)。
  3. 前往权限标签页。
  4. 点击授予访问权限
  5. 提供以下配置详细信息:
    • 添加主账号:粘贴 Google SecOps 服务账号电子邮件地址(例如 chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com)。
    • 分配角色:选择 Storage Object Viewer
  6. 点击保存

配置 Google SecOps Feed

  1. 依次前往 SIEM 设置 > Feed
  2. 点击添加新 Feed
  3. 点击配置单个 Feed
  4. Feed 名称字段中,输入 Feed 的名称(例如 DHS IOC Feed)。
  5. 选择 Google Cloud Storage V2 作为来源类型
  6. 选择美国国土安全部作为日志类型
  7. 点击下一步
  8. 为以下输入参数指定值:

    • 存储桶网址:输入 GCS 存储桶 URI:

      gs://dhs-ioc-logs/ioc-data/
      
      • dhs-ioc-logs 替换为您的 GCS 存储桶名称。
      • ioc-data 替换为您配置的前缀路径。
    • 来源删除选项:根据您的偏好选择删除选项:

      • 永不:转移后永不删除任何文件(建议用于测试)。
      • 删除已转移的文件和空目录:成功转移后删除文件和空目录。

    • 文件存在时间上限:包含在过去指定天数内修改的文件(默认值为 180 天)。

    • 资产命名空间资产命名空间

    • 注入标签:要应用于此 Feed 中事件的标签。

  9. 点击下一步

  10. 最终确定界面中查看新的 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 专业人士的解答。