MISP IOC 로그 수집
다음에서 지원:
Google SecOps
SIEM
개요
이 파서는 JSON 또는 CSV 형식의 MISP 데이터에서 IOC를 추출합니다. 입력을 파싱하고, 필드를 UDM에 매핑하고, 다양한 IOC 유형 (IP, 도메인, 파일 해시 등)을 처리하고, 신뢰도 및 심각도와 같은 위협 정보 컨텍스트로 데이터를 보강합니다. 또한 파서는 다양한 데이터 형식에 관한 특정 로직을 실행하고 누락되거나 지원되지 않는 필드가 있는 케이스를 처리합니다.
시작하기 전에
- Google SecOps 인스턴스가 있는지 확인합니다.
- MISP에 대한 액세스 권한이 있는지 확인합니다.
MISP 위협 인텔리전스 로그를 수집하도록 Google SecOps에서 피드 구성
- SIEM 설정 > 피드로 이동합니다.
- 새로 추가를 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다 (예: MISP 로그).
- 소스 유형으로 Webhook을 선택합니다.
- 로그 유형으로 MISP Threat Intelligence를 선택합니다.
- 다음을 클릭합니다.
- 선택사항: 다음 입력 파라미터의 값을 지정합니다.
- 분할 구분 기호: 로그 줄을 구분하는 데 사용되는 구분 기호입니다(예:
\n
). - 애셋 네임스페이스: 애셋 네임스페이스입니다.
- 수집 라벨: 이 피드의 이벤트에 적용된 라벨입니다.
- 분할 구분 기호: 로그 줄을 구분하는 데 사용되는 구분 기호입니다(예:
- 다음을 클릭합니다.
- 확정 화면에서 피드 구성을 검토한 다음 제출을 클릭합니다.
- 보안 비밀 키 생성을 클릭하여 이 피드를 인증하기 위한 보안 비밀 키를 생성합니다.
- 비밀 키를 복사하여 저장합니다. 이 보안 비밀 키는 다시 볼 수 없습니다. 필요한 경우 새 보안 비밀 키를 재생성할 수 있지만 이 작업을 하면 이전 보안 비밀 키는 더 이상 사용할 수 없게 됩니다.
- 세부정보 탭의 엔드포인트 정보 필드에서 피드 엔드포인트 URL을 복사합니다. 클라이언트 애플리케이션에서 이 엔드포인트 URL을 지정해야 합니다.
- 완료를 클릭합니다.
웹훅 피드에 대한 API 키 만들기
Google Cloud 콘솔 > 사용자 인증 정보로 이동합니다.
사용자 인증 정보 만들기를 클릭한 후 API 키를 선택합니다.
Google Security Operations API에 대한 API 키 액세스를 제한합니다.
엔드포인트 URL 지정
- 클라이언트 애플리케이션에서 웹훅 피드에 제공된 HTTPS 엔드포인트 URL을 지정합니다.
다음 형식의 커스텀 헤더의 일부로 API 키와 보안 비밀 키를 지정하여 인증을 사용 설정합니다.
X-goog-api-key = API_KEY X-Webhook-Access-Key = SECRET
권장사항: URL에 API 키를 지정하는 대신 헤더로 지정하세요.
웹훅 클라이언트가 커스텀 헤더를 지원하지 않는 경우 다음 형식의 쿼리 매개변수를 사용하여 API 키와 보안 비밀 키를 지정할 수 있습니다.
ENDPOINT_URL?key=API_KEY&secret=SECRET
다음을 바꿉니다.
ENDPOINT_URL
: 피드 엔드포인트 URL입니다.API_KEY
: Google Security Operations에 인증하기 위한 API 키입니다.SECRET
: 피드를 인증하기 위해 생성한 보안 비밀 키입니다.
MISP에서 외부 URL에 HTTP 요청 전송 사용 설정
- MISP가 배포된 머신에 액세스합니다.
app/Config/
에 있는 config.php 파일을 수정합니다.rest_client_enable_arbitrary_urls
구성을 찾아 True로 설정합니다.none 'rest_client_enable_arbitrary_urls' => true
- 파일을 저장합니다.
Google SecOps용 MISP에서 웹훅 구성
- MISP Threat Intelligence에 로그인합니다.
- 관리 > 워크플로 > 모듈 목록으로 이동합니다.
- Webhook을 선택합니다.
- 작업 열로 이동하여 사용 설정을 클릭합니다.
- 워크플로 > 트리거 목록으로 이동합니다.
- 원하는 웹훅 트리거를 선택합니다.
- 모듈 목록에서 Webhook을 선택합니다.
- 작업공간에 드래그 앤 드롭합니다.
- 입력을 트리거의 출력에 연결합니다.
- Webhook 모듈에서 다음 필드를 작성합니다.
- URL: ENDPOINT_URL 뒤에 API_KEY 및 SECRET를 입력합니다.
- HTTP 요청 메서드: 게시를 선택합니다.
- 저장을 클릭합니다.
UDM 매핑 표
로그 필드 | UDM 매핑 | 논리 |
---|---|---|
Attribute.category |
event.idm.entity.metadata.threat.category_details |
'data' 필드 내 중첩된 JSON 객체의 Attribute.category 에서 직접 매핑됩니다. JSON 파싱 경로에서 사용됩니다. |
Attribute.comment |
event.idm.entity.metadata.threat.summary |
'data' 필드 내 중첩된 JSON 객체의 Attribute.comment 에서 직접 매핑됩니다. JSON 파싱 경로에서 사용됩니다. |
Attribute.deleted |
event.idm.entity.metadata.threat.detection_fields.value |
Attribute.deleted 에서 직접 매핑되었으며 'Attribute deleted' 키가 있는 감지 필드로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
Attribute.event_id |
event.idm.entity.metadata.threat.detection_fields.value |
Attribute.event_id 에서 직접 매핑되었으며 'Attribute event_id' 키가 있는 감지 필드로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
Attribute.first_seen |
event.idm.entity.metadata.threat.detection_fields.value |
Attribute.first_seen 에서 직접 매핑되었으며 'Attribute first_seen' 키가 있는 감지 필드로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
Attribute.id |
event.idm.entity.metadata.threat.detection_fields.value |
Attribute.id 에서 직접 매핑되며 파싱 경로에 따라 'Attribute id' 또는 'Attribute id $$' 키가 있는 감지 필드로 추가됩니다. CSV 및 JSON 파싱 경로 모두에 사용됩니다. |
Attribute.timestamp |
event.idm.entity.metadata.threat.detection_fields.value |
Attribute.timestamp 에서 직접 매핑되었으며 '속성 타임스탬프' 키가 있는 감지 필드로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
Attribute.to_ids |
event.idm.entity.metadata.threat.detection_fields.value |
Attribute.to_ids 에서 직접 매핑되었으며 'Attribute to_ids' 키가 있는 감지 필드로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
Attribute.type |
log_type |
'data' 필드 내 중첩된 JSON 객체의 Attribute.type 에서 직접 매핑됩니다. 임시 필드로 사용되며 나중에 다른 UDM 필드를 채우는 데 사용됩니다. JSON 파싱 경로에서 사용됩니다. |
Attribute.uuid |
event.idm.entity.metadata.product_entity_id |
'data' 필드 내 중첩된 JSON 객체의 Attribute.uuid 에서 직접 매핑됩니다. JSON 파싱 경로에서 사용됩니다. |
Attribute.value |
다수 | 이 필드의 값은 Attribute.type (또는 Attribute.type 에서 파생된 경우 log_type )에 따라 여러 UDM 필드를 채우는 데 사용됩니다.- type 이 '도메인'인 경우 event.idm.entity.entity.hostname - type 이 'md5'인 경우 event.idm.entity.entity.file.md5 - type 이 'sha1'인 경우 event.idm.entity.entity.file.sha1 .- type 이 'sha256'인 경우 event.idm.entity.entity.file.sha256 입니다.- type 이 '뮤텍스'인 경우 event.idm.entity.entity.resource.name - type 이 'regkey'인 경우 event.idm.entity.entity.registry.registry_key - type 이 'threat-actor'인 경우 event.idm.entity.entity.user.email_addresses 입니다.- type 이 'uri' 또는 'url'인 경우 event.idm.entity.entity.url 입니다.- type 이 '파일 이름'인 경우 event.idm.entity.entity.file.full_path - type 이 'ip-dst|port', 'ip-dst' 또는 'ip-src'인 경우 IP 및 포트로 파싱됩니다. JSON 파싱 경로에서 사용됩니다. |
column1 |
event.idm.entity.metadata.product_entity_id |
CSV 파싱 경로의 column1 에서 직접 매핑됩니다. |
column14 |
event.idm.entity.metadata.threat.description 의 일부 |
description 와 연결되어 위협 메타데이터의 최종 설명을 형성합니다. CSV 파싱 경로에 사용됩니다. |
column16 |
event.idm.entity.metadata.threat.threat_feed_name , event.ioc.feed_name |
column16 에서 직접 매핑됩니다. CSV 파싱 경로에 사용됩니다. |
column18 |
event.idm.entity.metadata.threat.severity_details , event.ioc.raw_severity |
column18 에서 직접 매핑됩니다. CSV 파싱 경로에 사용됩니다. |
column21 |
event.idm.entity.metadata.threat.description 의 일부, event.ioc.description |
설명의 기반으로 사용되며 나중에 event_info 와 연결됩니다. CSV 파싱 경로에 사용됩니다. |
column3 |
event.ioc.categorization 의 일부 |
column3 에서 직접 매핑되고 'IOC'와 연결되어 최종 분류를 형성합니다. CSV 파싱 경로에 사용됩니다. |
column4 |
event.idm.entity.metadata.description |
column4 에서 직접 매핑됩니다. CSV 파싱 경로에 사용됩니다. |
column5 |
다수 | 이 필드의 값은 column4 필드 (type 에 매핑됨)에 따라 여러 UDM 필드를 채우는 데 사용됩니다.- type 이 '도메인'인 경우 event.idm.entity.entity.hostname - type 이 'ip-dst|port', 'ip-dst' 또는 'ip-src'인 경우 IP 및 포트로 파싱됩니다.- type 이 'md5'인 경우 event.idm.entity.entity.file.md5 - type 이 'sha1'인 경우 event.idm.entity.entity.file.sha1 .- type 이 'sha256'인 경우 event.idm.entity.entity.file.sha256 입니다.- type 이 '뮤텍스'인 경우 event.idm.entity.entity.resource.name - type 이 'regkey'인 경우 event.idm.entity.entity.registry.registry_key - type 이 'threat-actor'인 경우 event.idm.entity.entity.user.email_addresses 입니다.- type 이 'uri' 또는 'url'인 경우 event.idm.entity.entity.url 입니다.- type 이 '파일 이름'인 경우 event.idm.entity.entity.file.full_path CSV 파싱 경로에 사용됩니다. |
column6 |
event.idm.entity.metadata.threat.summary |
column6 에서 직접 매핑됩니다. CSV 파싱 경로에 사용됩니다. |
column8 |
event.ioc.active_timerange.start , event.idm.entity.metadata.interval.start_time |
UNIX 타임스탬프로 파싱됩니다. CSV 파싱 경로에 사용됩니다. |
date description |
event.idm.entity.metadata.threat.description |
'data' 필드 내 중첩된 JSON 객체의 description 에서 직접 매핑됩니다. JSON 파싱 경로에서 사용됩니다. |
event_creator_email |
event.idm.entity.entity.labels.value |
event_creator_email 에서 직접 매핑되었으며 'event_creator_email' 키가 있는 라벨로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
event_id Feed.publish |
event.idm.entity.metadata.threat.detection_fields.value |
Feed.publish 에서 직접 매핑되었으며 '피드 게시' 키가 있는 감지 필드로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
first_seen |
event.ioc.active_timerange.start , event.idm.entity.metadata.interval.start_time |
'yyyy-MM-ddTHH:mm:ssZZ' 형식의 타임스탬프로 파싱됩니다. JSON 파싱 경로에서 사용됩니다. |
id info |
event.idm.entity.metadata.description |
'data' 필드 내 중첩된 JSON 객체의 info 에서 직접 매핑됩니다. JSON 파싱 경로에서 사용됩니다. |
last_seen |
event.ioc.active_timerange.end |
'yyyy-MM-ddTHH:mm:ssZZ' 형식의 타임스탬프로 파싱됩니다. JSON 파싱 경로에서 사용됩니다. |
Org.name |
event.idm.entity.metadata.threat.detection_fields.value |
Org.name 에서 직접 매핑되었으며 '조직 이름' 키가 있는 감지 필드로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
published |
event.idm.entity.metadata.threat.detection_fields.value |
published 에서 직접 매핑되었으며 'published' 키가 있는 감지 필드로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
Tag.colour |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.colour 에서 직접 매핑하고 'tag colour' 키가 있는 감지 필드로 추가했습니다. JSON 파싱 경로에서 사용됩니다. |
Tag.exportable |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.exportable 에서 직접 매핑되었으며 'tag exportable' 키가 있는 감지 필드로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
Tag.hide_tag |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.hide_tag 에서 직접 매핑되었으며 'tag hide_tag' 키가 있는 감지 필드로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
Tag.id |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.id 에서 직접 매핑되었으며 'tag id' 키가 있는 감지 필드로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
Tag.is_custom_galaxy |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.is_custom_galaxy 에서 직접 매핑되었으며 'tag is_custom_galaxy' 키가 있는 감지 필드로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
Tag.is_galaxy |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.is_galaxy 에서 직접 매핑하고 'tag is_galaxy' 키를 사용하여 감지 필드로 추가했습니다. JSON 파싱 경로에서 사용됩니다. |
Tag.isinherited |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.isinherited 에서 직접 매핑되었으며 'tag isinherited' 키가 있는 감지 필드로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
Tag.name |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.name 에서 직접 매핑되었으며 'tag name' 키가 있는 감지 필드로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
Tag.numerical_value |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.numerical_value 에서 직접 매핑되었으며 'tag numerical_value' 키가 있는 감지 필드로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
Tag.user_id |
event.idm.entity.metadata.threat.detection_fields.value |
Tag.user_id 에서 직접 매핑되었으며 'tag user_id' 키가 있는 감지 필드로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
threat_level_id |
event.idm.entity.entity.labels.value |
threat_level_id 에서 직접 매핑되었으며 'threat_level_id' 키로 라벨로 추가되었습니다. JSON 파싱 경로에서 사용됩니다. |
timestamp |
event.idm.entity.metadata.collected_timestamp , event.idm.entity.metadata.interval.start_time |
UNIX 타임스탬프로 파싱됩니다. CSV 파싱 경로에 사용됩니다. |
uuid |
event.idm.entity.metadata.vendor_name |
파서에서 'MISP'로 설정합니다. 파서에서 'MISP'로 설정합니다. 먼 미래의 기본값 (에포크 이후 253402300799초)으로 설정합니다. type 또는 log_type 필드를 기반으로 파서에서 결정합니다. 'FILE', 'DOMAIN_NAME', 'IP_ADDRESS', 'MUTEX', 'RESOURCE', 'USER'일 수 있습니다. Attribute.type 에 따라 Attribute.comment 또는 Attribute.value 에서 파생될 수 있습니다. 유형이 IP 관련인 경우 Attribute.value 또는 column5 에서 파싱됩니다. 유형이 'ip-dst|port'인 경우 Attribute.value 또는 column5 에서 파싱됩니다. CSV 파싱의 column3 또는 JSON 파싱의 Attribute.category 에서 파생됩니다. CSV 파싱에서 column21 및 column14 에서 파생됩니다. column8 또는 first_seen 에서 파생됩니다. last_seen 에서 파생됩니다. Grok 패턴을 사용하여 description 에서 파생되었습니다. column16 에서 파생되거나 'MISP'로 설정됩니다. column18 에서 파생됩니다. 유형이 IP 관련인 경우 Attribute.value 또는 column5 에서 파싱됩니다. 유형이 'ip-dst|port'인 경우 Attribute.value 또는 column5 에서 파싱됩니다. 유형이 '도메인'인 경우 Attribute.value 또는 column5 에서 파생됩니다. description 필드에서 추출된 confidence 필드에서 파생됩니다. 값은 'HIGH_CONFIDENCE', 'MEDIUM_CONFIDENCE', 'LOW_CONFIDENCE' 또는 'UNKNOWN_CONFIDENCE'일 수 있습니다. description 필드에서 추출된 confidence 필드에서 직접 매핑됩니다. CSV 파싱 경로의 column18 에서 파생된 threat_level 필드에서 직접 매핑됩니다. CSV 파싱 경로의 column16 에서 파생된 feed_name 필드에서 직접 매핑됩니다. CSV 파싱에서 column21 및 column14 에서 파생됩니다. CSV 파싱의 column6 또는 JSON 파싱의 Attribute.comment 에서 파생됩니다. 여러 필드가 해당 키와 함께 감지 필드로 추가됩니다. 여러 필드가 해당 키와 함께 라벨로 추가됩니다. 원시 로그의 최상위 timestamp 필드에서 복사됩니다. |
변경사항
2023-09-26
- 'published', 'Feed.publish', 'Org.name', 'Attribute.id', 'Attribute.event_id', 'Attribute.to_ids', 'Attribute.timestamp', 'Attribute.comment', 'Attribute.deleted', 'Attribute.first_seen', 모든 'tag.names'가 'threat.detection_fields'에 매핑되었습니다.
2023-08-17
- 버그 수정 :
- 로그가 JSON이 아닌 경우에만 추가 백슬래시를 삭제하는 'gsub' 작업을 실행하는 조건을 추가했습니다.
2023-07-20
- 버그 수정 :
- 로그가 mutex 유형인 경우 'metadata.entity_type'을 'MUTEX'로 변경했습니다.
2023-07-04
- 파서를 새로 만들었습니다.