Esecuzione: Python dannoso eseguito

Questo documento descrive un tipo di risultato di minaccia in Security Command Center. I risultati di minaccia vengono generati dai rilevatori di minacce quando rilevano una potenziale minaccia nelle risorse cloud. Per un elenco completo dei risultati di minaccia disponibili, consulta l'indice dei risultati di minaccia.

Panoramica

Un modello di machine learning ha identificato il codice Python eseguito come dannoso. Gli autori degli attacchi possono utilizzare Python per trasferire strumenti ed eseguire comandi senza file binari. Assicurarsi che i container siano immutabili è una best practice importante. L'utilizzo di script per trasferire gli strumenti può imitare la tecnica di trasferimento degli strumenti di ingresso dell'autore dell'attacco ingress tool transfer e comportare rilevamenti indesiderati.

Container Threat Detection è l'origine di questo risultato.

Come rispondere

Per rispondere a questo risultato:

Passaggio 1: esamina i dettagli del risultato

  1. Apri un risultato Execution: Malicious Python executed come indicato in Esaminare i risultati. Il riquadro dei dettagli del risultato si apre nella scheda Riepilogo.

  2. Nella scheda Riepilogo, esamina le informazioni nelle seguenti sezioni:

    • Che cosa è stato rilevato, in particolare i seguenti campi:
      • Programma binario: dettagli sull'interprete che ha richiamato lo script.
      • Script: percorso assoluto del nome dello script sul disco; questo attributo viene visualizzato solo per gli script scritti su disco, non per l'esecuzione letterale dello script, ad esempio python3 -c.
      • Argomenti: gli argomenti forniti durante la chiamata dello script.
    • Risorsa interessata, in particolare i seguenti campi:
      • Nome completo della risorsa: il nome completo della risorsa del cluster, inclusi il numero del progetto, la località e il nome del cluster.
    • Link correlati, in particolare i seguenti campi:
      • Indicatore VirusTotal: link alla pagina di analisi di VirusTotal.
  3. Nella visualizzazione dei dettagli del risultato, fai clic sulla scheda JSON.

  4. Nel JSON, prendi nota dei seguenti campi.

    • finding:
      • processes:
      • script:
        • contents: contenuti dello script eseguito, che potrebbero essere troncati per motivi di prestazioni; questo può aiutarti nelle indagini
        • sha256: l'hash SHA-256 di script.contents
    • resource:
      • project_display_name: il nome del progetto che contiene l'asset.
    • sourceProperties:
      • Pod_Namespace: il nome dello spazio dei nomi Kubernetes del pod.
      • Pod_Name: il nome del pod GKE.
      • Container_Name: il nome del container interessato.
      • Container_Image_Uri: il nome dell'immagine container in esecuzione.
      • VM_Instance_Name: il nome del nodo GKE in cui è stato eseguito il pod.
  5. Identifica altri risultati che si sono verificati in un momento simile per questo container. Ad esempio, se lo script rilascia un file binario, controlla i risultati correlati al file binario.

Passaggio 2: esamina il cluster e il nodo

  1. Nella Google Cloud console, vai alla pagina Cluster Kubernetes.

    Vai ai cluster Kubernetes

  2. Nella barra degli strumenti della Google Cloud console, seleziona il progetto elencato in resource.project_display_name, se necessario.

  3. Seleziona il cluster elencato nella riga Resource full name (Nome completo della risorsa) nella scheda Summary (Riepilogo) dei dettagli del risultato. Prendi nota di eventuali metadati su il cluster e sul relativo proprietario.

  4. Fai clic sulla scheda Nodi. Seleziona il nodo elencato in VM_Instance_Name.

  5. Fai clic sulla scheda Dettagli e prendi nota dell' container.googleapis.com/instance_id annotazione.

Passaggio 3: esamina il pod

  1. Nella Google Cloud console, vai alla pagina Carichi di lavoro Kubernetes.

    Vai ai carichi di lavoro Kubernetes

  2. Nella barra degli strumenti della Google Cloud console, seleziona il progetto elencato in resource.project_display_name, se necessario.

  3. Se necessario, filtra in base al cluster elencato in resource.name e allo spazio dei nomi del pod elencato in Pod_Namespace.

  4. Seleziona il pod elencato in Pod_Name. Prendi nota di eventuali metadati sul pod e sul relativo proprietario.

Passaggio 4: controlla i log

  1. Nella Google Cloud console, vai a Esplora log.

    Vai a Esplora log

  2. Nella barra degli strumenti della Google Cloud console, seleziona il progetto elencato in resource.project_display_name, se necessario.

  3. Imposta Seleziona intervallo di tempo sul periodo di interesse.

  4. Nella pagina che viene caricata, procedi nel seguente modo:

    1. Trova i log dei pod per Pod_Name utilizzando il seguente filtro:
      • 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. Trova i log di controllo del cluster utilizzando il seguente filtro:
      • 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. Trova i log della console dei nodi GKE utilizzando il seguente filtro:
      • resource.type="gce_instance"
      • resource.labels.instance_id="instance_id"

Passaggio 5: esamina il container in esecuzione

Se il container è ancora in esecuzione, potrebbe essere possibile esaminare direttamente l'ambiente container.

  1. Nella Google Cloud console, vai alla pagina Cluster Kubernetes.

    Vai ai cluster Kubernetes

  2. Fai clic sul nome del cluster mostrato in resource.labels.cluster_name.

  3. Nella pagina Cluster, fai clic su Connetti, quindi su Esegui in Cloud Shell.

    Cloud Shell si avvia e aggiunge i comandi per il cluster nel terminale.

  4. Premi Invio e, se viene visualizzata la finestra di dialogo Autorizza Cloud Shell, fai clic su Autorizza.

  5. Connettiti all'ambiente container eseguendo il seguente comando:

      kubectl exec --namespace=Pod_Namespace -ti Pod_Name -c Container_Name -- /bin/sh
    

    Questo comando richiede che nel container sia installata una shell in /bin/sh.

Passaggio 6: ricerca i metodi di attacco e risposta

  1. Esamina le voci del framework MITRE ATT&CK per questo tipo di risultato: Interprete di comandi e script, Trasferimento di strumenti di ingresso.
  2. Controlla il valore hash SHA-256 del file binario contrassegnato come dannoso su VirusTotal facendo clic sul link in Indicatore VirusTotal. VirusTotal è un servizio di proprietà di Alphabet che fornisce il contesto di file, URL, domini e indirizzi IP potenzialmente dannosi.
  3. Per sviluppare un piano di risposta, combina i risultati dell'indagine con la ricerca MITRE e l'analisi di VirusTotal.

Passaggio 7: implementa la risposta

Il seguente piano di risposta potrebbe essere appropriato per questo risultato, ma potrebbe anche influire sulle operazioni. Valuta attentamente le informazioni raccolte durante l'indagine per determinare il modo migliore per risolvere i risultati.

  • Se Python stava apportando modifiche previste al container, ricompila l'immagine container in modo che non siano necessarie modifiche. In questo modo, il container può essere immutabile.
  • In caso contrario, contatta il proprietario del progetto con il container compromesso.
  • Arresta o elimina il container compromesso e sostituiscilo con un nuovo container.

Passaggi successivi