Raccogliere i risultati di DomainTools Iris Investigate
Questo documento spiega come importare i risultati di DomainTools Iris Investigate in Google Security Operations utilizzando Amazon S3. Il parser trasforma i dati JSON non elaborati dell'API Iris di DomainTools in un formato strutturato conforme al modello UDM (Unified Data Model) di Google SecOps. Estrae informazioni relative a dettagli del dominio, informazioni di contatto, rischi per la sicurezza, certificati SSL e altri attributi pertinenti, mappandoli ai campi UDM corrispondenti per un'analisi coerente e per la threat intelligence.
Prima di iniziare
- Istanza Google SecOps
- Accesso con privilegi all'account aziendale DomainTools (accesso API a Iris Investigate)
- Accesso privilegiato ad AWS (S3, IAM, Lambda, EventBridge)
Ottieni la chiave API e l'endpoint DomainTools
- Accedi alla dashboard API di DomainTools (solo l'account proprietario dell'API può reimpostare la chiave API).
- Nella sezione Il mio account, seleziona il link Visualizza dashboard API nella scheda Riepilogo account.
- Vai alla sezione Nome utente API per ottenere il tuo nome utente.
- Nella stessa scheda, individua la chiave API.
- Copia e salva la chiave in un luogo sicuro.
Se hai bisogno di una nuova chiave, seleziona Reimposta chiave API.
Prendi nota dell'endpoint di Iris Investigate:
https://api.domaintools.com/v1/iris-investigate/
.
Configura il bucket AWS S3 e IAM per Google SecOps
- Crea un bucket Amazon S3 seguendo questa guida utente: Creazione di un bucket
- Salva il nome e la regione del bucket per riferimento futuro (ad esempio,
domaintools-iris
). - Crea un utente seguendo questa guida: Creazione di un utente IAM.
- Seleziona l'utente creato.
- Seleziona la scheda Credenziali di sicurezza.
- Fai clic su Crea chiave di accesso nella sezione Chiavi di accesso.
- Seleziona Servizio di terze parti come Caso d'uso.
- Fai clic su Avanti.
- (Facoltativo) Aggiungi un tag di descrizione.
- Fai clic su Crea chiave di accesso.
- Fai clic su Scarica file CSV per salvare la chiave di accesso e la chiave di accesso segreta per un utilizzo successivo.
- Fai clic su Fine.
- Seleziona la scheda Autorizzazioni.
- Fai clic su Aggiungi autorizzazioni nella sezione Criteri per le autorizzazioni.
- Seleziona Aggiungi autorizzazioni.
- Seleziona Allega direttamente i criteri.
- Cerca e seleziona il criterio AmazonS3FullAccess.
- Fai clic su Avanti.
- Fai clic su Aggiungi autorizzazioni.
Configura il ruolo e il criterio IAM per i caricamenti S3
- Nella console AWS, vai a IAM > Policy > Crea policy > Scheda JSON.
Inserisci la seguente policy:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowPutDomainToolsIrisObjects", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::domaintools-iris/*" } ] }
- Sostituisci
domaintools-iris
se hai inserito un nome bucket diverso.
- Sostituisci
Fai clic su Avanti > Crea policy.
Vai a IAM > Ruoli > Crea ruolo > Servizio AWS > Lambda.
Allega il criterio appena creato.
Assegna al ruolo il nome
WriteDomainToolsIrisToS3Role
e fai clic su Crea ruolo.
Crea la funzione Lambda
- Nella console AWS, vai a Lambda > Funzioni > Crea funzione.
- Fai clic su Crea autore da zero.
Fornisci i seguenti dettagli di configurazione:
Impostazione Valore Nome domaintools_iris_to_s3
Tempo di esecuzione Python 3.13 Architettura x86_64 Ruolo di esecuzione WriteDomainToolsIrisToS3Role
Dopo aver creato la funzione, apri la scheda Codice, elimina lo stub e inserisci il seguente codice (
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))
Vai a Configurazione > Variabili di ambiente > Modifica > Aggiungi nuova variabile di ambiente.
Inserisci le seguenti variabili di ambiente, sostituendole con i tuoi valori:
Chiave Valore di esempio Descrizione S3_BUCKET
domaintools-iris
Nome del bucket S3 in cui verranno archiviati i dati. S3_PREFIX
domaintools/iris/
Prefisso S3 (sottocartella) facoltativo per gli oggetti. STATE_KEY
domaintools/iris/state.json
Chiave facoltativa del file di stato/checkpoint. DT_API_KEY
DT-XXXXXXXXXXXXXXXXXXXX
Chiave API DomainTools. DT_API_SECRET
YYYYYYYYYYYYYYYYYYYYYYYY
API secret di DomainTools (se applicabile). USE_MODE
HASH
|DOMAINS
|QUERY
Seleziona la modalità da utilizzare (solo una è attiva alla volta). SEARCH_HASHES
hash1;hash2;hash3
Obbligatorio se USE_MODE=HASH
. Elenco separato da punto e virgola degli hash delle ricerche salvate dall'interfaccia utente di Iris.DOMAINS
example.com;domaintools.com
Obbligatorio se USE_MODE=DOMAINS
. Elenco di domini separati da punti e virgola.QUERY_LIST
ip=1.1.1.1;ip=8.8.8.8;domain=example.org
Obbligatorio se USE_MODE=QUERY
. Elenco di stringhe di query separate da punto e virgola (k=v&k2=v2
).PAGE_SIZE
500
Righe per pagina (valore predefinito 500). MAX_PAGES
20
Numero massimo di pagine per richiesta Dopo aver creato la funzione, rimani sulla relativa pagina (o apri Lambda > Funzioni > la tua funzione).
Seleziona la scheda Configurazione.
Nel riquadro Configurazione generale, fai clic su Modifica.
Modifica Timeout impostando 15 minuti (900 secondi) e fai clic su Salva.
Creare una pianificazione EventBridge
- Vai a Amazon EventBridge > Scheduler > Crea pianificazione.
- Fornisci i seguenti dettagli di configurazione:
- Programma ricorrente: Tariffa (
1 hour
). - Destinazione: la tua funzione Lambda.
- Nome:
domaintools-iris-1h
- Programma ricorrente: Tariffa (
- Fai clic su Crea pianificazione.
(Facoltativo) Crea chiavi e utente IAM di sola lettura per Google SecOps
- Nella console AWS, vai a IAM > Utenti, poi fai clic su Aggiungi utenti.
- Fornisci i seguenti dettagli di configurazione:
- Utente: inserisci un nome univoco (ad esempio
secops-reader
) - Tipo di accesso: seleziona Chiave di accesso - Accesso programmatico
- Fai clic su Crea utente.
- Utente: inserisci un nome univoco (ad esempio
- Allega criterio per la lettura minimi (personalizzati): Utenti > seleziona
secops-reader
> Autorizzazioni > Aggiungi autorizzazioni > Allega criteri direttamente > Crea criteri Nell'editor JSON, inserisci la seguente policy:
{ "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>" } ] }
Imposta il nome su
secops-reader-policy
.Vai a Crea criterio > cerca/seleziona > Avanti > Aggiungi autorizzazioni.
Vai a Credenziali di sicurezza > Chiavi di accesso > Crea chiave di accesso.
Scarica il file CSV (questi valori vengono inseriti nel feed).
Configura un feed in Google SecOps per importare i risultati di DomainTools Iris Investigate
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio,
DomainTools Iris Investigate
). - Seleziona Amazon S3 V2 come Tipo di origine.
- Seleziona DomainTools Threat Intelligence come Tipo di log.
- Fai clic su Avanti.
- Specifica i valori per i seguenti parametri di input:
- URI S3:
s3://domaintools-iris/domaintools/iris/
- Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
- Durata massima del file: 180 giorni per impostazione predefinita.
- ID chiave di accesso: chiave di accesso utente con accesso al bucket S3.
- Chiave di accesso segreta: chiave segreta dell'utente con accesso al bucket S3.
- Spazio dei nomi dell'asset:
domaintools.threat_intel
- Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
- URI S3:
- Fai clic su Avanti.
- Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
attivo | principal.domain.status | Mappato direttamente dal campo active nel log non elaborato. |
additional_whois_email.[].value | about.labels.additional_whois_email | Estratto dall'array additional_whois_email e aggiunto come etichetta nell'oggetto about . |
adsense.value | about.labels.adsense | Estratto da adsense.value e aggiunto come etichetta nell'oggetto about . |
admin_contact.city.value | principal.domain.admin.office_address.city | Mappato direttamente dal campo admin_contact.city.value nel log non elaborato. |
admin_contact.country.value | principal.domain.admin.office_address.country_or_region | Mappato direttamente dal campo admin_contact.country.value nel log non elaborato. |
admin_contact.email.[].value | principal.domain.admin.email_addresses | Estratto dall'array admin_contact.email e aggiunto al campo email_addresses . |
admin_contact.fax.value | principal.domain.admin.attribute.labels.fax | Estratto da admin_contact.fax.value e aggiunto come etichetta con la chiave "fax" nell'attributo admin . |
admin_contact.name.value | principal.domain.admin.user_display_name | Mappato direttamente dal campo admin_contact.name.value nel log non elaborato. |
admin_contact.org.value | principal.domain.admin.company_name | Mappato direttamente dal campo admin_contact.org.value nel log non elaborato. |
admin_contact.phone.value | principal.domain.admin.phone_numbers | Mappato direttamente dal campo admin_contact.phone.value nel log non elaborato. |
admin_contact.postal.value | principal.domain.admin.attribute.labels.postal | Estratto da admin_contact.postal.value e aggiunto come etichetta con la chiave "postal" nell'attributo admin . |
admin_contact.state.value | principal.domain.admin.office_address.state | Mappato direttamente dal campo admin_contact.state.value nel log non elaborato. |
admin_contact.street.value | principal.domain.admin.office_address.name | Mappato direttamente dal campo admin_contact.street.value nel log non elaborato. |
alexa | about.labels.alexa | Mappato direttamente dal campo alexa nel log non elaborato e aggiunto come etichetta nell'oggetto about . |
baidu_codes.[].value | about.labels.baidu_codes | Estratto dall'array baidu_codes e aggiunto come etichetta nell'oggetto about . |
billing_contact.city.value | principal.domain.billing.office_address.city | Mappato direttamente dal campo billing_contact.city.value nel log non elaborato. |
billing_contact.country.value | principal.domain.billing.office_address.country_or_region | Mappato direttamente dal campo billing_contact.country.value nel log non elaborato. |
billing_contact.email.[].value | principal.domain.billing.email_addresses | Estratto dall'array billing_contact.email e aggiunto al campo email_addresses . |
billing_contact.fax.value | principal.domain.billing.attribute.labels.fax | Estratto da billing_contact.fax.value e aggiunto come etichetta con la chiave "fax" nell'attributo billing . |
billing_contact.name.value | principal.domain.billing.user_display_name | Mappato direttamente dal campo billing_contact.name.value nel log non elaborato. |
billing_contact.org.value | principal.domain.billing.company_name | Mappato direttamente dal campo billing_contact.org.value nel log non elaborato. |
billing_contact.phone.value | principal.domain.billing.phone_numbers | Mappato direttamente dal campo billing_contact.phone.value nel log non elaborato. |
billing_contact.postal.value | principal.domain.billing.attribute.labels.postal | Estratto da billing_contact.postal.value e aggiunto come etichetta con la chiave "postal" nell'attributo billing . |
billing_contact.state.value | principal.domain.billing.office_address.state | Mappato direttamente dal campo billing_contact.state.value nel log non elaborato. |
billing_contact.street.value | principal.domain.billing.office_address.name | Mappato direttamente dal campo billing_contact.street.value nel log non elaborato. |
create_date.value | principal.domain.creation_time | Convertito nel formato timestamp dal campo create_date.value nel log non elaborato. |
data_updated_timestamp | principal.domain.audit_update_time | Convertito nel formato timestamp dal campo data_updated_timestamp nel log non elaborato. |
dominio | principal.hostname | Mappato direttamente dal campo domain nel log non elaborato. |
domain_risk.components.[].evidence | security_result.detection_fields.evidence | Estratto dall'array domain_risk.components.[].evidence e aggiunto come campo di rilevamento con la chiave "evidence" nell'oggetto security_result . |
domain_risk.components.[].name | security_result.category_details | Mappato direttamente dal campo domain_risk.components.[].name nel log non elaborato. |
domain_risk.components.[].risk_score | security_result.risk_score | Mappato direttamente dal campo domain_risk.components.[].risk_score nel log non elaborato. |
domain_risk.components.[].threats | security_result.threat_name | Il primo elemento dell'array domain_risk.components.[].threats è mappato a security_result.threat_name . |
domain_risk.components.[].threats | security_result.detection_fields.threats | Gli elementi rimanenti dell'array domain_risk.components.[].threats vengono aggiunti come campi di rilevamento con la chiave "threats" (minacce) nell'oggetto security_result . |
domain_risk.risk_score | security_result.risk_score | Mappato direttamente dal campo domain_risk.risk_score nel log non elaborato. |
email_domain.[].value | about.labels.email_domain | Estratto dall'array email_domain e aggiunto come etichetta nell'oggetto about . |
expiration_date.value | principal.domain.expiration_time | Convertito nel formato timestamp dal campo expiration_date.value nel log non elaborato. |
fb_codes.[].value | about.labels.fb_codes | Estratto dall'array fb_codes e aggiunto come etichetta nell'oggetto about . |
first_seen.value | principal.domain.first_seen_time | Convertito nel formato timestamp dal campo first_seen.value nel log non elaborato. |
ga4.[].value | about.labels.ga4 | Estratto dall'array ga4 e aggiunto come etichetta nell'oggetto about . |
google_analytics.value | about.labels.google_analytics | Estratto da google_analytics.value e aggiunto come etichetta nell'oggetto about . |
gtm_codes.[].value | about.labels.gtm_codes | Estratto dall'array gtm_codes e aggiunto come etichetta nell'oggetto about . |
hotjar_codes.[].value | about.labels.hotjar_codes | Estratto dall'array hotjar_codes e aggiunto come etichetta nell'oggetto about . |
ip.[].address.value | principal.ip | Il primo elemento dell'array ip è mappato a principal.ip . |
ip.[].address.value | about.labels.ip_address | Gli elementi rimanenti dell'array ip vengono aggiunti come etichette con la chiave "ip_address" nell'oggetto about . |
ip.[].asn.[].value | network.asn | Il primo elemento del primo array ip.asn è mappato a network.asn . |
ip.[].asn.[].value | about.labels.asn | Gli elementi rimanenti degli array ip.asn vengono aggiunti come etichette con la chiave "asn" nell'oggetto about . |
ip.[].country_code.value | principal.location.country_or_region | Il country_code.value del primo elemento dell'array ip è mappato a principal.location.country_or_region . |
ip.[].country_code.value | about.location.country_or_region | country_code.value degli elementi rimanenti nell'array ip viene mappato a about.location.country_or_region . |
ip.[].isp.value | principal.labels.isp | Il isp.value del primo elemento dell'array ip è mappato a principal.labels.isp . |
ip.[].isp.value | about.labels.isp | isp.value degli elementi rimanenti nell'array ip viene mappato a about.labels.isp . |
matomo_codes.[].value | about.labels.matomo_codes | Estratto dall'array matomo_codes e aggiunto come etichetta nell'oggetto about . |
monitor_domain | about.labels.monitor_domain | Mappato direttamente dal campo monitor_domain nel log non elaborato e aggiunto come etichetta nell'oggetto about . |
monitoring_domain_list_name | about.labels.monitoring_domain_list_name | Mappato direttamente dal campo monitoring_domain_list_name nel log non elaborato e aggiunto come etichetta nell'oggetto about . |
mx.[].domain.value | about.domain.name | Mappato direttamente dal campo mx.[].domain.value nel log non elaborato. |
mx.[].host.value | about.hostname | Mappato direttamente dal campo mx.[].host.value nel log non elaborato. |
mx.[].ip.[].value | about.ip | Estratto dall'array mx.[].ip e aggiunto al campo ip . |
mx.[].priority | about.security_result.priority_details | Mappato direttamente dal campo mx.[].priority nel log non elaborato. |
name_server.[].domain.value | about.labels.name_server_domain | Estratto da name_server.[].domain.value e aggiunto come etichetta con la chiave "name_server_domain" nell'oggetto about . |
name_server.[].host.value | principal.domain.name_server | Estratto da name_server.[].host.value e aggiunto al campo name_server . |
name_server.[].host.value | about.domain.name_server | Estratto da name_server.[].host.value e aggiunto al campo name_server . |
name_server.[].ip.[].value | about.labels.ip | Estratto dall'array name_server.[].ip e aggiunto come etichetta con la chiave "ip" nell'oggetto about . |
popularity_rank | about.labels.popularity_rank | Mappato direttamente dal campo popularity_rank nel log non elaborato e aggiunto come etichetta nell'oggetto about . |
redirect.value | about.labels.redirect | Estratto da redirect.value e aggiunto come etichetta nell'oggetto about . |
redirect_domain.value | about.labels.redirect_domain | Estratto da redirect_domain.value e aggiunto come etichetta nell'oggetto about . |
registrant_contact.city.value | principal.domain.registrant.office_address.city | Mappato direttamente dal campo registrant_contact.city.value nel log non elaborato. |
registrant_contact.country.value | principal.domain.registrant.office_address.country_or_region | Mappato direttamente dal campo registrant_contact.country.value nel log non elaborato. |
registrant_contact.email.[].value | principal.domain.registrant.email_addresses | Estratto dall'array registrant_contact.email e aggiunto al campo email_addresses . |
registrant_contact.fax.value | principal.domain.registrant.attribute.labels.fax | Estratto da registrant_contact.fax.value e aggiunto come etichetta con la chiave "fax" nell'attributo registrant . |
registrant_contact.name.value | principal.domain.registrant.user_display_name | Mappato direttamente dal campo registrant_contact.name.value nel log non elaborato. |
registrant_contact.org.value | principal.domain.registrant.company_name | Mappato direttamente dal campo registrant_contact.org.value nel log non elaborato. |
registrant_contact.phone.value | principal.domain.registrant.phone_numbers | Mappato direttamente dal campo registrant_contact.phone.value nel log non elaborato. |
registrant_contact.postal.value | principal.domain.registrant.attribute.labels.postal | Estratto da registrant_contact.postal.value e aggiunto come etichetta con la chiave "postal" nell'attributo registrant . |
registrant_contact.state.value | principal.domain.registrant.office_address.state | Mappato direttamente dal campo registrant_contact.state.value nel log non elaborato. |
registrant_contact.street.value | principal.domain.registrant.office_address.name | Mappato direttamente dal campo registrant_contact.street.value nel log non elaborato. |
registrant_name.value | about.labels.registrant_name | Estratto da registrant_name.value e aggiunto come etichetta nell'oggetto about . |
registrant_org.value | about.labels.registrant_org | Estratto da registrant_org.value e aggiunto come etichetta nell'oggetto about . |
registrar.value | principal.domain.registrar | Mappato direttamente dal campo registrar.value nel log non elaborato. |
registrar_status | about.labels.registrar_status | Estratto dall'array registrar_status e aggiunto come etichetta nell'oggetto about . |
server_type | network.tls.client.server_name | Mappato direttamente dal campo server_type nel log non elaborato. |
soa_email.[].value | principal.user.email_addresses | Estratto dall'array soa_email e aggiunto al campo email_addresses . |
spf_info | about.labels.spf_info | Mappato direttamente dal campo spf_info nel log non elaborato e aggiunto come etichetta nell'oggetto about . |
ssl_email.[].value | about.labels.ssl_email | Estratto dall'array ssl_email e aggiunto come etichetta nell'oggetto about . |
ssl_info.[].alt_names.[].value | about.labels.alt_names | Estratto dall'array ssl_info.[].alt_names e aggiunto come etichetta nell'oggetto about . |
ssl_info.[].common_name.value | about.labels.common_name | Estratto da ssl_info.[].common_name.value e aggiunto come etichetta nell'oggetto about . |
ssl_info.[].duration.value | about.labels.duration | Estratto da ssl_info.[].duration.value e aggiunto come etichetta nell'oggetto about . |
ssl_info.[].email.[].value | about.labels.ssl_info_email | Estratto dall'array ssl_info.[].email e aggiunto come etichetta con la chiave "ssl_info_email" nell'oggetto about . |
ssl_info.[].hash.value | network.tls.server.certificate.sha1 | Il hash.value del primo elemento dell'array ssl_info è mappato a network.tls.server.certificate.sha1 . |
ssl_info.[].hash.value | about.labels.hash | hash.value degli elementi rimanenti nell'array ssl_info viene mappato a about.labels.hash . |
ssl_info.[].issuer_common_name.value | network.tls.server.certificate.issuer | Il issuer_common_name.value del primo elemento dell'array ssl_info è mappato a network.tls.server.certificate.issuer . |
ssl_info.[].issuer_common_name.value | about.labels.issuer_common_name | issuer_common_name.value degli elementi rimanenti nell'array ssl_info viene mappato a about.labels.issuer_common_name . |
ssl_info.[].not_after.value | network.tls.server.certificate.not_after | Il not_after.value del primo elemento dell'array ssl_info viene convertito nel formato timestamp e mappato a network.tls.server.certificate.not_after . |
ssl_info.[].not_after.value | about.labels.not_after | not_after.value degli elementi rimanenti nell'array ssl_info viene mappato a about.labels.not_after . |
ssl_info.[].not_before.value | network.tls.server.certificate.not_before | Il not_before.value del primo elemento dell'array ssl_info viene convertito nel formato timestamp e mappato a network.tls.server.certificate.not_before . |
ssl_info.[].not_before.value | about.labels.not_before | not_before.value degli elementi rimanenti nell'array ssl_info viene mappato a about.labels.not_before . |
ssl_info.[].organization.value | network.organization_name | Il organization.value del primo elemento dell'array ssl_info è mappato a network.organization_name . |
ssl_info.[].organization.value | about.labels.organization | organization.value degli elementi rimanenti nell'array ssl_info viene mappato a about.labels.organization . |
ssl_info.[].subject.value | about.labels.subject | Estratto da ssl_info.[].subject.value e aggiunto come etichetta nell'oggetto about . |
statcounter_project_codes.[].value | about.labels.statcounter_project_codes | Estratto dall'array statcounter_project_codes e aggiunto come etichetta nell'oggetto about . |
statcounter_security_codes.[].value | about.labels.statcounter_security_codes | Estratto dall'array statcounter_security_codes e aggiunto come etichetta nell'oggetto about . |
tags.[].label | about.file.tags | Estratto da tags.[].label e aggiunto al campo tags . |
tags.[].scope | security_result.detection_fields.scope | Estratto da tags.[].scope e aggiunto come campo di rilevamento con la chiave "scope" nell'oggetto security_result . |
tags.[].tagged_at | security_result.detection_fields.tagged_at | Estratto da tags.[].tagged_at e aggiunto come campo di rilevamento con la chiave "tagged_at" nell'oggetto security_result . |
technical_contact.city.value | principal.domain.tech.office_address.city | Mappato direttamente dal campo technical_contact.city.value nel log non elaborato. |
technical_contact.country.value | principal.domain.tech.office_address.country_or_region | Mappato direttamente dal campo technical_contact.country.value nel log non elaborato. |
technical_contact.email.[].value | principal.domain.tech.email_addresses | Estratto dall'array technical_contact.email e aggiunto al campo email_addresses . |
technical_contact.fax.value | principal.domain.tech.attribute.labels.fax | Estratto da technical_contact.fax.value e aggiunto come etichetta con la chiave "fax" nell'attributo tech . |
technical_contact.name.value | principal.domain.tech.user_display_name | Mappato direttamente dal campo technical_contact.name.value nel log non elaborato. |
technical_contact.org.value | principal.domain.tech.company_name | Mappato direttamente dal campo technical_contact.org.value nel log non elaborato. |
technical_contact.phone.value | principal.domain.tech.phone_numbers | Mappato direttamente dal campo technical_contact.phone.value nel log non elaborato. |
technical_contact.postal.value | principal.domain.tech.attribute.labels.postal | Estratto da technical_contact.postal.value e aggiunto come etichetta con la chiave "postal" nell'attributo tech . |
technical_contact.state.value | principal.domain.tech.office_address.state | Mappato direttamente dal campo technical_contact.state.value nel log non elaborato. |
technical_contact.street.value | principal.domain.tech.office_address.name | Mappato direttamente dal campo technical_contact.street.value nel log non elaborato. |
tld | about.labels.tld | Mappato direttamente dal campo tld nel log non elaborato e aggiunto come etichetta nell'oggetto about . |
timestamp | about.labels.timestamp | Mappato direttamente dal campo timestamp nel log non elaborato e aggiunto come etichetta nell'oggetto about . |
website_response | principal.network.http.response_code | Mappato direttamente dal campo website_response nel log non elaborato. |
website_title | about.labels.website_title | Mappato direttamente dal campo website_title nel log non elaborato e aggiunto come etichetta nell'oggetto about . |
whois_url | principal.domain.whois_server | Mappato direttamente dal campo whois_url nel log non elaborato. |
yandex_codes.[].value | about.labels.yandex_codes | Estratto dall'array yandex_codes e aggiunto come etichetta nell'oggetto about . |
edr.client.hostname | Impostato sul valore del campo domain . |
|
edr.client.ip_addresses | Impostato sul valore del primo elemento dell'array ip , nello specifico ip.[0].address.value . |
|
edr.raw_event_name | Impostato su "STATUS_UPDATE" se principal.hostname è presente, altrimenti impostato su "GENERIC_EVENT". |
|
metadata.event_timestamp | Copiato dal campo create_time di primo livello nel log non elaborato. |
|
metadata.event_type | Impostato su "STATUS_UPDATE" se principal.hostname è presente, altrimenti impostato su "GENERIC_EVENT". |
|
metadata.log_type | Imposta il valore su "DOMAINTOOLS_THREATINTEL". | |
metadata.product_name | Imposta il valore su "DOMAINTOOLS". | |
metadata.vendor_name | Imposta il valore su "DOMAINTOOLS". |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.