Usar dados da Proteção de dados sensíveis em análises com base no contexto

Compatível com:

Este documento demonstra como usar dados de contexto de entidade da Proteção de dados sensíveis e outras fontes de registro para adicionar entendimento contextual sobre o impacto e 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 ataque arquivo por um usuário (técnica MITRE ATT&CK T1204.002) e se esse usuário também tem acesso a dados sensíveis em outros lugares da em uma rede VPC.

Este exemplo exige que os dados a seguir tenham sido ingeridos e normalizados em Operações de segurança do Google:

  • Dados de atividade do usuário usando registros de rede e de EDR.
  • Relações de recursos de fontes de dados, como a análise do Google Cloud IAM.
  • Registros da Proteção de dados sensíveis que contêm rótulos sobre o tipo e a confidencialidade dos dados armazenados.

As Operações de segurança do Google precisam ser capazes de analisar os dados brutos no Modelo de dados unificado (UDM) registros de entidades e eventos.

Para informações sobre a ingestão de dados de proteção de dados sensíveis nas Operações de segurança do Google, consulte Exportação de dados de proteção de dados sensíveis para as Operações de segurança do Google.

Dados de análise do IAM do Google Cloud

Os dados de registro de análise do Google Cloud IAM neste exemplo identificam os usuários na organização e captura as relações que cada usuário tem com outros sistemas da em uma rede VPC. Confira a seguir um snippet de um registro de análise do IAM armazenado como um registro de entidade do 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 de 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. O snippet a seguir é de um registro de Proteção de dados sensíveis armazenado como um registro de entidade do UDM. Ela representa a tabela do BigQuery chamada analytics:claim.patients com o rótulo Predicted InfoType US_SOCIAL_SECURITY_NUMBER, indicando que 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 da rede. O snippet a seguir é de um registro de proxy da Web do Zscaler armazenado como um registro de evento do 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 EDR neste exemplo captura a atividade em um dispositivo de endpoint. O snippet a seguir é de um registro de EDR do CrowdStrike Falcon armazenado como um registro de evento do UDM. 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 e o nome da tabela, analytics:claim.patients. A próxima seção deste documento demonstra 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 ATT&CK do MITRE 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 na rede. A regra correlaciona seguintes informações:

  • Atividade do usuário, como o download ou a inicialização de um executável.
  • a relação entre recursos. Por exemplo, a relação do usuário com um Tabela do BigQuery.
  • A presença de informações sensíveis no recurso que um usuário pode acessar por exemplo do tipo de dados armazenados na tabela do BigQuery.

Veja a seguir uma descrição de cada seção da regra de exemplo.

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

    • Os Grupos 1 e 2 identificam eventos de rede e de EDR que capturam o download de uma grande quantidade de dados ou de um executável relacionado ao atividade no aplicativo Excel.
    • O grupo 3 identifica registros em que o usuário identificado na rede e os eventos EDR também têm permissão para uma tabela do BigQuery.
    • O Grupo 4 identifica os registros de proteção de dados sensíveis para a tabela do BigQuery que o usuário pode acessar.

    Cada grupo de expressões usa a variável $table_name ou $user para mesclar 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 marcados com o US_SOCIAL_SECURITY_NUMBER infoType de proteção de dados sensíveis.

    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ê a consultar no Google Security Operations, também poderá exibir os valores das variáveis como colunas.

  • A seção condition indica que o padrão procura todos os registros do 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 em relação a dados existentes e ela identificar o padrão de especificada na definição, ele gera uma detecção. O painel Detection mostra a detecção gerada após o teste da regra. O O painel Detecção também exibe os registros de evento e entidade que causaram a para criar uma detecção. Neste exemplo, os seguintes registros são exibidos:

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

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 no objeto outcome da regra. Para mostrar as variáveis no painel Detecção, selecione Colunas e selecione um ou mais nomes de variáveis no menu Colunas. As colunas selecionadas aparecem no painel Detecção.

A seguir

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

Para criar análises personalizadas baseadas no contexto, confira Criar análises baseadas no contexto.

Para usar análises de ameaças predefinidas, consulte Como usar detecções selecionadas das Operações de segurança do Google.