Utiliser les données de la protection des données sensibles dans l'analyse contextuelle
Ce document explique comment utiliser les données de contexte des entités de la protection des données sensibles et d'autres sources de journaux pour mieux comprendre l'impact et la portée d'une menace potentielle lors d'une enquête.
Le cas d'utilisation décrit dans ce document détecte l'exécution d'un fichier malveillant par un utilisateur (technique MITRE ATT&CK T1204.002) et détermine si cet utilisateur a également accès à des données sensibles ailleurs sur le réseau.
Cet exemple nécessite que les données suivantes aient été ingérées et normalisées dans Google Security Operations :
- Données sur l'activité des utilisateurs à l'aide des journaux réseau et EDR.
- Relations entre les ressources à partir de sources de données telles que l'analyse IAM Google Cloud .
- Journaux de protection des données sensibles contenant des libellés sur le type et la sensibilité des données stockées.
Google SecOps doit être en mesure d'analyser les données brutes en enregistrements d'entités et d'événements UDM (Unified Data Model).
Pour savoir comment ingérer des données Sensitive Data Protection dans Google SecOps, consultez Exporter des données Sensitive Data Protection vers Google SecOps.
Google Cloud Données d'analyse IAM
Les données du journal d'analyse IAM Google Cloud dans cet exemple identifient les utilisateurs de l'organisation et capturent les relations de chaque utilisateur avec d'autres systèmes du réseau. Vous trouverez ci-dessous un extrait d'un journal d'analyse IAM stocké en tant qu'enregistrement d'entité UDM. Il stocke des informations sur l'utilisateur mikeross
, qui administre une table BigQuery appelée analytics:claim.patients
.
metadata.vendor_name: "Google Cloud Platform"
metadata.product_name: "GCP IAM Analysis"
metadata.entity_type: "USER"
entity.user.userid: "mikeross"
relations[2].entity.resource.name: "analytics:claim.patients"
relations[2].entity.resource.resource_type: "TABLE"
relations[2].entity_type: "RESOURCE"
relations[2].relationship: "ADMINISTERS"
Données Sensitive Data Protection
Dans cet exemple, les données de journal Sensitive Data Protection stockent des informations sur une table BigQuery. Vous trouverez ci-dessous un extrait d'un journal Sensitive Data Protection stocké sous forme d'enregistrement d'entité UDM. Il représente la table BigQuery appelée analytics:claim.patients
avec le libellé Predicted InfoType
US_SOCIAL_SECURITY_NUMBER
, indiquant que la table stocke les numéros de sécurité sociale des États-Unis.
metadata.vendor_name: "Google Cloud Platform"
metadata.product_name: "GCP DLP CONTEXT"
metadata.entity_type: "RESOURCE"
metadata.description: "RISK_HIGH"
entity.resource.resource_type: "TABLE"
entity.resource.resource_subtype: "BigQuery Table"
entity.resource.attribute.cloud.environment"GOOGLE_CLOUD_PLATFORM"
entity.resource.attribute.labels[0].key: "Sensitivity Score"
entity.resource.attribute.labels[0].value: "SENSITIVITY_HIGH"
entity.resource.attribute.labels[1].key: "Predicted InfoType"
entity.resource.attribute.labels[1].value: "US_SOCIAL_SECURITY_NUMBER"
entity.resource.product_object_id: "analytics:claim.patients"
Événements de proxy Web
Dans cet exemple, l'événement de proxy Web capture l'activité réseau. L'extrait suivant correspond à un journal de proxy Web Zscaler stocké en tant qu'enregistrement d'événement UDM. Il capture un événement de téléchargement de fichier exécutable par un utilisateur avec la valeur userid
définie sur mikeross
, où la valeur received_bytes
est 514605.
metadata.log_type = "ZSCALER_WEBPROXY"
metadata.product_name = "NSS"
metadata.vendor_name = "Zscaler"
metadata.event_type = "NETWORK_HTTP"
network.http.response_code = 200
network.received_bytes = 514605
principal.user.userid = "mikeross"
target.url = "http://manygoodnews.com/dow/Client%20Update.exe"
Événements EDR
Dans cet exemple, l'événement EDR capture l'activité sur un appareil de point de terminaison. L'extrait de code suivant correspond à un journal CrowdStrike Falcon EDR stocké sous la forme d'un enregistrement d'événement UDM. Il capture un événement réseau impliquant l'application Microsoft Excel et un utilisateur avec la valeur userid
mikeross
.
metadata.log_type = "CS_EDR"
metadata.product_name = "Falcon"
metadata.vendor_name = "Crowdstrike"
metadata.event_type = "NETWORK_HTTP"
target.process.file.full_path = "\\Device\\HarddiskVolume1\\Program Files\\C:\\Program Files\\Microsoft Office\\Office16\\EXCEL.exe"
target.url = "http://manygoodnews.com/dow/Client%20Update.exe"
target.user.userid = "mikeross"
Notez que ces enregistrements contiennent des informations communes, à savoir l'identifiant utilisateur mikeross
et le nom de la table analytics:claim.patients
. La section suivante de ce document explique comment ces valeurs sont utilisées dans la règle pour joindre les enregistrements.
Règle du moteur de détection dans cet exemple
Cet exemple de règle détecte l'exécution d'un fichier malveillant par un utilisateur (technique MITRE ATT&CK T1204.002).
La règle attribue un score de risque plus élevé à une détection lorsque l'utilisateur a également accès à des données sensibles ailleurs sur le réseau. La règle met en corrélation les informations suivantes :
- Activité de l'utilisateur, comme le téléchargement ou le lancement d'un exécutable.
- Relation entre les ressources, par exemple la relation de l'utilisateur avec une table BigQuery.
- Présence d'informations sensibles dans la ressource à laquelle un utilisateur a accès, par exemple le type de données stockées dans la table BigQuery.
Voici une description de chaque section de l'exemple de règle.
La section
events
spécifie le modèle de données que la règle recherche et inclut les éléments suivants :- Les groupes 1 et 2 identifient les événements réseau et EDR qui capturent le téléchargement d'une grande quantité de données ou d'un exécutable également lié à l'activité dans l'application Excel.
- Le groupe 3 identifie les enregistrements dans lesquels l'utilisateur identifié dans les événements réseau et EDR dispose également d'une autorisation pour une table BigQuery.
- Le groupe 4 identifie les enregistrements Sensitive Data Protection pour la table BigQuery à laquelle l'utilisateur a accès.
Chaque groupe d'expressions utilise la variable
$table_name
ou la variable$user
pour joindre les enregistrements associés au même utilisateur et à la même table de base de données.Dans la section
outcome
, la règle crée une variable$risk_score
et définit une valeur en fonction de la sensibilité des données du tableau. Dans ce cas, il vérifie si les données sont associées à l'infoType Protection des données sensiblesUS_SOCIAL_SECURITY_NUMBER
.La section
outcome
définit également des variables supplémentaires telles que$principalHostname
et$entity_resource_name
. Ces variables sont renvoyées et stockées avec la détection. Ainsi, lorsque vous les consultez dans Google SecOps, vous pouvez également afficher les valeurs des variables sous forme de colonnes.La section
condition
indique que le modèle recherche tous les enregistrements UDM spécifiés dans la sectionevents
.
rule high_risk_user_download_executable_from_macro {
meta:
author = "Google Cloud Security Demos"
description = "Executable downloaded by Microsoft Excel from High Risk User"
severity = "High"
technique = "T1204.002"
events:
//Group 1. identify a proxy event with suspected executable download
$proxy_event.principal.user.userid = $user
$proxy_event.target.url = /.*\.exe$/ or
$proxy_event.network.received_bytes > 102400
//Group 2. correlate with an EDR event indicating Excel activity
$edr_event.target.user.userid = $user
$edr_event.target.process.file.full_path = /excel/ nocase
$edr_event.metadata.event_type = "NETWORK_HTTP"
//Group 3. Use the entity to find the permissions
$user_entity.graph.entity.user.userid = $user
$user_entity.graph.relations.entity.resource.name = $table_name
//Group 4. the entity is from Cloud DLP data
$table_context.graph.entity.resource.product_object_id = $table_name
$table_context.graph.metadata.product_name = "GCP DLP CONTEXT"
match:
$user over 5m
outcome:
//calculate risk score
$risk_score = max(
if( $table_context.graph.entity.resource.attribute.labels.value = "US_SOCIAL_SECURITY_NUMBER", 80)
)
$technique = array_distinct("T1204.002")
$principalHostname = array_distinct($proxy_event.principal.hostname)
$principalIp = array_distinct($proxy_event.principal.ip)
$principalMac = array_distinct($proxy_event.principal.mac)
$targetHostname = array_distinct($proxy_event.target.hostname)
$target_url = array_distinct($proxy_event.target.url)
$targetIp = array_distinct($proxy_event.target.ip)
$principalUserUserid = array_distinct($proxy_event.principal.user.userid)
$entity_resource_name = array_distinct($table_context.graph.entity.resource.name)
condition:
$proxy_event and $edr_event and $user_entity and $table_context
}
À propos de la détection
Si vous testez la règle par rapport aux données existantes et qu'elle identifie le schéma d'activité spécifié dans la définition, elle génère une détection. Le panneau Détection affiche la détection générée après le test de la règle. Le panneau Détection affiche également les enregistrements d'événements et d'entités qui ont déclenché la création d'une détection par la règle. Dans cet exemple, les enregistrements suivants s'affichent :
- Google Cloud Entité UDM d'analyse IAM
- Entité UDM Sensitive Data Protection
- Événement UDM du proxy Web Zscaler
- Événement UDM CrowdStrike Falcon EDR
Dans le panneau Détection, sélectionnez un enregistrement d'événement ou d'entité pour afficher les détails.
La détection stocke également les variables définies dans la section outcome
de la règle. Pour afficher les variables dans le panneau Détection, sélectionnez Colonnes, puis un ou plusieurs noms de variables dans le menu Colonnes. Les colonnes sélectionnées s'affichent dans le panneau Détection.
Étapes suivantes
Pour écrire des règles personnalisées, consultez Présentation du langage YARA-L 2.0.
Pour créer des analyses contextuelles personnalisées, consultez Créer des analyses contextuelles.
Pour utiliser l'analyse des menaces prédéfinie, consultez Utiliser les détections organisées de Google SecOps.
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.