Utiliser les données de protection des données sensibles dans les analyses contextuelles

Ce document explique comment utiliser les données contextuelles des entités de Sensitive Data Protection et des sources de journal supplémentaires 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 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 d'activité des utilisateurs à l'aide des journaux réseau et EDR.
  • Relations entre les ressources des sources de données telles que l'analyse Google Cloud IAM
  • Journaux de protection des données sensibles contenant des libellés sur le type et la sensibilité des données stockées.

Google Security Operations doit pouvoir analyser les données brutes dans des enregistrements d'événements et d'entités de modèle de données unifié (UDM).

Pour en savoir plus sur l'ingestion de données Sensitive Data Protection dans Google Security Operations, consultez la page Exporter des données Sensitive Data Protection vers Google Security Operations.

Données d'analyse Google Cloud IAM

Les données du journal d'analyse Google Cloud IAM de cet exemple identifient les utilisateurs de l'organisation et capturent les relations entre chaque utilisateur et d'autres systèmes du réseau. Voici un extrait d'un journal d'analyse IAM stocké en tant qu'enregistrement d'entité UDM. Elle 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 de protection des données sensibles

Dans cet exemple, les données de journal Sensitive Data Protection stockent des informations concernant une table BigQuery. Voici un extrait d'un journal Sensitive Data Protection stocké en tant qu'enregistrement d'entité UDM. Elle représente la table BigQuery appelée analytics:claim.patients avec l'étiquette Predicted InfoType US_SOCIAL_SECURITY_NUMBER, qui indique 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 est un journal de proxy Web Zscaler stocké en tant qu'enregistrement d'événement UDM. Il capture un événement de téléchargement réseau d'un fichier exécutable par un utilisateur avec la valeur userid 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 point de terminaison. L'extrait suivant est un journal EDR CrowdStrike Falcon stocké en tant qu'enregistrement d'événement UDM. Il capture un événement réseau impliquant l'application Microsoft Excel et un utilisateur dont la valeur userid est 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 comportent des informations communes, à la fois 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 de jointure des enregistrements.

Règle de 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:

  • L'activité de l'utilisateur, telle que le téléchargement ou le lancement d'un fichier 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 recherché par la règle 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 fichier exécutable également liés à l'activité dans l'application Excel.
    • Le groupe 3 identifie les enregistrements pour lesquels l'utilisateur identifié dans le réseau et les événements EDR dispose également de l'autorisation d'accéder à une table BigQuery.
    • Le groupe 4 identifie les enregistrements de protection des données sensibles pour la table BigQuery à laquelle l'utilisateur a accès.

    Chaque groupe d'expressions utilise la variable $table_name ou $user pour joindre des enregistrements lié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 de la table. Dans ce cas, elle vérifie si les données sont étiquetées avec l'infoType de protection des données sensibles US_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 affichez dans Google Security Operations, vous pouvez également afficher les valeurs des variables sous forme de colonnes.

  • La section condition indique que le format recherche tous les enregistrements UDM spécifiés à la section events.

  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, une détection est générée. 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 ayant entraîné la création d'une détection par la règle. Dans cet exemple, les enregistrements suivants sont affichés:

  • Entité UDM d'analyse Google Cloud IAM
  • Entité UDM de protection des données sensibles
  • Événement UDM du proxy Web Zscaler
  • Événement EDR CrowdStrike Falcon

Dans le panneau Détection, sélectionnez un événement ou un enregistrement 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 sélectionnez 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 la page Présentation du langage YARA-L 2.0.

Pour créer des analyses contextuelles personnalisées, consultez Créer des analyses contextuelles personnalisées.

Pour utiliser des analyses des menaces prédéfinies, consultez Utiliser les détections sélectionnées par Google Security Operations.