Recopila registros de InsightIDR de Rapid7
Este analizador controla los registros en formato JSON y SYSLOG de Rapid7 InsightIDR. Extrae campos, los normaliza a la UDM y realiza una lógica específica para los datos de vulnerabilidad, incluidas las puntuaciones de CVSS y la información de exploits, y controla los formatos JSON y syslog por separado. También asigna los intentos de autenticación y los eventos de sesión a los tipos de eventos de la AUA adecuados.
Antes de comenzar
- Asegúrate de tener una instancia de Google SecOps.
- Asegúrate de tener acceso con privilegios a la consola de administración de InsightIDR.
Cómo configurar una clave de API en Rapid7 InsightIDR
- Accede a la plataforma de comandos de InsightIDR.
- Haz clic en Administración.
- Haz clic en Claves de API.
- Ve a la pestaña Claves de la organización.
- Haz clic en Nueva clave de organización.
- Selecciona una organización y proporciona un nombre para la clave (por ejemplo, Google SecOps).
- Genera la clave.
Copia la clave de una ventana nueva que muestre la clave generada.
Configura un feed en Google SecOps para transferir registros de InsightIDR de Rapid7
- Haz clic en Agregar nueva.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, InsightIDR Logs).
- Selecciona API de terceros como el Tipo de origen.
- Selecciona Rapid7 Insight como el Tipo de registro.
- Haz clic en Siguiente.
- Especifica valores para los siguientes parámetros de entrada:
- Encabezado HTTP de autenticación: Es el token generado anteriormente en formato
X-Api-Key:<value>
(por ejemplo, X-Api-Key:AAAABBBBCCCC111122223333). - Extremo de la API: Ingresa vulnerabilidades o recursos.
- Nombre de host de la API: Es el FQDN (nombre de dominio completamente calificado) del extremo de API de Rapid7 en formato
[region].api.insight.rapid7.com
. - Espacio de nombres de recursos: Es el espacio de nombres de recursos.
- Etiquetas de transferencia: Es la etiqueta que se aplica a los eventos de este feed.
- Encabezado HTTP de autenticación: Es el token generado anteriormente en formato
- Haz clic en Siguiente.
- Revisa la configuración del feed en la pantalla Finalizar y, luego, haz 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 dentro de security_result.detection_fields . El key correspondiente se establece en "Authentication". |
critical_vulnerabilities |
asset.attribute.labels.value |
El valor de critical_vulnerabilities se asigna al campo value dentro de asset.attribute.labels . El key correspondiente se establece en "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 dentro de asset.attribute.labels . El key correspondiente se establece en "Access Complexity(Ac)". |
cvss_v2_availability_impact |
asset.attribute.labels.value |
El valor de cvss_v2_availability_impact se asigna al campo value dentro de asset.attribute.labels . El key correspondiente se establece en "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 dentro de asset.attribute.labels . El key correspondiente se establece en “Impacto en la confidencialidad (C)”. |
cvss_v2_integrity_impact |
asset.attribute.labels.value |
El valor de cvss_v2_integrity_impact se asigna al campo value dentro de asset.attribute.labels . El key correspondiente se establece en "Impacto en la 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 de punto 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 dentro de asset.attribute.labels . El key correspondiente se establece en "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 de punto 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 dentro de asset.attribute.labels . El key correspondiente es "Cantidad de exploits" o "Rango de exploits" según la presencia del campo "rank" dentro del objeto exploits . |
host_name |
asset.hostname |
El valor de host_name se asigna a asset.hostname . Si host_name está vacío y ip y mac también están vacíos, se usa 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 ip y mac también están vacíos, se usa 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 dentro de links se asigna a vulnerabilities.cve_id y el campo href dentro 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 dentro de asset.attribute.labels . El key correspondiente se establece en "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 en mayúsculas y se asigna a asset.platform_software.platform . El manejo especial se realiza para "MAC OS X", "IOS", "WINDOWS", "MAC" y "LINUX". Si no coincide con ninguno de estos, se establece como "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 dentro de asset.attribute.labels . El key correspondiente se establece en "Risk Score". |
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 de sesiones para el 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 dentro de asset.attribute.labels . El key correspondiente se establece en "Vulnerabilidades graves". |
severity |
vulnerabilities.severity , security_result.severity |
El valor de severity se convierte en mayúsculas. Si es “HIGH”, “LOW”, “CRITICAL” o “MEDIUM”, se asigna a vulnerabilities.severity . En el caso de los mensajes de 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 dentro de asset.attribute.labels . El key correspondiente se establece en “Severity Score”. |
SiloID |
security_result.detection_fields.value |
El valor de SiloID se asigna al campo value dentro de security_result.detection_fields . El key correspondiente se establece en "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 |
Para cada elemento del array tags , el campo type se asigna a key y el campo name se asigna a value dentro de asset.attribute.labels . |
Thread |
security_result.detection_fields.value |
El valor de Thread se asigna al campo value dentro de security_result.detection_fields . El key correspondiente se establece en "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 para los registros JSON y a metadata.collected_timestamp para los eventos de entidad. En el caso de los mensajes de 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 dentro de asset.attribute.labels . El key correspondiente se establece en "Total de vulnerabilidades". |
URI |
security_result.detection_fields.value |
El valor de URI se asigna al campo value dentro de security_result.detection_fields . El key correspondiente se establece en "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 usuario-agente analizado. Se codifica de forma fija en "Rapid7 Insight". Se codifica de forma fija en "Rapid7 Insight". Está codificado de forma fija en "ASSET" para los registros JSON. Se establece en "GENERIC_EVENT" inicialmente y, luego, puede cambiar a "PROCESS_UNCATEGORIZED", "STATUS_UPDATE" o "USER_LOGIN" según otros campos. Configúralo como "AUTHTYPE_UNSPECIFIED" para los eventos "USER_LOGIN". Se establece en "ALLOW" o "BLOCK" según product_event_type . Está codificado de forma fija en “RAPID7_INSIGHT” para los mensajes de syslog. |
username |
principal.user.user_display_name |
El valor de username , sin comillas y posiblemente analizado para una dirección de correo electrónico, se asigna a principal.user.user_display_name . La dirección de correo electrónico extraída, si está presente, se asigna a principal.user.email_addresses . |
Cambios
2024-05-13
- Se agregó compatibilidad con el nuevo formato de registros SYSLOG+KV.
2023-05-05
- Mejora
- Se asignó "tags.type" a "asset.attribute.labels.key".
- Se asignó "tags.name" a "asset.attribute.labels.value".
2022-12-15
- Mejora
- Se mejoró el analizador para analizar los registros de la aplicación que tienen formato Syslog.
- Se agregaron patrones de Grok para los registros con los tipos "Se creó la sesión", "Se destruyó la sesión", "Se realizó correctamente el intento de autenticación" y "Falló el intento de autenticación".