Use dados de proteção de dados sensíveis em análises contextuais

Este documento demonstra como usar dados de contexto de entidade da Proteção de Dados Sensíveis e outras origens de registros para agregar 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 MITRE ATT&CK T1204.002) e se esse usuário também tem acesso a dados sensíveis em outro lugar da rede.

Neste exemplo, é necessário que os dados a seguir tenham sido ingeridos e normalizados no Google Security Operations:

  • Dados de atividade do usuário usando registros de rede e EDR.
  • Relações de recursos de fontes de dados como o Google Cloud IAM Analysis.
  • Registros de 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 analisar os dados brutos nos registros de entidade e de eventos do modelo de dados unificado (UDM, na sigla em inglês).

Para informações sobre como ingerir dados de proteção de dados sensíveis nas operações de segurança do Google, consulte Como exportar dados de proteção de dados sensíveis para as operações de segurança do Google.

Dados de análise do Google Cloud IAM

Os dados de registro de análise do Google Cloud IAM neste exemplo identificam usuários na organização e captura os relacionamentos que cada usuário tem com outros sistemas na rede. Veja 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. Veja a seguir um snippet de um registro da Proteção de Dados Sensíveis armazenado como um registro de entidade de UDM. Ela 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 da rede. O snippet a seguir é de um registro de proxy da Web do Zscaler armazenado como um registro de eventos de 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 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 mikeross de userid.

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, 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 mesclar 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 confidenciais em outro lugar da rede. A regra correlaciona as 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 uma tabela do BigQuery.
  • Presença de informações confidenciais no recurso a que um usuário tem acesso, por exemplo, o tipo de dados armazenados na tabela do BigQuery.

Veja a seguir uma 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:

    • Os Grupos 1 e 2 identificam eventos de rede e EDR que capturam o download de uma grande quantidade de dados ou de um executável que também está 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 os registros da proteção de dados sensíveis da tabela do BigQuery a que o usuário tem acesso.

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

  • Na seção outcome, a regra cria uma variável $risk_score e define um valor com base na confidencialidade dos dados na tabela. Nesse caso, ele verifica se os dados estão rotulados com o InfoType de 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 visualizar nas Operações de segurança do Google, também será possível mostrar os valores das variáveis como colunas.

  • A seção condition indica que o padrão procura todos os registros 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 aos dados atuais e ela identificar o padrão de atividade especificado na definição, ela vai gerar uma detecção. O painel Detecção exibe a detecção gerada após o teste da regra. O painel Detecção também exibe os registros de evento e entidade que fizeram com que a regra criasse uma detecção. Neste exemplo, os seguintes registros são exibidos:

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

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

A detecção também armazena as variáveis definidas na seção outcome da regra. Para exibir as variáveis no painel Detecção, selecione Colunas e, em seguida, selecione um ou mais nomes de variáveis no menu Colunas. As colunas selecionadas são exibidas 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 base no contexto, consulte 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.