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:
Inicia sesión en tu panel de control de usuario de APIVoid.
Ve a la sección Claves de API. La ubicación puede variar en función de las actualizaciones del panel de control.
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 | Sí | Dirección de la instancia de APIVoid. |
Clave de API | Contraseña | N/A | Sí | 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 | Sí | Umbral de riesgo de dominio. El umbral debe ser un valor numérico. Ejemplo: 3 |
Crear estadísticas | Casilla | Marcada | Sí | 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 | Sí | Umbral de riesgo de IP. El umbral debe ser un valor numérico. Ejemplo: 3. |
Crear estadísticas | Casilla | Marcada | Sí | 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 | Sí | 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* |
|
General |
Panel de casos de CSV | Si hay datos disponibles, crea una tabla CSV de entidades nuevas:
|
General |
Enriquecimiento | Si hay datos disponibles, añade lo siguiente como enriquecimiento de entidad (no olvides añadir el prefijo "APIVoid"):
|
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* |
|
General |
Archivos adjuntos | Si hay datos disponibles, cree un objeto de archivo:
|
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 | Sí | 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* |
|
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"):
|
Entidad |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.