MISP IOC 로그 수집

다음에서 지원:

개요

이 파서는 JSON 또는 CSV 형식의 MISP 데이터에서 IOC를 추출합니다. 입력을 파싱하고, 필드를 UDM에 매핑하고, 다양한 IOC 유형 (IP, 도메인, 파일 해시 등)을 처리하고, 신뢰도 및 심각도와 같은 위협 정보 컨텍스트로 데이터를 보강합니다. 또한 파서는 다양한 데이터 형식에 관한 특정 로직을 실행하고 누락되거나 지원되지 않는 필드가 있는 케이스를 처리합니다.

시작하기 전에

  • Google SecOps 인스턴스가 있는지 확인합니다.
  • MISP에 대한 액세스 권한이 있는지 확인합니다.

MISP 위협 인텔리전스 로그를 수집하도록 Google SecOps에서 피드 구성

  1. SIEM 설정 > 피드로 이동합니다.
  2. 새로 추가를 클릭합니다.
  3. 피드 이름 필드에 피드 이름을 입력합니다 (예: MISP 로그).
  4. 소스 유형으로 Webhook을 선택합니다.
  5. 로그 유형으로 MISP Threat Intelligence를 선택합니다.
  6. 다음을 클릭합니다.
  7. 선택사항: 다음 입력 파라미터의 값을 지정합니다.
    • 분할 구분 기호: 로그 줄을 구분하는 데 사용되는 구분 기호입니다(예: \n).
    • 애셋 네임스페이스: 애셋 네임스페이스입니다.
    • 수집 라벨: 이 피드의 이벤트에 적용된 라벨입니다.
  8. 다음을 클릭합니다.
  9. 확정 화면에서 피드 구성을 검토한 다음 제출을 클릭합니다.
  10. 보안 비밀 키 생성을 클릭하여 이 피드를 인증하기 위한 보안 비밀 키를 생성합니다.
  11. 비밀 키를 복사하여 저장합니다. 이 보안 비밀 키는 다시 볼 수 없습니다. 필요한 경우 새 보안 비밀 키를 재생성할 수 있지만 이 작업을 하면 이전 보안 비밀 키는 더 이상 사용할 수 없게 됩니다.
  12. 세부정보 탭의 엔드포인트 정보 필드에서 피드 엔드포인트 URL을 복사합니다. 클라이언트 애플리케이션에서 이 엔드포인트 URL을 지정해야 합니다.
  13. 완료를 클릭합니다.

웹훅 피드에 대한 API 키 만들기

  1. Google Cloud 콘솔 > 사용자 인증 정보로 이동합니다.

    사용자 인증 정보로 이동

  2. 사용자 인증 정보 만들기를 클릭한 후 API 키를 선택합니다.

  3. Google Security Operations API에 대한 API 키 액세스를 제한합니다.

엔드포인트 URL 지정

  1. 클라이언트 애플리케이션에서 웹훅 피드에 제공된 HTTPS 엔드포인트 URL을 지정합니다.
  2. 다음 형식의 커스텀 헤더의 일부로 API 키와 보안 비밀 키를 지정하여 인증을 사용 설정합니다.

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    권장사항: URL에 API 키를 지정하는 대신 헤더로 지정하세요.

  3. 웹훅 클라이언트가 커스텀 헤더를 지원하지 않는 경우 다음 형식의 쿼리 매개변수를 사용하여 API 키와 보안 비밀 키를 지정할 수 있습니다.

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    다음을 바꿉니다.

    • ENDPOINT_URL: 피드 엔드포인트 URL입니다.
    • API_KEY: Google Security Operations에 인증하기 위한 API 키입니다.
    • SECRET: 피드를 인증하기 위해 생성한 보안 비밀 키입니다.

MISP에서 외부 URL에 HTTP 요청 전송 사용 설정

  1. MISP가 배포된 머신에 액세스합니다.
  2. app/Config/에 있는 config.php 파일을 수정합니다.
  3. rest_client_enable_arbitrary_urls 구성을 찾아 True로 설정합니다. none 'rest_client_enable_arbitrary_urls' => true
  4. 파일을 저장합니다.

Google SecOps용 MISP에서 웹훅 구성

  1. MISP Threat Intelligence에 로그인합니다.
  2. 관리 > 워크플로 > 모듈 목록으로 이동합니다.
  3. Webhook을 선택합니다.
  4. 작업 열로 이동하여 사용 설정을 클릭합니다.
  5. 워크플로 > 트리거 목록으로 이동합니다.
  6. 원하는 웹훅 트리거를 선택합니다.
  7. 모듈 목록에서 Webhook을 선택합니다.
  8. 작업공간에 드래그 앤 드롭합니다.
  9. 입력을 트리거의 출력에 연결합니다.
  10. Webhook 모듈에서 다음 필드를 작성합니다.
    • URL: ENDPOINT_URL 뒤에 API_KEYSECRET를 입력합니다.
    • HTTP 요청 메서드: 게시를 선택합니다.
  11. 저장을 클릭합니다.

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 파싱에서 column21column14에서 파생됩니다. 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 파싱에서 column21column14에서 파생됩니다. 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

  • 파서를 새로 만들었습니다.