Integra APIVoid con Google SecOps

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

Antes de comenzar

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

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

  • Clave de API de APIVoid v2: Es una clave de API nueva que se genera específicamente para las APIs de v2 desde tu panel de usuario de APIVoid.

  • Endpoints de API actualizados: Familiaridad con las URLs de extremo de API v2 actualizadas para los servicios específicos de APIVoid que planeas usar (como la API de reputación de IP y la API de reputación de dominio).

Genera una clave de API de APIVoid v2

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

  1. Accede a tu panel de usuario de APIVoid.

  2. Navega a la sección Claves de API. (La ubicación puede variar según las actualizaciones del panel).

  3. Genera una nueva clave de API. Copia y almacena la clave de forma segura de inmediato. Solo se puede mostrar una vez.

Red

Función Puerto predeterminado Dirección Protocolo
API Valores múltiples 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 String N/A No Es el nombre de la instancia para la que deseas configurar la integración.
Descripción String N/A No Es la descripción de la instancia.
Raíz de la API String https://endpoint.apivoid.com Sí Es la dirección de la instancia de APIVoid.
Clave de API Contraseña N/A Sí Es la clave de API generada en la consola de APIVoid.
Verificar SSL Casilla de verificación Desmarcado No Usa esta casilla de verificación si tu conexión de APIVoid requiere una verificación de SSL.
Ejecuta de forma remota Casilla de verificación Desmarcado No Marca el campo para ejecutar la integración configurada de forma remota. Una vez que se marca, aparece la opción para seleccionar el usuario remoto (agente).

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

Si es necesario, puedes realizar cambios más adelante. Después de configurar una instancia de integración, puedes usarla en las guías. Para obtener más información sobre cómo configurar y admitir varias instancias, consulta Cómo admitir varias instancias.

Acciones

Para obtener más información sobre las acciones, consulta Responde a las acciones pendientes desde tu escritorio y Ejecuta una acción manual en tu caso.

Obtén la reputación del dominio

La verificación de reputación de dominio comprueba si un dominio está excluido por servicios populares y confiables de listas de entidades bloqueadas de dominios, como URLVir, ThreatLog, OpenPhish, Spam404, PhishTank, ZeuS Tracker y más. Los servicios de listas de entidades bloqueadas de varios dominios identifican sitios web potencialmente maliciosos y fraudulentos involucrados en la distribución de malware, incidentes de phishing y tiendas en línea falsas.

Parámetros

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

Casos de uso

Uno de los casos de uso de la API de Domain Reputation es verificar si se excluyen los sitios web del cliente, verificar las URLs que envían 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 la cantidad de motores negativos es igual o superior al umbral determinado.

Nombre del campo de enriquecimiento Lógica: Cuándo aplicarla
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 la cantidad de motores detectados es igual o superior al umbral mínimo de sospecha establecido antes del análisis.
Resultado de secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
correcto Verdadero o 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"
    }
]

Obtener la reputación de IP

La API de IP Reputation detecta direcciones IP potencialmente maliciosas que se suelen usar para spam, ataques a sitios web o actividad fraudulenta.

Parámetros

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

Fecha de ejecución

Esta acción se ejecuta en la entidad de dirección IP.

Resultados de la acción

Enriquecimiento de entidades

Marca la entidad como sospechosa si la cantidad de motores negativos es igual o superior al umbral determinado.

Nombre del campo de enriquecimiento Lógica: Cuándo aplicarla
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 estadística de advertencia para informar sobre el estado malicioso del hash enriquecido. La estadística se crea cuando la cantidad de motores detectados es igual o superior al umbral mínimo de sospecha establecido antes del análisis.
Resultado de secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
correcto Verdadero o 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 la URL

Obtén 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 Número entero N/A Sí

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

Casos de uso

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

Fecha de ejecución

Esta acción se ejecuta en la entidad de URL.

Resultados de la acción

Enriquecimiento de entidades

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

Nombre del campo de enriquecimiento Lógica: Cuándo aplicarla
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
redireccionamiento 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 secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
is_success Verdadero o 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"
    }
]
Muro de casos
Tipo de resultado Descripción Tipo
Mensaje de salida*
  1. Entidades exitosas: "APIVoid: Se recuperó la reputación de las siguientes entidades: <entities identifer list>
  2. Entidades con errores: "Se produjo un error en las siguientes entidades: <lista de identificadores de entidades>"
  3. Faltan entidades (sin datos): "No se puede encontrar la reputación de las siguientes entidades: <lista de identificadores de entidades>"
  4. Alerta sin entidades de URL: "APIVoid: No URLs found."
General
Muro de casos en formato CSV

Si hay datos disponibles, crea una nueva tabla de entidades en formato CSV:

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

Si hay datos disponibles, agrega lo siguiente como enriquecimiento de entidades (no olvides agregar 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

Obtener captura de pantalla

Captura una imagen de alta calidad de cualquier sitio web o URL.

Parámetros

N/A

Casos de uso

Un analista puede capturar imágenes 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 la cantidad de motores negativos es igual o superior al umbral determinado. is_suspicious: if data.get("score") > threshold

Nombre del campo de enriquecimiento Lógica: Cuándo aplicarla
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
descartable 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 secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
is_success Verdadero o 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"
    }
]
Muro de casos
Tipo de resultado Descripción Tipo
Mensaje de salida*
  1. Entidades exitosas: "APIVoid: Se agregaron capturas de pantalla para las siguientes entidades: <lista de identificadores de entidades>"
  2. Entidades con errores: "Se produjo un error en las siguientes entidades: <lista de identificadores de entidades>"
  3. Faltan entidades (no hay datos): "No se encontraron capturas de pantalla para las siguientes entidades: <lista de identificadores de entidades>"
  4. Alerta sin entidades de URL: "APIVoid: No URL entities found for capturing screenshots".
  5. Para entidades grandes (tamaño de archivo adjunto > 3 MB): "No se pudieron agregar capturas de pantalla como archivos adjuntos en las siguientes entidades: <<lista de identificadores de entidades>>"
General
Archivos adjuntos

Si hay datos disponibles, crea un objeto de archivo nuevo:

  1. attachment title: 'Screenshot - {0}'.format(entity.identifier)
  2. El nombre de 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 agregar try, except; tenemos una limitación de 3 MB de la plataforma. En caso de un error, agrega un mensaje relevante al registrador.
General

Ping

Probar 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 secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
correcto Verdadero o falso success:False

Verificar correo electrónico

Verifica si un correo electrónico es desechable, tiene registros MX y mucho más.

Parámetros

Nombre del parámetro Tipo Valor predeterminado Es obligatorio Descripción
Umbral Número entero N/A Sí

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

Ejemplo: 3

Casos de uso

Un analista puede verificar si un correo electrónico es desechable, obtener registros MX y mucho 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 la cantidad de motores negativos es igual o superior al umbral determinado. is_suspicious: if data.get("score") > threshold

Nombre del campo de enriquecimiento Lógica: Cuándo aplicarla
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
descartable 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 secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
is_success Verdadero o 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"
    }
]
Muro de casos
Tipo de resultado Descripción Tipo
Mensaje de salida*
  1. successful entities: "APIVoid: Fetched information for the following entities: <entities identifer list>
  2. Entidades con errores: "Se produjo un error en las siguientes entidades: <lista de identificadores de entidades>"
  3. Entidades faltantes (sin datos): "No se puede encontrar información para las siguientes entidades: <lista de identificadores de entidades>"
  4. Alerta sin entidades de URL: "APIVoid: No emails found".
General
Muro de casos en formato CSV Contenido del archivo CSV: datos de la entidad(consulta el ejemplo que aparece a continuación) General
Enriquecimiento

Si hay datos disponibles, agrega lo siguiente como enriquecimiento de entidades (no olvides agregar el prefijo "APIVoid"):

  1. suspicious_domain: data.get("suspicious_domain")
  2. should_block: data.get("should_block")
  3. score: data.get("score")
  4. disposable: 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? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.