Recolha registos de segurança da Abnormal
Este documento explica como carregar registos do Abnormal Security para o Google Security Operations. O analisador processa registos de email nos formatos JSON e Syslog. Primeiro, tenta processar a entrada como JSON e, se não for bem-sucedida, usa padrões Grok para extrair dados do formato Syslog. Os campos extraídos são, em seguida, mapeados para o modelo de dados unificado (UDM), enriquecendo os dados com o contexto de segurança relevante e padronizando o formato para análise posterior.
Antes de começar
Certifique-se de que cumpre os seguintes pré-requisitos:
- Uma instância do Google SecOps.
- Acesso privilegiado ao Abnormal Security.
Obtenha o ID de cliente do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- Copie e guarde o ID do cliente da secção Detalhes da organização.
Obtenha o ficheiro de autenticação de carregamento do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- Transfira o ficheiro de autenticação de carregamento.
Configure a Abnormal Security para enviar registos para o Google SecOps
- Inicie sessão na IU Web da Abnormal Security.
- Clique em Definições > Integrações.
- Encontre o ícone do Google Chronicle e clique em Associar.
- Introduza o seu ID de cliente do Google SecOps.
- Introduza o endereço do ponto final da instância do Google SecOps.
- Canadá: https://northamerica-northeast2-malachiteingestion-pa.googleapis.com
- Dammam: https://me-central2-malachiteingestion-pa.googleapis.com
- Europa (várias regiões): https://europe-malachiteingestion-pa.googleapis.com
- Frankfurt: https://europe-west3-malachiteingestion-pa.googleapis.com
- Londres: https://europe-west2-malachiteingestion-pa.googleapis.com
- Mumbai: https://asia-south1-malachiteingestion-pa.googleapis.com
- Singapura: https://asia-southeast1-malachiteingestion-pa.googleapis.com
- Sydney: https://australia-southeast1-malachiteingestion-pa.googleapis.com
- Tel Aviv: https://me-west1-malachiteingestion-pa.googleapis.com
- Tóquio: https://asia-northeast1-malachiteingestion-pa.googleapis.com
- Estados Unidos (várias regiões): https://malachiteingestion-pa.googleapis.com
- Zurique: https://europe-west6-malachiteingestion-pa.googleapis.com
- Carregue o ficheiro de autenticação de carregamento transferido anteriormente como conta de serviço Google.
- Clique em Guardar > Confirmar.
Formatos de registos de segurança anormais suportados
O analisador do Abnormal Security suporta registos nos formatos SYSLOG e JSON.
Registos de amostras de segurança anormais suportados
- 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 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 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 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 (com distinção entre maiúsculas e minúsculas)
{
"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"
}
Tabela de mapeamento da UDM
| Campo de registo | Mapeamento do UDM | Lógica |
|---|---|---|
| attachmentCount | additional.fields.attachmentCount.value.number_value | Mapeado diretamente |
| attachmentNames | additional.fields.attachmentNames.value | Concatenados numa string separada por vírgulas |
| attackStrategy | security_result.detection_fields.attackStrategy.value | Mapeado diretamente |
| attackType | security_result.threat_name | Mapeado diretamente |
| attackVector | security_result.detection_fields.attackVector.value | Mapeado diretamente |
| attackedParty | security_result.detection_fields.attackedParty.value | Mapeado diretamente |
| autoRemediated | Não mapeado para o objeto IDM | |
| ccEmails | network.email.cc | Cada endereço de email é extraído e adicionado à matriz |
| fromAddress | network.email.from | O endereço de email é extraído e mapeado diretamente |
| fromName | principal.user.user_display_name | Mapeado diretamente |
| impersonatedParty | security_result.detection_fields.impersonatedParty.value | Mapeado diretamente |
| internetMessageId | additional.fields.internetMessageId.value.string_value | Mapeado diretamente |
| isRead | additional.fields.isRead.value.bool_value | Mapeado diretamente |
| postRemediated | additional.fields.postRemediated.value.bool_value | Mapeado diretamente |
| receivedTime | additional.fields.mailReceivedTime.value.string_value | Mapeado diretamente |
| remediationStatus | additional.fields.remediationStatus.value.string_value | Mapeado diretamente |
| remediationTimestamp | additional.fields.mailRemediationTimestamp.value.string_value | Mapeado diretamente |
| replyToEmails | network.email.reply_to | O primeiro endereço de email é extraído e mapeado diretamente |
| returnPath | additional.fields.returnPath.value.string_value | Mapeado diretamente |
| senderDomain | principal.administrative_domain | Mapeado diretamente |
| senderIpAddress | principal.ip, principal.asset.ip | O endereço IP é extraído e mapeado para ambos os campos |
| sentTime | additional.fields.mailSentTime.value.string_value | Mapeado diretamente |
| assunto | network.email.subject | Mapeado diretamente |
| summaryInsights | security_result.summary | Concatenados numa string separada por vírgulas |
| threatId | security_result.threat_id | Mapeado diretamente |
| toAddresses | network.email.to | Cada endereço de email é extraído e adicionado à matriz |
| urlCount | additional.fields.urlCount.value.number_value | Mapeado diretamente |
| URLs | additional.fields.detectedUrls.value | Concatenados numa string separada por vírgulas |
| additional.fields.campaign_id.value.string_value | Mapeado a partir de event_data.abx_body.campaign_id, se estiver presente | |
| additional.fields.trace_id.value.string_value | Mapeado a partir de event_data.abx_metadata.trace_id, se estiver presente | |
| additional.fields.messageReportedTime.value.string_value | Mapeado a partir de event_data.abx_body.message_reported_time, se estiver presente | |
| metadata.event_type | Definido como EMAIL_TRANSACTION se a matriz de mensagens estiver presente. Caso contrário, é determinado com base noutros campos e pode ser USER_LOGIN, STATUS_UPDATE ou GENERIC_EVENT |
|
| metadata.product_name | Definir sempre como ABNORMAL_SECURITY |
|
| metadata.vendor_name | Definir sempre como ABNORMAL_SECURITY |
|
| metadata.product_event_type | Mapeado a partir de event_data.abx_metadata.event_type, se estiver presente | |
| extensions.auth.type | Definido como AUTHTYPE_UNSPECIFIED se event_type for USER_LOGIN |
|
| security_result.category | Definido como MAIL_SPAM e MAIL_PHISHING se o conjunto de mensagens estiver presente; caso contrário, definido como MAIL_PHISHING e/ou MAIL_SPAM com base noutros campos |
|
| security_result.category_details | Definido como ABUSE_MAILBOX se abx_metadata.event_type for ABUSE_MAILBOX; caso contrário, definido como login se abx_body.category for login |
|
| security_result.detection_fields.reported.value | Mapeado a partir de event_data.abx_body.reported, se estiver presente | |
| security_result.detection_fields.judgement.value | Mapeado a partir de event_data.abx_body.judgement, se estiver presente | |
| target.url | Mapeado a partir de event_data.abx_body.details.request_url, se presente | |
| target.user.userid | Mapeado a partir de event_data.abx_body.user.email, se presente | |
| target.user.email_addresses | Mapeado a partir de event_data.abx_body.user.email, se presente |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.