Rapid7 InsightIDR 로그 수집
다음에서 지원:
Google SecOps
SIEM
이 파서는 Rapid7 InsightIDR의 JSON 및 SYSLOG 형식 로그를 모두 처리합니다. 이 스크립트는 필드를 추출하고 UDM으로 표준화하며 CVSS 점수 및 악용 정보 등 취약점 데이터에 관한 특정 로직을 실행하여 JSON 및 syslog 형식을 모두 별도로 처리합니다. 또한 인증 시도 및 세션 이벤트를 적절한 UDM 이벤트 유형에 매핑합니다.
시작하기 전에
- Google SecOps 인스턴스가 있는지 확인합니다.
- InsightIDR 관리 콘솔에 대한 권한이 있는지 확인합니다.
Rapid7 InsightIDR에서 API 키 구성
- InsightIDR Command Platform에 로그인합니다.
- 관리를 클릭합니다.
- API 키를 클릭합니다.
- 조직 키 탭으로 이동합니다.
- 새 조직 키를 클릭합니다.
- 조직을 선택하고 키 이름을 입력합니다 (예: Google SecOps).
- 키를 생성합니다.
생성된 키를 표시하는 새 창에서 키를 복사합니다.
Rapid7 InsightIDR 로그를 수집하도록 Google SecOps에서 피드 구성
- 새로 추가를 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다 (예: InsightIDR Logs).
- 소스 유형으로 서드 파티 API를 선택합니다.
- 로그 유형으로 Rapid7 Insight를 선택합니다.
- 다음을 클릭합니다.
- 다음 입력 매개변수의 값을 지정합니다.
- 인증 HTTP 헤더: 이전에
X-Api-Key:<value>
형식으로 생성된 토큰입니다 (예: X-Api-Key:AAAABBBBCCCC111122223333). - API 엔드포인트: 취약점 또는 애셋을 입력합니다.
- API 호스트 이름:
[region].api.insight.rapid7.com
형식의 Rapid7 API 엔드포인트의 FQDN (정규화된 도메인 이름)입니다. - 애셋 네임스페이스: 애셋 네임스페이스입니다.
- 수집 라벨: 이 피드의 이벤트에 적용된 라벨입니다.
- 인증 HTTP 헤더: 이전에
- 다음을 클릭합니다.
- 확정 화면에서 피드 구성을 검토한 다음 제출을 클릭합니다.
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 필드에 매핑됩니다. 상응하는 key 는 exploits 객체 내에 '순위' 필드가 있는지에 따라 '악용 수' 또는 '악용 순위'입니다. |
host_name |
asset.hostname |
host_name 값은 asset.hostname 에 매핑됩니다. host_name 가 비어 있고 ip 와 mac 가 모두 비어 있으면 id 값이 대신 사용됩니다. |
id |
asset.product_object_id |
id 값은 asset.product_object_id 에 매핑됩니다. host_name 가 비어 있고 ip 와 mac 가 모두 비어 있으면 asset.hostname 에 id 값이 사용됩니다. |
ip |
asset.ip , entity.asset.ip |
ip 값은 asset.ip 및 entity.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.mac 및 entity.asset.mac 에 모두 매핑됩니다. |
MessageSourceAddress |
principal.ip , principal.asset.ip |
MessageSourceAddress 에서 추출된 IP 주소는 principal.ip 및 principal.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 패턴이 추가되었습니다.