Coletar registros do InsightIDR da Rapid7
Esse analisador processa registros JSON e SYSLOG do Rapid7 InsightIDR. Ele extrai campos, os normaliza para o UDM e executa uma lógica específica para dados de vulnerabilidade, incluindo pontuações CVSS e informações de exploração, processando os formatos JSON e syslog separadamente. Ele também mapeia tentativas de autenticação e eventos de sessão para os tipos de evento apropriados do UDM.
Antes de começar
- Verifique se você tem uma instância do Google SecOps.
- Confira se você tem acesso privilegiado ao console de gerenciamento do InsightIDR.
Como configurar uma chave de API no Rapid7 InsightIDR
- Faça login na plataforma de comando do InsightIDR.
- Clique em Administração.
- Clique em Chaves de API.
- Acesse a guia Chaves da organização.
- Clique em Nova chave da organização.
- Selecione uma organização e informe um nome para a chave (por exemplo, Google SecOps).
- Gere a chave.
Copie a chave de uma nova janela que mostra a chave gerada.
Configurar um feed no Google SecOps para ingerir registros do Rapid7 InsightIDR
- Clique em Adicionar novo.
- No campo Nome do feed, insira um nome para o feed (por exemplo, Logs do InsightIDR).
- Selecione API de terceiros como o Tipo de origem.
- Selecione Rapid7 Insight como o Tipo de registro.
- Clique em Próxima.
- Especifique valores para os seguintes parâmetros de entrada:
- Cabeçalho HTTP de autenticação: token gerado anteriormente no formato
X-Api-Key:<value>
(por exemplo, X-Api-Key:AAAABBBBCCCC111122223333). - Endpoint da API: insira vulnerabilidades ou ativos.
- Nome do host da API: o FQDN (nome de domínio totalmente qualificado) do endpoint de API Rapid7 no formato
[region].api.insight.rapid7.com
. - Namespace de recursos: o namespace de recursos.
- Rótulos de ingestão: o rótulo aplicado aos eventos desse feed.
- Cabeçalho HTTP de autenticação: token gerado anteriormente no formato
- Clique em Próxima.
- Revise a configuração do feed na tela Finalizar e clique em Enviar.
Tabela de mapeamento do UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
added |
vulnerabilities.first_found |
O campo added é convertido em um carimbo de data/hora e mapeado para vulnerabilities.first_found . |
Authentication |
security_result.detection_fields.value |
O valor de Authentication do registro bruto é mapeado para o campo value em security_result.detection_fields . O key correspondente é definido como "Autenticação". |
critical_vulnerabilities |
asset.attribute.labels.value |
O valor de critical_vulnerabilities é mapeado para o campo value em asset.attribute.labels . O key correspondente é definido como "Vulnerabilidades críticas". |
cves |
vulnerabilities.cve_id |
O valor de cves é mapeado para vulnerabilities.cve_id . |
cvss_v2_access_complexity |
asset.attribute.labels.value |
O valor de cvss_v2_access_complexity é mapeado para o campo value em asset.attribute.labels . O key correspondente é definido como "Access Complexity(Ac)". |
cvss_v2_availability_impact |
asset.attribute.labels.value |
O valor de cvss_v2_availability_impact é mapeado para o campo value em asset.attribute.labels . O key correspondente é definido como "Impacto na disponibilidade (A)". |
cvss_v2_confidentiality_impact |
asset.attribute.labels.value |
O valor de cvss_v2_confidentiality_impact é mapeado para o campo value em asset.attribute.labels . O key correspondente é definido como "Impacto na confidencialidade (C)". |
cvss_v2_integrity_impact |
asset.attribute.labels.value |
O valor de cvss_v2_integrity_impact é mapeado para o campo value em asset.attribute.labels . O key correspondente é definido como "Impacto na integridade (I)". |
cvss_v2_score |
vulnerabilities.cvss_base_score |
O valor de cvss_v2_score é convertido em uma string, depois em um ponto flutuante e mapeado para vulnerabilities.cvss_base_score . |
cvss_v2_vector |
vulnerabilities.cvss_vector |
O valor de cvss_v2_vector é mapeado para vulnerabilities.cvss_vector . |
cvss_v3_availability_impact |
asset.attribute.labels.value |
O valor de cvss_v3_availability_impact é mapeado para o campo value em asset.attribute.labels . O key correspondente é definido como "Impacto na disponibilidade (A)". |
cvss_v3_score |
vulnerabilities.cvss_base_score |
O valor de cvss_v3_score é convertido em uma string, depois em um ponto flutuante e mapeado para vulnerabilities.cvss_base_score . |
cvss_v3_vector |
vulnerabilities.cvss_vector |
O valor de cvss_v3_vector é mapeado para vulnerabilities.cvss_vector . |
description |
vulnerabilities.description |
O valor de description do registro bruto é mapeado para vulnerabilities.description . |
exploits |
asset.attribute.labels.value |
O valor de exploits é convertido em uma string e mapeado para o campo value em asset.attribute.labels . O key correspondente é "Número de exploits" ou "Classificação de exploit" com base na presença do campo "classificação" no objeto exploits . |
host_name |
asset.hostname |
O valor de host_name é mapeado para asset.hostname . Se host_name estiver vazio e ip e mac também estiverem vazios, o valor de id será usado. |
id |
asset.product_object_id |
O valor de id é mapeado para asset.product_object_id . Se host_name estiver vazio e ip e mac também estiverem vazios, o valor de id será usado para asset.hostname . |
ip |
asset.ip , entity.asset.ip |
O valor de ip é associado a asset.ip e entity.asset.ip . |
last_assessed_for_vulnerabilities |
vulnerabilities.scan_end_time |
O campo last_assessed_for_vulnerabilities é convertido em um carimbo de data/hora e mapeado para vulnerabilities.scan_end_time . |
last_scan_end |
vulnerabilities.last_found |
O campo last_scan_end é convertido em um carimbo de data/hora e mapeado para vulnerabilities.last_found . |
last_scan_start |
vulnerabilities.first_found |
O campo last_scan_start é convertido em um carimbo de data/hora e mapeado para vulnerabilities.first_found . |
links |
vulnerabilities.cve_id , vulnerabilities.vendor_knowledge_base_article_id |
O campo id em links é mapeado para vulnerabilities.cve_id , e o campo href em links é mapeado para vulnerabilities.vendor_knowledge_base_article_id . |
mac |
asset.mac , entity.asset.mac |
O valor de mac é convertido em letras minúsculas e mapeado para asset.mac e entity.asset.mac . |
MessageSourceAddress |
principal.ip , principal.asset.ip |
O endereço IP extraído de MessageSourceAddress é mapeado para principal.ip e principal.asset.ip . |
Method |
network.http.method |
O valor de Method é mapeado para network.http.method . |
moderate_vulnerabilities |
asset.attribute.labels.value |
O valor de moderate_vulnerabilities é convertido em uma string e mapeado para o campo value em asset.attribute.labels . O key correspondente é definido como "Vulnerabilidades moderadas". |
os_architecture |
asset.hardware.cpu_platform |
O valor de os_architecture é mapeado para asset.hardware.cpu_platform . |
os_description |
asset.platform_software.platform_version |
O valor de os_description é mapeado para asset.platform_software.platform_version . |
os_family |
asset.platform_software.platform |
O valor de os_family é convertido em maiúsculas e mapeado para asset.platform_software.platform . O processamento especial é feito para "MAC OS X", "IOS", "WINDOWS", "MAC" e "LINUX". Se não corresponder a nenhuma delas, será definido como "UNKNOWN_PLATFORM". |
Port |
principal.port |
O valor de Port é mapeado para principal.port e convertido em um número inteiro. |
Principal |
principal.user.email_addresses |
Se Principal for um endereço de e-mail, ele será mapeado para principal.user.email_addresses . |
product_event_type |
metadata.product_event_type |
O valor de product_event_type é mapeado para metadata.product_event_type . |
Protocol |
network.application_protocol |
Se Protocol for "HTTP" ou "HTTPS", ele será mapeado para network.application_protocol . |
published |
vulnerabilities.last_found |
O campo published é convertido em um carimbo de data/hora e mapeado para vulnerabilities.last_found . |
Referer |
network.http.referral_url |
O valor de Referer é mapeado para network.http.referral_url . |
risk_score |
asset.attribute.labels.value |
O valor de risk_score é convertido em uma string e mapeado para o campo value em asset.attribute.labels . O key correspondente é definido como "Pontuação de risco". |
security_result_summary |
security_result.summary |
O valor de security_result_summary é mapeado para security_result.summary . Se ele corresponder ao padrão "Total de sessões para o principal: security_result.detection_fields . |
Session |
network.session_id |
O valor de Session é mapeado para network.session_id . |
severe_vulnerabilities |
asset.attribute.labels.value |
O valor de severe_vulnerabilities é convertido em uma string e mapeado para o campo value em asset.attribute.labels . O key correspondente é definido como "Vulnerabilidades graves". |
severity |
vulnerabilities.severity , security_result.severity |
O valor de severity é convertido em maiúsculas. Se for "HIGH", "LOW", "CRITICAL" ou "MEDIUM", ele será mapeado para vulnerabilities.severity . Para mensagens do syslog, se "Info", ele é mapeado para "INFORMATIONAL" em security_result.severity . Se for "Erro", ele será associado a "ERROR" em security_result.severity . |
severity_score |
asset.attribute.labels.value |
O valor de severity_score é convertido em uma string e mapeado para o campo value em asset.attribute.labels . O key correspondente é definido como "Pontuação de gravidade". |
SiloID |
security_result.detection_fields.value |
O valor de SiloID é mapeado para o campo value em security_result.detection_fields . O key correspondente é definido como "ID do silo". |
SourceModuleName |
target.resource.name |
O valor de SourceModuleName com aspas removidas é mapeado para target.resource.name . |
SourceModuleType |
observer.application |
O valor de SourceModuleType com aspas e colchetes de fechamento removidos é mapeado para observer.application . |
Status |
network.http.response_code |
O valor de Status é mapeado para network.http.response_code e convertido em um número inteiro. |
tags |
asset.attribute.labels |
Para cada elemento na matriz tags , o campo type é mapeado para key , e o campo name é mapeado para value em asset.attribute.labels . |
Thread |
security_result.detection_fields.value |
O valor de Thread é mapeado para o campo value em security_result.detection_fields . O key correspondente é definido como "Thread". |
timestamp |
event.timestamp , metadata.collected_timestamp , read_only_udm.metadata.event_timestamp |
O campo timestamp é convertido em um carimbo de data/hora e mapeado para event.timestamp para registros JSON e metadata.collected_timestamp para eventos de entidade. Para mensagens syslog, ele é mapeado para read_only_udm.metadata.event_timestamp . |
title |
vulnerabilities.description |
O valor de title é mapeado para vulnerabilities.description . |
total_vulnerabilities |
asset.attribute.labels.value |
O valor de total_vulnerabilities é convertido em uma string e mapeado para o campo value em asset.attribute.labels . O key correspondente é definido como "Total de vulnerabilidades". |
URI |
security_result.detection_fields.value |
O valor de URI é mapeado para o campo value em security_result.detection_fields . O key correspondente é definido como "URI". |
User-Agent |
network.http.user_agent , network.http.parsed_user_agent |
O valor de User-Agent é mapeado para network.http.user_agent . Ele também é mapeado para network.http.parsed_user_agent e convertido em um objeto de user agent analisado. Fixado em "Rapid7 Insight". Fixado em "Rapid7 Insight". Fixado em "ASSET" para registros JSON. Inicialmente "GENERIC_EVENT", depois pode ser alterado para "PROCESS_UNCATEGORIZED", "STATUS_UPDATE" ou "USER_LOGIN" com base em outros campos. Defina como "AUTHTYPE_UNSPECIFIED" para eventos "USER_LOGIN". Defina como "PERMITIR" ou "BLOQUEAR" com base em product_event_type . Fixado em "RAPID7_INSIGHT" para mensagens syslog. |
username |
principal.user.user_display_name |
O valor de username , com aspas removidas e potencialmente analisadas para o endereço de e-mail, é mapeado para principal.user.user_display_name . O endereço de e-mail extraído, se presente, é mapeado para principal.user.email_addresses . |
Alterações
2024-05-13
- Inclusão de suporte ao novo formato de registros SYSLOG+KV.
2023-05-05
- Melhoria
- "tags.type" foi mapeado para "asset.attribute.labels.key".
- "tags.name" foi associado a "asset.attribute.labels.value".
2022-12-15
- Melhoria
- Melhoramos o analisador para analisar registros de aplicativos no formato Syslog.
- Foram adicionados padrões Grok para os registros com os tipos "Sessão criada", "Sessão destruída", "Tentativa de autenticação bem-sucedida" e "Tentativa de autenticação falhou".