收集 DomainTools Iris Investigate 結果

支援的國家/地區:

本文說明如何使用 Amazon S3,將 DomainTools Iris Investigate 結果擷取至 Google Security Operations。剖析器會將 DomainTools Iris API 的原始 JSON 資料轉換為符合 Google SecOps 統一資料模型 (UDM) 的結構化格式。並擷取網域詳細資料、聯絡資訊、安全風險、SSL 憑證和其他相關屬性的資訊,然後對應至相應的 UDM 欄位,以利進行一致的分析和威脅情報。

事前準備

  • Google SecOps 執行個體
  • DomainTools 企業帳戶的特殊存取權 (Iris Investigate 的 API 存取權)
  • AWS 的特殊存取權 (S3、IAM、Lambda、EventBridge)

取得 DomainTools API 金鑰和端點

  1. 登入 DomainTools API 資訊主頁 (只有 API 擁有者帳戶可以重設 API 金鑰)。
  2. 在「我的帳戶」部分,選取「帳戶摘要」分頁中的「查看 API 資訊主頁」連結。
  3. 前往「API Username」(API 使用者名稱) 部分,取得使用者名稱。
  4. 在同一個分頁中,找出 API 金鑰
  5. 複製金鑰並妥善儲存於安全的位置。
  6. 如需新金鑰,請選取「重設 API 金鑰」

  7. 請注意 Iris Investigate 端點https://api.domaintools.com/v1/iris-investigate/

為 Google SecOps 設定 AWS S3 值區和 IAM

  1. 按照本使用指南建立 Amazon S3 值區建立值區
  2. 儲存 bucket 的「名稱」和「區域」,以供日後參考 (例如 domaintools-iris)。
  3. 按照這份使用者指南建立使用者:建立 IAM 使用者
  4. 選取建立的「使用者」
  5. 選取「安全憑證」分頁標籤。
  6. 在「Access Keys」部分中,按一下「Create Access Key」
  7. 選取「第三方服務」做為「用途」
  8. 點選「下一步」
  9. 選用:新增說明標記。
  10. 按一下「建立存取金鑰」
  11. 按一下「下載 CSV 檔案」,儲存「存取金鑰」和「私密存取金鑰」,以供日後使用。
  12. 按一下 [完成]
  13. 選取 [權限] 分頁標籤。
  14. 在「Permissions policies」(權限政策) 區段中,按一下「Add permissions」(新增權限)
  15. 選取「新增權限」
  16. 選取「直接附加政策」
  17. 搜尋並選取 AmazonS3FullAccess 政策。
  18. 點選「下一步」
  19. 按一下「Add permissions」。

設定 S3 上傳的身分與存取權管理政策和角色

  1. AWS 管理控制台中,依序前往「IAM」>「Policies」>「Create policy」>「JSON」分頁標籤
  2. 輸入下列政策:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "AllowPutDomainToolsIrisObjects",
          "Effect": "Allow",
          "Action": "s3:PutObject",
          "Resource": "arn:aws:s3:::domaintools-iris/*"
        }
      ]
    }
    
    • 如果您輸入的值區名稱不同,請替換 domaintools-iris
  3. 依序點選「Next」>「Create policy」

  4. 依序前往「IAM」>「Roles」>「Create role」>「AWS service」>「Lambda」

  5. 附加新建立的政策。

  6. 為角色命名 WriteDomainToolsIrisToS3Role,然後按一下「建立角色」

建立 Lambda 函式

  1. AWS 控制台中,依序前往「Lambda」>「Functions」>「Create function」
  2. 按一下「從頭開始撰寫」
  3. 請提供下列設定詳細資料:

    設定
    名稱 domaintools_iris_to_s3
    執行階段 Python 3.13
    架構 x86_64
    執行角色 WriteDomainToolsIrisToS3Role
  4. 建立函式後,開啟「程式碼」分頁,刪除存根並輸入下列程式碼 (domaintools_iris_to_s3.py):

    #!/usr/bin/env python3
    # Lambda: Pull DomainTools Iris Investigate results to S3 (no transform)
    
    import os, json, time, urllib.parse
    from urllib.request import Request, urlopen
    from urllib.error import HTTPError
    import boto3
    
    # --- Environment ---
    S3_BUCKET    = os.environ["S3_BUCKET"].strip()
    S3_PREFIX    = os.environ.get("S3_PREFIX", "domaintools/iris/").strip()
    STATE_KEY    = os.environ.get("STATE_KEY", "domaintools/iris/state.json").strip()
    
    DT_API_KEY   = os.environ["DT_API_KEY"].strip()
    DT_API_SECRET= os.environ.get("DT_API_SECRET", "").strip()  # optional if your account uses key-only auth
    
    USE_MODE     = os.environ.get("USE_MODE", "HASH").strip().upper()  # HASH | DOMAINS | QUERY
    SEARCH_HASHES= [h.strip() for h in os.environ.get("SEARCH_HASHES", "").split(";") if h.strip()]
    DOMAINS      = [d.strip() for d in os.environ.get("DOMAINS", "").split(";") if d.strip()]
    QUERY_LIST   = [q.strip() for q in os.environ.get("QUERY_LIST", "").split(";") if q.strip()]
    
    PAGE_SIZE    = int(os.environ.get("PAGE_SIZE", "500"))
    MAX_PAGES    = int(os.environ.get("MAX_PAGES", "20"))
    USE_NEXT     = os.environ.get("USE_NEXT", "true").lower() == "true"
    HTTP_TIMEOUT = int(os.environ.get("HTTP_TIMEOUT", "60"))
    RETRIES      = int(os.environ.get("HTTP_RETRIES", "2"))
    
    BASE_URL = "https://api.domaintools.com/v1/iris-investigate/"
    HDRS = {
        "X-Api-Key": DT_API_KEY,
        "Accept": "application/json",
    }
    if DT_API_SECRET:
        HDRS["X-Api-Secret"] = DT_API_SECRET
    
    s3 = boto3.client("s3")
    
    # --- HTTP helpers ---
    
    def _http_get(url: str) -> dict:
        req = Request(url, method="GET")
        for k, v in HDRS.items():
            req.add_header(k, v)
        attempt = 0
        while True:
            try:
                with urlopen(req, timeout=HTTP_TIMEOUT) as r:
                    return json.loads(r.read().decode("utf-8"))
            except HTTPError as e:
                if e.code in (429, 500, 502, 503, 504) and attempt < RETRIES:
                    delay = int(e.headers.get("Retry-After", "2"))
                    time.sleep(max(1, delay))
                    attempt += 1
                    continue
                raise
    
    def _build_url(params: dict) -> str:
        return BASE_URL + ("?" + urllib.parse.urlencode(params, doseq=True) if params else "")
    
    # --- S3 helpers ---
    
    def _write_page(obj: dict, label: str, page: int) -> str:
        ts = time.strftime("%Y/%m/%d/%H%M%S", time.gmtime())
        key = f"{S3_PREFIX.rstrip('/')}/{ts}-{label}-p{page:05d}.json"
        s3.put_object(
            Bucket=S3_BUCKET, Key=key,
            Body=json.dumps(obj, separators=(",", ":")).encode("utf-8"),
            ContentType="application/json",
        )
        return key
    
    # --- Iris paging ---
    
    def _first_page_params() -> dict:
        params: dict[str, object] = {"page_size": str(PAGE_SIZE)}
        if USE_NEXT:
            params["next"] = "true"
        return params
    
    def _paginate(label: str, params: dict) -> tuple[int, int]:
        pages = 0
        total = 0
        url = _build_url(params)
        while pages < MAX_PAGES:
            data = _http_get(url)
            _write_page(data, label, pages)
    
            resp = data.get("response") or {}
            results = resp.get("results") or []
            total += len(results)
            pages += 1
    
            # Prefer `next` absolute URL if present
            next_url = resp.get("next") if isinstance(resp, dict) else None
            if next_url:
                url = next_url
                continue
    
            # Fallback: position pager when `next=true` not used/supported
            if resp.get("has_more_results") and resp.get("position"):
                base = _first_page_params()
                base.pop("next", None)
                base["position"] = resp["position"]
                url = _build_url(base)
                continue
    
            break
        return pages, total
    
    # --- Mode runners ---
    
    def run_hashes(hashes: list[str]) -> dict:
        agg_pages = agg_results = 0
        for h in hashes:
            params = _first_page_params()
            params["search_hash"] = h
            p, r = _paginate(f"hash-{h}", params)
            agg_pages += p
            agg_results += r
        return {"pages": agg_pages, "results": agg_results}
    
    def run_domains(domains: list[str]) -> dict:
        agg_pages = agg_results = 0
        for d in domains:
            params = _first_page_params()
            # DomainTools accepts `domain` as a filter in Investigate search
            params["domain"] = d
            p, r = _paginate(f"domain-{d}", params)
            agg_pages += p
            agg_results += r
        return {"pages": agg_pages, "results": agg_results}
    
    def run_queries(queries: list[str]) -> dict:
        agg_pages = agg_results = 0
        for q in queries:
            # Merge arbitrary k=v pairs from the query string
            base = _first_page_params()
            for k, v in urllib.parse.parse_qsl(q, keep_blank_values=True):
                base.setdefault(k, v)
            p, r = _paginate(f"query-{q.replace('=','-')}", base)
            agg_pages += p
            agg_results += r
        return {"pages": agg_pages, "results": agg_results}
    
    # --- Entry point ---
    
    def lambda_handler(event=None, context=None):
        if USE_MODE == "HASH" and SEARCH_HASHES:
            res = run_hashes(SEARCH_HASHES)
        elif USE_MODE == "DOMAINS" and DOMAINS:
            res = run_domains(DOMAINS)
        elif USE_MODE == "QUERY" and QUERY_LIST:
            res = run_queries(QUERY_LIST)
        else:
            raise ValueError("Invalid USE_MODE or missing parameters. Set USE_MODE to HASH | DOMAINS | QUERY and provide SEARCH_HASHES | DOMAINS | QUERY_LIST accordingly.")
    
        return {"ok": True, "mode": USE_MODE, **res}
    
    if __name__ == "__main__":
        print(json.dumps(lambda_handler(), indent=2))
    
  5. 依序前往「Configuration」>「Environment variables」>「Edit」>「Add new environment variable」

  6. 輸入下列環境變數,並將 換成您的值:

    範例值 說明
    S3_BUCKET domaintools-iris 要儲存資料的 S3 值區名稱。
    S3_PREFIX domaintools/iris/ 物件的選用 S3 前置字串 (子資料夾)。
    STATE_KEY domaintools/iris/state.json 選用狀態/檢查點檔案金鑰。
    DT_API_KEY DT-XXXXXXXXXXXXXXXXXXXX DomainTools API 金鑰。
    DT_API_SECRET YYYYYYYYYYYYYYYYYYYYYYYY DomainTools API 密鑰 (如適用)。
    USE_MODE HASH | DOMAINS | QUERY 選取要使用的模式 (一次只能啟用一個模式)。
    SEARCH_HASHES hash1;hash2;hash3 如果 USE_MODE=HASH,則為必要欄位。以半形分號分隔的清單,列出 Iris UI 中儲存的搜尋雜湊。
    DOMAINS example.com;domaintools.com 如果 USE_MODE=DOMAINS,則為必要欄位。以半形分號分隔的網域清單。
    QUERY_LIST ip=1.1.1.1;ip=8.8.8.8;domain=example.org 如果 USE_MODE=QUERY,則為必要欄位。以分號分隔的查詢字串清單 (k=v&k2=v2)。
    PAGE_SIZE 500 每頁列數 (預設為 500)。
    MAX_PAGES 20 每項要求的頁數上限
  7. 建立函式後,請留在函式頁面 (或依序開啟「Lambda」>「Functions」>「your-function」)。

  8. 選取「設定」分頁標籤。

  9. 在「一般設定」面板中,按一下「編輯」

  10. 將「逾時」變更為「15 分鐘 (900 秒)」,然後按一下「儲存」

建立 EventBridge 排程

  1. 依序前往「Amazon EventBridge」>「Scheduler」>「Create schedule」
  2. 提供下列設定詳細資料:
    • 週期性時間表費率 (1 hour)。
    • 目標:您的 Lambda 函式。
    • 名稱domaintools-iris-1h
  3. 按一下「建立時間表」

選用:為 Google SecOps 建立唯讀 IAM 使用者和金鑰

  1. 在 AWS 控制台中,依序前往「IAM」>「Users」,然後按一下「Add users」
  2. 提供下列設定詳細資料:
    • 使用者:輸入不重複的名稱 (例如 secops-reader)
    • 存取權類型:選取「存取金鑰 - 程式輔助存取」
    • 按一下「建立使用者」
  3. 附加最低讀取權限政策 (自訂):依序選取「使用者」secops-reader「權限」「新增權限」「直接附加政策」「建立政策」
  4. 在 JSON 編輯器中輸入下列政策:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["s3:GetObject"],
          "Resource": "arn:aws:s3:::<your-bucket>/*"
        },
        {
          "Effect": "Allow",
          "Action": ["s3:ListBucket"],
          "Resource": "arn:aws:s3:::<your-bucket>"
        }
      ]
    }
    
  5. 將名稱設為 secops-reader-policy

  6. 依序前往「建立政策」> 搜尋/選取 >「下一步」>「新增權限」

  7. 依序前往「安全憑證」>「存取金鑰」>「建立存取金鑰」

  8. 下載 CSV (這些值會輸入至動態饋給)。

在 Google SecOps 中設定動態饋給,擷取 DomainTools Iris Investigate 結果

  1. 依序前往「SIEM 設定」>「動態饋給」
  2. 按一下「新增動態消息」
  3. 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如 DomainTools Iris Investigate)。
  4. 選取「Amazon S3 V2」做為「來源類型」
  5. 選取「DomainTools Threat Intelligence」做為「記錄類型」
  6. 點選「下一步」
  7. 指定下列輸入參數的值:
    • S3 URIs3://domaintools-iris/domaintools/iris/
    • 來源刪除選項:根據偏好選取刪除選項。
    • 檔案存在時間上限:預設為 180 天。
    • 存取金鑰 ID:具有 S3 值區存取權的使用者存取金鑰。
    • 存取密鑰:具有 S3 bucket 存取權的使用者私密金鑰。
    • 資產命名空間domaintools.threat_intel
    • 擷取標籤:要套用至這個動態饋給事件的標籤。
  8. 點選「下一步」
  9. 在「Finalize」畫面上檢查新的動態饋給設定,然後按一下「Submit」

UDM 對應表

記錄欄位 UDM 對應 邏輯
有效 principal.domain.status 直接從原始記錄中的 active 欄位對應。
additional_whois_email.[].value about.labels.additional_whois_email additional_whois_email 陣列擷取,並新增為 about 物件中的標籤。
adsense.value about.labels.adsense adsense.value 擷取,並新增為 about 物件中的標籤。
admin_contact.city.value principal.domain.admin.office_address.city 直接從原始記錄中的 admin_contact.city.value 欄位對應。
admin_contact.country.value principal.domain.admin.office_address.country_or_region 直接從原始記錄中的 admin_contact.country.value 欄位對應。
admin_contact.email.[].value principal.domain.admin.email_addresses admin_contact.email 陣列擷取,並新增至 email_addresses 欄位。
admin_contact.fax.value principal.domain.admin.attribute.labels.fax admin_contact.fax.value 擷取,並在 admin 屬性中新增為索引鍵為「fax」的標籤。
admin_contact.name.value principal.domain.admin.user_display_name 直接從原始記錄中的 admin_contact.name.value 欄位對應。
admin_contact.org.value principal.domain.admin.company_name 直接從原始記錄中的 admin_contact.org.value 欄位對應。
admin_contact.phone.value principal.domain.admin.phone_numbers 直接從原始記錄中的 admin_contact.phone.value 欄位對應。
admin_contact.postal.value principal.domain.admin.attribute.labels.postal admin_contact.postal.value 擷取,並在 admin 屬性中以「postal」做為鍵新增為標籤。
admin_contact.state.value principal.domain.admin.office_address.state 直接從原始記錄中的 admin_contact.state.value 欄位對應。
admin_contact.street.value principal.domain.admin.office_address.name 直接從原始記錄中的 admin_contact.street.value 欄位對應。
Alexa about.labels.alexa 直接從原始記錄中的 alexa 欄位對應,並以標籤形式新增至 about 物件。
baidu_codes.[].value about.labels.baidu_codes baidu_codes 陣列擷取,並新增為 about 物件中的標籤。
billing_contact.city.value principal.domain.billing.office_address.city 直接從原始記錄中的 billing_contact.city.value 欄位對應。
billing_contact.country.value principal.domain.billing.office_address.country_or_region 直接從原始記錄中的 billing_contact.country.value 欄位對應。
billing_contact.email.[].value principal.domain.billing.email_addresses billing_contact.email 陣列擷取,並新增至 email_addresses 欄位。
billing_contact.fax.value principal.domain.billing.attribute.labels.fax billing_contact.fax.value 擷取,並在 billing 屬性中新增為索引鍵為「fax」的標籤。
billing_contact.name.value principal.domain.billing.user_display_name 直接從原始記錄中的 billing_contact.name.value 欄位對應。
billing_contact.org.value principal.domain.billing.company_name 直接從原始記錄中的 billing_contact.org.value 欄位對應。
billing_contact.phone.value principal.domain.billing.phone_numbers 直接從原始記錄中的 billing_contact.phone.value 欄位對應。
billing_contact.postal.value principal.domain.billing.attribute.labels.postal billing_contact.postal.value 擷取,並在 billing 屬性中以「postal」做為鍵新增為標籤。
billing_contact.state.value principal.domain.billing.office_address.state 直接從原始記錄中的 billing_contact.state.value 欄位對應。
billing_contact.street.value principal.domain.billing.office_address.name 直接從原始記錄中的 billing_contact.street.value 欄位對應。
create_date.value principal.domain.creation_time 從原始記錄的 create_date.value 欄位轉換為時間戳記格式。
data_updated_timestamp principal.domain.audit_update_time 從原始記錄的 data_updated_timestamp 欄位轉換為時間戳記格式。
網域 principal.hostname 直接從原始記錄中的 domain 欄位對應。
domain_risk.components.[].evidence security_result.detection_fields.evidence domain_risk.components.[].evidence 陣列擷取,並在 security_result 物件中新增為偵測欄位,鍵為「evidence」。
domain_risk.components.[].name security_result.category_details 直接從原始記錄中的 domain_risk.components.[].name 欄位對應。
domain_risk.components.[].risk_score security_result.risk_score 直接從原始記錄中的 domain_risk.components.[].risk_score 欄位對應。
domain_risk.components.[].threats security_result.threat_name domain_risk.components.[].threats 陣列的第一個元素會對應至 security_result.threat_name
domain_risk.components.[].threats security_result.detection_fields.threats domain_risk.components.[].threats 陣列的其餘元素會以「threats」鍵新增為 security_result 物件中的偵測欄位。
domain_risk.risk_score security_result.risk_score 直接從原始記錄中的 domain_risk.risk_score 欄位對應。
email_domain.[].value about.labels.email_domain email_domain 陣列擷取,並新增為 about 物件中的標籤。
expiration_date.value principal.domain.expiration_time 從原始記錄的 expiration_date.value 欄位轉換為時間戳記格式。
fb_codes.[].value about.labels.fb_codes fb_codes 陣列擷取,並新增為 about 物件中的標籤。
first_seen.value principal.domain.first_seen_time 從原始記錄的 first_seen.value 欄位轉換為時間戳記格式。
ga4.[].value about.labels.ga4 ga4 陣列擷取,並新增為 about 物件中的標籤。
google_analytics.value about.labels.google_analytics google_analytics.value 擷取,並新增為 about 物件中的標籤。
gtm_codes.[].value about.labels.gtm_codes gtm_codes 陣列擷取,並新增為 about 物件中的標籤。
hotjar_codes.[].value about.labels.hotjar_codes hotjar_codes 陣列擷取,並新增為 about 物件中的標籤。
ip.[].address.value principal.ip ip 陣列的第一個元素會對應至 principal.ip
ip.[].address.value about.labels.ip_address ip 陣列的其餘元素會以「ip_address」鍵的形式,新增為 about 物件中的標籤。
ip.[].asn.[].value network.asn 第一個 ip.asn 陣列的第一個元素會對應至 network.asn
ip.[].asn.[].value about.labels.asn ip.asn 陣列的其餘元素會以「asn」鍵的形式,新增為 about 物件中的標籤。
ip.[].country_code.value principal.location.country_or_region ip 陣列中第一個元素的 country_code.value 會對應至 principal.location.country_or_region
ip.[].country_code.value about.location.country_or_region ip 陣列中其餘元素的 country_code.value 會對應至 about.location.country_or_region
ip.[].isp.value principal.labels.isp ip 陣列中第一個元素的 isp.value 會對應至 principal.labels.isp
ip.[].isp.value about.labels.isp ip 陣列中其餘元素的 isp.value 會對應至 about.labels.isp
matomo_codes.[].value about.labels.matomo_codes matomo_codes 陣列擷取,並新增為 about 物件中的標籤。
monitor_domain about.labels.monitor_domain 直接從原始記錄中的 monitor_domain 欄位對應,並以標籤形式新增至 about 物件。
monitoring_domain_list_name about.labels.monitoring_domain_list_name 直接從原始記錄中的 monitoring_domain_list_name 欄位對應,並以標籤形式新增至 about 物件。
mx.[].domain.value about.domain.name 直接從原始記錄中的 mx.[].domain.value 欄位對應。
mx.[].host.value about.hostname 直接從原始記錄中的 mx.[].host.value 欄位對應。
mx.[].ip.[].value about.ip mx.[].ip 陣列擷取,並新增至 ip 欄位。
mx.[].priority about.security_result.priority_details 直接從原始記錄中的 mx.[].priority 欄位對應。
name_server.[].domain.value about.labels.name_server_domain name_server.[].domain.value 中擷取,並在 about 物件中新增為標籤,鍵為「name_server_domain」。
name_server.[].host.value principal.domain.name_server name_server.[].host.value 擷取並新增至 name_server 欄位。
name_server.[].host.value about.domain.name_server name_server.[].host.value 擷取並新增至 name_server 欄位。
name_server.[].ip.[].value about.labels.ip name_server.[].ip 陣列擷取,並在 about 物件中以「ip」做為鍵新增為標籤。
popularity_rank about.labels.popularity_rank 直接從原始記錄中的 popularity_rank 欄位對應,並以標籤形式新增至 about 物件。
redirect.value about.labels.redirect redirect.value 擷取,並新增為 about 物件中的標籤。
redirect_domain.value about.labels.redirect_domain redirect_domain.value 擷取,並新增為 about 物件中的標籤。
registrant_contact.city.value principal.domain.registrant.office_address.city 直接從原始記錄中的 registrant_contact.city.value 欄位對應。
registrant_contact.country.value principal.domain.registrant.office_address.country_or_region 直接從原始記錄中的 registrant_contact.country.value 欄位對應。
registrant_contact.email.[].value principal.domain.registrant.email_addresses registrant_contact.email 陣列擷取,並新增至 email_addresses 欄位。
registrant_contact.fax.value principal.domain.registrant.attribute.labels.fax registrant_contact.fax.value 擷取,並在 registrant 屬性中新增為索引鍵為「fax」的標籤。
registrant_contact.name.value principal.domain.registrant.user_display_name 直接從原始記錄中的 registrant_contact.name.value 欄位對應。
registrant_contact.org.value principal.domain.registrant.company_name 直接從原始記錄中的 registrant_contact.org.value 欄位對應。
registrant_contact.phone.value principal.domain.registrant.phone_numbers 直接從原始記錄中的 registrant_contact.phone.value 欄位對應。
registrant_contact.postal.value principal.domain.registrant.attribute.labels.postal registrant_contact.postal.value 擷取,並在 registrant 屬性中以「postal」做為鍵新增為標籤。
registrant_contact.state.value principal.domain.registrant.office_address.state 直接從原始記錄中的 registrant_contact.state.value 欄位對應。
registrant_contact.street.value principal.domain.registrant.office_address.name 直接從原始記錄中的 registrant_contact.street.value 欄位對應。
registrant_name.value about.labels.registrant_name registrant_name.value 擷取,並新增為 about 物件中的標籤。
registrant_org.value about.labels.registrant_org registrant_org.value 擷取,並新增為 about 物件中的標籤。
registrar.value principal.domain.registrar 直接從原始記錄中的 registrar.value 欄位對應。
registrar_status about.labels.registrar_status registrar_status 陣列擷取,並新增為 about 物件中的標籤。
server_type network.tls.client.server_name 直接從原始記錄中的 server_type 欄位對應。
soa_email.[].value principal.user.email_addresses soa_email 陣列擷取,並新增至 email_addresses 欄位。
spf_info about.labels.spf_info 直接從原始記錄中的 spf_info 欄位對應,並以標籤形式新增至 about 物件。
ssl_email.[].value about.labels.ssl_email ssl_email 陣列擷取,並新增為 about 物件中的標籤。
ssl_info.[].alt_names.[].value about.labels.alt_names ssl_info.[].alt_names 陣列擷取,並新增為 about 物件中的標籤。
ssl_info.[].common_name.value about.labels.common_name ssl_info.[].common_name.value 擷取,並新增為 about 物件中的標籤。
ssl_info.[].duration.value about.labels.duration ssl_info.[].duration.value 擷取,並新增為 about 物件中的標籤。
ssl_info.[].email.[].value about.labels.ssl_info_email ssl_info.[].email 陣列擷取,並在 about 物件中新增為標籤,索引鍵為「ssl_info_email」。
ssl_info.[].hash.value network.tls.server.certificate.sha1 ssl_info 陣列中第一個元素的 hash.value 會對應至 network.tls.server.certificate.sha1
ssl_info.[].hash.value about.labels.hash ssl_info 陣列中其餘元素的 hash.value 會對應至 about.labels.hash
ssl_info.[].issuer_common_name.value network.tls.server.certificate.issuer ssl_info 陣列中第一個元素的 issuer_common_name.value 會對應至 network.tls.server.certificate.issuer
ssl_info.[].issuer_common_name.value about.labels.issuer_common_name ssl_info 陣列中其餘元素的 issuer_common_name.value 會對應至 about.labels.issuer_common_name
ssl_info.[].not_after.value network.tls.server.certificate.not_after ssl_info 陣列中第一個元素的 not_after.value 會轉換為時間戳記格式,並對應至 network.tls.server.certificate.not_after
ssl_info.[].not_after.value about.labels.not_after ssl_info 陣列中其餘元素的 not_after.value 會對應至 about.labels.not_after
ssl_info.[].not_before.value network.tls.server.certificate.not_before ssl_info 陣列中第一個元素的 not_before.value 會轉換為時間戳記格式,並對應至 network.tls.server.certificate.not_before
ssl_info.[].not_before.value about.labels.not_before ssl_info 陣列中其餘元素的 not_before.value 會對應至 about.labels.not_before
ssl_info.[].organization.value network.organization_name ssl_info 陣列中第一個元素的 organization.value 會對應至 network.organization_name
ssl_info.[].organization.value about.labels.organization ssl_info 陣列中其餘元素的 organization.value 會對應至 about.labels.organization
ssl_info.[].subject.value about.labels.subject ssl_info.[].subject.value 擷取,並新增為 about 物件中的標籤。
statcounter_project_codes.[].value about.labels.statcounter_project_codes statcounter_project_codes 陣列擷取,並新增為 about 物件中的標籤。
statcounter_security_codes.[].value about.labels.statcounter_security_codes statcounter_security_codes 陣列擷取,並新增為 about 物件中的標籤。
tags.[].label about.file.tags tags.[].label 擷取並新增至 tags 欄位。
tags.[].scope security_result.detection_fields.scope tags.[].scope 擷取,並在 security_result 物件中新增為偵測欄位,鍵為「scope」。
tags.[].tagged_at security_result.detection_fields.tagged_at tags.[].tagged_at 擷取,並在 security_result 物件中新增為偵測欄位,金鑰為「tagged_at」。
technical_contact.city.value principal.domain.tech.office_address.city 直接從原始記錄中的 technical_contact.city.value 欄位對應。
technical_contact.country.value principal.domain.tech.office_address.country_or_region 直接從原始記錄中的 technical_contact.country.value 欄位對應。
technical_contact.email.[].value principal.domain.tech.email_addresses technical_contact.email 陣列擷取,並新增至 email_addresses 欄位。
technical_contact.fax.value principal.domain.tech.attribute.labels.fax technical_contact.fax.value 擷取,並在 tech 屬性中新增為索引鍵為「fax」的標籤。
technical_contact.name.value principal.domain.tech.user_display_name 直接從原始記錄中的 technical_contact.name.value 欄位對應。
technical_contact.org.value principal.domain.tech.company_name 直接從原始記錄中的 technical_contact.org.value 欄位對應。
technical_contact.phone.value principal.domain.tech.phone_numbers 直接從原始記錄中的 technical_contact.phone.value 欄位對應。
technical_contact.postal.value principal.domain.tech.attribute.labels.postal technical_contact.postal.value 擷取,並在 tech 屬性中以「postal」做為鍵新增為標籤。
technical_contact.state.value principal.domain.tech.office_address.state 直接從原始記錄中的 technical_contact.state.value 欄位對應。
technical_contact.street.value principal.domain.tech.office_address.name 直接從原始記錄中的 technical_contact.street.value 欄位對應。
tld about.labels.tld 直接從原始記錄中的 tld 欄位對應,並以標籤形式新增至 about 物件。
時間戳記 about.labels.timestamp 直接從原始記錄中的 timestamp 欄位對應,並以標籤形式新增至 about 物件。
website_response principal.network.http.response_code 直接從原始記錄中的 website_response 欄位對應。
website_title about.labels.website_title 直接從原始記錄中的 website_title 欄位對應,並以標籤形式新增至 about 物件。
whois_url principal.domain.whois_server 直接從原始記錄中的 whois_url 欄位對應。
yandex_codes.[].value about.labels.yandex_codes yandex_codes 陣列擷取,並新增為 about 物件中的標籤。
edr.client.hostname 設為 domain 欄位的值。
edr.client.ip_addresses 設為 ip 陣列中第一個元素的值,也就是 ip.[0].address.value
edr.raw_event_name 如果 principal.hostname 存在,請設為「STATUS_UPDATE」,否則請設為「GENERIC_EVENT」。
metadata.event_timestamp 從原始記錄的頂層 create_time 欄位複製。
metadata.event_type 如果 principal.hostname 存在,請設為「STATUS_UPDATE」,否則請設為「GENERIC_EVENT」。
metadata.log_type 設為「DOMAINTOOLS_THREATINTEL」。
metadata.product_name 設為「DOMAINTOOLS」。
metadata.vendor_name 設為「DOMAINTOOLS」。

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。