Collecter les journaux Abnormal Security
Ce document explique comment ingérer les journaux Abnormal Security dans Google Security Operations. L'analyseur gère les journaux d'e-mails aux formats JSON et Syslog. Il tente d'abord de traiter l'entrée en tant que JSON et, en cas d'échec, il utilise des modèles Grok pour extraire les données du format Syslog. Les champs extraits sont ensuite mappés au modèle de données unifié (UDM), ce qui enrichit les données avec un contexte de sécurité pertinent et normalise le format pour une analyse plus approfondie.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Une instance Google SecOps.
- Accès privilégié à Abnormal Security.
Obtenir l'ID client Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Profil.
- Copiez et enregistrez le numéro client de la section Informations sur l'organisation.
Obtenir le fichier d'authentification d'ingestion Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres du SIEM > Agents de collecte.
- Téléchargez le fichier d'authentification d'ingestion.
Configurer Abnormal Security pour envoyer des journaux à Google SecOps
- Connectez-vous à l'interface utilisateur Web Abnormal Security.
- Cliquez sur Paramètres > Intégrations.
- Recherchez l'icône Google Chronicle, puis cliquez sur Connect (Associer).
- Saisissez votre numéro client Google SecOps.
- Saisissez l'adresse du point de terminaison de votre instance Google SecOps.
- Canada : https://northamerica-northeast2-malachiteingestion-pa.googleapis.com
- Dammam : https://me-central2-malachiteingestion-pa.googleapis.com
- Europe (multirégion) : https://europe-malachiteingestion-pa.googleapis.com
- Francfort : https://europe-west3-malachiteingestion-pa.googleapis.com
- Londres : https://europe-west2-malachiteingestion-pa.googleapis.com
- Mumbai : https://asia-south1-malachiteingestion-pa.googleapis.com
- Singapour : 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
- Multirégion États-Unis : https://malachiteingestion-pa.googleapis.com
- Zurich : https://europe-west6-malachiteingestion-pa.googleapis.com
- Importez le fichier d'authentification pour l'ingestion téléchargé précédemment en tant que compte de service Google.
- Cliquez sur Enregistrer > Confirmer.
Formats de journaux Abnormal Security acceptés
L'analyseur Abnormal Security est compatible avec les journaux aux formats SYSLOG et JSON.
Exemples de journaux Abnormal Security acceptés
- 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": []
}
]
}
- Schéma 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"
}
- Schéma 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"
}
- Schéma 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"
}
- Schéma JSON (cas)
{
"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"
}
Table de mappage UDM
| Champ du journal | Mappage UDM | Logique |
|---|---|---|
| attachmentCount | additional.fields.attachmentCount.value.number_value | Mappé directement |
| attachmentNames | additional.fields.attachmentNames.value | Concaténée dans une chaîne de valeurs séparées par une virgule |
| attackStrategy | security_result.detection_fields.attackStrategy.value | Mappé directement |
| attackType | security_result.threat_name | Mappé directement |
| attackVector | security_result.detection_fields.attackVector.value | Mappé directement |
| attackedParty | security_result.detection_fields.attackedParty.value | Mappé directement |
| autoRemediated | Non mappé à l'objet IDM | |
| ccEmails | network.email.cc | Chaque adresse e-mail est extraite et ajoutée au tableau. |
| fromAddress | network.email.from | L'adresse e-mail est extraite et mappée directement. |
| fromName | principal.user.user_display_name | Mappé directement |
| impersonatedParty | security_result.detection_fields.impersonatedParty.value | Mappé directement |
| internetMessageId | additional.fields.internetMessageId.value.string_value | Mappé directement |
| isRead | additional.fields.isRead.value.bool_value | Mappé directement |
| postRemediated | additional.fields.postRemediated.value.bool_value | Mappé directement |
| receivedTime | additional.fields.mailReceivedTime.value.string_value | Mappé directement |
| remediationStatus | additional.fields.remediationStatus.value.string_value | Mappé directement |
| remediationTimestamp | additional.fields.mailRemediationTimestamp.value.string_value | Mappé directement |
| replyToEmails | network.email.reply_to | La première adresse e-mail est extraite et mappée directement. |
| returnPath | additional.fields.returnPath.value.string_value | Mappé directement |
| senderDomain | principal.administrative_domain | Mappé directement |
| senderIpAddress | principal.ip, principal.asset.ip | L'adresse IP est extraite et mappée aux deux champs |
| sentTime | additional.fields.mailSentTime.value.string_value | Mappé directement |
| subject | network.email.subject | Mappé directement |
| summaryInsights | security_result.summary | Concaténée dans une chaîne de valeurs séparées par une virgule |
| threatId | security_result.threat_id | Mappé directement |
| toAddresses | network.email.to | Chaque adresse e-mail est extraite et ajoutée au tableau. |
| urlCount | additional.fields.urlCount.value.number_value | Mappé directement |
| URL | additional.fields.detectedUrls.value | Concaténée dans une chaîne de valeurs séparées par une virgule |
| additional.fields.campaign_id.value.string_value | Mappé à partir de event_data.abx_body.campaign_id, le cas échéant | |
| additional.fields.trace_id.value.string_value | Mappé à partir de event_data.abx_metadata.trace_id, le cas échéant | |
| additional.fields.messageReportedTime.value.string_value | Mappé à partir de event_data.abx_body.message_reported_time, le cas échéant | |
| metadata.event_type | Défini sur EMAIL_TRANSACTION si le tableau des messages est présent, sinon déterminé en fonction d'autres champs et peut être USER_LOGIN, STATUS_UPDATE ou GENERIC_EVENT |
|
| metadata.product_name | Toujours défini sur ABNORMAL_SECURITY |
|
| metadata.vendor_name | Toujours défini sur ABNORMAL_SECURITY |
|
| metadata.product_event_type | Mappé à partir de event_data.abx_metadata.event_type, le cas échéant | |
| extensions.auth.type | Définissez sur AUTHTYPE_UNSPECIFIED si event_type est USER_LOGIN. |
|
| security_result.category | Définissez sur MAIL_SPAM et MAIL_PHISHING si le tableau de messages est présent, sinon définissez sur MAIL_PHISHING et/ou MAIL_SPAM en fonction des autres champs. |
|
| security_result.category_details | Définie sur ABUSE_MAILBOX si abx_metadata.event_type est ABUSE_MAILBOX, sinon définie sur login si abx_body.category est login |
|
| security_result.detection_fields.reported.value | Mappé à partir de event_data.abx_body.reported, le cas échéant | |
| security_result.detection_fields.judgement.value | Mappé à partir de event_data.abx_body.judgement, le cas échéant | |
| target.url | Mappé à partir de event_data.abx_body.details.request_url, le cas échéant | |
| target.user.userid | Mappé à partir de event_data.abx_body.user.email, le cas échéant | |
| target.user.email_addresses | Mappé à partir de event_data.abx_body.user.email, le cas échéant |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.