Collecter les journaux Abnormal Security
Version de l'analyseur : 6.0
Ce document explique comment ingérer des journaux Abnormal Security dans Google Security Operations. L'analyseur gère les journaux de messagerie aux formats JSON et Syslog. Il tente d'abord de traiter l'entrée au format JSON. 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 dans la section Informations sur l'organisation.
Obtenir les identifiants Google SecOps
Pour authentifier Abnormal Security auprès de Google SecOps, choisissez l'une des méthodes suivantes :
- Nouveaux déploiements : utilisez l'API Chronicle (option 1).
- Anciens déploiements : continuez à utiliser le fichier d'authentification d'ingestion (option 2) jusqu'à l'arrêt de l'API Ingestion le 20 juillet 2027.
Option 1 : Créer un compte de service pour l'API Chronicle (recommandé)
- Connectez-vous à la consoleGoogle Cloud et sélectionnez le projet Google Cloud associé à votre instance Google SecOps.
- Accédez à IAM et administration > Comptes de service.
- Cliquez sur Créer un compte de service.
- Fournissez les informations de configuration suivantes :
- Nom du compte de service : saisissez un nom pour le compte (par exemple,
abnormal-security-ingest). - Description du compte de service : saisissez une description (par exemple,
Abnormal Security log ingestion).
- Nom du compte de service : saisissez un nom pour le compte (par exemple,
- Cliquez sur Créer et continuer.
- Dans la section Autoriser ce compte de service à accéder au projet, cliquez sur Sélectionner un rôle, puis sélectionnez Éditeur Chronicle.
- Cliquez sur Continue (Continuer), puis sur Done (OK).
- Cliquez sur le compte de service que vous avez créé, puis accédez à l'onglet Clés.
- Cliquez sur Ajouter une clé > Créer une clé.
- Sélectionnez JSON, puis cliquez sur Créer. Le fichier de clé est téléchargé sur votre ordinateur.
- Enregistrez le fichier de clé de manière sécurisée pour l'utiliser dans la configuration d'Abnormal Security.
Option 2 : Télécharger le fichier d'authentification d'ingestion (ancien)
- Connectez-vous à la console Google SecOps.
- Accédez à Paramètres SIEM> Agents de collecte.
- Téléchargez le fichier d'authentification d'ingestion.
- Enregistrez le fichier de manière sécurisée pour l'utiliser dans la configuration d'Abnormal Security.
Configurer Abnormal Security pour envoyer des journaux à Google SecOps
- Connectez-vous à l'interface utilisateur Web d'Abnormal Security.
- Cliquez sur Paramètres > Intégrations.
- Recherchez l'icône Google Chronicle, puis cliquez sur Connect (Associer).
- Saisissez votre ID client Google SecOps.
- Saisissez l'adresse du point de terminaison de votre instance Google SecOps. Les points de terminaison suivants affichent l'API Ingestion moderne. Vous devez utiliser les anciennes API si vous utilisez l'ancienne méthode.
- Canada : https://northamerica-northeast2-chronicle.googleapis.com
- Dammam : https://me-central2-chronicle.googleapis.com
- Multirégion Europe : https://eu-chronicle.googleapis.com
- Francfort : https://europe-west3-chronicle.googleapis.com
- Londres : https://europe-west2-chronicle.googleapis.com
- Mumbai : https://asia-south1-chronicle.googleapis.com
- Singapour : https://asia-southeast1-chronicle.googleapis.com
- Sydney : https://australia-southeast1-chronicle.googleapis.com
- Tel Aviv : https://me-west1-chronicle.googleapis.com
- Tokyo : https://asia-northeast1-chronicle.googleapis.com
- Multirégional États-Unis : https://us-chronicle.googleapis.com
- Zurich : https://europe-west6-chronicle.googleapis.com
- Si vous utilisez l'option 1, importez le fichier de clé JSON du compte de service téléchargé précédemment en tant que compte de service Google.
- Si vous utilisez l'option 2, importez le fichier d'authentification d'ingestion téléchargé précédemment en tant que compte de service Google.
- Cliquez sur Enregistrer> Confirmer.
Formats de journaux Abnormal Security compatibles
L'analyseur Abnormal Security accepte 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 | Mappage direct |
| attachmentNames | additional.fields.attachmentNames.value | Concaténées dans une chaîne séparée par une virgule |
| attackStrategy | security_result.detection_fields.attackStrategy.value | Mappage direct |
| attackType | security_result.threat_name | Mappé directement |
| attackVector | security_result.detection_fields.attackVector.value | Mappage direct |
| 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 | 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 | Mappé directement |
| 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 | 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 | Mappage direct |
| summaryInsights | security_result.summary | Concaténées dans une chaîne séparée 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 | Mappage direct |
| URL | additional.fields.detectedUrls.value | Concaténées 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, le cas échéant | |
| 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, le cas échéant | |
| metadata.event_type | Défini sur EMAIL_TRANSACTION si le tableau de messages est présent. Sinon, il est 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éfinissez cet attribut 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 d'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, si présent | |
| 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 | |
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
Afficher le journal des modifications de cet analyseur
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.