Recopila registros de Abnormal Security
Versión del analizador: 6.0
En este documento, se explica cómo transferir registros de Abnormal Security a Google Security Operations. El analizador controla los registros de correo electrónico en los formatos JSON y Syslog. Primero, intenta procesar la entrada como JSON y, si no lo logra, usa patrones de Grok para extraer datos del formato Syslog. Luego, los campos extraídos se asignan al modelo de datos unificado (UDM), lo que enriquece los datos con contexto de seguridad pertinente y estandariza el formato para su posterior análisis.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Una instancia de Google SecOps
- Acceso con privilegios a Abnormal Security
Obtén el ID de cliente de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Obtén credenciales de Google SecOps
Para autenticar Abnormal Security en Google SecOps, elige uno de los siguientes métodos:
- Implementaciones nuevas: Usa la API de Chronicle (opción 1).
- Implementaciones heredadas: Sigue usando el archivo de autenticación de transferencia (opción 2) hasta que se descontinúe la API de Ingestion el 20 de julio de 2027.
Opción 1: Crea una cuenta de servicio para la API de Chronicle (recomendado)
- Accede a la consola deGoogle Cloud y selecciona el proyecto de Google Cloud que está vinculado a tu instancia de Google SecOps.
- Ve a IAM y administración > Cuentas de servicio.
- Haga clic en Crear cuenta de servicio.
- Proporciona los siguientes detalles de configuración:
- Nombre de la cuenta de servicio: Ingresa un nombre para la cuenta (por ejemplo,
abnormal-security-ingest). - Descripción de la cuenta de servicio: Ingresa una descripción (por ejemplo,
Abnormal Security log ingestion).
- Nombre de la cuenta de servicio: Ingresa un nombre para la cuenta (por ejemplo,
- Haz clic en Crear y continuar.
- En la sección Otorga a esta cuenta de servicio acceso al proyecto, haz clic en Seleccionar un rol y, luego, en Editor de Chronicle.
- Haz clic en Continuar y, luego, en Listo.
- Haz clic en la cuenta de servicio que creaste y, luego, ve a la pestaña Claves.
- Haz clic en Agregar clave > Crear clave nueva.
- Selecciona JSON y haz clic en Crear. El archivo de claves se descargará en tu computadora.
- Guarda el archivo de claves de forma segura para usarlo en la configuración de Abnormal Security.
Opción 2: Descarga el archivo de autenticación de transferencia (heredado)
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recopilación.
- Descarga el archivo de autenticación de transferencia.
- Guarda el archivo de forma segura para usarlo en la configuración de Abnormal Security.
Configura Abnormal Security para enviar registros a Google SecOps
- Accede a la IU web de Abnormal Security.
- Haz clic en Configuración > Integraciones.
- Busca el ícono de Google Chronicle y haz clic en Conectar.
- Ingresa tu ID de cliente de Google SecOps.
- Ingresa la dirección del extremo de tu instancia de Google SecOps. En los siguientes extremos, se muestra la API de Ingestion moderna. Si usas el método heredado, debes usar las APIs heredadas.
- Canadá: https://northamerica-northeast2-chronicle.googleapis.com
- Dammam: https://me-central2-chronicle.googleapis.com
- Europa (varias regiones): https://eu-chronicle.googleapis.com
- Fráncfort: https://europe-west3-chronicle.googleapis.com
- Londres: https://europe-west2-chronicle.googleapis.com
- Bombay: https://asia-south1-chronicle.googleapis.com
- Singapur: https://asia-southeast1-chronicle.googleapis.com
- Sídney: https://australia-southeast1-chronicle.googleapis.com
- Tel Aviv: https://me-west1-chronicle.googleapis.com
- Tokio: https://asia-northeast1-chronicle.googleapis.com
- Multirregión de Estados Unidos: https://us-chronicle.googleapis.com
- Zúrich: https://europe-west6-chronicle.googleapis.com
- Si usas la opción 1, sube el archivo de claves JSON de la cuenta de servicio que descargaste antes como la cuenta de servicio de Google.
- Si usas la opción 2, sube el archivo de autenticación de transferencia que descargaste antes como la cuenta de servicio de Google.
- Haz clic en Guardar > Confirmar.
Formatos de registro de Abnormal Security admitidos
El analizador de Abnormal Security admite registros en formatos SYSLOG y JSON.
Registros de muestra de Abnormal Security compatibles
- JSON
{
"threatId": "3fd4ed1a-9237-7e6f-d434-eacdcc41f47b",
"messages": [
{
"abxMessageId": 3405268390454580698,
"abxPortalUrl": "https://portal.abnormalsecurity.com/home/threat-center/remediation-history/3405268390454580698",
"attachmentCount": 0,
"attachmentNames": [],
"attackStrategy": "Unknown Sender",
"attackType": "Spam",
"attackVector": "Link",
"attackedParty": "VIP",
"autoRemediated": true,
"fromAddress": "masked.from@example.com",
"fromName": "Masked User Name",
"impersonatedParty": "None / Others",
"internetMessageId": "<20eb9e7c1c3046fda97f6564c81ced64@530566577>",
"isRead": false,
"postRemediated": false,
"receivedTime": "2023-08-28T14:09:31Z",
"recipientAddress": "masked.recipient@example.com",
"remediationStatus": "Auto-Remediated",
"remediationTimestamp": "2023-08-28T14:09:35.618Z",
"sentTime": "2023-08-28T14:08:44Z",
"subject": "Banking Insights | A deep dive into the global M&A landscape",
"threatId": "3fd4ed1a-9237-7e6f-d434-eacdcc41f47b",
"toAddresses": [
"masked.to@example.com"
],
"ccEmails": [],
"replyToEmails": [
"masked.reply@example.com"
],
"returnPath": "masked.returnPath@example.com",
"senderDomain": "masked.sender.domain",
"senderIpAddress": null,
"summaryInsights": [
"Suspicious Link",
"Unusual Sender",
"Abnormal Email Body HTML",
"Invisible characters found in Email",
"Unusual Sender Domain",
"Suspicious Financial Request",
"Unusual Reply To"
],
"urlCount": 19,
"urls": [
"https://masked.comm.link/e/es?s=530566577&e=2595782&elqTrackId=MASKEDID&elq=MASKEDID&elqaid=119820&elqat=1",
"https://www.masked.group/en/simplifying-the-brand?utm_source=Eloqua&utm_medium=email&utm_campaign=MASKED_CAMPAIGN&elqCampaignId=20995&elq=MASKEDID",
"https://masked.group.link/e/er?utm_source=Eloqua&utm_medium=email&utm_campaign=MASKED_CAMPAIGN&elqCampaignId=20995&s=530566577&lid=192730&elqTrackId=MASKEDID&elq=MASKEDID&elqaid=119820&elqat=1"
// ... (16 additional masked URLs omitted for brevity)
]
}
]
}
- SYSLOG + JSON
<14> {
"threatId": "83da593b-3778-9d2f-da8c-e305dc1425e1",
"messages": [
{
"abxMessageId": 8274341447487143770,
"abxPortalUrl": "https://portal.abnormalsecurity.com/home/threat-center/remediation-history/8274341447487143770",
"attackType": "Spam",
"fromAddress": "masked.from.1@example.com",
"fromName": "Masked User Name",
"internetMessageId": "<PUZPR06MB45764FCED76739D0BC8A1B69E3DFA@masked.server.prod.outlook.com>",
"recipientAddress": "masked.recipient.1@example.com",
"remediationStatus": "Auto-Remediated",
"subject": "Freightview, FreightPOP Users List",
"toAddresses": [
"masked.to.1@example.com"
],
"returnPath": "masked.returnPath.1@example.com",
"senderDomain": "outlook.com",
"senderIpAddress": null,
"urlCount": 0,
"urls": []
},
{
"abxMessageId": -4495524442058864563,
"abxPortalUrl": "https://portal.abnormalsecurity.com/home/threat-center/remediation-history/-4495524442058864563",
"attackType": "Spam",
"fromAddress": "masked.user.2@outlook.com",
"fromName": "Masked User Name",
"internetMessageId": "<PUZPR06MB4576BF221988D780C8412731E3DFA@masked.server.prod.outlook.com>",
"recipientAddress": "masked.recipient.2@example.com",
"remediationStatus": "Auto-Remediated",
"subject": "Freightview, FreightPOP Users List",
"toAddresses": [
"masked.to.2@example.com"
],
"returnPath": "masked.user.2@outlook.com",
"senderDomain": "outlook.com",
"senderIpAddress": null,
"urlCount": 0,
"urls": []
}
]
}
- Esquema de JSON (threat_log)
{
"event": {
"abx_message_id": -3325933065721657641,
"abx_portal_url": "https://portal.abnormalsecurity.com/home/threat-center/remediation-history/-3325933065721657641",
"threat_id": "1c3736ab-9e3a-883f-62b5-6fe36ac9672c",
"subject": "[EXTERNAL] RE: Masked Name PUP094439581",
"from_address": "masked.sender@maskeddomain.xyz",
"from_name": "masked.sender@maskeddomain.xyz",
"to_addresses": "masked.recipient@maskedcorp.com",
"recipient_address": "masked.recipient@maskedcorp.com",
"internet_message_id": "<MASKEDID@masked-insurance-group.com>",
"attack_type": "Phishing: Credential",
"return_path": "masked.sender@maskeddomain.xyz",
"sender_ip_address": "",
"urls": [
"www.masked-insurance-group.com",
"http://www.masked-insurance-group.com/"
],
"sender_domain": "masked-insurance-group.com",
"tenant": "Auto Club Group"
},
"sourcetype": "threat_log"
}
- Esquema de JSON (abuse_mailbox)
{
"event": {
"abx_metadata": {
"event_type": "ABUSE_MAILBOX",
"timestamp": "2024-04-27T15:25:53.374227319Z",
"trace_id": "00bc67b5-eb26-41c2-9f95-021eb435fc49"
},
"abx_body": {
"campaign_id": "28b9c99f-f4a4-3032-bd99-3b7bac532471",
"subject": "[EXTERNAL] News you might have missed",
"recipient_name": "Masked PII Name",
"recipient_address": "masked.abuse.recipient@secops.com",
"internet_message_id": "<AutoNewsDigest-MASKED@odspnotify>",
"email_label_or_location": "inbox"
}
},
"sourcetype": "abuse_mailbox"
}
- Esquema de JSON (audit_log)
{
"event": {
"abx_metadata": {
"event_type": "AUDIT_LOG",
"timestamp": "2024-04-01T17:50:55.194231924Z",
"trace_id": "6f95188c-cba2-4e86-a3ae-3eaf22c869e4"
},
"abx_body": {
"category": "login",
"details": {
"request_url": "/api-token-auth/"
},
"source_ip": "0.0.0.0",
"status": "SUCCESS",
"tenant_name": "masked_secops_tenant",
"timestamp": "2024-04-01T17:50:54.632Z",
"user": {
"email": "masked.audit.user@secops.net"
}
}
},
"sourcetype": "audit_log"
}
- Esquema JSON (caso)
{
"event": {
"abx_metadata": {
"event_type": "CASE",
"timestamp": "2024-08-08T12:42:45.104485389Z",
"trace_id": "e4ad638f-439a-4c5f-839d-b650ecab9156"
},
"abx_body": {
"schema_version": "1.0.0",
"case_id": 11188520,
"tenant": "masked name",
"entity": {
"entity_type": "USER_ACCOUNT",
"identifier": "masked.case.user@secops.com"
},
"description": "Account Compromised",
"event_timeline": [
{
"timestamp": "2024-09-07T20:17:25+00:00",
"event_type": "SIGN_IN",
"platform": "AZURE_AD",
"insights": [
{
"signal": "Risky Browser",
"description": "The browser associated with this sign-in, None, is considered risky and has been blocklisted by Abnormal or your organization."
}
],
"ip_address": "0.0.0.0 ",
"operating_system": "ios 17.6",
"isp": "verizon wireless",
"location": {
"city": "Huntley",
"state": "Illinois",
"country": "United States"
}
},
{
"timestamp": "2024-09-07T20:17:25+00:00",
"event_type": "SIGN_IN",
"platform": "AZURE_AD",
"ip_address": "0.0.0.0 ",
"operating_system": "ios 15.6"
}
],
"event_type": "CASE"
}
},
"sourcetype": "case"
}
Tabla de asignación de UDM
| Campo de registro | Asignación de UDM | Lógica |
|---|---|---|
| attachmentCount | additional.fields.attachmentCount.value.number_value | Asignación directa |
| attachmentNames | additional.fields.attachmentNames.value | Se concatenan en una cadena separada por comas. |
| attackStrategy | security_result.detection_fields.attackStrategy.value | Asignación directa |
| attackType | security_result.threat_name | Asignación directa |
| attackVector | security_result.detection_fields.attackVector.value | Asignación directa |
| attackedParty | security_result.detection_fields.attackedParty.value | Asignación directa |
| autoRemediated | No asignada al objeto de IDM | |
| ccEmails | network.email.cc | Cada dirección de correo electrónico se extrae y se agrega al array |
| fromAddress | network.email.from | La dirección de correo electrónico se extrae y se asigna directamente |
| fromName | principal.user.user_display_name | Asignación directa |
| impersonatedParty | security_result.detection_fields.impersonatedParty.value | Se asignó directamente |
| internetMessageId | additional.fields.internetMessageId.value.string_value | Se asignó directamente |
| isRead | additional.fields.isRead.value.bool_value | Se asignó directamente |
| postRemediated | additional.fields.postRemediated.value.bool_value | Se asignó directamente |
| receivedTime | additional.fields.mailReceivedTime.value.string_value | Se asignó directamente |
| remediationStatus | additional.fields.remediationStatus.value.string_value | Se asignó directamente |
| remediationTimestamp | additional.fields.mailRemediationTimestamp.value.string_value | Se asignó directamente |
| replyToEmails | network.email.reply_to | La primera dirección de correo electrónico se extrae y se asigna directamente. |
| returnPath | additional.fields.returnPath.value.string_value | Asignación directa |
| senderDomain | principal.administrative_domain | Se asignó directamente |
| senderIpAddress | principal.ip, principal.asset.ip | La dirección IP se extrae y se asigna a ambos campos |
| sentTime | additional.fields.mailSentTime.value.string_value | Asignación directa |
| asunto | network.email.subject | Se asignó directamente |
| summaryInsights | security_result.summary | Se concatenan en una cadena separada por comas. |
| threatId | security_result.threat_id | Se asignó directamente |
| toAddresses | network.email.to | Cada dirección de correo electrónico se extrae y se agrega al array. |
| urlCount | additional.fields.urlCount.value.number_value | Se asignó directamente |
| URL | additional.fields.detectedUrls.value | Se concatenan en una cadena separada por comas. |
| additional.fields.campaign_id.value.string_value | Se asigna desde event_data.abx_body.campaign_id si está presente. | |
| additional.fields.trace_id.value.string_value | Se asigna desde event_data.abx_metadata.trace_id si está presente | |
| additional.fields.messageReportedTime.value.string_value | Se asigna desde event_data.abx_body.message_reported_time si está presente | |
| metadata.event_type | Se establece en EMAIL_TRANSACTION si el array de mensajes está presente; de lo contrario, se determina en función de otros campos y puede ser USER_LOGIN, STATUS_UPDATE o GENERIC_EVENT. |
|
| metadata.product_name | Siempre se establece en ABNORMAL_SECURITY. |
|
| metadata.vendor_name | Siempre se establece en ABNORMAL_SECURITY. |
|
| metadata.product_event_type | Se asigna desde event_data.abx_metadata.event_type si está presente | |
| extensions.auth.type | Se establece en AUTHTYPE_UNSPECIFIED si event_type es USER_LOGIN |
|
| security_result.category | Se establece en MAIL_SPAM y MAIL_PHISHING si el array de mensajes está presente; de lo contrario, se establece en MAIL_PHISHING o MAIL_SPAM según otros campos |
|
| security_result.category_details | Se establece en ABUSE_MAILBOX si abx_metadata.event_type es ABUSE_MAILBOX; de lo contrario, se establece en login si abx_body.category es login. |
|
| security_result.detection_fields.reported.value | Se asigna desde event_data.abx_body.reported si está presente. | |
| security_result.detection_fields.judgement.value | Se asigna desde event_data.abx_body.judgement si está presente | |
| target.url | Se asigna desde event_data.abx_body.details.request_url si está presente. | |
| target.user.userid | Se asigna desde event_data.abx_body.user.email si está presente | |
| target.user.email_addresses | Se asigna desde event_data.abx_body.user.email si está presente. | |
event.abx_body.abnormal_message_id |
event.idm.read_only_udm.metadata.product_log_id |
Se asignó desde el registro de cambios |
event.abx_body.email_label_or_location |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
event.abx_body.not_analyzed |
event.idm.read_only_udm.security_result.detection_fields |
Se asignó desde el registro de cambios |
event_data.message_sources", "event_data.sender_auth_results.spf", "event_data.sender_auth_results.dkim", "event_data.sender_auth_results.dmarc", "event_data.tenant", and "event_data.attack_score |
additional.fields |
Se asignó desde el registro de cambios |
event_data.abx_body.severity |
security_result.severity |
Se asignó desde el registro de cambios |
event_data.abx_body.trigger_event" and "event_data.abx_body.entity.entity_type |
additional.fields |
Se asignó desde el registro de cambios |
event_data.abx_body.entity.identifier |
principal.user.email_addresses |
Se asignó desde el registro de cambios |
event_data.abx_body.case_id |
metadata.product_log_id |
Se asignó desde el registro de cambios |
sourcetype", "event.folder_locations |
additional.fields |
Se asignó desde el registro de cambios |
event.abx_message_id |
metadata.product_log_id |
Asignado desde el registro de cambios |
Registro de cambios
Consulta el registro de cambios de este analizador
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.