Recopilar registros de Proofpoint On-Demand

Disponible en:

En este documento se explica cómo ingerir registros de Proofpoint On-Demand en Google Security Operations mediante la integración de la API integrada. El analizador extrae campos de los registros JSON y los transforma al formato UDM de Chronicle. Gestiona dos formatos de registro principales: uno que contiene metadatos de correo electrónico y otro que contiene detalles de transacciones SMTP. Utiliza lógica condicional para analizar los campos de forma adecuada y rellenar los campos del modelo de datos unificado (UDM) en función de los datos disponibles. El analizador también limpia los datos, por ejemplo, eliminando caracteres extraños y convirtiendo marcas de tiempo.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Instancia de Google SecOps
  • Licencia de Proofpoint On-Demand Remote Syslog
  • Acceso privilegiado a Proofpoint

Configurar el acceso a la API On-Demand de Proofpoint

  1. Inicia sesión en el portal Administración de Proofpoint.
  2. Copia tu ID de clúster (que se muestra en la esquina superior derecha de la interfaz de gestión, junto al número de versión).
  3. Ve a Ajustes > Gestión de claves de API.
  4. Haz clic en Crear nuevo para abrir el cuadro de diálogo Crear clave de API.
  5. Introduce un nombre único (por ejemplo, Google SecOps Key).
  6. Genera la clave de API.
  7. Selecciona Ver detalles en el menú de los tres puntos de la nueva clave de API.
  8. Copia la clave de API.

Configurar feeds

Para configurar un feed, sigue estos pasos:

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Añadir feed.
  3. En la página siguiente, haga clic en Configurar un solo feed.
  4. En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo, PoD Logs).
  5. Seleccione API de terceros como Tipo de fuente.
  6. Seleccione el tipo de registro Proofpoint On-Demand.
  7. Haz clic en Siguiente.
  8. Especifique los valores de los siguientes parámetros de entrada:

    • Encabezados HTTP de autenticación: introduce la clave de API de Proofpoint en formato Authorization: Bearer {API_KEY} y añade una línea nueva con los siguientes datos de WebSocket-Key: Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==.
    • ID de clúster: introduce el ID de clúster de Proofpoint que has copiado anteriormente.
  9. Haz clic en Siguiente.

  10. Revise la configuración del feed en la pantalla Finalizar y, a continuación, haga clic en Enviar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
classification security_result.detection_fields.classification El valor procede directamente del campo classification del registro sin procesar.
cluster security_result.detection_fields.cluster El valor procede directamente del campo cluster del registro sin procesar.
completelyRewritten security_result.detection_fields.completelyRewritten El valor procede directamente del campo completelyRewritten del registro sin procesar.
connection.country principal.location.country_or_region El valor procede directamente del campo connection.country del registro sin procesar, a menos que sea "**".
connection.host principal.hostname El valor procede directamente del campo connection.host del registro sin procesar.
connection.ip principal.ip El valor procede directamente del campo connection.ip del registro sin procesar, si es una dirección IPv4 válida. También se combina con senderIP si está presente.
connection.protocol network.application_protocol La parte del protocolo que aparece antes de los dos puntos en connection.protocol se extrae con gsub y se asigna. Por ejemplo, "smtp:smtp" se convierte en "SMTP".
connection.tls.inbound.cipher network.tls.cipher El valor procede directamente del campo connection.tls.inbound.cipher del registro sin procesar, a menos que sea "NONE".
connection.tls.inbound.version network.tls.version El valor procede directamente del campo connection.tls.inbound.version del registro sin procesar, a menos que la cifra sea "NONE".
envelope.from network.email.from El valor procede directamente del campo envelope.from del registro sin procesar. También se sustituye por sm.from o fromAddress si están presentes.
envelope.rcpts network.email.to Las direcciones de correo de envelope.rcpts se combinan en el campo network.email.to si son válidas. También se combina con sm.to o toAddresses, si están presentes.
envelope.rcptsHashed read_only_udm.additional.fields Las direcciones de correo cifradas con hash de envelope.rcptsHashed se añaden como campos adicionales con claves como "toHashed_0", "toHashed_1", etc.
eventTime @timestamp El valor se analiza a partir del campo eventTime con el formato ISO8601 o RFC 3339.
eventType security_result.summary El valor procede directamente del campo eventType del registro sin procesar.
filter.disposition security_result.action_details El valor procede directamente del campo filter.disposition del registro sin procesar, a menos que esté presente tls.verify.
filter.modules.av.virusNames.0 security_result.threat_name El valor procede directamente del campo filter.modules.av.virusNames.0 del registro sin procesar.
filter.modules.dmarc.authResults read_only_udm.additional.fields El método y el resultado de cada entrada de filter.modules.dmarc.authResults se añaden como campos adicionales con claves como "authResultsMethod_0", "authResults_result_0", "authResultsMethod_1", etc.
filter.modules.spam.langs read_only_udm.additional.fields Cada idioma de filter.modules.spam.langs se añade como un campo adicional con claves como "lang_0", "lang_1", etc.
filter.modules.spam.safeBlockedListMatches.0.listType security_result.detection_fields.safeBlockedListMatches_listType El valor procede directamente del campo filter.modules.spam.safeBlockedListMatches.0.listType del registro sin procesar.
filter.modules.spam.safeBlockedListMatches.0.rule security_result.detection_fields.safeBlockedListMatches_rule El valor procede directamente del campo filter.modules.spam.safeBlockedListMatches.0.rule del registro sin procesar.
filter.modules.spam.scores.classifiers.adult security_result.detection_fields.adult El valor procede directamente del campo filter.modules.spam.scores.classifiers.adult del registro sin procesar, si no está vacío o es 0.
filter.modules.spam.scores.classifiers.bulk security_result.detection_fields.bulk El valor procede directamente del campo filter.modules.spam.scores.classifiers.bulk del registro sin procesar, si no está vacío o es 0.
filter.modules.spam.scores.classifiers.impostor security_result.detection_fields.impostor El valor procede directamente del campo filter.modules.spam.scores.classifiers.impostor del registro sin procesar, si no está vacío o es 0.
filter.modules.spam.scores.classifiers.lowpriority security_result.detection_fields.lowpriority El valor procede directamente del campo filter.modules.spam.scores.classifiers.lowpriority del registro sin procesar, si no está vacío o es 0.
filter.modules.spam.scores.classifiers.malware security_result.detection_fields.malware El valor procede directamente del campo filter.modules.spam.scores.classifiers.malware del registro sin procesar, si no está vacío o es 0.
filter.modules.spam.scores.classifiers.mlx security_result.detection_fields.mlx El valor procede directamente del campo filter.modules.spam.scores.classifiers.mlx del registro sin procesar, si no está vacío o es 0.
filter.modules.spam.scores.classifiers.mlxlog security_result.detection_fields.mlxlog El valor procede directamente del campo filter.modules.spam.scores.classifiers.mlxlog del registro sin procesar, si no está vacío o es 0.
filter.modules.spam.scores.classifiers.phish security_result.detection_fields.phish El valor procede directamente del campo filter.modules.spam.scores.classifiers.phish del registro sin procesar, si no está vacío o es 0.
filter.modules.spam.scores.classifiers.spam security_result.detection_fields.spam El valor procede directamente del campo filter.modules.spam.scores.classifiers.spam del registro sin procesar, si no está vacío o es 0.
filter.modules.spam.scores.classifiers.suspect security_result.detection_fields.suspect El valor procede directamente del campo filter.modules.spam.scores.classifiers.suspect del registro sin procesar, si no está vacío o es 0.
filter.modules.spam.scores.engine security_result.detection_fields.engine El valor procede directamente del campo filter.modules.spam.scores.engine del registro sin procesar, si no está vacío o es 0.
filter.modules.spam.scores.overall security_result.detection_fields.overall El valor procede directamente del campo filter.modules.spam.scores.overall del registro sin procesar, si no está vacío o es 0.
filter.modules.spam.version.definitions security_result.summary El valor procede directamente del campo filter.modules.spam.version.definitions del registro sin procesar.
filter.modules.spam.version.engine metadata.product_version El valor procede directamente del campo filter.modules.spam.version.engine del registro sin procesar.
filter.modules.urldefense.counts.rewritten read_only_udm.additional.fields.urldefenseCountsRewritten El valor procede directamente del campo filter.modules.urldefense.counts.rewritten del registro sin procesar.
filter.modules.urldefense.counts.total security_result.detection_fields.urldefense_total El valor procede directamente del campo filter.modules.urldefense.counts.total del registro sin procesar.
filter.modules.zerohour.score read_only_udm.additional.fields.zeroHourScore El valor procede directamente del campo filter.modules.zerohour.score del registro sin procesar.
filter.origGuid read_only_udm.additional.fields.origGuid El valor procede directamente del campo filter.origGuid del registro sin procesar.
filter.qid read_only_udm.additional.fields.filterQid El valor procede directamente del campo filter.qid del registro sin procesar.
filter.quarantine.folder security_result.detection_fields.filter_quarantine_folder El valor procede directamente del campo filter.quarantine.folder del registro sin procesar.
filter.quarantine.folderId security_result.detection_fields.filter_quarantine_folderId El valor procede directamente del campo filter.quarantine.quarantine.folderId del registro sin procesar.
filter.quarantine.module security_result.detection_fields.filter_quarantine_module El valor procede directamente del campo filter.quarantine.module del registro sin procesar.
filter.quarantine.rule security_result.detection_fields.filter_quarantine_rule El valor procede directamente del campo filter.quarantine.rule del registro sin procesar.
filter.quarantine.type security_result.detection_fields.filter_quarantine_type El valor procede directamente del campo filter.quarantine.type del registro sin procesar.
filter.routeDirection network.direction Si filter.routeDirection es "inbound", network.direction se define como "INBOUND". Si filter.routeDirection es "outbound", network.direction se define como "OUTBOUND".
filter.routes read_only_udm.additional.fields Cada ruta de filter.routes se añade como un campo adicional con claves como "filterRoutes_0", "filterRoutes_1", etc.
fromAddress network.email.from Las direcciones de correo de fromAddress se sustituyen por las del campo network.email.from si son válidas.
guid metadata.product_log_id El valor procede directamente del campo guid del registro sin procesar.
GUID metadata.product_log_id El valor procede directamente del campo GUID del registro sin procesar.
headerFrom network.email.from El valor procede directamente del campo headerFrom del registro sin procesar.
impostorScore security_result.detection_fields.impostorScore El valor procede directamente del campo impostorScore del registro sin procesar.
malwareScore security_result.detection_fields.malwareScore El valor procede directamente del campo malwareScore del registro sin procesar.
messageID network.email.mail_id El valor procede directamente del campo messageID del registro sin procesar.
messageSize security_result.detection_fields.messageSize El valor procede directamente del campo messageSize del registro sin procesar.
messageTime @timestamp El valor se analiza a partir del campo messageTime con el formato ISO8601 o RFC 3339.
metadata.customerId principal.labels.customerId El valor procede directamente del campo metadata.customerId del registro sin procesar.
metadata.origin.data.agent network.http.user_agent El valor procede directamente del campo metadata.origin.data.agent del registro sin procesar.
metadata.origin.data.cid principal.user.userid El valor procede directamente del campo metadata.origin.data.cid del registro sin procesar.
metadata.origin.data.version metadata.product_version El valor procede directamente del campo metadata.origin.data.version del registro sin procesar.
msg.header.from read_only_udm.additional.fields.msgHeaderFrom El valor procede directamente del campo msg.header.from.0 del registro sin procesar.
msg.header.reply-to network.email.reply_to La dirección de correo incluida entre <> en msg.header.reply-to.0 se extrae y se asigna.
msg.header.subject network.email.subject El valor procede directamente del campo msg.header.subject del registro sin procesar.
msg.header.to read_only_udm.additional.fields.msgHeaderTo El valor procede directamente del campo msg.header.to del registro sin procesar.
msg.normalizedHeader.subject network.email.subject El valor procede directamente del campo msg.normalizedHeader.subject del registro sin procesar.
msg.parsedAddresses.cc network.email.cc Las direcciones de correo de msg.parsedAddresses.cc se combinan en el campo network.email.cc si son válidas.
msg.parsedAddresses.ccHashed read_only_udm.additional.fields Las direcciones de correo cifradas con hash de msg.parsedAddresses.ccHashed se añaden como campos adicionales con claves como "ccHashed_0", "ccHashed_1", etc.
msg.parsedAddresses.from read_only_udm.additional.fields.msgParsedAddressesFrom El valor procede directamente del campo msg.parsedAddresses.from.0 del registro sin procesar.
msg.parsedAddresses.from.0 principal.user.email_addresses El valor procede directamente del campo msg.parsedAddresses.from.0 del registro sin procesar.
msg.parsedAddresses.fromHashed read_only_udm.additional.fields.fromHashed El valor procede directamente del campo msg.parsedAddresses.fromHashed.0 del registro sin procesar.
msg.parsedAddresses.to target.user.email_addresses Las direcciones de correo de msg.parsedAddresses.to se combinan en el campo target.user.email_addresses si son válidas.
msgParts read_only_udm.about Se crean varios objetos "about", uno por cada entrada de msgParts. Se extraen los hashes, el tipo MIME, el tamaño y otros metadatos del archivo.
QID security_result.detection_fields.QID El valor procede directamente del campo QID del registro sin procesar.
recipient target.user.email_addresses Las direcciones de correo de recipient se combinan en el campo target.user.email_addresses si son válidas.
replyToAddress network.email.reply_to Las direcciones de correo de replyToAddress se sustituyen por las del campo network.email.reply_to si son válidas.
sender principal.user.email_addresses El valor procede directamente del campo sender del registro sin procesar, si se trata de una dirección de correo válida.
senderIP principal.ip El valor procede directamente del campo senderIP del registro sin procesar.
sm.from network.email.from El valor procede directamente del campo sm.from del registro sin procesar.
sm.msgid network.email.mail_id El valor procede directamente del campo sm.msgid del registro sin procesar, después de eliminar "<" y ">".
sm.proto network.application_protocol El valor procede directamente del campo sm.proto del registro sin procesar.
sm.qid security_result.detection_fields.QUID El valor procede directamente del campo sm.qid del registro sin procesar.
sm.relay intermediary.hostname, intermediary.ip El nombre de host y la dirección IP se extraen de sm.relay mediante grok.
sm.stat security_result.detection_fields.Stat La primera palabra de sm.stat se extrae mediante grok y se asigna.
sm.to network.email.to Las direcciones de correo de sm.to se combinan en el campo network.email.to si son válidas.
spamScore security_result.detection_fields.spamScore El valor procede directamente del campo spamScore del registro sin procesar.
subject network.email.subject El valor procede directamente del campo subject del registro sin procesar.
threat security_result.detection_fields.threat El valor procede directamente del campo threat del registro sin procesar.
threatsInfoMap security_result.detection_fields Los pares clave-valor de cada entrada de threatsInfoMap se añaden como campos de detección.
threatType security_result.detection_fields.threatType El valor procede directamente del campo threatType del registro sin procesar.
tls.cipher network.tls.cipher El valor procede directamente del campo tls.cipher del registro sin procesar, a menos que sea "NONE".
tls.verify security_result.action_details El valor procede directamente del campo tls.verify del registro sin procesar.
tls.version network.tls.version El valor procede directamente del campo tls.version del registro sin procesar, a menos que la cifra sea "NONE".
toAddresses network.email.to Las direcciones de correo de toAddresses se combinan en el campo network.email.to si son válidas.
ts @timestamp El valor se analiza a partir del campo ts con el formato ISO8601 o RFC 3339, después de un preprocesamiento para gestionar los segundos fraccionarios adicionales.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.