Script malveillant exécuté

Ce document décrit un type de résultat de détection de menace dans Security Command Center. Ces résultats sont générés par les détecteurs de menaces lorsqu'ils détectent une menace potentielle dans vos ressources cloud. Pour obtenir la liste complète des résultats de détection de menace disponibles, consultez cet index.

Présentation

Un modèle de machine learning a identifié un code Bash exécuté comme étant malveillant. Les pirates informatiques peuvent utiliser bash pour transférer des outils et exécuter des commandes sans binaire. Il est important de vous assurer que vos conteneurs sont immuables. Il s'agit d'une bonne pratique. L'utilisation de scripts pour transférer des outils peut imiter la technique de transfert d'outils externes des pirates informatiques et entraîner des détections non souhaitées.

Container Threat Detection est la source de ce résultat.

Actions à mettre en place

Pour traiter ce résultat, procédez comme suit :

Étape 1 : Examiner les détails du résultat

  1. Ouvrez un résultat Malicious Script Executed comme indiqué dans Examiner les résultats. Le panneau des détails du résultat s'ouvre dans l'onglet Résumé.

  2. Dans l'onglet Résumé, examinez les informations des sections suivantes :

    • Risque détecté, en particulier les champs suivants :
      • Binaire du programme : détails concernant l'interpréteur qui a appelé le script.
      • Script : chemin d'accès absolu du nom du script sur le disque. Cet attribut n'apparaît que pour les scripts écrits sur le disque, et non pour l'exécution de scripts littéraux (par exemple, bash -c).
      • Arguments : arguments fournis lors de l'appel du script.
    • Ressource concernée, en particulier le champs suivant :
      • Nom complet de la ressource : nom complet de la ressource du cluster, y compris le numéro de projet, l'emplacement et le nom du cluster.
    • Liens associés, en particulier les champs suivants :
      • Indicateur VirusTotal : lien vers la page d'analyse VirusTotal.
  3. Dans la vue détaillée du résultat, cliquez sur l'onglet JSON.

  4. Dans le fichier JSON, notez les champs suivants.

    • finding :
      • processes :
      • script :
        • contents : contenu du script exécuté, qui peut être tronqué pour des raisons de performances. Cela peut faciliter votre enquête.
        • sha256 : hachage SHA-256 de script.contents
    • resource :
      • project_display_name : nom du projet contenant l'asset.
    • sourceProperties :
      • Pod_Namespace : nom de l'espace de noms Kubernetes du pod.
      • Pod_Name : nom du pod GKE.
      • Container_Name : nom du conteneur concerné.
      • Container_Image_Uri : nom de l'image de conteneur en cours d'exécution.
      • VM_Instance_Name : nom du nœud GKE sur lequel le pod a été exécuté.
  5. Identifiez d'autres résultats détectés à peu près au même moment pour ce conteneur. Par exemple, si le script dépose un fichier binaire, recherchez les résultats liés à ce fichier.

Étape 2 : Vérifier le cluster et le nœud

  1. Dans la console Google Cloud , accédez à la page Clusters Kubernetes.

    Accéder à la page "Clusters Kubernetes"

  2. Dans la barre d'outils de la console Google Cloud , sélectionnez le projet listé dans resource.project_display_name, si nécessaire.

  3. Sélectionnez le cluster listé sur la ligne Nom complet de la ressource dans l'onglet Résumé des détails du résultat. Notez toutes les métadonnées concernant le cluster et son propriétaire.

  4. Cliquez sur l'onglet Nœuds. Sélectionnez le nœud indiqué dans VM_Instance_Name.

  5. Cliquez sur l'onglet Détails et notez l'annotation container.googleapis.com/instance_id.

Étape 3 : Examiner le pod

  1. Dans la console Google Cloud , accédez à la page Charges de travail Kubernetes.

    Accéder à la page "Charges de travail Kubernetes"

  2. Dans la barre d'outils de la console Google Cloud , sélectionnez le projet listé dans resource.project_display_name, si nécessaire.

  3. Filtrez sur le cluster indiqué dans resource.name et l'espace de noms de pod listé dans Pod_Namespace, si nécessaire.

  4. Sélectionnez le pod indiqué dans Pod_Name. Notez les métadonnées concernant le pod et son propriétaire.

Étape 4 : Vérifier les journaux

  1. Dans la console Google Cloud , accédez à l'explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Dans la barre d'outils de la console Google Cloud , sélectionnez le projet listé dans resource.project_display_name, si nécessaire.

  3. Définissez Sélectionner une période sur la période qui vous intéresse.

  4. Sur la page qui s'affiche, procédez comme suit :

    1. Recherchez Pod_Name dans les journaux des pods à l'aide du filtre suivant :
      • resource.type="k8s_container"
      • resource.labels.project_id="resource.project_display_name"
      • resource.labels.location="location"
      • resource.labels.cluster_name="cluster_name"
      • resource.labels.namespace_name="Pod_Namespace"
      • resource.labels.pod_name="Pod_Name"
    2. Recherchez les journaux d'audit du cluster à l'aide du filtre suivant :
      • logName="projects/resource.project_display_name/logs/cloudaudit.googleapis.com%2Factivity"
      • resource.type="k8s_cluster"
      • resource.labels.project_id="resource.project_display_name"
      • resource.labels.location="location"
      • resource.labels.cluster_name="cluster_name"
      • Pod_Name
    3. Recherchez les journaux de la console de nœud GKE à l'aide du filtre suivant :
      • resource.type="gce_instance"
      • resource.labels.instance_id="instance_id"

Étape 5 : Examiner le conteneur en cours d'exécution

Si le conteneur est toujours en cours d'exécution, il peut être possible d'analyser son environnement directement.

  1. Dans la console Google Cloud , accédez à la page Clusters Kubernetes.

    Accéder à la page "Clusters Kubernetes"

  2. Cliquez sur le nom du cluster affiché dans resource.labels.cluster_name.

  3. Sur la page Clusters, cliquez sur Connect, puis sur Exécuter dans Cloud Shell.

    Cloud Shell lance le cluster et ajoute des commandes pour celui-ci dans le terminal.

  4. Appuyez sur Entrée. Si la boîte de dialogue Autoriser Cloud Shell s'affiche, cliquez sur Autoriser.

  5. Connectez-vous à l'environnement du conteneur en exécutant la commande suivante :

      kubectl exec --namespace=Pod_Namespace -ti Pod_Name -c Container_Name -- /bin/sh
    

    Pour cette commande, un shell doit être installé sur le conteneur au niveau de /bin/sh.

Étape 6 : Étudier les méthodes d'attaque et de réponse

  1. Examinez les entrées du framework MITRE ATT&CK pour ce type de résultat : Interpréteur de commandes et de scripts, Transfert d'outils externes.
  2. Vérifiez la valeur de hachage SHA-256 du fichier binaire signalé comme malveillant sur VirusTotal en cliquant sur le lien dans l'indicateur VirusTotal. VirusTotal est un service appartenant à Alphabet qui fournit du contexte sur des fichiers, des URL, des adresses IP et des domaines potentiellement malveillants.
  3. Pour élaborer votre plan de réponse, combinez les résultats de votre enquête aux recherches de MITRE et à l'analyse VirusTotal.

Étape 7 : Mettre en œuvre votre réponse

Le plan de réponse suivant peut être adapté à ce résultat, mais il peut également avoir un impact sur vos opérations. Veillez à bien évaluer les informations que vous collectez dans votre enquête pour déterminer quelle est la meilleure réponse à apporter aux problèmes soulevés par les résultats.

  • Si le script apportait bien les modifications prévues au conteneur, recréez l'image du conteneur de sorte qu'aucune modification ne soit nécessaire. Cela vous permet de disposer d'un conteneur immuable.
  • Sinon, contactez le propriétaire du projet dans lequel se trouve le conteneur compromis.
  • Arrêtez ou supprimez le conteneur compromis et remplacez-le par un nouveau conteneur.

Étapes suivantes