Usar dados da Proteção de dados sensíveis na análise contextual

Compatível com:

Este documento demonstra como usar dados de contexto de entidade da Proteção de dados sensíveis e outras fontes de registros para adicionar compreensão contextual sobre o impacto e o escopo de uma possível ameaça ao realizar uma investigação.

O caso de uso descrito neste documento detecta a execução de um arquivo malicioso por um usuário (técnica T1204.002 do MITRE ATT&CK) e se esse usuário também tem acesso a dados sensíveis em outras partes da rede.

Este exemplo exige que os seguintes dados tenham sido ingeridos e normalizados no Google Security Operations:

  • Dados de atividade do usuário usando registros de rede e EDR.
  • Relacionamentos de recursos de fontes de dados como a análise do IAM. Google Cloud
  • Registros da proteção de dados confidenciais que contêm rótulos sobre o tipo e a sensibilidade dos dados armazenados.

O Google SecOps precisa analisar os dados brutos em registros de entidade e evento do Modelo de dados unificado (UDM).

Para saber como ingerir dados da Proteção de dados sensíveis no Google SecOps, consulte Exportar dados da Proteção de dados sensíveis para o Google SecOps.

Google Cloud Dados de análise do IAM

Os dados de registro da análise do IAM Google Cloud neste exemplo identificam usuários na organização e capturam as relações de cada usuário com outros sistemas na rede. Confira abaixo um snippet de um registro de análise do IAM armazenado como um registro de entidade da UDM. Ele armazena informações sobre o usuário, mikeross, que administra uma tabela do BigQuery chamada analytics:claim.patients.

metadata.vendor_name: "Google Cloud Platform"
metadata.product_name: "GCP IAM Analysis"
metadata.entity_type: "USER"
entity.user.userid: "mikeross"
relations[2].entity.resource.name: "analytics:claim.patients"
relations[2].entity.resource.resource_type: "TABLE"
relations[2].entity_type: "RESOURCE"
relations[2].relationship: "ADMINISTERS"

Dados da Proteção de Dados Sensíveis

Os dados de registro da Proteção de Dados Sensíveis neste exemplo armazenam informações sobre uma tabela do BigQuery. Confira abaixo um snippet de um registro de log da Proteção de Dados Sensíveis armazenado como uma entidade da UDM. Ele representa a tabela do BigQuery chamada analytics:claim.patients com o rótulo Predicted InfoType US_SOCIAL_SECURITY_NUMBER, indicando que a tabela armazena números da Previdência Social dos Estados Unidos.

metadata.vendor_name: "Google Cloud Platform"
metadata.product_name: "GCP DLP CONTEXT"
metadata.entity_type: "RESOURCE"
metadata.description: "RISK_HIGH"
entity.resource.resource_type: "TABLE"
entity.resource.resource_subtype: "BigQuery Table"
entity.resource.attribute.cloud.environment"GOOGLE_CLOUD_PLATFORM"
entity.resource.attribute.labels[0].key: "Sensitivity Score"
entity.resource.attribute.labels[0].value: "SENSITIVITY_HIGH"
entity.resource.attribute.labels[1].key: "Predicted InfoType"
entity.resource.attribute.labels[1].value: "US_SOCIAL_SECURITY_NUMBER"
entity.resource.product_object_id: "analytics:claim.patients"

Eventos de proxy da Web

O evento de proxy da Web neste exemplo captura a atividade de rede. O snippet a seguir é de um registro de log de proxy da Web da Zscaler armazenado como um registro de evento da UDM. Ele captura um evento de download de rede de um arquivo executável pelo usuário com o valor userid mikeross em que o valor received_bytes é 514605.

metadata.log_type = "ZSCALER_WEBPROXY"
metadata.product_name = "NSS"
metadata.vendor_name = "Zscaler"
metadata.event_type = "NETWORK_HTTP"
network.http.response_code = 200
network.received_bytes = 514605
principal.user.userid = "mikeross"
target.url = "http://manygoodnews.com/dow/Client%20Update.exe"

Eventos de EDR

O evento de EDR neste exemplo captura a atividade em um dispositivo endpoint. O snippet a seguir é de um registro de evento do UDM de um registro de EDR do CrowdStrike Falcon. Ele captura um evento de rede envolvendo o aplicativo Microsoft Excel e um usuário com o valor userid mikeross.

metadata.log_type = "CS_EDR"
metadata.product_name = "Falcon"
metadata.vendor_name = "Crowdstrike"
metadata.event_type = "NETWORK_HTTP"
target.process.file.full_path = "\\Device\\HarddiskVolume1\\Program Files\\C:\\Program Files\\Microsoft Office\\Office16\\EXCEL.exe"
target.url = "http://manygoodnews.com/dow/Client%20Update.exe"
target.user.userid = "mikeross"

Observe que há informações comuns nesses registros, tanto o identificador do usuário mikeross quanto o nome da tabela, analytics:claim.patients. A próxima seção deste documento mostra como esses valores são usados na regra para unir os registros.

Regra do mecanismo de detecção neste exemplo

Esta regra de exemplo detecta a execução de um arquivo malicioso por um usuário (técnica MITRE ATT&CK T1204.002).

A regra atribui uma pontuação de risco mais alta a uma detecção quando o usuário também tem acesso a dados sensíveis em outro lugar da rede. A regra correlaciona as seguintes informações:

  • Atividade do usuário, como o download ou o início de um executável.
  • A relação entre recursos, por exemplo, a relação do usuário com uma tabela do BigQuery.
  • Presença de informações sensíveis no recurso a que um usuário tem acesso, por exemplo, o tipo de dados armazenados na tabela do BigQuery.

Confira a descrição de cada seção na regra de exemplo.

  • A seção events especifica o padrão de dados que a regra procura e inclui o seguinte:

    • O grupo 1 e o grupo 2 identificam eventos de rede e EDR que capturam o download de uma grande quantidade de dados ou um executável também relacionado à atividade no aplicativo Excel.
    • O grupo 3 identifica registros em que o usuário identificado nos eventos de rede e EDR também tem permissão para uma tabela do BigQuery.
    • O grupo 4 identifica registros da Proteção de dados sensíveis para a tabela do BigQuery a que o usuário tem acesso.

    Cada grupo de expressões usa a variável $table_name ou $user para unir registros relacionados ao mesmo usuário e tabela de banco de dados.

  • Na seção outcome, a regra cria uma variável $risk_score e define um valor com base na sensibilidade dos dados na tabela. Nesse caso, ele verifica se os dados estão rotulados com o infoType da Proteção de dados sensíveis US_SOCIAL_SECURITY_NUMBER.

    A seção outcome também define outras variáveis, como $principalHostname e $entity_resource_name. Essas variáveis são retornadas e armazenadas com a detecção. Assim, quando você as visualiza no Google SecOps, também é possível mostrar os valores das variáveis como colunas.

  • A seção condition indica que o padrão procura todos os registros da UDM especificados na seção events.

  rule high_risk_user_download_executable_from_macro {
 meta:
   author = "Google Cloud Security Demos"
   description = "Executable downloaded by Microsoft Excel from High Risk User"
   severity = "High"
   technique = "T1204.002"

 events:
   //Group 1. identify a proxy event with suspected executable download
   $proxy_event.principal.user.userid = $user
   $proxy_event.target.url =  /.*\.exe$/ or
   $proxy_event.network.received_bytes > 102400

   //Group 2. correlate with an EDR event indicating Excel activity
   $edr_event.target.user.userid  = $user
   $edr_event.target.process.file.full_path = /excel/ nocase
   $edr_event.metadata.event_type = "NETWORK_HTTP"

   //Group 3. Use the entity to find the permissions
   $user_entity.graph.entity.user.userid = $user
   $user_entity.graph.relations.entity.resource.name = $table_name

   //Group 4. the entity is from Cloud DLP data
   $table_context.graph.entity.resource.product_object_id = $table_name
   $table_context.graph.metadata.product_name = "GCP DLP CONTEXT"

 match:
    $user over 5m

 outcome:
   //calculate risk score
   $risk_score = max(
       if( $table_context.graph.entity.resource.attribute.labels.value = "US_SOCIAL_SECURITY_NUMBER", 80)
       )
   $technique = array_distinct("T1204.002")
   $principalHostname = array_distinct($proxy_event.principal.hostname)
   $principalIp = array_distinct($proxy_event.principal.ip)
   $principalMac = array_distinct($proxy_event.principal.mac)
   $targetHostname = array_distinct($proxy_event.target.hostname)
   $target_url = array_distinct($proxy_event.target.url)
   $targetIp = array_distinct($proxy_event.target.ip)
   $principalUserUserid =  array_distinct($proxy_event.principal.user.userid)
   $entity_resource_name = array_distinct($table_context.graph.entity.resource.name)

condition:
   $proxy_event and $edr_event and $user_entity and $table_context
}

Sobre a detecção

Se você testar a regra com dados atuais e ela identificar o padrão de atividade especificado na definição, uma detecção será gerada. O painel Detecção mostra a detecção gerada após o teste da regra. O painel Detecção também mostra os registros de eventos e entidades que fizeram com que a regra criasse uma detecção. Neste exemplo, os seguintes registros são mostrados:

  • Google Cloud Entidade UDM de análise do IAM
  • Entidade UDM da Proteção de Dados Sensíveis
  • Evento UDM de proxy da Web do Zscaler
  • Evento UDM do EDR do CrowdStrike Falcon

No painel Detecção, selecione qualquer evento ou registro de entidade para conferir os detalhes.

A detecção também armazena as variáveis definidas na seção outcome da regra. Para mostrar as variáveis no painel Detecção, selecione Colunas e escolha um ou mais nomes de variáveis no menu Colunas. As colunas selecionadas aparecem no painel Detecção.

A seguir

Para escrever regras personalizadas, consulte Visão geral da linguagem YARA-L 2.0.

Para criar análises personalizadas com reconhecimento de contexto, consulte Criar análises com reconhecimento de contexto.

Para usar a análise de ameaças predefinida, consulte Como usar as detecções selecionadas do Google SecOps.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.