Proofpoint On Demand 로그 수집

다음에서 지원:

이 파서는 Proofpoint 주문형 JSON 로그에서 필드를 추출하여 UDM 형식으로 변환합니다. 이 파서는 이메일 메타데이터가 포함된 로그 형식과 SMTP 트랜잭션 세부정보가 포함된 로그 형식, 두 가지 기본 로그 형식을 처리하며, 조건부 로직을 사용하여 필드를 적절하게 파싱하고 사용 가능한 데이터를 기반으로 UDM 필드를 채웁니다. 또한 파서는 불필요한 문자 삭제, 타임스탬프 변환과 같은 데이터 정리를 실행합니다.

시작하기 전에

  • Google Security Operations 인스턴스가 있는지 확인합니다.
  • Proofpoint On Demand Remote Syslog 라이선스가 있는지 확인합니다.
  • Proofpoint에 대한 권한이 있는지 확인합니다.

Proofpoint On Demand API 액세스 구성

  1. Proofpoint 관리 포털에 로그인합니다.
  2. 관리 인터페이스의 출시 번호 옆에 표시되는 클러스터 ID를 복사합니다.
  3. 설정 > API 키 관리를 선택합니다.
  4. 새로 만들기를 클릭하여 새 API 키 만들기 대화상자를 표시합니다.
  5. 고유한 이름을 입력합니다 (예: Google SecOps).
  6. API 키를 생성합니다.
  7. 새 API 키의 메뉴에서 세부정보 보기를 선택합니다.
  8. API 키를 복사합니다.

Proofpoint On Demand (PoD) 로그를 수집하도록 Google SecOps에서 피드 구성

  1. SIEM 설정 > 피드로 이동합니다.
  2. 새로 추가를 클릭합니다.
  3. 피드 이름 필드에 피드 이름을 입력합니다 (예: PoD 로그).
  4. 소스 유형으로 서드 파티 API를 선택합니다.
  5. 로그 유형으로 Proofpoint On Demand를 선택합니다.
  6. 다음을 클릭합니다.
  7. 다음 입력 매개변수의 값을 지정합니다.
    • 인증 HTTP 헤더: Proofpoint API 키를 key:<value> 형식으로 입력합니다.
    • 클러스터 ID: 이전에 복사한 Proofpoint 클러스터 ID를 입력합니다.
    • 애셋 네임스페이스: 애셋 네임스페이스입니다.
    • 수집 라벨: 이 피드의 이벤트에 적용된 라벨입니다.
  8. 다음을 클릭합니다.
  9. 확정 화면에서 피드 구성을 검토한 다음 제출을 클릭합니다.

UDM 매핑 표

로그 필드 UDM 매핑 논리
classification security_result.detection_fields.classification 이 값은 원시 로그의 classification 필드에서 직접 가져옵니다.
cluster security_result.detection_fields.cluster 이 값은 원시 로그의 cluster 필드에서 직접 가져옵니다.
completelyRewritten security_result.detection_fields.completelyRewritten 이 값은 원시 로그의 completelyRewritten 필드에서 직접 가져옵니다.
connection.country principal.location.country_or_region 값은 '**'가 아닌 경우 원시 로그의 connection.country 필드에서 직접 가져옵니다.
connection.host principal.hostname 이 값은 원시 로그의 connection.host 필드에서 직접 가져옵니다.
connection.ip principal.ip 값은 유효한 IPv4 주소인 경우 원시 로그의 connection.ip 필드에서 직접 가져옵니다. senderIP가 있는 경우 senderIP와 병합됩니다.
connection.protocol network.application_protocol connection.protocol의 콜론 앞에 있는 프로토콜 부분은 gsub을 사용하여 추출되고 매핑됩니다. 예를 들어 'smtp:smtp'는 'SMTP'가 됩니다.
connection.tls.inbound.cipher network.tls.cipher 값은 '없음'이 아닌 한 원시 로그의 connection.tls.inbound.cipher 필드에서 직접 가져옵니다.
connection.tls.inbound.version network.tls.version 값은 암호화 방식이 'NONE'이 아닌 한 원시 로그의 connection.tls.inbound.version 필드에서 직접 가져옵니다.
envelope.from network.email.from 이 값은 원시 로그의 envelope.from 필드에서 직접 가져옵니다. 또한 sm.from 또는 fromAddress(있는 경우)로 대체됩니다.
envelope.rcpts network.email.to envelope.rcpts의 이메일 주소가 유효한 이메일 주소인 경우 network.email.to 필드에 병합됩니다. sm.to 또는 toAddresses(있는 경우)와도 병합됩니다.
envelope.rcptsHashed read_only_udm.additional.fields envelope.rcptsHashed의 해싱된 이메일 주소는 'toHashed_0', 'toHashed_1' 등의 키가 있는 추가 필드로 추가됩니다.
eventTime @timestamp 값은 ISO8601 또는 RFC 3339 형식을 사용하여 eventTime 필드에서 파싱됩니다.
eventType security_result.summary 이 값은 원시 로그의 eventType 필드에서 직접 가져옵니다.
filter.disposition security_result.action_details 값은 tls.verify가 없는 한 원시 로그의 filter.disposition 필드에서 직접 가져옵니다.
filter.modules.av.virusNames.0 security_result.threat_name 이 값은 원시 로그의 filter.modules.av.virusNames.0 필드에서 직접 가져옵니다.
filter.modules.dmarc.authResults read_only_udm.additional.fields filter.modules.dmarc.authResults의 각 항목에서 메서드와 결과가 'authResultsMethod_0', 'authResults_result_0', 'authResultsMethod_1'과 같은 키를 사용하여 추가 필드로 추가됩니다.
filter.modules.spam.langs read_only_udm.additional.fields filter.modules.spam.langs의 각 언어는 'lang_0', 'lang_1' 등의 키가 있는 추가 필드로 추가됩니다.
filter.modules.spam.safeBlockedListMatches.0.listType security_result.detection_fields.safeBlockedListMatches_listType 이 값은 원시 로그의 filter.modules.spam.safeBlockedListMatches.0.listType 필드에서 직접 가져옵니다.
filter.modules.spam.safeBlockedListMatches.0.rule security_result.detection_fields.safeBlockedListMatches_rule 이 값은 원시 로그의 filter.modules.spam.safeBlockedListMatches.0.rule 필드에서 직접 가져옵니다.
filter.modules.spam.scores.classifiers.adult security_result.detection_fields.adult 값은 원시 로그의 filter.modules.spam.scores.classifiers.adult 필드에서 직접 가져옵니다(비어 있지 않거나 0이 아닌 경우).
filter.modules.spam.scores.classifiers.bulk security_result.detection_fields.bulk 값은 원시 로그의 filter.modules.spam.scores.classifiers.bulk 필드에서 직접 가져옵니다(비어 있지 않거나 0이 아닌 경우).
filter.modules.spam.scores.classifiers.impostor security_result.detection_fields.impostor 값은 원시 로그의 filter.modules.spam.scores.classifiers.impostor 필드에서 직접 가져옵니다(비어 있지 않거나 0이 아닌 경우).
filter.modules.spam.scores.classifiers.lowpriority security_result.detection_fields.lowpriority 값은 원시 로그의 filter.modules.spam.scores.classifiers.lowpriority 필드에서 직접 가져옵니다(비어 있지 않거나 0이 아닌 경우).
filter.modules.spam.scores.classifiers.malware security_result.detection_fields.malware 값은 원시 로그의 filter.modules.spam.scores.classifiers.malware 필드에서 직접 가져옵니다(비어 있지 않거나 0이 아닌 경우).
filter.modules.spam.scores.classifiers.mlx security_result.detection_fields.mlx 값은 원시 로그의 filter.modules.spam.scores.classifiers.mlx 필드에서 직접 가져옵니다(비어 있지 않거나 0이 아닌 경우).
filter.modules.spam.scores.classifiers.mlxlog security_result.detection_fields.mlxlog 값은 원시 로그의 filter.modules.spam.scores.classifiers.mlxlog 필드에서 직접 가져옵니다(비어 있지 않거나 0이 아닌 경우).
filter.modules.spam.scores.classifiers.phish security_result.detection_fields.phish 값은 원시 로그의 filter.modules.spam.scores.classifiers.phish 필드에서 직접 가져옵니다(비어 있거나 0이 아닌 경우).
filter.modules.spam.scores.classifiers.spam security_result.detection_fields.spam 값은 원시 로그의 filter.modules.spam.scores.classifiers.spam 필드에서 직접 가져옵니다(비어 있지 않거나 0이 아닌 경우).
filter.modules.spam.scores.classifiers.suspect security_result.detection_fields.suspect 값은 원시 로그의 filter.modules.spam.scores.classifiers.suspect 필드에서 직접 가져옵니다(비어 있지 않거나 0이 아닌 경우).
filter.modules.spam.scores.engine security_result.detection_fields.engine 값은 원시 로그의 filter.modules.spam.scores.engine 필드에서 직접 가져옵니다(비어 있거나 0이 아닌 경우).
filter.modules.spam.scores.overall security_result.detection_fields.overall 값은 원시 로그의 filter.modules.spam.scores.overall 필드에서 직접 가져옵니다(비어 있지 않거나 0이 아닌 경우).
filter.modules.spam.version.definitions security_result.summary 이 값은 원시 로그의 filter.modules.spam.version.definitions 필드에서 직접 가져옵니다.
filter.modules.spam.version.engine metadata.product_version 이 값은 원시 로그의 filter.modules.spam.version.engine 필드에서 직접 가져옵니다.
filter.modules.urldefense.counts.rewritten read_only_udm.additional.fields.urldefenseCountsRewritten 이 값은 원시 로그의 filter.modules.urldefense.counts.rewritten 필드에서 직접 가져옵니다.
filter.modules.urldefense.counts.total security_result.detection_fields.urldefense_total 이 값은 원시 로그의 filter.modules.urldefense.counts.total 필드에서 직접 가져옵니다.
filter.modules.zerohour.score read_only_udm.additional.fields.zeroHourScore 이 값은 원시 로그의 filter.modules.zerohour.score 필드에서 직접 가져옵니다.
filter.origGuid read_only_udm.additional.fields.origGuid 이 값은 원시 로그의 filter.origGuid 필드에서 직접 가져옵니다.
filter.qid read_only_udm.additional.fields.filterQid 이 값은 원시 로그의 filter.qid 필드에서 직접 가져옵니다.
filter.quarantine.folder security_result.detection_fields.filter_quarantine_folder 이 값은 원시 로그의 filter.quarantine.folder 필드에서 직접 가져옵니다.
filter.quarantine.folderId security_result.detection_fields.filter_quarantine_folderId 이 값은 원시 로그의 filter.quarantine.quarantine.folderId 필드에서 직접 가져옵니다.
filter.quarantine.module security_result.detection_fields.filter_quarantine_module 이 값은 원시 로그의 filter.quarantine.module 필드에서 직접 가져옵니다.
filter.quarantine.rule security_result.detection_fields.filter_quarantine_rule 이 값은 원시 로그의 filter.quarantine.rule 필드에서 직접 가져옵니다.
filter.quarantine.type security_result.detection_fields.filter_quarantine_type 이 값은 원시 로그의 filter.quarantine.type 필드에서 직접 가져옵니다.
filter.routeDirection network.direction filter.routeDirection가 '인바운드'인 경우 network.direction은 'INBOUND'로 설정됩니다. filter.routeDirection가 'outbound'인 경우 network.direction은 'OUTBOUND'로 설정됩니다.
filter.routes read_only_udm.additional.fields filter.routes의 각 경로는 'filterRoutes_0', 'filterRoutes_1' 등의 키가 있는 추가 필드로 추가됩니다.
fromAddress network.email.from fromAddress의 이메일 주소가 올바른 이메일 주소인 경우 network.email.from 필드로 대체됩니다.
guid metadata.product_log_id 이 값은 원시 로그의 guid 필드에서 직접 가져옵니다.
GUID metadata.product_log_id 이 값은 원시 로그의 GUID 필드에서 직접 가져옵니다.
headerFrom network.email.from 이 값은 원시 로그의 headerFrom 필드에서 직접 가져옵니다.
impostorScore security_result.detection_fields.impostorScore 이 값은 원시 로그의 impostorScore 필드에서 직접 가져옵니다.
malwareScore security_result.detection_fields.malwareScore 이 값은 원시 로그의 malwareScore 필드에서 직접 가져옵니다.
messageID network.email.mail_id 이 값은 원시 로그의 messageID 필드에서 직접 가져옵니다.
messageSize security_result.detection_fields.messageSize 이 값은 원시 로그의 messageSize 필드에서 직접 가져옵니다.
messageTime @timestamp 값은 ISO8601 또는 RFC 3339 형식을 사용하여 messageTime 필드에서 파싱됩니다.
metadata.customerId principal.labels.customerId 이 값은 원시 로그의 metadata.customerId 필드에서 직접 가져옵니다.
metadata.origin.data.agent network.http.user_agent 이 값은 원시 로그의 metadata.origin.data.agent 필드에서 직접 가져옵니다.
metadata.origin.data.cid principal.user.userid 이 값은 원시 로그의 metadata.origin.data.cid 필드에서 직접 가져옵니다.
metadata.origin.data.version metadata.product_version 이 값은 원시 로그의 metadata.origin.data.version 필드에서 직접 가져옵니다.
msg.header.from read_only_udm.additional.fields.msgHeaderFrom 이 값은 원시 로그의 msg.header.from.0 필드에서 직접 가져옵니다.
msg.header.reply-to network.email.reply_to msg.header.reply-to.0에서 <>로 묶인 이메일 주소가 추출되고 매핑됩니다.
msg.header.subject network.email.subject 이 값은 원시 로그의 msg.header.subject 필드에서 직접 가져옵니다.
msg.header.to read_only_udm.additional.fields.msgHeaderTo 이 값은 원시 로그의 msg.header.to 필드에서 직접 가져옵니다.
msg.normalizedHeader.subject network.email.subject 이 값은 원시 로그의 msg.normalizedHeader.subject 필드에서 직접 가져옵니다.
msg.parsedAddresses.cc network.email.cc msg.parsedAddresses.cc의 이메일 주소가 유효한 이메일 주소인 경우 network.email.cc 필드에 병합됩니다.
msg.parsedAddresses.ccHashed read_only_udm.additional.fields msg.parsedAddresses.ccHashed의 해싱된 이메일 주소는 'ccHashed_0', 'ccHashed_1'과 같은 키가 있는 추가 입력란으로 추가됩니다.
msg.parsedAddresses.from read_only_udm.additional.fields.msgParsedAddressesFrom 이 값은 원시 로그의 msg.parsedAddresses.from.0 필드에서 직접 가져옵니다.
msg.parsedAddresses.from.0 principal.user.email_addresses 이 값은 원시 로그의 msg.parsedAddresses.from.0 필드에서 직접 가져옵니다.
msg.parsedAddresses.fromHashed read_only_udm.additional.fields.fromHashed 이 값은 원시 로그의 msg.parsedAddresses.fromHashed.0 필드에서 직접 가져옵니다.
msg.parsedAddresses.to target.user.email_addresses msg.parsedAddresses.to의 이메일 주소가 유효한 이메일 주소인 경우 target.user.email_addresses 필드에 병합됩니다.
msgParts read_only_udm.about msgParts의 항목마다 하나씩 여러 개의 about 객체가 생성됩니다. 파일 해시, MIME 유형, 크기, 기타 메타데이터가 추출됩니다.
QID security_result.detection_fields.QID 이 값은 원시 로그의 QID 필드에서 직접 가져옵니다.
recipient target.user.email_addresses recipient의 이메일 주소가 유효한 이메일 주소인 경우 target.user.email_addresses 필드에 병합됩니다.
replyToAddress network.email.reply_to replyToAddress의 이메일 주소가 올바른 이메일 주소인 경우 network.email.reply_to 필드로 대체됩니다.
sender principal.user.email_addresses 값은 유효한 이메일 주소인 경우 원시 로그의 sender 필드에서 직접 가져옵니다.
senderIP principal.ip 이 값은 원시 로그의 senderIP 필드에서 직접 가져옵니다.
sm.from network.email.from 이 값은 원시 로그의 sm.from 필드에서 직접 가져옵니다.
sm.msgid network.email.mail_id 이 값은 원시 로그의 sm.msgid 필드에서 직접 가져오며, 이때 '<" 및 '>"는 삭제됩니다.
sm.proto network.application_protocol 이 값은 원시 로그의 sm.proto 필드에서 직접 가져옵니다.
sm.qid security_result.detection_fields.QUID 이 값은 원시 로그의 sm.qid 필드에서 직접 가져옵니다.
sm.relay intermediary.hostname, intermediary.ip 호스트 이름과 IP 주소는 grok를 사용하여 sm.relay에서 추출됩니다.
sm.stat security_result.detection_fields.Stat sm.stat의 첫 번째 단어가 grok를 사용하여 추출되고 매핑됩니다.
sm.to network.email.to sm.to의 이메일 주소가 유효한 이메일 주소인 경우 network.email.to 필드에 병합됩니다.
spamScore security_result.detection_fields.spamScore 이 값은 원시 로그의 spamScore 필드에서 직접 가져옵니다.
subject network.email.subject 이 값은 원시 로그의 subject 필드에서 직접 가져옵니다.
threat security_result.detection_fields.threat 이 값은 원시 로그의 threat 필드에서 직접 가져옵니다.
threatsInfoMap security_result.detection_fields threatsInfoMap의 각 항목에 있는 키-값 쌍이 감지 필드로 추가됩니다.
threatType security_result.detection_fields.threatType 이 값은 원시 로그의 threatType 필드에서 직접 가져옵니다.
tls.cipher network.tls.cipher 값은 '없음'이 아닌 한 원시 로그의 tls.cipher 필드에서 직접 가져옵니다.
tls.verify security_result.action_details 이 값은 원시 로그의 tls.verify 필드에서 직접 가져옵니다.
tls.version network.tls.version 값은 암호화 방식이 'NONE'이 아닌 한 원시 로그의 tls.version 필드에서 직접 가져옵니다.
toAddresses network.email.to toAddresses의 이메일 주소가 유효한 이메일 주소인 경우 network.email.to 필드에 병합됩니다.
ts @timestamp 값은 추가 초침을 처리하기 위한 사전 처리 후에 ISO8601 또는 RFC 3339 형식을 사용하여 ts 필드에서 파싱됩니다.

변경사항

2024-11-28

  • 개선사항:
  • 'msgParts.metadata.company' 및 'msgParts.metadata.author'가 'security_result.detection_fields'에 매핑되었습니다.
  • 'email.subject'의 중복 매핑을 삭제했습니다.
  • 'filter.modules.dmarc.authResults.' 필드의 매핑을 'additional.fields'에서 'security_result.detection_fields'로 변경했습니다.

2024-08-28

  • 개선사항:
  • 'security_result.detection_fields' 키가 'filterQid'에서 'qid'로 변경되었습니다.

2024-08-21

  • 개선사항:
  • 'metadata.origin.data.cid'가 'additional.fields'에 매핑되었습니다.

2024-07-22

  • 개선사항:
  • 'about.file.size'가 유효한 부호 없는 정수인 경우 'msgPart.detectedSizeBytes'를 'about.file.size'에 매핑했습니다.
  • SYSLOG 로그의 새로운 패턴에 대한 지원이 추가되었습니다.

2024-07-09

  • 개선사항:
  • 'msg.header.x-mailer'가 'additional.fields'에 매핑되었습니다.

2024-07-09

  • 개선사항:
  • 'msg.header.x-mailer'가 'additional.fields'에 매핑되었습니다.

2023-11-13

  • 'subject'가 'network.email.subject'에 매핑되었습니다.
  • 'messageID'가 'network.email.mail_id'에 매핑되었습니다.
  • 'fromAddress'가 'network.email.from'에 매핑되었습니다.
  • 'ccAddresses'가 'network.email.cc'에 매핑되었습니다.
  • 'replyToAddress'가 'network.email.reply_to'에 매핑되었습니다.
  • 'toAddresses'가 'network.email.to'에 매핑되었습니다.
  • 'sender'가 'principal.user.email_addresses'에 매핑되었습니다.
  • 'senderIP'가 'principal.ip'에 매핑되었습니다.
  • 'recipient'가 'target.user.email_addresses'에 매핑되었습니다.
  • 'spamScore', 'phishScore', 'threatsInfoMap', 'impostorScore', 'malwareScore', ''가 'security_result.detection_fields'에 매핑되었습니다.

2023-10-26

  • 'msg.headeparsedAddressesr.from.0'이 'principal.user.email_addresses'에 매핑되었습니다.
  • 지원 중단된 UDM 필드 사용에서 대체 필드로 매핑을 수정했습니다.
  • 'about.labels'에서 'about.resource.attribute.labels'로의 매핑이 추가되었습니다.
  • 'principal.labels'에서 'principal.resource.attribute.labels'로의 매핑이 추가되었습니다.

2023-06-05

  • UDM에 매핑하기 전에 'msg.header.reply-to.0'이 이메일 배열인지 확인하는 검사를 추가했습니다.
  • UDM에 매핑하기 전에 'msgPart.detectedSizeBytes'에 '-1'이 아닌지 확인을 추가했습니다.

2022-07-14

  • 다음 요소를 UDM 요소에 매핑하도록 개선되었습니다.
  • langs가 additional.fields에 매핑되었습니다.
  • 정의가 security_result.summary에 매핑되었습니다.
  • 엔진을 metadata.product_version에 매핑했습니다.

2022-06-29

  • 개선사항: 'network.email.mail_id'에 매핑된 'sm.msgid' 및 'msg.header.message-id.0' 필드에서 '<>'를 삭제하는 gsub가 추가되었습니다.

2022-05-20

  • 다음 요소를 UDM 요소에 매핑하는 기능이 개선되었습니다.
  • 'tls.verify', 'filter.disposition'이 'security_result.action_details'에 매핑되었습니다.
  • 'filter.modules.dmarc.authResults.result'가 'additional.fields'에 매핑되었습니다.
  • 'filter.quarantine.module', 'filter.quarantine.folder', 'filter.quarantine.type', 'filter.quarantine.folderId', 'filter.modules.spam.scores.overall', 'filter.modules.spam.scores.engine', 'filter.modules.spam.scores.classifiers.spam', 'filter.modules.spam.scores.classifiers.mlxlog', 'filter.modules.spam.scores.classifiers.phish', 'filter.modules.spam.scores.classifiers.impostor', 'filter.modules.spam.scores.classifiers.lowpriority', 'filter.modules.spam.scores.classifiers.mlx', 'filter.modules.spam.scores.classifiers.bulk', 'filter.modules.spam.scores.classifiers.suspect', 'filter.modules.spam.scores.classifiers.malware', 'filter.modules.spam.scores.classifiers.adult'가 'security_result.detection_fields'에 매핑되었습니다.

2022-04-13

  • 다음 요소를 UDM 요소에 매핑하도록 개선되었습니다.
  • filter.modules.av.virusNames가 'security_result.threat_name'에 매핑되었습니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가의 답변을 받아 보세요.