Ausführung: Schädliches Python-Script ausgeführt

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

Ein ML-Modell (maschinelles Lernen) hat ausgeführten Python-Code als schädlich identifiziert. Angreifer können Python verwenden, um Tools zu übertragen und Befehle ohne Binärdateien auszuführen. Es ist eine wichtige Best Practice, dafür zu sorgen, dass Ihre Container unveränderbar sind. Durch die Verwendung von Skripten zum Übertragen von Tools kann die Angreifertechnik Ingress Tool Transfer nachgeahmt werden, was zu unerwünschten Erkennungen führen kann.

So reagieren Sie

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

Schritt 1: Ergebnisdetails prüfen

  1. Öffnen Sie ein Execution: Malicious Python executed-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:
      • Binärprogramm des Programms: Details zum Interpreter, der das Skript aufgerufen hat.
      • Script: Absoluter Pfad des Namens des Skripts auf dem Laufwerk. Dieses Attribut wird nur für Skripts angezeigt, die auf das Laufwerk geschrieben wurden, nicht für die Literalausführung von Skripts, z. B. python3 -c.
      • Argumente: die Argumente, die beim Aufrufen des Skripts angegeben werden.
    • Betroffene Ressource, insbesondere die folgenden Felder:
    • Weitere Informationen, insbesondere die folgenden Felder:
      • VirusTotal-Indikator: Link zur VirusTotal-Analyseseite.
  3. Klicken Sie in der Detailansicht des Ergebnisses auf den Tab JSON.

  4. Achten Sie in der JSON-Datei auf die folgenden Felder.

    • finding:
      • processes:
      • script:
        • contents: Inhalt des ausgeführten Skripts, der aus Leistungsgründen möglicherweise gekürzt wurde; dies kann Ihnen bei der Untersuchung helfen
        • sha256: der SHA-256-Hash von script.contents
    • resource:
      • project_display_name: Der Name des Projekts, das das Asset enthält.
    • sourceProperties:
      • Pod_Namespace: der Name des Kubernetes-Namespace des Pods.
      • Pod_Name: der Name des GKE-Pods.
      • Container_Name: der Name des betroffenen Containers.
      • Container_Image_Uri: der Name des ausgeführten Container-Images.
      • VM_Instance_Name: der Name des GKE-Knotens, auf dem der Pod ausgeführt wurde.
  5. Suchen Sie nach anderen Ergebnissen, die für diesen Container zu einem ähnlichen Zeitpunkt aufgetreten sind. Wenn das Skript beispielsweise eine Binärdatei ablegt, suchen Sie nach Ergebnissen, die sich auf die Binärdatei beziehen.

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 Cluster aus, der in der Zeile Vollständiger Ressourcenname auf dem Tab Zusammenfassung der Ergebnisdetails aufgeführt ist. 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 in resource.project_display_name aufgeführte Projekt aus.

  3. Filtern Sie bei Bedarf nach dem in resource.name aufgeführten Cluster und dem in Pod_Namespace aufgeführten Pod-Namespace.

  4. Wählen Sie den in Pod_Name aufgeführten Pod aus. Notieren Sie sich alle Metadaten zum Pod und zu seinem Inhaber.

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 bei Bedarf 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 prüfen

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

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

    Zur Seite Kubernetes Clusters

  2. Klicken Sie auf den Namen des Clusters in resource.labels.cluster_name.

  3. Klicken Sie auf der Seite Cluster auf Verbinden und dann auf In Cloud Shell ausführen.

    Cloud Shell startet Befehle für den Cluster im Terminal und fügt sie hinzu.

  4. Drücken Sie die Eingabetaste. Wenn das Dialogfeld Cloud Shell autorisieren angezeigt wird, klicken Sie auf Autorisieren.

  5. Stellen Sie eine Verbindung zur Containerumgebung her, indem Sie den folgenden Befehl ausführen:

      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.

Schritt 6: Forschungsangriffs- und Reaktionsmethoden

  1. Prüfen Sie die MITRE-ATT&CK-Framework-Einträge für diesen Ergebnistyp: Befehls- und Skriptinterpreter, Ingress-Tool Transfer.
  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.

  • Wenn Python beabsichtigte Änderungen am Container vorgenommen hat, erstellen Sie das Container-Image neu, sodass keine Änderungen erforderlich sind. So kann der Container unveränderlich sein.
  • Andernfalls 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