Unerwartete untergeordnete Shell

In diesem Dokument wird ein Typ von Bedrohungsergebnissen in Security Command Center beschrieben. Bedrohungsergebnisse werden von Bedrohungsdetektoren generiert, wenn sie eine potenzielle Bedrohung in Ihren Cloud-Ressourcen erkennen. Eine vollständige Liste der verfügbaren Bedrohungsergebnisse finden Sie im Index der Bedrohungsergebnisse.

Übersicht

Bei Container Threat Detection wurde ein Prozess beobachtet, der unerwartet einen untergeordneten Shell-Prozess gestartet hat. Dieses Ereignis kann darauf hinweisen, dass ein Angreifer versucht, Shellbefehle und ‑skripts zu missbrauchen.

So reagieren Sie

Gehen Sie folgendermaßen vor, um auf dieses Ergebnis zu reagieren:

Schritt 1: Ergebnisdetails prüfen

  1. Öffnen Sie ein Unexpected Child Shell-Ergebnis, wie unter Ergebnisse prüfen beschrieben. Der Detailbereich für das Ergebnis wird geöffnet und der Tab Zusammenfassung wird angezeigt.

  2. Sehen Sie sich auf dem Tab Zusammenfassung die Informationen in den folgenden Abschnitten an:

    • Was wurde erkannt?, insbesondere die folgenden Felder:
      • Übergeordneter Prozess: Der Prozess, der den untergeordneten Shell-Prozess unerwartet erstellt hat.
      • Untergeordneter Prozess: Der untergeordnete Shell-Prozess.
      • Argumente: die Argumente, die an die Binärdatei des untergeordneten Shell-Prozesses übergeben werden.
      • Umgebungsvariablen: die Umgebungsvariablen der Binärdatei des untergeordneten Shellprozesses.
      • Containers: Der Name des Containers.
      • Containers URI: Der Bild-URI des Containers.
      • Kubernetes-Pods: der Pod-Name und ‑Namespace.
    • Betroffene Ressource, insbesondere die folgenden Felder:
      • Anzeigename der Ressource: Der Name der betroffenen Ressource.
      • Vollständiger Ressourcenname: der vollständige Ressourcenname des Clusters. Der vollständige Ressourcenname enthält die folgenden Informationen:
        • Das Projekt, das den Cluster enthält: projects/PROJECT_ID
        • Der Standort des Clusters: entweder zone/ZONE oder locations/LOCATION
        • Name des Clusters: projects/CLUSTER_NAME
    • Weitere Informationen, insbesondere die folgenden Felder:
      • VirusTotal-Indikator: Link zur VirusTotal-Analyseseite.
  3. Klicken Sie auf den Tab JSON und notieren Sie sich die folgenden Felder:

+processes: ein Array mit allen Prozessen, die mit dem Ergebnis zusammenhängen. Dieses Array enthält den untergeordneten Shell-Prozess und den übergeordneten Prozess. +resource: +project_display_name: Der Name des Projekts, das die Assets enthält. +sourceProperties: +VM_Instance_Name: der Name des GKE-Knotens, auf dem der Pod ausgeführt wurde.

Schritt 2: Cluster und Knoten prüfen

  1. Rufen Sie in der Google Cloud Console die Seite Kubernetes-Cluster auf.

    Zur Seite Kubernetes Clusters

  2. Wählen Sie in der Symbolleiste der Google Cloud Console bei Bedarf das in resource.project_display_name aufgeführte Projekt aus.

  3. Wählen Sie den in resource.name aufgeführten Cluster aus. Notieren Sie sich alle Metadaten zum Cluster und zu seinem Inhaber.

  4. Klicken Sie auf den Tab Knoten. Wählen Sie den in VM_Instance_Name aufgeführten Knoten aus.

  5. Klicken Sie auf den Tab Details und notieren Sie sich die Annotation container.googleapis.com/instance_id.

Schritt 3: Pod überprüfen

  1. Rufen Sie in der Google Cloud Console die Seite Kubernetes-Arbeitslasten auf.

    Zur Seite "Kubernetes-Arbeitslasten"

  2. Wählen Sie in der Symbolleiste der Google Cloud Console bei Bedarf das Projekt aus, das Sie in der Vollständiger Ressourcenname (resource.name) des Clusters in der Zusammenfassung des Ergebnisses notiert haben.

  3. Klicken Sie auf Systemarbeitslasten ansehen.

  4. Filtern Sie die Liste der Arbeitslasten nach dem Clusternamen, den Sie in der Vollständiger Ressourcenname (resource.name) der Zusammenfassung des Ergebnisses notiert haben, und bei Bedarf nach dem Pod-Namespace (kubernetes.pods.ns), den Sie notiert haben.

  5. Klicken Sie auf den Namen der Arbeitslast, der dem Wert des Attributs VM_Instance_Name entspricht, den Sie zuvor im JSON des Ergebnisses notiert haben. Die Seite Pod-Details wird geöffnet.

  6. Sehen Sie sich auf der Seite Pod-Details alle Informationen zum Pod an, die Ihnen bei der Behebung der Bedrohung helfen könnten.

Schritt 4: Protokolle prüfen

  1. Rufen Sie in der Google Cloud Console den Log-Explorer auf.

    Zum Log-Explorer

  2. Wählen Sie in der Symbolleiste der Google Cloud Console das in resource.project_display_name aufgeführte Projekt aus.

  3. Wählen Sie für Zeitraum auswählen den gewünschten Zeitraum aus.

  4. Gehen Sie auf der Seite, die geladen wird, so vor:

    1. Suchen Sie mit dem folgenden Filter Pod-Logs für Pod_Name:
      • 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. Suchen Sie mit dem folgenden Filter Cluster-Audit-Logs:
      • 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. Suchen Sie nach Logs der GKE-Knotenkonsole mit dem folgenden Filter:
      • resource.type="gce_instance"
      • resource.labels.instance_id="instance_id"

Schritt 5: Laufenden Container untersuchen

Wenn der Container noch ausgeführt wird, können Sie die Containerumgebung möglicherweise direkt untersuchen.

  1. Rufen Sie die Google Cloud Console auf.

    Google Cloud Konsole öffnen

  2. Wählen Sie in der Symbolleiste der Google Cloud Console das in resource.project_display_name aufgeführte Projekt aus.

  3. Klicken Sie auf Cloud Shell aktivieren .

  4. Rufen Sie die GKE-Anmeldedaten für Ihren Cluster ab, indem Sie die folgenden Befehle ausführen.

    Führen Sie für zonale Cluster Folgendes aus:

      gcloud container clusters get-credentials cluster_name --zone location --project resource.project_display_name
    

    Führen Sie für regionale Cluster Folgendes aus:

      gcloud container clusters get-credentials cluster_name --region location --project resource.project_display_name
    
  5. Führen Sie Folgendes aus, um eine Shell in der Containerumgebung zu starten:

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

    Bei diesem Befehl muss für den Container eine Shell unter /bin/sh installiert sein.

    Führen Sie den folgenden Befehl in der Container-Shell aus, um alle im Container ausgeführten Prozesse aufzurufen:

      ps axjf
    

    Bei diesem Befehl muss für den Container /bin/ps installiert sein.

Schritt 6: Forschungsangriffs- und Reaktionsmethoden

  1. Prüfen Sie die MITRE-ATT&CK-Framework-Einträge für diesen Ergebnistyp: Befehls- und Skriptinterpreter: Unix-Shell.
  2. Prüfen Sie den SHA-256-Hashwert für die als schädlich gekennzeichnete Binärdatei auf VirusTotal, indem Sie auf den Link in VirusTotal-Indikator klicken. VirusTotal ist ein Alphabet-eigener Dienst, der Kontext zu potenziell schädlichen Dateien, URLs, Domains und IP-Adressen bereitstellt.
  3. Wenn Sie einen Reaktionsplan entwickeln möchten, kombinieren Sie Ihre Untersuchungsergebnisse mit der MITRE-Forschung und der VirusTotal-Analyse.

Schritt 7: Antwort implementieren

Der folgende Antwortplan ist möglicherweise für dieses Ergebnis geeignet, kann sich jedoch auch auf Vorgänge auswirken. Prüfen Sie die Informationen, die Sie im Rahmen Ihrer Untersuchung erfasst haben, sorgfältig, um die beste Lösung für die Ergebnisse zu ermitteln.

  • Wenden Sie sich an den Inhaber des Projekts mit dem manipulierten Container.
  • Beenden oder löschen Sie den manipulierten Container und ersetzen Sie ihn durch einen neuen Container.

Nächste Schritte