Proofpoint On-Demand 로그 수집

다음에서 지원:

이 문서에서는 내장 API 통합을 사용하여 Proofpoint On-Demand 로그를 Google Security Operations에 수집하는 방법을 설명합니다. 파서는 JSON 로그에서 필드를 추출하여 Chronicle UDM 형식으로 변환합니다. 이 파서는 이메일 메타데이터가 포함된 로그 형식과 SMTP 트랜잭션 세부정보가 포함된 로그 형식이라는 두 가지 기본 로그 형식을 처리하며, 조건부 로직을 사용하여 필드를 적절하게 파싱하고 사용 가능한 데이터를 기반으로 통합 데이터 모델 (UDM) 필드를 채웁니다. 파서는 불필요한 문자를 삭제하고 타임스탬프를 변환하는 등 데이터 정리도 실행합니다.

시작하기 전에

다음 기본 요건이 충족되었는지 확인합니다.

  • Google SecOps 인스턴스
  • Proofpoint On-Demand 원격 syslog 라이선스
  • Proofpoint에 대한 액세스 권한 관리

Proofpoint On-Demand API 액세스 구성

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

피드 설정

피드를 구성하려면 다음 단계를 따르세요.

  1. SIEM 설정 > 피드로 이동합니다.
  2. 새 피드 추가를 클릭합니다.
  3. 다음 페이지에서 단일 피드 구성을 클릭합니다.
  4. 피드 이름 필드에 피드 이름을 입력합니다 (예: PoD Logs).
  5. 소스 유형으로 서드 파티 API를 선택합니다.
  6. Proofpoint On-Demand 로그 유형을 선택합니다.
  7. 다음을 클릭합니다.
  8. 다음 입력 매개변수의 값을 지정합니다.

    • 인증 HTTP 헤더: Authorization: Bearer {API_KEY} 형식으로 Proofpoint API 키를 입력하고 다음 WebSocket-Key 데이터(Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==)를 사용하여 새 줄을 추가합니다.
    • 클러스터 ID: 이전에 복사한 Proofpoint 클러스터 ID를 입력합니다.
  9. 다음을 클릭합니다.

  10. 확정 화면에서 피드 구성을 검토한 다음 제출을 클릭합니다.

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와도 병합됩니다.
connection.protocol network.application_protocol connection.protocol의 콜론 앞의 프로토콜 부분이 gsub를 사용하여 추출되고 매핑됩니다. 예를 들어 'smtp:smtp'는 'SMTP'가 됩니다.
connection.tls.inbound.cipher network.tls.cipher 값이 'NONE'이 아닌 경우 원시 로그의 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 값이 비어 있지 않거나 0이 아닌 경우 원시 로그의 filter.modules.spam.scores.classifiers.adult 필드에서 직접 가져옵니다.
filter.modules.spam.scores.classifiers.bulk security_result.detection_fields.bulk 값이 비어 있지 않거나 0이 아닌 경우 원시 로그의 filter.modules.spam.scores.classifiers.bulk 필드에서 직접 가져옵니다.
filter.modules.spam.scores.classifiers.impostor security_result.detection_fields.impostor 값이 비어 있지 않거나 0이 아닌 경우 원시 로그의 filter.modules.spam.scores.classifiers.impostor 필드에서 직접 가져옵니다.
filter.modules.spam.scores.classifiers.lowpriority security_result.detection_fields.lowpriority 값이 비어 있지 않거나 0이 아닌 경우 원시 로그의 filter.modules.spam.scores.classifiers.lowpriority 필드에서 직접 가져옵니다.
filter.modules.spam.scores.classifiers.malware security_result.detection_fields.malware 값이 비어 있지 않거나 0이 아닌 경우 원시 로그의 filter.modules.spam.scores.classifiers.malware 필드에서 직접 가져옵니다.
filter.modules.spam.scores.classifiers.mlx security_result.detection_fields.mlx 값이 비어 있지 않거나 0이 아닌 경우 원시 로그의 filter.modules.spam.scores.classifiers.mlx 필드에서 직접 가져옵니다.
filter.modules.spam.scores.classifiers.mlxlog security_result.detection_fields.mlxlog 값이 비어 있지 않거나 0이 아닌 경우 원시 로그의 filter.modules.spam.scores.classifiers.mlxlog 필드에서 직접 가져옵니다.
filter.modules.spam.scores.classifiers.phish security_result.detection_fields.phish 값이 비어 있지 않거나 0이 아닌 경우 원시 로그의 filter.modules.spam.scores.classifiers.phish 필드에서 직접 가져옵니다.
filter.modules.spam.scores.classifiers.spam security_result.detection_fields.spam 값이 비어 있지 않거나 0이 아닌 경우 원시 로그의 filter.modules.spam.scores.classifiers.spam 필드에서 직접 가져옵니다.
filter.modules.spam.scores.classifiers.suspect security_result.detection_fields.suspect 값이 비어 있지 않거나 0이 아닌 경우 원시 로그의 filter.modules.spam.scores.classifiers.suspect 필드에서 직접 가져옵니다.
filter.modules.spam.scores.engine security_result.detection_fields.engine 값이 비어 있지 않거나 0이 아닌 경우 원시 로그의 filter.modules.spam.scores.engine 필드에서 직접 가져옵니다.
filter.modules.spam.scores.overall security_result.detection_fields.overall 값이 비어 있지 않거나 0이 아닌 경우 원시 로그의 filter.modules.spam.scores.overall 필드에서 직접 가져옵니다.
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이 'inbound'인 경우 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 값이 'NONE'이 아닌 경우 원시 로그의 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 필드에서 파싱됩니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.