Este documento descreve um tipo de deteção de ameaças no Security Command Center. As conclusões de ameaças são geradas por detetores de ameaças quando detetam uma potencial ameaça nos seus recursos da nuvem. Para ver uma lista completa das conclusões de ameaças disponíveis, consulte o Índice de conclusões de ameaças.
Vista geral
Um modelo de aprendizagem automática identificou código Bash executado como malicioso. Os atacantes podem usar o Bash para transferir ferramentas e executar comandos sem ficheiros binários. Garantir que os seus contentores são imutáveis é uma prática recomendada importante. A utilização de scripts para transferir ferramentas pode imitar a técnica do atacante de transferência de ferramentas de entrada e resultar em deteções indesejadas.
A Deteção de ameaças de contentores é a origem desta descoberta.
Como responder
Para responder a esta descoberta, faça o seguinte:
Passo 1: reveja os detalhes da descoberta
Abra uma
Malicious Script Executed
descoberta conforme indicado em Rever descobertas. O painel de detalhes da descoberta é aberto no separador Resumo.No separador Resumo, reveja as informações nas seguintes secções:
- O que foi detetado, especialmente os seguintes campos:
- Binário do programa: detalhes sobre o intérprete que invocou o script.
- Script: caminho absoluto do nome do script no disco; este atributo só aparece para scripts escritos no disco e não para a execução literal de scripts, por exemplo,
bash -c
. - Argumentos: os argumentos fornecidos quando o script é invocado.
- Recurso afetado, especialmente os seguintes campos:
- Nome completo do recurso: o nome completo do recurso do cluster, incluindo o número do projeto, a localização e o nome do cluster.
- Links relacionados, especialmente os seguintes campos:
- Indicador do VirusTotal: link para a página de análise do VirusTotal.
- O que foi detetado, especialmente os seguintes campos:
Na vista de detalhes da descoberta, clique no separador JSON.
No JSON, tenha em atenção os seguintes campos.
finding
:processes
:script
:contents
: conteúdos do script executado, que podem ser truncados por motivos de desempenho. Isto pode ajudar na sua investigaçãosha256
: o hash SHA-256 descript.contents
resource
:project_display_name
: o nome do projeto que contém o recurso.
sourceProperties
:Pod_Namespace
: o nome do espaço de nomes do Kubernetes do pod.Pod_Name
: o nome do agrupamento do GKE.Container_Name
: o nome do contentor afetado.Container_Image_Uri
: o nome da imagem do contentor que está a ser executada.VM_Instance_Name
: o nome do nó do GKE onde o pod foi executado.
Identifique outras conclusões que ocorreram numa altura semelhante para este contentor. Por exemplo, se o script eliminar um ficheiro binário, verifique se existem descobertas relacionadas com o ficheiro binário.
Passo 2: reveja o cluster e o nó
Na Google Cloud consola, aceda à página Clusters do Kubernetes.
Na Google Cloud barra de ferramentas da consola, selecione o projeto apresentado em
resource.project_display_name
, se necessário.Selecione o cluster apresentado na linha Nome completo do recurso no separador Resumo dos detalhes da descoberta. Tome nota de quaisquer metadados sobre o cluster e o respetivo proprietário.
Clique no separador Nós. Selecione o nó apresentado em
VM_Instance_Name
.Clique no separador Detalhes e tome nota da anotação
container.googleapis.com/instance_id
.
Passo 3: reveja o Pod
Na Google Cloud consola, aceda à página Kubernetes Workloads.
Na Google Cloud barra de ferramentas da consola, selecione o projeto apresentado em
resource.project_display_name
, se necessário.Filtre o cluster apresentado em
resource.name
e o espaço de nomes do pod apresentado emPod_Namespace
, se necessário.Selecione o podcast apresentado em
Pod_Name
. Tome nota de todos os metadados sobre o podcast e o respetivo proprietário.
Passo 4: verifique os registos
Na Google Cloud consola, aceda ao Explorador de registos.
Na Google Cloud barra de ferramentas da consola, selecione o projeto apresentado em
resource.project_display_name
, se necessário.Defina Selecionar intervalo de tempo para o período de interesse.
Na página carregada, faça o seguinte:
- Encontre registos de pods para
Pod_Name
através do seguinte 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"
- Encontre registos de auditoria de clusters através do seguinte 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
- Encontre registos da consola de nós do GKE através do seguinte filtro:
resource.type="gce_instance"
resource.labels.instance_id="instance_id"
- Encontre registos de pods para
Passo 5: investigue o contentor em execução
Se o contentor ainda estiver em execução, pode ser possível investigar o ambiente do contentor diretamente.
Na Google Cloud consola, aceda à página Clusters do Kubernetes.
Clique no nome do cluster apresentado em
resource.labels.cluster_name
.Na página Clusters, clique em Associar e, de seguida, em Executar no Cloud Shell.
O Cloud Shell é iniciado e adiciona comandos para o cluster no terminal.
Prima Enter e, se for apresentada a caixa de diálogo Autorizar Cloud Shell, clique em Autorizar.
Ligue-se ao ambiente do contentor executando o seguinte comando:
kubectl exec --namespace=Pod_Namespace -ti Pod_Name -c Container_Name -- /bin/sh
Este comando requer que o contentor tenha uma shell instalada em
/bin/sh
.
Passo 6: pesquise métodos de ataque e resposta
- Reveja as entradas da framework MITRE ATT&CK para este tipo de descoberta: Command and Scripting Interpreter, Ingress Tool Transfer.
- Verifique o valor hash SHA-256 do ficheiro binário denunciado como malicioso no VirusTotal clicando no link no indicador do VirusTotal. O VirusTotal é um serviço pertencente à Alphabet que fornece contexto sobre ficheiros, URLs, domínios e endereços IP potencialmente maliciosos.
- Para desenvolver um plano de resposta, combine os resultados da investigação com a investigação da MITRE e a análise do VirusTotal.
Passo 7: implemente a sua resposta
O seguinte plano de resposta pode ser adequado para esta descoberta, mas também pode afetar as operações. Avalie cuidadosamente as informações recolhidas na sua investigação para determinar a melhor forma de resolver as conclusões.
- Se o script estava a fazer alterações pretendidas ao contentor, recrie a imagem do contentor de forma que não sejam necessárias alterações. Desta forma, o contentor pode ser imutável.
- Caso contrário, contacte o proprietário do projeto com o contentor comprometido.
- Pare ou elimine o contentor comprometido e substitua-o por um novo contentor.
O que se segue?
- Saiba como trabalhar com as conclusões de ameaças no Security Command Center.
- Consulte o índice de resultados de ameaças.
- Saiba como rever uma descoberta através da Google Cloud consola.
- Saiba mais sobre os serviços que geram resultados de ameaças.