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
A deteção de ameaças de contentores observou um processo que gerou inesperadamente um processo de shell filho. Este evento pode indicar que um atacante está a tentar abusar de comandos e scripts de shell.
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 descoberta
Unexpected Child Shell
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:
- Processo principal: o processo que criou inesperadamente o processo de shell secundário.
- Processo secundário: o processo de shell secundário.
- Arguments: os argumentos fornecidos ao ficheiro binário do processo de shell secundário.
- Variáveis de ambiente: as variáveis de ambiente do ficheiro binário do processo de shell secundário.
- Contentores: o nome do contentor.
- URI dos contentores: o URI da imagem do contentor.
- Pods do Kubernetes: o nome do pod e o espaço de nomes.
- Recurso afetado, especialmente os seguintes campos:
- Nome a apresentar do recurso: o nome do recurso afetado.
- Nome completo do recurso: o nome completo do recurso
do cluster. O nome completo do recurso inclui as seguintes
informações:
- O projeto que contém o cluster:
projects/PROJECT_ID
- A localização onde o cluster está localizado:
zone/ZONE
oulocations/LOCATION
- O nome do cluster:
projects/CLUSTER_NAME
- O projeto que contém o 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:
Clique no separador JSON e tome nota dos seguintes campos:
+processes
: uma matriz que contém todos os processos relacionados com a descoberta. Esta matriz inclui o processo de shell secundário e o processo principal.
+resource
:
+project_display_name
: O nome do projeto que contém os recursos.
+sourceProperties
:
+VM_Instance_Name
: o nome do nó do GKE onde o pod foi executado.
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 grupo apresentado em
resource.name
. 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 que anotou no nome completo do recurso (
resource.name
) do cluster no resumo da deteção, se necessário.Clique em Mostrar cargas de trabalho do sistema.
Filtre a lista de cargas de trabalho pelo nome do cluster que anotou no Nome completo do recurso (
resource.name
) do resumo da descoberta e, se necessário, o espaço de nomes (kubernetes.pods.ns
) do pod que anotou.Clique no nome da carga de trabalho que corresponde ao valor da propriedade
VM_Instance_Name
que anotou no JSON da descoberta anteriormente. É apresentada a página Detalhes do grupo.Na página Detalhes do Pod, tome nota de todas as informações sobre o Pod que possam ajudar a resolver a ameaça.
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
.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.
Aceda à Google Cloud consola.
Na Google Cloud barra de ferramentas da consola, selecione o projeto apresentado em
resource.project_display_name
.Clique em Ativar Cloud Shell.
Obtenha as credenciais do GKE para o seu cluster executando os seguintes comandos.
Para clusters zonais, execute o seguinte:
gcloud container clusters get-credentials cluster_name --zone location --project resource.project_display_name
Para clusters regionais, execute o seguinte:
gcloud container clusters get-credentials cluster_name --region location --project resource.project_display_name
Para iniciar uma shell no ambiente do contentor, execute 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
.Para ver todos os processos em execução no contentor, execute o seguinte comando na shell do contentor:
ps axjf
Este comando requer que o contentor tenha o
/bin/ps
instalado.
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: Unix Shell.
- 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.
- 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.