Collecter les journaux Abnormal Security
Version de l'analyseur : 6.0
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 au format JSON. Si cela échoue, 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.
- Un 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 l'ID client dans la section Organization Details (Informations sur l'organisation).
Obtenir le fichier d'authentification d'ingestion Google SecOps
- Connectez-vous à la console Google SecOps.
- Accédez à SIEM Settings > Collection Agents (Paramètres 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 Settings > Integrations (Paramètres > Intégrations).
- Recherchez l'icône Google Chronicle , puis cliquez sur Connect (Connecter).
- Saisissez votre ID 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
- États-Unis (multirégion) : https://malachiteingestion-pa.googleapis.com
- Zurich: https://europe-west6-malachiteingestion-pa.googleapis.com
- Importez le fichier d'authentification d'ingestion téléchargé précédemment en tant que compte de service Google.
- Cliquez sur Save > Confirm (Enregistrer > Confirmer).
Formats de journaux Abnormal Security compatibles
L'analyseur Abnormal Security est compatible avec les journaux aux formats SYSLOG et JSON.
Exemples de journaux 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": []
}
]
}
- 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 (case)
{
"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 | Mappage direct |
| attachmentNames | additional.fields.attachmentNames.value | Concaténé dans une chaîne séparée par une virgule |
| attackStrategy | security_result.detection_fields.attackStrategy.value | Mappage direct |
| attackType | security_result.threat_name | Mappage direct |
| attackVector | security_result.detection_fields.attackVector.value | Mappage direct |
| attackedParty | security_result.detection_fields.attackedParty.value | Mappage direct |
| 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 | Mappage direct |
| impersonatedParty | security_result.detection_fields.impersonatedParty.value | Mappage direct |
| internetMessageId | additional.fields.internetMessageId.value.string_value | Mappage direct |
| isRead | additional.fields.isRead.value.bool_value | Mappage direct |
| postRemediated | additional.fields.postRemediated.value.bool_value | Mappage direct |
| receivedTime | additional.fields.mailReceivedTime.value.string_value | Mappage direct |
| remediationStatus | additional.fields.remediationStatus.value.string_value | Mappage direct |
| remediationTimestamp | additional.fields.mailRemediationTimestamp.value.string_value | Mappage direct |
| replyToEmails | network.email.reply_to | La première adresse e-mail est extraite et mappée directement |
| returnPath | additional.fields.returnPath.value.string_value | Mappage direct |
| senderDomain | principal.administrative_domain | Mappage direct |
| senderIpAddress | principal.ip, principal.asset.ip | L'adresse IP est extraite et mappée aux deux champs |
| sentTime | additional.fields.mailSentTime.value.string_value | Mappage direct |
| subject | network.email.subject | Mappage direct |
| summaryInsights | security_result.summary | Concaténé dans une chaîne séparée par une virgule |
| threatId | security_result.threat_id | Mappage direct |
| toAddresses | network.email.to | Chaque adresse e-mail est extraite et ajoutée au tableau |
| urlCount | additional.fields.urlCount.value.number_value | Mappage direct |
| URLs | additional.fields.detectedUrls.value | Concaténé dans une chaîne séparée par une virgule |
| additional.fields.campaign_id.value.string_value | Mappé à partir de event_data.abx_body.campaign_id s'il est présent | |
| additional.fields.trace_id.value.string_value | Mappé à partir de event_data.abx_metadata.trace_id s'il est présent | |
| additional.fields.messageReportedTime.value.string_value | Mappé à partir de event_data.abx_body.message_reported_time s'il est présent | |
| metadata.event_type | Défini sur EMAIL_TRANSACTION si le tableau de 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 s'il est présent | |
| extensions.auth.type | Défini sur AUTHTYPE_UNSPECIFIED si event_type est USER_LOGIN |
|
| security_result.category | Défini sur MAIL_SPAM et MAIL_PHISHING si le tableau de messages est présent, sinon défini sur MAIL_PHISHING et/ou MAIL_SPAM en fonction d'autres champs |
|
| security_result.category_details | Défini sur ABUSE_MAILBOX si abx_metadata.event_type est ABUSE_MAILBOX, sinon défini sur login si abx_body.category est login |
|
| security_result.detection_fields.reported.value | Mappé à partir de event_data.abx_body.reported s'il est présent | |
| security_result.detection_fields.judgement.value | Mappé à partir de event_data.abx_body.judgement s'il est présent | |
| target.url | Mappé à partir de event_data.abx_body.details.request_url s'il est présent | |
| target.user.userid | Mappé à partir de event_data.abx_body.user.email s'il est présent | |
| target.user.email_addresses | Mappé à partir de event_data.abx_body.user.email s'il est présent | |
event.abx_body.abnormal_message_id |
event.idm.read_only_udm.metadata.product_log_id |
Mappé à partir du journal des modifications |
event.abx_body.email_label_or_location |
event.idm.read_only_udm.additional.fields |
Mappé à partir du journal des modifications |
event.abx_body.not_analyzed |
event.idm.read_only_udm.security_result.detection_fields |
Mappé à partir du journal des modifications |
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 |
Mappé à partir du journal des modifications |
event_data.abx_body.severity |
security_result.severity |
Mappé à partir du journal des modifications |
event_data.abx_body.trigger_event" and "event_data.abx_body.entity.entity_type |
additional.fields |
Mappé à partir du journal des modifications |
event_data.abx_body.entity.identifier |
principal.user.email_addresses |
Mappé à partir du journal des modifications |
event_data.abx_body.case_id |
metadata.product_log_id |
Mappé à partir du journal des modifications |
sourcetype", "event.folder_locations |
additional.fields |
Mappé à partir du journal des modifications |
event.abx_message_id |
metadata.product_log_id |
Mappé à partir du journal des modifications |
Journal des modifications
Consulter le journal des modifications de cet analyseur
Vous avez encore besoin d'aide ? Obtenez des réponses auprès des membres de la communauté et des professionnels Google SecOps.