Added Binary Executed

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

Foi executado um ficheiro binário que não fazia parte da imagem do contentor original. Os atacantes instalam normalmente ferramentas de exploração e software malicioso após a comprometimento inicial. Garantir que os seus contentores são imutáveis é uma prática recomendada importante. Esta é uma descoberta de gravidade baixa, porque a sua organização pode não estar a seguir esta prática recomendada. Existem resultados Execution: Added Malicious Binary Executed correspondentes quando o hash do ficheiro binário é um indicador de comprometimento (IoC) conhecido.

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

  1. Abra uma descoberta Added Binary Executed conforme indicado em Rever descobertas. O painel de detalhes da descoberta é aberto no separador Resumo.

  2. No separador Resumo, reveja as informações nas seguintes secções:

    • O que foi detetado, especialmente os seguintes campos:
      • Binário do programa: o caminho absoluto do binário adicionado.
      • Arguments: os argumentos fornecidos quando o ficheiro binário adicionado é 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.
  3. Clique em JSON e tome nota dos seguintes campos:

    • resource:
      • project_display_name: o nome do projeto que contém o cluster.
    • 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 implementada.
      • VM_Instance_Name: o nome do nó do GKE onde o pod foi executado.
  4. Identifique outras conclusões que ocorreram numa altura semelhante para este contentor. As conclusões relacionadas podem indicar que esta atividade foi maliciosa, em vez de uma falha no seguimento das práticas recomendadas.

Passo 2: reveja o cluster e o nó

  1. Na Google Cloud consola, aceda à página Clusters do Kubernetes.

    Aceda aos clusters do Kubernetes

  2. Na Google Cloud barra de ferramentas da consola, selecione o projeto apresentado em resource.project_display_name, se necessário.

  3. 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.

  4. Clique no separador Nós. Selecione o nó apresentado em VM_Instance_Name.

  5. Clique no separador Detalhes e tome nota da anotação container.googleapis.com/instance_id.

Passo 3: reveja o Pod

  1. Na Google Cloud consola, aceda à página Kubernetes Workloads.

    Aceda às cargas de trabalho do Kubernetes

  2. Na Google Cloud barra de ferramentas da consola, selecione o projeto apresentado em resource.project_display_name, se necessário.

  3. Filtre o cluster apresentado na linha Nome completo do recurso no separador Resumo dos detalhes da descoberta e o espaço de nomes do pod apresentado em Pod_Namespace, se necessário.

  4. 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

  1. Na Google Cloud consola, aceda ao Explorador de registos.

    Aceda ao Explorador de registos

  2. Na Google Cloud barra de ferramentas da consola, selecione o projeto apresentado em resource.project_display_name, se necessário.

  3. Defina Selecionar intervalo de tempo para o período de interesse.

  4. Na página carregada, faça o seguinte:

    1. 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"
    2. 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
    3. Encontre registos da consola de nós do GKE através do seguinte filtro:
      • resource.type="gce_instance"
      • resource.labels.instance_id="instance_id"

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.

  1. Aceda à Google Cloud consola.

    Abrir Google Cloud consola

  2. Na Google Cloud barra de ferramentas da consola, selecione o projeto apresentado em resource.project_display_name, se necessário.

  3. Clique em Ativar Cloud Shell

  4. Execute os seguintes comandos para obter credenciais do GKE para o seu cluster.

    Para clusters zonais:

      gcloud container clusters get-credentials cluster_name --zone location --project project_name
    

    Para clusters regionais:

      gcloud container clusters get-credentials cluster_name --region location --project project_name
    

    Substitua o seguinte:

    • cluster_name: o cluster indicado em resource.labels.cluster_name
    • location: a localização indicada em resource.labels.location
    • project_name: o nome do projeto indicado em resource.project_display_name
  5. Execute o seguinte comando para obter o ficheiro binário adicionado:

      kubectl cp Pod_Namespace/Pod_Name:Process_Binary_Fullpath -c Container_Name  local_file
    

    Substitua local_file por um caminho de ficheiro local para armazenar o ficheiro binário adicionado.

  6. 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

  1. Reveja as entradas da framework MITRE ATT&CK para este tipo de descoberta: Transferência de ferramentas de entrada, API nativa.
  2. 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.
  3. 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 ficheiro binário se destinava a ser incluído no contentor, recompile a imagem do contentor com o ficheiro binário incluído. 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?