Integrar APIVoid con Google SecOps

En este documento se describe cómo integrar APIVoid con Google Security Operations (Google SecOps).

Versión de integración: 12.0

Antes de empezar

Antes de configurar la integración de APIVoid en Google SecOps para la versión 2, comprueba que tienes lo siguiente:

  • Cuenta de APIVoid v2: una cuenta activa con acceso a los servicios de la API v2.

  • Clave de API de APIVoid v2: una nueva clave de API generada específicamente para las APIs v2 desde el panel de control de usuario de APIVoid.

  • Endpoints de la API actualizados: familiaridad con las URLs de los endpoints de la API v2 actualizada de los servicios de APIVoid específicos que quieras usar (como la API IP Reputation o la API Domain Reputation).

Generar una clave de API de APIVoid v2

Para generar tu clave de API de APIVoid v2, sigue estos pasos:

  1. Inicia sesión en tu panel de control de usuario de APIVoid.

  2. Ve a la sección Claves de API. La ubicación puede variar en función de las actualizaciones del panel de control.

  3. Genera una clave de API. Copia y guarda la clave de inmediato de forma segura. Puede que solo se muestre una vez.

Red

Función Puerto predeterminado Dirección Protocolo
API Multivalores Saliente apikey

Parámetros de integración

Usa los siguientes parámetros para configurar la integración:

Nombre del parámetro Tipo Valor predeterminado Es obligatorio Descripción
Nombre de la instancia Cadena N/A No Nombre de la instancia para la que quiere configurar la integración.
Descripción Cadena N/A No Descripción de la instancia.
Raíz de la API Cadena https://endpoint.apivoid.com Dirección de la instancia de APIVoid.
Clave de API Contraseña N/A Clave de API generada en la consola de APIVoid.
Verificar SSL Casilla Desmarcada No Usa esta casilla si tu conexión APIVoid requiere una verificación SSL.
Ejecutar de forma remota Casilla Desmarcada No Marca el campo para ejecutar la integración configurada de forma remota. Una vez marcada, aparece la opción para seleccionar al usuario remoto (agente).

Para obtener instrucciones sobre cómo configurar una integración en Google SecOps, consulta Configurar integraciones.

Si es necesario, puedes hacer cambios más adelante. Después de configurar una instancia de integración, puedes usarla en los cuadernos de estrategias. Para obtener más información sobre cómo configurar y admitir varias instancias, consulta Admitir varias instancias.

Acciones

Para obtener más información sobre las acciones, consulta Responder a acciones pendientes desde Tu espacio de trabajo y Realizar una acción manual.

Obtener reputación de dominio

Obtén comprobaciones de reputación de dominio para saber si un dominio está excluido por servicios de listas de bloqueo de dominios populares y de confianza, como URLVir, ThreatLog, OpenPhish, Spam404, PhishTank y ZeuS Tracker, entre otros. Los servicios de listas de bloqueo de varios dominios identifican sitios web potencialmente maliciosos y fraudulentos implicados en la distribución de malware, incidentes de phishing y tiendas online falsas.

Parámetros

Nombre del parámetro Tipo Valor predeterminado Es obligatorio Descripción
Umbral Cadena 0 Umbral de riesgo de dominio. El umbral debe ser un valor numérico. Ejemplo: 3
Crear estadísticas Casilla Marcada Especifica si la acción debe crear estadísticas o no.

Casos prácticos

Uno de los casos prácticos de la API Domain Reputation es comprobar si los sitios web del cliente están excluidos, comprobar las URLs enviadas por los usuarios en tu aplicación o identificar sitios web potencialmente maliciosos y no seguros.

Fecha de ejecución

Esta acción se ejecuta en las siguientes entidades:

  • Nombre de host
  • URL

Resultados de la acción

Enriquecimiento de entidades

Marca la entidad como sospechosa si el número de buscadores negativos es igual o superior al umbral indicado.

Nombre del campo de enriquecimiento Lógica: cuándo aplicar
alexa_top_100k Devuelve si existe en el resultado JSON.
domain_length Devuelve si existe en el resultado JSON.
alexa_top_10k Devuelve si existe en el resultado JSON.
listas negras Devuelve si existe en el resultado JSON.
servidor Devuelve si existe en el resultado JSON.
host Devuelve si existe en el resultado JSON.
most_abused_tld Devuelve si existe en el resultado JSON.
alexa_top_250k Devuelve si existe en el resultado JSON.
Estadísticas
Gravedad Descripción
Advertencia Se crea una estadística de advertencia para informar sobre el estado malicioso de la entidad enriquecida. Se crea cuando el número de motores detectados es igual o superior al umbral mínimo de sospecha establecido antes del análisis.
Resultado de la secuencia de comandos
Nombre del resultado del script Opciones de valor Ejemplo
correcto Verdadero/Falso success:False
Resultado de JSON
[
    {
        "EntityResult": {
            "alexa_top_100k": false,
            "domain_length": 17,
            "alexa_top_10k": false,
            "blacklists": {
                "scantime": "0.07",
                "detection_rate": "0%",
                "detections": 0,
                "engines_count": 29,
                "engines": [{
                    "engine": "ThreatLog",
                    "detected": false,
                    "confidence": "high",
                    "reference": "http://www.threatlog.com/"
                }, {
                    "engine": "Threat Sourcing",
                    "detected": false,
                    "confidence": "high",
                    "reference": "https://www.threatsourcing.com/"
                }, {
                    "engine": "URLVir",
                    "detected": false,
                    "confidence": "high",
                    "reference": "http://www.urlvir.com/"
                }]},
            "server": {
                "region_name": null,
                "reverse_dns": " ",
                "ip": " ",
                "isp": null,
                "continent_code": null,
                "latitude": null,
                "city_name": null,
                "longitude": null,
                "country_code": null,
                "country_name": null,
                "continent_name": null
            },
            "host": "example.com",
            "most_abused_tld": false,
            "alexa_top_250k": false
        },
        "Entity": "example.com"
    }, {
        "EntityResult": {
            "alexa_top_100k": false,
            "domain_length": 9,
            "alexa_top_10k": false,
            "blacklists": {
                "scantime": "0.03",
                "detection_rate": "0%",
                "detections": 0,
                "engines_count": 29,
                "engines": [{
                    "engine": "ThreatLog",
                    "detected": false,
                    "confidence": "high",
                    "reference": "http://www.threatlog.com/"
                }, {
                    "engine": "Threat Sourcing",
                    "detected": false,
                    "confidence": "high",
                    "reference": "https://www.threatsourcing.com/"
                }, {
                    "engine": "URLVir",
                    "detected": false,
                    "confidence": "high",
                    "reference": "http://www.urlvir.com/"
                }]},
            "server": {
                "region_name": null,
                "reverse_dns": " ",
                "ip": " ",
                "isp": null,
                "continent_code": null,
                "latitude": null,
                "city_name": null,
                "longitude": null,
                "country_code": null,
                "country_name": null,
                "continent_name": null
            },
            "host": "192.0.2.1",
            "most_abused_tld": false,
            "alexa_top_250k": false
        },
        "Entity": "192.0.2.1"
    }
]

Get Ip Reputation

La API de reputación de IP detecta direcciones IP potencialmente maliciosas que se suelen usar para enviar spam, atacar sitios web o realizar actividades fraudulentas.

Parámetros

Parámetro Tipo Valor predeterminado Es obligatorio Descripción
Umbral Cadena N/A Umbral de riesgo de IP. El umbral debe ser un valor numérico. Ejemplo: 3.
Crear estadísticas Casilla Marcada Especifica si la acción debe crear estadísticas o no.

Fecha de ejecución

Esta acción se ejecuta en la entidad Dirección IP.

Resultados de la acción

Enriquecimiento de entidades

Marca la entidad como sospechosa si el número de buscadores negativos es igual o superior al umbral indicado.

Nombre del campo de enriquecimiento Lógica: cuándo aplicar
información Devuelve si existe en el resultado JSON.
listas negras Devuelve si existe en el resultado JSON.
anonimato Devuelve si existe en el resultado JSON.
ip Devuelve si existe en el resultado JSON.
Estadísticas
Gravedad Descripción
Advertencia Se crea una alerta para informar sobre el estado malicioso del hash enriquecido. La estadística se crea cuando el número de motores detectados es igual o superior al umbral mínimo sospechoso definido antes del análisis.
Resultado de la secuencia de comandos
Nombre del resultado del script Opciones de valor Ejemplo
correcto Verdadero/Falso success:False
Resultado de JSON
[
    {
        "EntityResult": {
            "information": {
                "is_proxy": false,
                "is_vpn": false,
                "region_name": "Zhejiang",
                "is_webproxy": false,
                "latitude": 28.680280685424805,
                "isp": "ChinaNet Zhejiang Province Network",
                "continent_code": "AS",
                "is_tor": false,
                "reverse_dns": " ",
                "detections": 18,
                "engines_count": 76,
                "longitude": 121.44277954101562,
                "city_name": "Jiaojiang",
                "country_name": "China",
                "continent_name": "Asia",
                "detection_rate": "24%",
                "country_code": "CN",
                "is_hosting": false
            },
            "blacklists": {
                "scantime": "0.57",
                "detection_rate":
                "24%",
                "detections": 18,
                "engines_count": 76,
                "engines": [{
                    "engine": "PlonkatronixBL",
                    "detected": false,
                    "reference": "http://bl.plonkatronix.com/"
                }, {
                    "engine": "Engine",
                    "detected": true,
                    "reference": "https://home.nuug.no/~engine/"
                }, {"engine": "Malc0de",
                    "detected": false,
                    "reference": "http://malc0de.com/database/index.php"
                   }]},
            "anonymity": {
                "is_tor": false,
                "is_proxy": false,
                "is_vpn": false,
                "is_webproxy": false,
                "is_hosting": false
            },
            "ip": "192.0.2.1"
        },
        "Entity": "192.0.2.1"
    }
]

Obtener la reputación de una URL

Obtiene la reputación de seguridad y la puntuación de riesgo de una URL.

Parámetros

Nombre del parámetro Tipo Valor predeterminado Es obligatorio Descripción
Umbral Entero N/A

Umbral de riesgo de la URL. El umbral debe ser un valor numérico. Ejemplo: 3

Casos prácticos

Un analista puede obtener la reputación de una URL de forma similar a como se obtiene la reputación de un dominio o una dirección IP.

Fecha de ejecución

Esta acción se ejecuta en la entidad URL.

Resultados de la acción

Enriquecimiento de entidades

Marca la entidad como sospechosa si el número de motores negativos es igual o superior al umbral indicado. if data.get("report", {}).get("risk_score", {}).get("result") > threshold

Nombre del campo de enriquecimiento Lógica: cuándo aplicar
domain_blacklist Devuelve si existe en el resultado JSON.
html_forms Devuelve si existe en el resultado JSON.
server_details Devuelve si existe en el resultado JSON.
response_headers Devuelve si existe en el resultado JSON.
redirección Devuelve si existe en el resultado JSON.
file_type Devuelve si existe en el resultado JSON.
risk_score Devuelve si existe en el resultado JSON.
security_checks Devuelve si existe en el resultado JSON.
geo_location Devuelve si existe en el resultado JSON.
url_parts Devuelve si existe en el resultado JSON.
site_category Devuelve si existe en el resultado JSON.
web_page Devuelve si existe en el resultado JSON.
dns_records Devuelve si existe en el resultado JSON.
Resultado de la secuencia de comandos
Nombre del resultado del script Opciones de valor Ejemplo
is_success Verdadero/Falso is_success:False
Resultado de JSON
[
    {
        "EntityResult": {
            "domain_blacklist": {
                "detections": 0,
                "engines": [{
                    "detected": false,
                        "name": "SpamhausDBL", "reference": "https://www.spamhaus.org/lookup/"
                    }, {
                        "detected": false,
                        "name": "ThreatLog",
                        "reference": "http://www.threatlog.com/"
                    }, {
                        "detected": false,
                        "name": "OpenPhish",
                        "reference": "http://www.openphish.com/"
                    }, {
                        "detected": false,
                        "name": "PhishTank",
                        "reference": "http://www.phishtank.com/"
                    }, {
                        "detected": false,
                        "name": "Phishing.Database",
                        "reference": "https://github.com/mitchellkrogza/Phishing.Database"
                    }, {
                        "detected": false,
                        "name": "PhishStats",
                        "reference": "https://phishstats.info/"
                    }, {
                        "detected": false,
                        "name": "URLVir",
                        "reference": "http://www.urlvir.com/"
                    }, {
                        "detected": false,
                        "name": "URLhaus",
                        "reference": "https://urlhaus.abuse.ch/"
                    }, {
                        "detected": false,
                        "name": "RPiList Not Serious",
                        "reference": "https://github.com/RPiList/specials"
                    }, {
                        "detected": false,
                        "name": "precisionsec",
                        "reference": "https://precisionsec.com/"
                    }, {
                        "detected": false,
                        "name": "AntiSocial Blacklist",
                        "reference": "https://theantisocialengineer.com/"
                    }, {
                        "detected": false,
                        "name": "PhishFeed",
                        "reference": "https://phishfeed.com/"
                    }, {
                        "detected": false,
                        "name": "Spam404",
                        "reference": "https://www.spam404.com/"
                    }]},
            "html_forms": {
                "number_of_total_input_fields": 0,
                "email_field_present": false,
                "number_of_total_forms": 0,
                "password_field_present": false,
                "two_text_inputs_in_a_form": false,
                "credit_card_field_present": false
            },
            "server_details": {
                "continent_name": "Asia",
                "hostname": "example.com",
                "region_name": "Seoul-teukbyeolsi",
                "ip": "192.0.2.141",
                "isp": "Example Corporation",
                "continent_code": "AS",
                "country_name": "Korea (Republic of)",
                "city_name": "Seoul",
                "longitude": 126.97782897949219,
                "country_code": "KR",
                "latitude": 37.568260192871094
            },
            "response_headers": {
                "status": "HTTP/1.1 404 Not Found",
                "content-length": "177",
                "code": 404,
                "server": "nginx/1.4.6 (Ubuntu)",
                "connection": "keep-alive",
                "date": "Wed, 15 Jul 2020 08:21:54 GMT",
                "content-type": "text/html"
            },
            "redirection": {
                "url": null,
                "found": false,
                "external": false
            },
            "file_type": {
                "headers": "HTML",
                "extension": "HTML",
                "signature": " "
            },
            "risk_score": {
                "result": 10
            },
            "security_checks": {
                "is_suspended_page": false,
                "is_defaced_heuristic": false,
                "is_windows_exe_file": false,
                "is_credit_card_field": false,
                "is_windows_exe_file_on_free_hosting": false,
                "is_masked_linux_elf_file": false,
                "is_exe_on_directory_listing": false,
                "is_php_on_directory_listing": false,
                "is_masked_windows_exe_file": false,
                "is_sinkholed_domain": false,
                "is_robots_noindex": false,
                "is_windows_exe_file_on_free_dynamic_dns": false,
                "is_doc_on_directory_listing": false,
                "is_non_standard_port": false,
                "is_linux_elf_file_on_free_dynamic_dns": false,
                "is_suspicious_domain": false, "is_suspicious_url_pattern": false,
                "is_china_country": false,
                "is_risky_geo_location": false,
                "is_pdf_on_directory_listing": false,
                "is_valid_https": false,
                "is_external_redirect": false, "is_windows_exe_file_on_ipv4": false,
                "is_phishing_heuristic": false,
                "is_linux_elf_file_on_ipv4": false,
                "is_email_address_on_url_query": false,
                "is_uncommon_clickable_url": false,
                "is_most_abused_tld": false,
                "is_domain_blacklisted": false,
                "is_host_an_ipv4": false,
                "is_linux_elf_file_on_free_hosting": false,
                "is_zip_on_directory_listing": false,
                "is_password_field": false,
                "is_linux_elf_file": false,
                "is_empty_page_title": false,
                "is_directory_listing": false,
                "is_masked_file": false,
                "is_suspicious_file_extension": false,
                "is_suspicious_content": false
            },
            "geo_location": {
                "countries": ["KR"]
            },
            "url_parts": {
                "host_nowww": "example.com",
                "host": "www.example.com",
                "path": "/dynamic/example.html",
                "query": null,
                "scheme": "http",
                "port": 80},
            "site_category": {
                "is_vpn_provider": false,
                "is_url_shortener": false,
                "is_anonymizer": false,
                "is_torrent": false,
                "is_free_dynamic_dns": false,
                "is_free_hosting": false
            },
            "web_page": {
                "keywords": "",
                "description": "",
                "title": "404 Not Found"
            },
            "dns_records": {
                "ns": {
                    "records": [{
                        "country_name": "Korea (Republic of)",
                        "ip": "192.0.2.95",
                        "isp": "Example Corporation",
                        "target": "example.com",
                        "country_code": "KR"
                    }, {
                        "country_name": "Korea (Republic of)",
                        "ip": "192.0.2.26",
                        "isp": "LX",
                        "target": "example.com",
                        "country_code": "KR"
                    }]},
                "mx": {
                    "records": []
                }}},
        "Entity": "www.example.com:80/dynamic/example.html"
    }
]
Panel de casos
Tipo de resultado Descripción Tipo
Mensaje de salida*
  1. Entidades correctas: "APIVoid: Fetched reputation for the following entities: <entities identifer list>
  2. Entidades fallidas: "Se ha producido un error en las siguientes entidades: <lista de identificadores de entidades>"
  3. Entidades que faltan (sin datos): "No se ha encontrado la reputación de las siguientes entidades: <lista de identificadores de entidades>"
  4. Alerta sin entidades de URL: "APIVoid: No URLs found." ("APIVoid: no se han encontrado URLs").
General
Panel de casos de CSV

Si hay datos disponibles, crea una tabla CSV de entidades nuevas:

  1. Informe de lista de bloqueo de dominios: data.get("report",{}).get("domain_blacklist",{}).get("engines", [])
General
Enriquecimiento

Si hay datos disponibles, añade lo siguiente como enriquecimiento de entidad (no olvides añadir el prefijo "APIVoid"):

  1. geo_location: data.get("report",{}).get("geo_location",{}).get("countries", [])
  2. is_suspicious_domain: data.get("report",{}).get("security_checks",{}).get("is_suspicious_domain")
  3. is_domain_blacklisted: data.get("report",{}).get("security_checks",{}).get("is_domain_blacklisted")
  4. is_risky_geo_location: data.get("report",{}).get("security_checks",{}).get("is_risky_geo_location")
  5. risk_score: data.get("report", {}).get("risk_score", {}).get("result")
  6. is_external_redirect: data.get("report",{}).get("security_checks",{}).get("is_external_redirect")
Entidad

Hacer una captura de pantalla

Haz una captura de pantalla de alta calidad de cualquier sitio web o URL.

Parámetros

N/A

Casos prácticos

Un analista puede hacer capturas de pantalla de alta calidad de cualquier sitio web o URL en formato de imagen PNG o JPG.

Fecha de ejecución

Esta acción se ejecuta en la entidad User.

Resultados de la acción

Enriquecimiento de entidades

Marca la entidad como sospechosa si el número de motores negativos es igual o superior al umbral indicado. is_suspicious: if data.get("score") > threshold

Nombre del campo de enriquecimiento Lógica: cuándo aplicar
dominio Devuelve si existe en el resultado JSON.
should_block Devuelve si existe en el resultado JSON.
puntuación Devuelve si existe en el resultado JSON.
desechable Devuelve si existe en el resultado JSON.
has_mx_records Devuelve si existe en el resultado JSON.
has_spf_records Devuelve si existe en el resultado JSON.
Resultado de la secuencia de comandos
Nombre del resultado del script Opciones de valor Ejemplo
is_success Verdadero/Falso is_success:False
Resultado de JSON
[
    {
        "EntityResult": {
            "domain": "example.com",
            "valid_tld": true,
            "email": "user@example.co",
            "role_address": false,
            "should_block": false,
            "risky_tld": false,
            "dirty_words_username": false,
            "suspicious_domain": false,
            "score": 100,
            "educational_domain": false,
            "dirty_words_domain": false,
            "did_you_mean": " ",
            "username": "user",
            "valid_format": true,
            "is_spoofable ": false,
            "disposable": false,
            "government_domain": false,
            "has_spf_records": true,
            "domain_popular": false,
            "has_mx_records": true,
            "china_free_email": false,
            "free_email": false,
            "russian_free_email": false,
            "police_domain": false,
            "dmarc_enforced": false,
            "suspicious_username": false
        },
        "Entity": "USER@EXAMPLE.COM"
    }
]
Panel de casos
Tipo de resultado Descripción Tipo
Mensaje de salida*
  1. Entidades correctas: "APIVoid: Added screenshots for the following entities: <entities identifier list>" ("APIVoid: Se han añadido capturas de pantalla de las siguientes entidades: <lista de identificadores de entidades>")
  2. Entidades fallidas: "Se ha producido un error en las siguientes entidades: <lista de identificadores de entidades>"
  3. Faltan entidades (sin datos): "No se han encontrado capturas de pantalla de las siguientes entidades: <lista de identificadores de entidades>"
  4. Alerta sin entidades de URL: "APIVoid: No se han encontrado entidades de URL para capturar capturas de pantalla."
  5. Entidades grandes (tamaño del archivo adjunto > 3 MB): "No se han podido añadir capturas de pantalla como archivos adjuntos en las siguientes entidades: <<lista de identificadores de entidades>>"
General
Archivos adjuntos

Si hay datos disponibles, cree un objeto de archivo:

  1. Título del archivo adjunto: "Captura de pantalla - {0}".format(entity.identifier)
  2. El nombre del archivo debe ser la URL sin el sufijo (https/http) + "_capture.<formato de archivo>".
  3. La captura de pantalla se devuelve en una cadena codificada en Base64. El contenido del archivo debe ser b64decode(data.get('base64_file')).
  4. No olvides añadir try y except, ya que la plataforma tiene un límite de 3 MB. En caso de error, añade el mensaje pertinente al registrador.
General

Ping

Prueba la conectividad.

Parámetros

N/A

Fecha de ejecución

Esta acción se ejecuta en todas las entidades.

Resultados de la acción

Resultado de la secuencia de comandos
Nombre del resultado del script Opciones de valor Ejemplo
correcto Verdadero/Falso success:False

Verificar correo electrónico

Comprueba si un correo es desechable, si tiene registros MX y más.

Parámetros

Nombre del parámetro Tipo Valor predeterminado Es obligatorio Descripción
Umbral Entero N/A

Umbral de riesgo de correo electrónico. El umbral debe ser un valor numérico.

Ejemplo: 3

Casos prácticos

Un analista puede comprobar si un correo es desechable, obtener registros MX y más.

Fecha de ejecución

Esta acción se ejecuta en la entidad User.

Resultados de la acción

Enriquecimiento de entidades

Marca la entidad como sospechosa si el número de motores negativos es igual o superior al umbral indicado. is_suspicious: if data.get("score") > threshold

Nombre del campo de enriquecimiento Lógica: cuándo aplicar
dominio Devuelve si existe en el resultado JSON.
should_block Devuelve si existe en el resultado JSON.
puntuación Devuelve si existe en el resultado JSON.
desechable Devuelve si existe en el resultado JSON.
has_mx_records Devuelve si existe en el resultado JSON.
has_spf_records Devuelve si existe en el resultado JSON.
Resultado de la secuencia de comandos
Nombre del resultado del script Opciones de valor Ejemplo
is_success Verdadero/Falso is_success:False
Resultado de JSON
[
    {
        "EntityResult": {
            "domain": "example.com",
            "valid_tld": true,
            "email": "user@example.com",
            "role_address": false,
            "should_block": false,
            "risky_tld": false,
            "dirty_words_username": false,
            "suspicious_domain": false,
            "score": 100,
            "educational_domain": false,
            "dirty_words_domain": false,
            "did_you_mean": " ",
            "username": "user",
            "valid_format": true,
            "is_spoofable ": false,
            "disposable": false,
            "government_domain": false,
            "has_spf_records": true,
            "domain_popular": false,
            "has_mx_records": true,
            "china_free_email": false,
            "free_email": false,
            "russian_free_email": false,
            "police_domain": false,
            "dmarc_enforced": false,
            "suspicious_username": false
        },
        "Entity": "USER@EXAMPLE.COm"
    }
]
Panel de casos
Tipo de resultado Descripción Tipo
Mensaje de salida*
  1. Entidades correctas: "APIVoid: Fetched information for the following entities: <entities identifer list>
  2. Entidades fallidas: "Se ha producido un error en las siguientes entidades: <lista de identificadores de entidades>"
  3. Faltan entidades (sin datos): "No se ha encontrado información de las siguientes entidades: <lista de identificadores de entidades>"
  4. Alerta sin entidades de URL: "APIVoid: No se han encontrado correos."
General
Panel de casos de CSV Contenido del archivo CSV: datos de la entidad(ejemplo más abajo) General
Enriquecimiento

Si hay datos disponibles, añade lo siguiente como enriquecimiento de entidad (no olvides añadir el prefijo "APIVoid"):

  1. suspicious_domain: data.get("suspicious_domain")
  2. should_block: data.get("should_block")
  3. score: data.get("score")
  4. desechable: data.get("disposable")
  5. has_mx_records: data.get("has_mx_records")
  6. has_spf_records: data.get("has_spf_records")
Entidad

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.