Recopila registros de Proofpoint On-Demand

Compatible con:

En este documento, se explica cómo transferir registros de Proofpoint On-Demand a Google Security Operations con la integración de la API integrada. El analizador extrae campos de los registros JSON y los transforma al formato del UDM de Chronicle. Maneja dos formatos de registro principales: uno que contiene metadatos de correo electrónico y el otro que contiene detalles de transacciones SMTP, y usa lógica condicional para analizar los campos de forma adecuada y completar los campos del Modelo de datos unificado (UDM) según los datos disponibles. El analizador también realiza la limpieza de datos, como quitar caracteres extraños y convertir marcas de tiempo.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

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

Configura el acceso a la API de Proofpoint On-Demand

  1. Accede al portal de administrador de Proofpoint.
  2. Copia tu ID de clúster (se muestra en la esquina superior derecha de tu interfaz de administración, junto al número de versión).
  3. Ve a Configuración > Administración de claves de API.
  4. Haz clic en Crear nuevo para abrir el diálogo Crear clave de API nueva.
  5. Ingresa un Nombre único (por ejemplo, Google SecOps Key).
  6. Genera la clave de API.
  7. Selecciona Ver detalles en el menú de puntos suspensivos de la nueva clave de API.
  8. Copia la clave de API.

Configura feeds

Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:

  • Configuración de SIEM > Feeds
  • Centro de contenido > Paquetes de contenido

Configura feeds en Configuración del SIEM > Feeds

Para configurar un feed, sigue estos pasos:

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

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

  10. Revisa la configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Configura feeds desde el Centro de contenido

Especifica valores para los siguientes campos:

  • Encabezados HTTP de autenticación: Ingresa la clave de API de Proofpoint en formato Authorization: Bearer {API_KEY} y agrega una línea nueva con los siguientes datos de WebSocket-Key: Sec-WebSocket-Key: SGVsbG8sIHdvcmxkIQ==.
  • ID de clúster: Ingresa el ID de clúster de Proofpoint que copiaste antes.

Opciones avanzadas

  • Nombre del feed: Es un valor predeterminado que identifica el feed.
  • Tipo de fuente: Es el método que se usa para recopilar registros en Google SecOps.
  • Espacio de nombres del activo: Es el espacio de nombres asociado con el feed.
  • Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.

Tabla de asignación de UDM

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

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.