Usar dados da Proteção de dados sensíveis em análises com base no contexto
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 arquivo malicioso por um usuário (técnica MITRE ATT&CK T1204.002) e se esse usuário também tem acesso a dados confidenciais em outro lugar na rede.
Este exemplo requer 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.
- Relações de recursos de origens de dados, como a Análise do IAM do Google Cloud.
- 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 em registros de entidade e evento do modelo de dados unificado (UDM, na sigla em inglês).
Para informações sobre como processar dados de proteção de dados sensíveis nas Operações de segurança do Google, consulte Exportar 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 da análise do IAM do Google Cloud neste exemplo identificam os usuários na
organização e capturam as relações que cada usuário tem com outros sistemas na
rede. 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 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. 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 a
tabela armazena números de 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 proxy da Web do 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 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 da 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"
Há informações comuns nesses registros, como o identificador de 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 T1204.002 do MITRE ATT&CK).
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 as seguintes informações:
- Atividade do usuário, como o download ou o lançamento 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 da 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 um executável que também está relacionado à 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 registros de 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 à mesma tabela de usuário e 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 oUS_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 visualiza no Google Security Operations, 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 do UDM especificados na seçãoevents
.
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 existentes e ela identificar o padrão de atividade especificado na definição, ela vai gerar uma detecção. O painel Detection mostra a detecção gerada após o teste da regra. O painel Detection também mostra 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 de UDM da Análise do IAM do Google Cloud
- Entidade de UDM da Proteção de Dados Sensíveis
- Evento de UDM do proxy da Web do Zscaler
- Evento de 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 selecione 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 contextuais personalizadas, consulte Criar análises contextuais.
Para usar a análise de ameaças predefinida, consulte Como usar as detecções selecionadas do Google Security Operations.