Recopilar registros de Rapid7 InsightIDR
Este analizador gestiona los registros con formato JSON y SYSLOG de Rapid7 InsightIDR. Extrae campos, los normaliza al UDM y aplica una lógica específica a los datos de vulnerabilidades, como las puntuaciones CVSS y la información de exploits, gestionando los formatos JSON y syslog por separado. También asigna intentos de autenticación y eventos de sesión a los tipos de eventos de UDM correspondientes.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Instancia de Google SecOps.
- Acceso con privilegios a la consola de gestión de InsightIDR.
Configurar una clave de API en Rapid7 InsightIDR
- Inicia sesión en la plataforma de comandos de InsightIDR.
- Haz clic en Administración.
- Haz clic en Claves de API.
- Ve a la pestaña Claves de organización.
- Haz clic en New Organization Key (Nueva clave de organización).
- Selecciona una organización y asigna un nombre a la clave (por ejemplo, Google SecOps).
- Genera la clave.
Copia la clave de la nueva ventana que muestra la clave generada.
Configurar feeds
Para configurar un feed, sigue estos pasos:
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Añadir feed.
- En la página siguiente, haga clic en Configurar un solo feed.
- En el campo Nombre del feed, introduce un nombre para el feed; por ejemplo, Registros de Rapid7 InsightIDR.
- Seleccione API de terceros como Tipo de fuente.
- Seleccione Rapid7 Insight como Tipo de registro.
- Haz clic en Siguiente.
- Especifique valores para los siguientes parámetros de entrada:
- Encabezado HTTP de autenticación: token generado previamente en formato
X-Api-Key:<value>
(por ejemplo, X-Api-Key:AAAABBBBCCCC111122223333). - Punto de conexión de la API: introduce vulnerabilities o assets.
- Nombre de host de la API: el nombre de dominio completo del endpoint de la API de Rapid7 en formato
[region].api.insight.rapid7.com
.
- Encabezado HTTP de autenticación: token generado previamente en formato
- Haz clic en Siguiente.
- Revise la configuración del feed en la pantalla Finalizar y, a continuación, haga clic en Enviar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
added |
vulnerabilities.first_found |
El campo added se convierte en una marca de tiempo y se asigna a vulnerabilities.first_found . |
Authentication |
security_result.detection_fields.value |
El valor de Authentication del registro sin procesar se asigna al campo value de security_result.detection_fields . El key correspondiente se define como "Autenticación". |
critical_vulnerabilities |
asset.attribute.labels.value |
El valor de critical_vulnerabilities se asigna al campo value de asset.attribute.labels . El key correspondiente se ha definido como "Vulnerabilidades críticas". |
cves |
vulnerabilities.cve_id |
El valor de cves se asigna a vulnerabilities.cve_id . |
cvss_v2_access_complexity |
asset.attribute.labels.value |
El valor de cvss_v2_access_complexity se asigna al campo value de asset.attribute.labels . El key correspondiente se ha definido como "Complejidad de acceso(Ac)". |
cvss_v2_availability_impact |
asset.attribute.labels.value |
El valor de cvss_v2_availability_impact se asigna al campo value de asset.attribute.labels . El valor de key correspondiente es "Impacto en la disponibilidad (A)". |
cvss_v2_confidentiality_impact |
asset.attribute.labels.value |
El valor de cvss_v2_confidentiality_impact se asigna al campo value de asset.attribute.labels . El key correspondiente se ha definido como "Impacto de confidencialidad (C)". |
cvss_v2_integrity_impact |
asset.attribute.labels.value |
El valor de cvss_v2_integrity_impact se asigna al campo value de asset.attribute.labels . El key correspondiente se define como "Impacto de integridad (I)". |
cvss_v2_score |
vulnerabilities.cvss_base_score |
El valor de cvss_v2_score se convierte en una cadena, luego en un número flotante y se asigna a vulnerabilities.cvss_base_score . |
cvss_v2_vector |
vulnerabilities.cvss_vector |
El valor de cvss_v2_vector se asigna a vulnerabilities.cvss_vector . |
cvss_v3_availability_impact |
asset.attribute.labels.value |
El valor de cvss_v3_availability_impact se asigna al campo value de asset.attribute.labels . El valor de key correspondiente es "Impacto en la disponibilidad (A)". |
cvss_v3_score |
vulnerabilities.cvss_base_score |
El valor de cvss_v3_score se convierte en una cadena, luego en un número flotante y se asigna a vulnerabilities.cvss_base_score . |
cvss_v3_vector |
vulnerabilities.cvss_vector |
El valor de cvss_v3_vector se asigna a vulnerabilities.cvss_vector . |
description |
vulnerabilities.description |
El valor de description del registro sin procesar se asigna a vulnerabilities.description . |
exploits |
asset.attribute.labels.value |
El valor de exploits se convierte en una cadena y se asigna al campo value de asset.attribute.labels . El key correspondiente es "Number of Exploits" (Número de vulnerabilidades) o "Rank of Exploit" (Clasificación de vulnerabilidad) en función de si el objeto exploits contiene el campo "rank" (clasificación). |
host_name |
asset.hostname |
El valor de host_name se asigna a asset.hostname . Si host_name está vacío y tanto ip como mac están vacíos, se usará el valor de id . |
id |
asset.product_object_id |
El valor de id se asigna a asset.product_object_id . Si host_name está vacío y tanto ip como mac están vacíos, se usará el valor de id para asset.hostname . |
ip |
asset.ip , entity.asset.ip |
El valor de ip se asigna a asset.ip y entity.asset.ip . |
last_assessed_for_vulnerabilities |
vulnerabilities.scan_end_time |
El campo last_assessed_for_vulnerabilities se convierte en una marca de tiempo y se asigna a vulnerabilities.scan_end_time . |
last_scan_end |
vulnerabilities.last_found |
El campo last_scan_end se convierte en una marca de tiempo y se asigna a vulnerabilities.last_found . |
last_scan_start |
vulnerabilities.first_found |
El campo last_scan_start se convierte en una marca de tiempo y se asigna a vulnerabilities.first_found . |
links |
vulnerabilities.cve_id , vulnerabilities.vendor_knowledge_base_article_id |
El campo id de links se asigna a vulnerabilities.cve_id , y el campo href de links se asigna a vulnerabilities.vendor_knowledge_base_article_id . |
mac |
asset.mac , entity.asset.mac |
El valor de mac se convierte a minúsculas y se asigna a asset.mac y entity.asset.mac . |
MessageSourceAddress |
principal.ip , principal.asset.ip |
La dirección IP extraída de MessageSourceAddress se asigna a principal.ip y principal.asset.ip . |
Method |
network.http.method |
El valor de Method se asigna a network.http.method . |
moderate_vulnerabilities |
asset.attribute.labels.value |
El valor de moderate_vulnerabilities se convierte en una cadena y se asigna al campo value de asset.attribute.labels . El valor de key correspondiente es "Vulnerabilidades moderadas". |
os_architecture |
asset.hardware.cpu_platform |
El valor de os_architecture se asigna a asset.hardware.cpu_platform . |
os_description |
asset.platform_software.platform_version |
El valor de os_description se asigna a asset.platform_software.platform_version . |
os_family |
asset.platform_software.platform |
El valor de os_family se convierte a mayúsculas y se asigna a asset.platform_software.platform . Se aplica un tratamiento especial a "MAC OS X", "IOS", "WINDOWS", "MAC" y "LINUX". Si no coincide con ninguna de ellas, se le asigna el valor "UNKNOWN_PLATFORM". |
Port |
principal.port |
El valor de Port se asigna a principal.port y se convierte en un número entero. |
Principal |
principal.user.email_addresses |
Si Principal es una dirección de correo electrónico, se asigna a principal.user.email_addresses . |
product_event_type |
metadata.product_event_type |
El valor de product_event_type se asigna a metadata.product_event_type . |
Protocol |
network.application_protocol |
Si Protocol es "HTTP" o "HTTPS", se asigna a network.application_protocol . |
published |
vulnerabilities.last_found |
El campo published se convierte en una marca de tiempo y se asigna a vulnerabilities.last_found . |
Referer |
network.http.referral_url |
El valor de Referer se asigna a network.http.referral_url . |
risk_score |
asset.attribute.labels.value |
El valor de risk_score se convierte en una cadena y se asigna al campo value de asset.attribute.labels . El key correspondiente se define como "Puntuación de riesgo". |
security_result_summary |
security_result.summary |
El valor de security_result_summary se asigna a security_result.summary . Si coincide con el patrón "Total sessions for principal: security_result.detection_fields . |
Session |
network.session_id |
El valor de Session se asigna a network.session_id . |
severe_vulnerabilities |
asset.attribute.labels.value |
El valor de severe_vulnerabilities se convierte en una cadena y se asigna al campo value de asset.attribute.labels . El key correspondiente se define como "Vulnerabilidades graves". |
severity |
vulnerabilities.severity , security_result.severity |
El valor de severity se convierte a mayúsculas. Si es "ALTA", "BAJA", "CRÍTICA" o "MEDIA", se asigna a vulnerabilities.severity . En el caso de los mensajes syslog, si es "Info", se asigna a "INFORMATIONAL" en security_result.severity . Si es "Error", se asigna a "ERROR" en security_result.severity . |
severity_score |
asset.attribute.labels.value |
El valor de severity_score se convierte en una cadena y se asigna al campo value de asset.attribute.labels . El key correspondiente se define como "Puntuación de gravedad". |
SiloID |
security_result.detection_fields.value |
El valor de SiloID se asigna al campo value de security_result.detection_fields . El valor de key correspondiente es "ID de silo". |
SourceModuleName |
target.resource.name |
El valor de SourceModuleName sin comillas se asigna a target.resource.name . |
SourceModuleType |
observer.application |
El valor de SourceModuleType , sin comillas ni corchetes de cierre, se asigna a observer.application . |
Status |
network.http.response_code |
El valor de Status se asigna a network.http.response_code y se convierte en un número entero. |
tags |
asset.attribute.labels |
En cada elemento de la matriz tags , el campo type se asigna a key y el campo name se asigna a value en asset.attribute.labels . |
Thread |
security_result.detection_fields.value |
El valor de Thread se asigna al campo value de security_result.detection_fields . El valor de key correspondiente es "Thread". |
timestamp |
event.timestamp , metadata.collected_timestamp , read_only_udm.metadata.event_timestamp |
El campo timestamp se convierte en una marca de tiempo y se asigna a event.timestamp en el caso de los registros JSON y a metadata.collected_timestamp en el de los eventos de entidad. En el caso de los mensajes syslog, se asigna a read_only_udm.metadata.event_timestamp . |
title |
vulnerabilities.description |
El valor de title se asigna a vulnerabilities.description . |
total_vulnerabilities |
asset.attribute.labels.value |
El valor de total_vulnerabilities se convierte en una cadena y se asigna al campo value de asset.attribute.labels . El key correspondiente se define como "Total de vulnerabilidades". |
URI |
security_result.detection_fields.value |
El valor de URI se asigna al campo value de security_result.detection_fields . El key correspondiente se define como "URI". |
User-Agent |
network.http.user_agent , network.http.parsed_user_agent |
El valor de User-Agent se asigna a network.http.user_agent . También se asigna a network.http.parsed_user_agent y se convierte en un objeto de user-agent analizado. Codificado como "Rapid7 Insight". Codificado como "Rapid7 Insight". Codificado como "ASSET" en los registros JSON. Inicialmente, se asigna el valor "GENERIC_EVENT" y, después, se puede cambiar a "PROCESS_UNCATEGORIZED", "STATUS_UPDATE" o "USER_LOGIN" en función de otros campos. Se define como "AUTHTYPE_UNSPECIFIED" para los eventos "USER_LOGIN". Asigna el valor "ALLOW" o "BLOCK" en función de product_event_type . Codificado como "RAPID7_INSIGHT" para los mensajes syslog. |
username |
principal.user.user_display_name |
El valor de username , sin comillas y, posiblemente, analizado para obtener la dirección de correo, se asigna a principal.user.user_display_name . La dirección de correo extraída, si está presente, se asigna a principal.user.email_addresses . |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.