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
Command and Control: Piped Encoded Code Execution détecte lorsque la sortie d'une commande base64 --decode est directement redirigée vers un interpréteur de ligne de commande tel que python, perl, php, ruby ou ssh.
Lorsqu'une menace est détectée en dehors d'une charge de travail attendue, comme un pipeline CI/CD, cela indique fortement une activité malveillante. Les pirates informatiques utilisent régulièrement cette méthode pour exécuter des scripts ou des commandes obscurcis. L'encodage en base64 masque le code en cours d'exécution. Le fait de le rediriger directement vers un interpréteur permet une exécution immédiate sans écrire le script décodé sur le disque, ce qui le rend plus furtif.
Nous vous recommandons de toujours prendre des mesures immédiates concernant ce résultat lorsqu'il se produit sur une charge de travail inattendue. Les charges de travail légitimes utilisent l'encodage en base64 principalement pour transférer en toute sécurité des données binaires ou des données contenant des caractères spéciaux via des systèmes et protocoles textuels qui pourraient autrement corrompre les données. Toutefois, toute exécution de code peut avoir un impact direct sur votre système et le compromettre davantage. Assurez-vous donc de toujours considérer ce résultat comme malveillant jusqu'à preuve du contraire.
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 : Examinez les détails du résultat
Ouvrez un résultat
Command and Control: Piped Encoded Code Executioncomme indiqué dans la section Examiner les résultats. Le panneau des détails du résultat s'ouvre dans l'onglet Résumé.Dans l'onglet Résumé, examinez les informations des sections suivantes :
- Risque détecté, en particulier les champs suivants :
- Binaire du programme : chemin absolu du binaire exécuté.
- Arguments : arguments transmis lors de l'exécution du binaire.
- Ressource concernée, en particulier le champ 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.
- Risque détecté, en particulier les champs suivants :
Dans la vue détaillée du résultat, cliquez sur l'onglet JSON.
Dans le fichier JSON, notez les champs suivants.
resource:project_display_name: nom du projet contenant le cluster.
finding:processes:binary:path: chemin d'accès complet du binaire exécuté.
args: arguments fournis lors de l'exécution du binaire.
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 de déploiement.VM_Instance_Name: nom du nœud GKE sur lequel le pod a été exécuté.
Identifiez d'autres résultats détectés à peu près au même moment pour ce conteneur. Les résultats associés peuvent indiquer qu'il s'agit d'une activité malveillante, plutôt que d'un manquement aux bonnes pratiques.
Étape 2 : Vérifiez le cluster et le nœud
Dans la console Google Cloud , accédez à la page Clusters Kubernetes.
Dans la barre d'outils de la console Google Cloud , sélectionnez le projet indiqué dans
resource.project_display_name, si nécessaire.Sélectionnez le cluster qui figure à 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.
Cliquez sur l'onglet Nœuds. Sélectionnez le nœud indiqué dans
VM_Instance_Name.Cliquez sur l'onglet Détails et notez l'annotation
container.googleapis.com/instance_id.
Étape 3 : Vérifiez le pod
Dans la console Google Cloud , accédez à la page Charges de travail Kubernetes.
Dans la barre d'outils de la console Google Cloud , sélectionnez le projet indiqué dans
resource.project_display_name, si nécessaire.Filtrez en fonction du cluster spécifié dans la ligne Nom complet de la ressource de l'onglet Résumé des détails du résultat et, si nécessaire, par l'espace de noms du pod listé dans
Pod_Namespace.Sélectionnez le pod indiqué dans
Pod_Name. Notez les métadonnées concernant le pod et son propriétaire.
Étape 4 : Vérifiez les journaux
Dans la console Google Cloud , accédez à l'explorateur de journaux.
Dans la barre d'outils de la console Google Cloud , sélectionnez le projet indiqué dans
resource.project_display_name, si nécessaire.Définissez Sélectionner une période sur la période qui vous intéresse.
Sur la page qui s'affiche, procédez comme suit :
- Recherchez
Pod_Namedans 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"
- 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
- 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"
- Recherchez
Étape 5 : Vérifiez 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.
Accédez à la console Google Cloud .
Dans la barre d'outils de la console Google Cloud , sélectionnez le projet indiqué dans
resource.project_display_name, si nécessaire.Cliquez sur Activer Cloud Shell
Obtenez les identifiants GKE pour votre cluster en exécutant les commandes suivantes.
Pour les clusters zonaux :
gcloud container clusters get-credentials CLUSTER_NAME \ --zone LOCATION \ --project PROJECT_NAMEPour les clusters régionaux :
gcloud container clusters get-credentials CLUSTER_NAME \ --region LOCATION \ --project PROJECT_NAME
Remplacez les éléments suivants :
CLUSTER_NAME: cluster indiqué dansresource.labels.cluster_nameLOCATION: emplacement indiqué dansresource.labels.locationPROJECT_NAME: nom de projet indiqué dansresource.project_display_name
Récupérez le binaire exécuté :
kubectl cp \ POD_NAMESPACE/POD_NAME:PROCESS_BINARY_FULLPATH \ -c CONTAINER_NAME \ LOCAL_FILERemplacez
LOCAL_FILEpar un chemin d'accès local pour stocker le binaire téléchargé.Connectez-vous à l'environnement du conteneur en exécutant la commande suivante :
kubectl exec \ --namespace=POD_NAMESPACE \ -ti POD_NAME \ -c CONTAINER_NAME \ -- /bin/shPour exécuter cette commande, vous devez avoir installé un shell sur le conteneur au niveau de
/bin/sh.
Étape 6 : Étudier les méthodes d'attaque et de réponse
- Examinez les entrées du framework MITRE ATT&CK pour ce type de résultat : Commande et contrôle.
- Pour élaborer votre plan de réponse, combinez les résultats de votre enquête aux recherches de MITRE.
Étape 7 : Mettez en œuvre votre plan de 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.
- Contactez le propriétaire du projet contenant le conteneur compromis.
- Arrêtez ou supprimez le conteneur compromis et remplacez-le par un nouveau conteneur.
Étapes suivantes
- Découvrez comment travailler avec les résultats de détection de menace dans Security Command Center.
- Consultez l'index des résultats de détection de menace.
- Découvrez comment examiner un résultat dans la console Google Cloud .
- Apprenez-en plus sur les services qui génèrent des résultats de détection de menace.