Proofpoint On Demand 로그 수집
다음에서 지원:
Google SecOps
SIEM
이 파서는 Proofpoint 주문형 JSON 로그에서 필드를 추출하여 UDM 형식으로 변환합니다. 이 파서는 이메일 메타데이터가 포함된 로그 형식과 SMTP 트랜잭션 세부정보가 포함된 로그 형식, 두 가지 기본 로그 형식을 처리하며, 조건부 로직을 사용하여 필드를 적절하게 파싱하고 사용 가능한 데이터를 기반으로 UDM 필드를 채웁니다. 또한 파서는 불필요한 문자 삭제, 타임스탬프 변환과 같은 데이터 정리를 실행합니다.
시작하기 전에
- Google Security Operations 인스턴스가 있는지 확인합니다.
- Proofpoint On Demand Remote Syslog 라이선스가 있는지 확인합니다.
- Proofpoint에 대한 권한이 있는지 확인합니다.
Proofpoint On Demand API 액세스 구성
- Proofpoint 관리 포털에 로그인합니다.
- 관리 인터페이스의 출시 번호 옆에 표시되는 클러스터 ID를 복사합니다.
- 설정 > API 키 관리를 선택합니다.
- 새로 만들기를 클릭하여 새 API 키 만들기 대화상자를 표시합니다.
- 고유한 이름을 입력합니다 (예: Google SecOps).
- API 키를 생성합니다.
- 새 API 키의 메뉴에서 세부정보 보기를 선택합니다.
- API 키를 복사합니다.
Proofpoint On Demand (PoD) 로그를 수집하도록 Google SecOps에서 피드 구성
- SIEM 설정 > 피드로 이동합니다.
- 새로 추가를 클릭합니다.
- 피드 이름 필드에 피드 이름을 입력합니다 (예: PoD 로그).
- 소스 유형으로 서드 파티 API를 선택합니다.
- 로그 유형으로 Proofpoint On Demand를 선택합니다.
- 다음을 클릭합니다.
- 다음 입력 매개변수의 값을 지정합니다.
- 인증 HTTP 헤더: Proofpoint API 키를
key:<value>
형식으로 입력합니다. - 클러스터 ID: 앞에서 복사한 Proofpoint 클러스터 ID를 입력합니다.
- 애셋 네임스페이스: 애셋 네임스페이스입니다.
- 수집 라벨: 이 피드의 이벤트에 적용된 라벨입니다.
- 인증 HTTP 헤더: Proofpoint API 키를
- 다음을 클릭합니다.
- 확정 화면에서 피드 구성을 검토한 다음 제출을 클릭합니다.
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 가 있는 경우 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 전문가의 답변을 받으세요.