Raccogliere i log di Abnormal Security
Questo documento spiega come importare i log di Abnormal Security in Google Security Operations. Il parser gestisce i log email in formato JSON e Syslog. Tenta innanzitutto di elaborare l'input come JSON e, in caso di esito negativo, utilizza i pattern Grok per estrarre i dati dal formato Syslog. I campi estratti vengono poi mappati al modello Unified Data Model (UDM), arricchendo i dati con il contesto di sicurezza pertinente e standardizzando il formato per ulteriori analisi.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps.
- Accesso con privilegi ad Abnormal Security.
Recuperare l'ID cliente Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Profilo.
- Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.
Recuperare il file di autenticazione importazione di Google SecOps
- Accedi alla console Google SecOps.
- Vai a Impostazioni SIEM > Agenti di raccolta.
- Scarica il file di autenticazione importazione.
Configura Abnormal Security per inviare i log a Google SecOps
- Accedi all'interfaccia utente web di Abnormal Security.
- Fai clic su Impostazioni > Integrazioni.
- Trova l'icona Google Chronicle e fai clic su Connetti.
- Inserisci il tuo ID cliente Google SecOps.
- Inserisci l'indirizzo endpoint dell'istanza Google SecOps.
- Canada: https://northamerica-northeast2-malachiteingestion-pa.googleapis.com
- Dammam: https://me-central2-malachiteingestion-pa.googleapis.com
- Europa multiregionale: https://europe-malachiteingestion-pa.googleapis.com
- Francoforte: https://europe-west3-malachiteingestion-pa.googleapis.com
- Londra: https://europe-west2-malachiteingestion-pa.googleapis.com
- Mumbai: https://asia-south1-malachiteingestion-pa.googleapis.com
- Singapore: https://asia-southeast1-malachiteingestion-pa.googleapis.com
- Sydney: https://australia-southeast1-malachiteingestion-pa.googleapis.com
- Tel Aviv: https://me-west1-malachiteingestion-pa.googleapis.com
- Tokyo: https://asia-northeast1-malachiteingestion-pa.googleapis.com
- Multi-Region Stati Uniti: https://malachiteingestion-pa.googleapis.com
- Zurigo: https://europe-west6-malachiteingestion-pa.googleapis.com
- Carica il file di autenticazione dell'importazione scaricato in precedenza come service account Google.
- Fai clic su Salva > Conferma.
Formati dei log di Abnormal Security supportati
L'analizzatore sintattico di Abnormal Security supporta i log nei formati SYSLOG e JSON.
Log di esempio di Abnormal Security supportati
- 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": []
}
]
}
- Schema 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"
}
- Schema 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"
}
- Schema 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"
}
- Schema JSON (scenario)
{
"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"
}
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logic |
|---|---|---|
| attachmentCount | additional.fields.attachmentCount.value.number_value | Mappato direttamente |
| attachmentNames | additional.fields.attachmentNames.value | Concatenati in una stringa separata da virgole |
| attackStrategy | security_result.detection_fields.attackStrategy.value | Mappato direttamente |
| attackType | security_result.threat_name | Mappato direttamente |
| attackVector | security_result.detection_fields.attackVector.value | Mappato direttamente |
| attackedParty | security_result.detection_fields.attackedParty.value | Mappato direttamente |
| autoRemediated | Non mappato all'oggetto IDM | |
| ccEmails | network.email.cc | Ogni indirizzo email viene estratto e aggiunto all'array |
| fromAddress | network.email.from | L'indirizzo email viene estratto e mappato direttamente |
| fromName | principal.user.user_display_name | Mappato direttamente |
| impersonatedParty | security_result.detection_fields.impersonatedParty.value | Mappato direttamente |
| internetMessageId | additional.fields.internetMessageId.value.string_value | Mappato direttamente |
| isRead | additional.fields.isRead.value.bool_value | Mappato direttamente |
| postRemediated | additional.fields.postRemediated.value.bool_value | Mappato direttamente |
| receivedTime | additional.fields.mailReceivedTime.value.string_value | Mappato direttamente |
| remediationStatus | additional.fields.remediationStatus.value.string_value | Mappato direttamente |
| remediationTimestamp | additional.fields.mailRemediationTimestamp.value.string_value | Mappato direttamente |
| replyToEmails | network.email.reply_to | Il primo indirizzo email viene estratto e mappato direttamente |
| returnPath | additional.fields.returnPath.value.string_value | Mappato direttamente |
| senderDomain | principal.administrative_domain | Mappato direttamente |
| senderIpAddress | principal.ip, principal.asset.ip | L'indirizzo IP viene estratto e mappato in entrambi i campi |
| sentTime | additional.fields.mailSentTime.value.string_value | Mappato direttamente |
| subject | network.email.subject | Mappato direttamente |
| summaryInsights | security_result.summary | Concatenati in una stringa separata da virgole |
| threatId | security_result.threat_id | Mappato direttamente |
| toAddresses | network.email.to | Ogni indirizzo email viene estratto e aggiunto all'array |
| urlCount | additional.fields.urlCount.value.number_value | Mappato direttamente |
| URL | additional.fields.detectedUrls.value | Concatenati in una stringa separata da virgole |
| additional.fields.campaign_id.value.string_value | Mappato da event_data.abx_body.campaign_id, se presente | |
| additional.fields.trace_id.value.string_value | Mappato da event_data.abx_metadata.trace_id, se presente | |
| additional.fields.messageReportedTime.value.string_value | Mappato da event_data.abx_body.message_reported_time, se presente | |
| metadata.event_type | Impostato su EMAIL_TRANSACTION se è presente l'array di messaggi, altrimenti determinato in base ad altri campi e può essere USER_LOGIN, STATUS_UPDATE o GENERIC_EVENT |
|
| metadata.product_name | Sempre impostato su ABNORMAL_SECURITY |
|
| metadata.vendor_name | Sempre impostato su ABNORMAL_SECURITY |
|
| metadata.product_event_type | Mappato da event_data.abx_metadata.event_type, se presente | |
| extensions.auth.type | Impostato su AUTHTYPE_UNSPECIFIED se event_type è USER_LOGIN |
|
| security_result.category | Impostato su MAIL_SPAM e MAIL_PHISHING se è presente l'array di messaggi, altrimenti impostato su MAIL_PHISHING e/o MAIL_SPAM in base ad altri campi |
|
| security_result.category_details | Imposta su ABUSE_MAILBOX se abx_metadata.event_type è ABUSE_MAILBOX, altrimenti imposta su login se abx_body.category è login |
|
| security_result.detection_fields.reported.value | Mappato da event_data.abx_body.reported, se presente | |
| security_result.detection_fields.judgement.value | Mappato da event_data.abx_body.judgement, se presente | |
| target.url | Mappato da event_data.abx_body.details.request_url, se presente | |
| target.user.userid | Mappato da event_data.abx_body.user.email, se presente | |
| target.user.email_addresses | Mappato da event_data.abx_body.user.email, se presente |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.