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

Ce document explique comment utiliser les données de contexte des entités issues de la protection des données sensibles et d'autres sources de journal pour permettre une compréhension contextuelle de l'impact et de la portée d'une menace potentielle lors d'une investigation.

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 indique 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 la suite Opérations de sécurité Google:

  • Données d'activité des utilisateurs à l'aide de journaux réseau et EDR
  • Relations entre les ressources provenant de sources de données telles qu'Analyse Google Cloud IAM
  • Journaux de protection des données sensibles contenant des étiquettes sur le type et la sensibilité des données stockées

Les opérations de sécurité Google doivent pouvoir analyser les données brutes dans des enregistrements d'entités et d'événements Unified Data Model (UDM).

Pour en savoir plus sur l'ingestion de données de protection des données sensibles dans la suite Opérations de sécurité de Google, consultez la page Exporter les données de protection des données sensibles vers les opérations de sécurité Google.

Données d'analyse Google Cloud IAM

Dans cet exemple, les données de journal d'analyse Google Cloud IAM identifient les utilisateurs de l'organisation et capturent les relations entre ces utilisateurs et les autres systèmes du réseau. Voici un extrait d'un journal d'analyse IAM stocké sous forme d'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 de protection des données sensibles

Dans cet exemple, les données de journal relatives à la protection des données sensibles stockent des informations sur une table BigQuery. Voici un extrait d'un journal de protection des données sensibles stocké sous la forme d'un enregistrement d'entité UDM. Elle représente la table BigQuery appelée analytics:claim.patients avec le libellé Predicted InfoType US_SOCIAL_SECURITY_NUMBER, ce 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 proxy Web

Dans cet exemple, l'événement de proxy Web capture l'activité réseau. L'extrait suivant représente un journal de proxy Web Zscaler stocké en tant qu'enregistrement d'événement UDM. Elle capture un événement de téléchargement réseau d'un fichier exécutable par 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é d'un point de terminaison. L'extrait suivant est un journal EDR CrowdStrike Falcon stocké en tant qu'enregistrement d'événement UDM. Elle 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 qu'il existe des informations communes entre ces enregistrements, à la fois l'identifiant utilisateur mikeross et le nom de la table, analytics:claim.patients. La section suivante de ce document montre comment ces valeurs sont utilisées dans la règle pour joindre les 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:

  • Activité de l'utilisateur, comme 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é à 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 est également autorisé à 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 la variable $user pour joindre les enregistrements liés à la même table d'utilisateur et 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, il vérifie si les données comportent 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 l'affichez dans la suite Opérations de sécurité Google, 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 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 sur des données existantes et qu'elle identifie le modèle 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 qui ont 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 UDM CrowdStrike Falcon

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 la page 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 prédéfinie des menaces, consultez la page Utiliser les détections sélectionnées par les opérations de sécurité Google.