Rapid7 InsightIDR 로그 수집

다음에서 지원:

이 파서는 Rapid7 InsightIDR의 JSON 및 SYSLOG 형식 로그를 모두 처리합니다. 이 스크립트는 필드를 추출하고 UDM으로 표준화하며 CVSS 점수 및 악용 정보 등 취약점 데이터에 관한 특정 로직을 실행하여 JSON 및 syslog 형식을 모두 별도로 처리합니다. 또한 인증 시도 및 세션 이벤트를 적절한 UDM 이벤트 유형에 매핑합니다.

시작하기 전에

  • Google SecOps 인스턴스가 있는지 확인합니다.
  • InsightIDR 관리 콘솔에 대한 권한이 있는지 확인합니다.

Rapid7 InsightIDR에서 API 키 구성

  1. InsightIDR Command Platform에 로그인합니다.
  2. 관리를 클릭합니다.
  3. API 키를 클릭합니다.
  4. 조직 키 탭으로 이동합니다.
  5. 새 조직 키를 클릭합니다.
  6. 조직을 선택하고 키 이름을 입력합니다 (예: Google SecOps).
  7. 키를 생성합니다.
  8. 생성된 키를 표시하는 새 창에서 키를 복사합니다.

Rapid7 InsightIDR 로그를 수집하도록 Google SecOps에서 피드 구성

  1. 새로 추가를 클릭합니다.
  2. 피드 이름 필드에 피드 이름을 입력합니다 (예: InsightIDR Logs).
  3. 소스 유형으로 서드 파티 API를 선택합니다.
  4. 로그 유형으로 Rapid7 Insight를 선택합니다.
  5. 다음을 클릭합니다.
  6. 다음 입력 매개변수의 값을 지정합니다.
    • 인증 HTTP 헤더: 이전에 X-Api-Key:<value> 형식으로 생성된 토큰입니다 (예: X-Api-Key:AAAABBBBCCCC111122223333).
    • API 엔드포인트: 취약점 또는 애셋을 입력합니다.
    • API 호스트 이름: [region].api.insight.rapid7.com 형식의 Rapid7 API 엔드포인트의 FQDN (정규화된 도메인 이름)입니다.
    • 애셋 네임스페이스: 애셋 네임스페이스입니다.
    • 수집 라벨: 이 피드의 이벤트에 적용된 라벨입니다.
  7. 다음을 클릭합니다.
  8. 확정 화면에서 피드 구성을 검토한 다음 제출을 클릭합니다.

UDM 매핑 표

로그 필드 UDM 매핑 논리
added vulnerabilities.first_found added 필드는 타임스탬프로 변환되고 vulnerabilities.first_found에 매핑됩니다.
Authentication security_result.detection_fields.value 원시 로그의 Authentication 값은 security_result.detection_fields 내의 value 필드에 매핑됩니다. 상응하는 key는 'Authentication'(인증)으로 설정됩니다.
critical_vulnerabilities asset.attribute.labels.value critical_vulnerabilities 값은 asset.attribute.labels 내의 value 필드에 매핑됩니다. 해당 key는 '심각한 취약점'으로 설정됩니다.
cves vulnerabilities.cve_id cves 값은 vulnerabilities.cve_id에 매핑됩니다.
cvss_v2_access_complexity asset.attribute.labels.value cvss_v2_access_complexity 값은 asset.attribute.labels 내의 value 필드에 매핑됩니다. 해당 key는 'Access Complexity(Ac)(액세스 복잡도)'로 설정됩니다.
cvss_v2_availability_impact asset.attribute.labels.value cvss_v2_availability_impact 값은 asset.attribute.labels 내의 value 필드에 매핑됩니다. 해당 key는 '가용성 영향 (A)'으로 설정됩니다.
cvss_v2_confidentiality_impact asset.attribute.labels.value cvss_v2_confidentiality_impact 값은 asset.attribute.labels 내의 value 필드에 매핑됩니다. 해당 key는 '기밀 유지 영향 (C)'으로 설정됩니다.
cvss_v2_integrity_impact asset.attribute.labels.value cvss_v2_integrity_impact 값은 asset.attribute.labels 내의 value 필드에 매핑됩니다. 해당 key는 '무결성 영향 (I)'으로 설정됩니다.
cvss_v2_score vulnerabilities.cvss_base_score cvss_v2_score 값은 문자열로 변환된 후 부동 소수점으로 변환되고 vulnerabilities.cvss_base_score에 매핑됩니다.
cvss_v2_vector vulnerabilities.cvss_vector cvss_v2_vector 값은 vulnerabilities.cvss_vector에 매핑됩니다.
cvss_v3_availability_impact asset.attribute.labels.value cvss_v3_availability_impact 값은 asset.attribute.labels 내의 value 필드에 매핑됩니다. 해당 key는 '가용성 영향 (A)'으로 설정됩니다.
cvss_v3_score vulnerabilities.cvss_base_score cvss_v3_score 값은 문자열로 변환된 후 부동 소수점으로 변환되고 vulnerabilities.cvss_base_score에 매핑됩니다.
cvss_v3_vector vulnerabilities.cvss_vector cvss_v3_vector 값은 vulnerabilities.cvss_vector에 매핑됩니다.
description vulnerabilities.description 원시 로그의 description 값은 vulnerabilities.description에 매핑됩니다.
exploits asset.attribute.labels.value exploits의 값은 문자열로 변환되고 asset.attribute.labels 내의 value 필드에 매핑됩니다. 상응하는 keyexploits 객체 내에 '순위' 필드가 있는지에 따라 '악용 수' 또는 '악용 순위'입니다.
host_name asset.hostname host_name 값은 asset.hostname에 매핑됩니다. host_name가 비어 있고 ipmac가 모두 비어 있으면 id 값이 대신 사용됩니다.
id asset.product_object_id id 값은 asset.product_object_id에 매핑됩니다. host_name가 비어 있고 ipmac가 모두 비어 있으면 asset.hostnameid 값이 사용됩니다.
ip asset.ip, entity.asset.ip ip 값은 asset.ipentity.asset.ip에 모두 매핑됩니다.
last_assessed_for_vulnerabilities vulnerabilities.scan_end_time last_assessed_for_vulnerabilities 필드는 타임스탬프로 변환되고 vulnerabilities.scan_end_time에 매핑됩니다.
last_scan_end vulnerabilities.last_found last_scan_end 필드는 타임스탬프로 변환되고 vulnerabilities.last_found에 매핑됩니다.
last_scan_start vulnerabilities.first_found last_scan_start 필드는 타임스탬프로 변환되고 vulnerabilities.first_found에 매핑됩니다.
links vulnerabilities.cve_id, vulnerabilities.vendor_knowledge_base_article_id links 내의 id 필드는 vulnerabilities.cve_id에 매핑되고 links 내의 href 필드는 vulnerabilities.vendor_knowledge_base_article_id에 매핑됩니다.
mac asset.mac, entity.asset.mac mac 값은 소문자로 변환되고 asset.macentity.asset.mac에 모두 매핑됩니다.
MessageSourceAddress principal.ip, principal.asset.ip MessageSourceAddress에서 추출된 IP 주소는 principal.ipprincipal.asset.ip에 매핑됩니다.
Method network.http.method Method 값은 network.http.method에 매핑됩니다.
moderate_vulnerabilities asset.attribute.labels.value moderate_vulnerabilities 값은 문자열로 변환되고 asset.attribute.labels 내의 value 필드에 매핑됩니다. 해당 key는 'Moderate Vulnerabilities'(보통 취약점)로 설정됩니다.
os_architecture asset.hardware.cpu_platform os_architecture 값은 asset.hardware.cpu_platform에 매핑됩니다.
os_description asset.platform_software.platform_version os_description 값은 asset.platform_software.platform_version에 매핑됩니다.
os_family asset.platform_software.platform os_family 값이 대문자로 변환되고 asset.platform_software.platform에 매핑됩니다. 'MAC OS X', 'IOS', 'WINDOWS', 'MAC', 'LINUX'에 대해 특별 처리가 실행됩니다. 이 중 어느 것과도 일치하지 않으면 'UNKNOWN_PLATFORM'으로 설정됩니다.
Port principal.port Port 값은 principal.port에 매핑되고 정수로 변환됩니다.
Principal principal.user.email_addresses Principal가 이메일 주소인 경우 principal.user.email_addresses에 매핑됩니다.
product_event_type metadata.product_event_type product_event_type 값은 metadata.product_event_type에 매핑됩니다.
Protocol network.application_protocol Protocol이 'HTTP' 또는 'HTTPS'인 경우 network.application_protocol에 매핑됩니다.
published vulnerabilities.last_found published 필드는 타임스탬프로 변환되고 vulnerabilities.last_found에 매핑됩니다.
Referer network.http.referral_url Referer 값은 network.http.referral_url에 매핑됩니다.
risk_score asset.attribute.labels.value risk_score 값은 문자열로 변환되고 asset.attribute.labels 내의 value 필드에 매핑됩니다. 해당 key는 '위험 점수'로 설정됩니다.
security_result_summary security_result.summary security_result_summary 값은 security_result.summary에 매핑됩니다. '관리자의 총 세션 수: ' 패턴과 일치하는 경우 숫자가 추출되어 security_result.detection_fields 내에서 '세션 수' 키가 있는 별도의 라벨에 매핑됩니다.
Session network.session_id Session 값은 network.session_id에 매핑됩니다.
severe_vulnerabilities asset.attribute.labels.value severe_vulnerabilities의 값은 문자열로 변환되고 asset.attribute.labels 내의 value 필드에 매핑됩니다. 해당 key는 '심각한 취약점'으로 설정됩니다.
severity vulnerabilities.severity, security_result.severity severity 값이 대문자로 변환됩니다. 'HIGH', 'LOW', 'CRITICAL' 또는 'MEDIUM'인 경우 vulnerabilities.severity에 매핑됩니다. syslog 메시지의 경우 '정보'인 경우 security_result.severity에서 'INFORMATIONAL'로 매핑됩니다. 'Error'인 경우 security_result.severity에서 'ERROR'에 매핑됩니다.
severity_score asset.attribute.labels.value severity_score의 값은 문자열로 변환되고 asset.attribute.labels 내의 value 필드에 매핑됩니다. 해당 key는 'Severity Score'(심각도 점수)로 설정됩니다.
SiloID security_result.detection_fields.value SiloID 값은 security_result.detection_fields 내의 value 필드에 매핑됩니다. 해당 key는 'Silo ID'로 설정됩니다.
SourceModuleName target.resource.name 따옴표가 삭제된 SourceModuleName 값은 target.resource.name에 매핑됩니다.
SourceModuleType observer.application 따옴표와 닫는 괄호를 삭제한 SourceModuleType 값은 observer.application에 매핑됩니다.
Status network.http.response_code Status 값은 network.http.response_code에 매핑되고 정수로 변환됩니다.
tags asset.attribute.labels tags 배열의 각 요소에 대해 type 필드는 key에 매핑되고 name 필드는 asset.attribute.labels 내에서 value에 매핑됩니다.
Thread security_result.detection_fields.value Thread 값은 security_result.detection_fields 내의 value 필드에 매핑됩니다. 상응하는 key는 'Thread'(대화목록)로 설정됩니다.
timestamp event.timestamp, metadata.collected_timestamp, read_only_udm.metadata.event_timestamp timestamp 필드는 타임스탬프로 변환되고 JSON 로그의 경우 event.timestamp에, 항목 이벤트의 경우 metadata.collected_timestamp에 매핑됩니다. syslog 메시지의 경우 read_only_udm.metadata.event_timestamp에 매핑됩니다.
title vulnerabilities.description title 값은 vulnerabilities.description에 매핑됩니다.
total_vulnerabilities asset.attribute.labels.value total_vulnerabilities 값은 문자열로 변환되고 asset.attribute.labels 내의 value 필드에 매핑됩니다. 상응하는 key는 '총 취약점 수'로 설정됩니다.
URI security_result.detection_fields.value URI 값은 security_result.detection_fields 내의 value 필드에 매핑됩니다. 상응하는 key는 'URI'로 설정됩니다.
User-Agent network.http.user_agent, network.http.parsed_user_agent User-Agent 값은 network.http.user_agent에 매핑됩니다. 또한 network.http.parsed_user_agent에 매핑되고 파싱된 사용자 에이전트 객체로 변환됩니다. 'Rapid7 Insight'로 하드코딩되었습니다. 'Rapid7 Insight'로 하드코딩되었습니다. JSON 로그의 경우 'ASSET'으로 하드코딩됩니다. 처음에는 'GENERIC_EVENT'로 설정된 후 다른 필드에 따라 'PROCESS_UNCATEGORIZED', 'STATUS_UPDATE' 또는 'USER_LOGIN'으로 변경될 수 있습니다. 'USER_LOGIN' 이벤트의 경우 'AUTHTYPE_UNSPECIFIED'로 설정합니다. product_event_type에 따라 '허용' 또는 '차단'으로 설정합니다. syslog 메시지의 경우 'RAPID7_INSIGHT'로 하드코딩됩니다.
username principal.user.user_display_name 따옴표가 삭제되고 이메일 주소로 파싱될 수 있는 username 값은 principal.user.user_display_name에 매핑됩니다. 추출된 이메일 주소(있는 경우)는 principal.user.email_addresses에 매핑됩니다.

변경사항

2024-05-13

  • 새 형식의 SYSLOG+KV 로그에 대한 지원이 추가되었습니다.

2023-05-05

  • 개선
  • 'tags.type'이 'asset.attribute.labels.key'에 매핑되었습니다.
  • 'tags.name'이 'asset.attribute.labels.value'에 매핑되었습니다.

2022-12-15

  • 개선
  • Syslog 형식의 애플리케이션 로그를 파싱하는 파서가 개선되었습니다.
  • 'Session created', 'Session destroyed', 'Authentication attempt succeeded', 'Authentication attempt failed' 유형의 로그에 Grok 패턴이 추가되었습니다.