Introdução
Na era digital de hoje, o grande volume de dados gerados por dispositivos e sistemas pode ser um desafio e uma oportunidade para profissionais de segurança. Analisar uma grande quantidade de dados para criar insights valiosos ou acionáveis sobre tendências de ataques cibernéticos requer ferramentas e metodologias precisas.
Antes de se aprofundar na tarefa de análise de dados, você pode se perguntar:
- Que perguntas específicas pretendo responder e possuo os dados necessários?
- Onde estão localizados todos os dados pertinentes?
- Como posso ter acesso a esses dados?
- Ao acessar os dados, quais etapas são envolvidas para entendê-los e organizá-los?
- Quais ferramentas são mais eficazes para extrair, interpretar ou visualizar os dados?
- Devo analisar os dados brutos imediatamente ou esperar até que eles sejam processados?
- Mais importante ainda, que insights acionáveis podem ser derivados dos dados?
Se essas perguntas ressoam com você, você está no caminho certo. Bem-vindo ao mundo do Google Cloud, onde abordaremos essas dúvidas e guiaremos você pelo processo de criação de um relatório abrangente.
Nossa abordagem incluirá várias etapas na seguinte ordem:
Exploração: Começamos entendendo profundamente os dados à nossa disposição. Esta fase envolve a identificação de possíveis insights que pretendemos descobrir e a verificação da disponibilidade dos dados necessários.
Extração: Aqui, coletamos os dados necessários, focando nas informações mais relevantes e atuais para nossa análise.
Pré-processamento e transformação: Nesta etapa, preparamos os dados para análise. Isso envolve normalizar (limpar, organizar e estruturar) os dados para garantir sua prontidão para processamento posterior.
Análise de tendências: A maioria das nossas descobertas e observações sobre ameaças derivam desse esforço. Analisamos os dados processados em busca de padrões, tendências e anomalias. Técnicas como análise de séries temporais e agregação são empregadas para entender a evolução das ameaças ao longo do tempo e destacar ataques cibernéticos significativos em várias plataformas.
Redução: Nesta etapa, destilamos os dados em seus elementos mais relevantes, focando nos aspectos mais significativos e esclarecedores.
Apresentação: A etapa final é apresentar nossas descobertas. Utilizando ferramentas do Google Workspace, pretendemos exibir nossos insights de forma clara, concisa e visualmente envolvente.
Conclusão: Refletindo sobre essa jornada, discutiremos a importância de ter as ferramentas analíticas certas. Destacaremos como o Google Cloud Platform (GCP) fornece um ambiente ideal para analisar dados de ameaças cibernéticas, permitindo-nos transformar dados brutos em insights significativos.
Exploração: Determinando dados disponíveis
Antes de mergulhar em qualquer análise sofisticada, é necessário se preparar estabelecendo uma compreensão do cenário de dados que pretendemos estudar.
Aqui está nossa abordagem:
- Identificando dados disponíveis: O primeiro passo é verificar quais dados estão acessíveis. Isso pode incluir fenômenos de malware, anomalias de endpoint, sinais de nuvem, etc. Confirmar a disponibilidade desses tipos de dados é essencial.
- Localizando os armazenamentos de dados: Determinando a localização exata dos nossos dados. Saber onde nossos dados residem – seja em bancos de dados, data lakes ou outras soluções de armazenamento – ajuda a otimizar o processo de análise subsequente.
- Acessando os dados: É importante garantir que temos as permissões ou credenciais necessárias para acessar os conjuntos de dados necessários. Caso contrário, será necessário tentar identificar e solicitar acesso ao proprietário do recurso.
- Entendendo o esquema de dados: compreender a estrutura dos nossos dados é vital. Conhecer o esquema auxilia no planejamento eficaz do processo de análise.
- Avaliar a qualidade dos dados: assim como em qualquer análise completa, avaliar a qualidade dos dados é crucial. Verificamos se os dados são segmentados e detalhados o suficiente para uma análise de tendências significativa.
Esta fase visa garantir que nossa análise seja baseada em fundamentos sólidos e realistas. Para um relatório como o Global Threat Report, contamos com conjuntos de dados ricos e pertinentes, como:
- Dados de sinal de nuvem: isso inclui dados de alertas globais de Gerenciamento de Informações e Eventos de Segurança (SIEM), com foco especial em plataformas de nuvem como AWS, GCP e Azure. Esses dados geralmente são obtidos de regras de detecção públicas.
- Dados de alerta de endpoint: dados coletados dos alertas globais do Elastic Defend , incorporando uma variedade de regras de comportamento de endpoint público.
- Dados de malware: envolvem dados de alertas globais do Elastic Defend, enriquecidos com MalwareScore e regras públicas do YARA.
Cada conjunto de dados é categorizado e enriquecido para contexto com estruturas como MITRE ATT&CK, detalhes do Elastic Stack e insights do cliente. Soluções de armazenamento do Google Cloud Platform, como os buckets do BigQuery e do Google Cloud Storage (GCS), fornecem uma infraestrutura robusta para nossa análise.
Também é importante definir um limite de “atualização” dos dados, excluindo dados com até 365 dias de duração para um relatório anual, para garantir relevância e precisão.
Por fim, lembre-se de escolher dados que ofereçam uma perspectiva imparcial. Excluir ou incluir dados internos deve ser uma decisão estratégica intencional com base em sua relevância para sua visibilidade.
Em resumo, selecionar as ferramentas e os conjuntos de dados certos é fundamental para criar uma análise abrangente e esclarecedora. Cada escolha contribui de forma única para a eficácia geral da análise de dados, garantindo que os insights finais sejam valiosos e impactantes.
Extração: O primeiro passo na análise de dados
Depois de identificar e localizar os dados necessários, o próximo passo em nossa jornada analítica é extrair esses dados de nossas soluções de armazenamento. Esta fase é crítica, pois prepara o cenário para a análise aprofundada que se segue.
Ferramentas e técnicas de extração de dados
Várias ferramentas e linguagens de programação podem ser utilizadas para extração de dados, incluindo Python, R, Go, Jupyter Notebooks e Looker Studio. Cada ferramenta oferece vantagens únicas, e a escolha depende das necessidades específicas da sua análise.
Em nossos esforços de extração de dados, obtivemos mais sucesso com uma combinação de BigQuery, Colab Notebooks, buckets e Google Workspace para extrair os dados necessários. Os Colab Notebooks, semelhantes aos Jupyter Notebooks, operam no ambiente de nuvem do Google, proporcionando uma integração perfeita com outros serviços do Google Cloud.
BigQuery para preparação e consulta de dados
No processo de análise, uma etapa fundamental é "preparar" nossos conjuntos de dados usando o BigQuery. Isso envolve utilizar consultas do BigQuery para criar e salvar objetos, tornando-os reutilizáveis e compartilháveis em nossa equipe. Conseguimos isso empregando a instrução CREATE TABLE , que nos permite combinar vários conjuntos de dados , como alertas de comportamento de endpoint, dados de clientes e dados de regras em um único conjunto de dados abrangente.
Esse conjunto de dados consolidado é então armazenado em uma tabela do BigQuery designada especificamente para essa finalidade. Neste exemplo, vamos nos referir a ele como conjunto de dados “Relatório Global de Ameaças”. Essa abordagem é aplicada consistentemente em diferentes tipos de dados, incluindo sinais de nuvem e conjuntos de dados de malware.
A tabela de dados recém-criada, por exemplo, pode ser chamada de elastic.global_threat_report.ep_behavior_raw
. Essa convenção de nomenclatura, definida pelo BigQuery, ajuda a organizar e localizar os conjuntos de dados de forma eficaz, o que é crucial para os estágios subsequentes do processo de extração.
Um exemplo de uma consulta do BigQuery usada neste processo pode ser parecido com este:
CREATE TABLE elastic.global_threat_report.ep_behavior_raw AS
SELECT * FROM ...
Diagrama para consulta do BigQuery em uma tabela de conjunto de dados exportada
Também usamos a instrução EXPORT DATA no BigQuery para transferir tabelas para outros serviços do GCP, como exportá-las para buckets do Google Cloud Storage (GCS) no formato de arquivo parquet.
EXPORT DATA
OPTIONS (
uri = 'gs://**/ep_behavior/*.parquet',
format = 'parquet',
overwrite = true
)
AS (
SELECT * FROM `project.global_threat_report.2023_pre_norm_ep_behavior`
)
Colab Notebooks para carregar conjuntos de dados preparados
Os Colab Notebooks são fundamentais na organização do nosso processo de extração de dados. Eles permitem fácil acesso e gerenciamento de scripts de dados armazenados em plataformas como GitHub e Google Drive.
Para autenticação e autorização, usamos credenciais do Google Workspace, simplificando o acesso a vários serviços do Google Cloud, incluindo BigQuery e Colab Notebooks. Aqui está um exemplo básico de como a autenticação é tratada:
Diagrama para autenticação e autorização entre serviços do Google Cloud
Para aqueles que são novos no Jupyter Notebooks ou dataframes, é benéfico dedicar um tempo para se familiarizar com essas ferramentas. Eles são fundamentais no kit de ferramentas de qualquer analista de dados, permitindo gerenciamento eficiente de código, análise de dados e estruturação. O domínio dessas ferramentas é essencial para uma análise de dados eficaz.
Ao criar um notebook no Google Colab, estamos prontos para extrair nossas tabelas personalizadas (como project.global_threat_report.ep_behavior_raw) do BigQuery. Esses dados são então carregados no Pandas Dataframes, uma biblioteca Python que facilita a manipulação e análise de dados. Embora lidar com grandes conjuntos de dados com Python possa ser desafiador, o Google Colab fornece recursos robustos de computação virtual. Se necessário, esses recursos podem ser ampliados por meio do Google Cloud Marketplace ou do Google Cloud Console, garantindo que até mesmo grandes conjuntos de dados possam ser processados com eficiência.
Bibliotecas Python essenciais para análise de dados
Em nosso processo de análise de dados, utilizamos várias bibliotecas Python, cada uma atendendo a um propósito específico:
Biblioteca | Descrição |
---|---|
data e hora | Essencial para lidar com todas as operações relacionadas a data e hora em seus dados. Ele permite que você manipule e formate informações de data e hora para análise. |
google.auth | Gerencia a autenticação e as permissões de acesso, garantindo acesso seguro aos serviços do Google Cloud. É essencial para controlar quem pode acessar seus dados e serviços. |
google.colab.auth | Fornece autenticação para acessar serviços do Google Cloud em notebooks do Google Colab, permitindo uma conexão segura com seus recursos baseados na nuvem. |
google.cloud.bigquery | Uma ferramenta para gerenciar grandes conjuntos de dados no serviço BigQuery do Google Cloud. Ele permite o processamento e a análise eficientes de grandes quantidades de dados. |
Google.nuvem.armazenamento | Usado para armazenar e recuperar dados no Google Cloud Storage. É uma solução ideal para lidar com vários arquivos de dados na nuvem. |
gspread | Facilita a interação com o Planilhas Google, permitindo fácil manipulação e análise de dados da planilha. |
gspread.dataframe.conjunto_com_dataframe | Sincroniza dados entre dataframes do Pandas e Planilhas Google, permitindo transferência e atualização de dados sem interrupções entre esses formatos. |
matplotlib.pyplot.plt | Um módulo na biblioteca Matplotlib para criar gráficos e tabelas. Ele ajuda a visualizar dados em um formato gráfico, facilitando a compreensão de padrões e tendências. |
pandas | Uma ferramenta fundamental para manipulação e análise de dados em Python. Ele oferece estruturas de dados e operações para manipular tabelas numéricas e séries temporais. |
pandas.gbq.to_gbq | Permite a transferência de dados de dataframes do Pandas diretamente para o Google BigQuery, simplificando o processo de movimentação de dados para esta plataforma de análise baseada na nuvem. |
pyarrow.parquet.pq | Permite armazenamento e recuperação eficientes de dados no formato Parquet, um formato de arquivo de armazenamento em colunas otimizado para uso com grandes conjuntos de dados. |
nascido no mar | Uma biblioteca de visualização Python baseada em Matplotlib que fornece uma interface de alto nível para desenhar gráficos estatísticos atraentes e informativos. |
Em seguida, autenticamos com o BigQuery e recebemos autorização para acessar nossos conjuntos de dados, conforme demonstrado anteriormente. Ao usar as credenciais do Google Workspace, podemos acessar facilmente o BigQuery e outros serviços do Google Cloud. O processo normalmente envolve um trecho de código simples para autenticação:
from google.colab import auth
from google.cloud import bigquery
auth.authenticate_user()
project_id = "PROJECT_FROM_GCP"
client = bigquery.Client(project=project_id)
Com a autenticação concluída, podemos prosseguir para acessar e manipular nossos dados. A integração do Google Colab com os serviços do Google Cloud simplifica esse processo, tornando-o eficiente e seguro.
Organizando os Cadernos Colab antes da análise
Ao trabalhar com Jupyter Notebooks, é melhor organizar seu notebook com antecedência. Serão necessárias várias etapas de manipulação e tratamento de dados, e manter-se organizado ajudará você a criar um processo abrangente e repetível.
Em nossos notebooks, usamos cabeçalhos do Jupyter Notebook para organizar o código sistematicamente. Essa estrutura permite uma compartimentação clara e a criação de seções recolhíveis, o que é especialmente benéfico ao lidar com operações de dados complexas que exigem várias etapas. Essa organização metódica auxilia na navegação eficiente pelo caderno, garantindo que cada etapa do processo de extração e análise de dados seja facilmente acessível e gerenciável.
Além disso, embora o fluxo de trabalho em um notebook possa parecer linear, geralmente é mais dinâmico. Os analistas de dados frequentemente realizam multitarefas, alternando entre diferentes seções conforme necessário com base nos dados ou resultados encontrados. Além disso, novos insights descobertos em uma etapa podem influenciar o processo de outra etapa, levando a algumas idas e vindas antes de terminar o caderno. |
Extraindo nossos conjuntos de dados do BigQuery em dataframes
Depois de estabelecer a estrutura do nosso notebook e autenticar com sucesso com o BigQuery, nosso próximo passo é recuperar os conjuntos de dados necessários. Esse processo estabelece a base para o restante do relatório, pois as informações dessas fontes formarão a base da nossa análise, de forma semelhante à seleção dos principais componentes necessários para um estudo abrangente.
Aqui está um exemplo de como podemos buscar dados do BigQuery:
import datetime
current_year = datetime.datetime.now().year
reb_dataset_id = f'project.global_threat_report.{current_year}_raw_ep_behavior'
reb_table = client.list_rows(reb_dataset_id)
reb_df = reb_table.to_dataframe()
Este snippet demonstra um processo típico de recuperação de dados. Primeiro definimos o conjunto de dados em que estamos interessados (com o Relatório Global de Ameaças, project.global_threat_report.ep_behavior_raw
para o ano atual). Em seguida, usamos uma consulta do BigQuery para selecionar os dados desse conjunto de dados e carregá-los em um Pandas DataFrame. Este DataFrame servirá como base para nossas etapas subsequentes de análise de dados.
Trecho do Colab Notebook para extração de dados do BigQuery para o dataframe do Pandas
Este processo marca a conclusão da fase de extração. Navegamos com sucesso no BigQuery para selecionar e recuperar os conjuntos de dados necessários e carregá-los em nossos notebooks dentro de dataframes. A fase de extração é fundamental, pois envolve não apenas a coleta de dados, mas também a criação da base para uma análise mais profunda. É o passo inicial de uma jornada maior de descoberta, que leva à fase de transformação, onde descobriremos insights mais detalhados dos dados.
Em resumo, esta parte da nossa jornada de dados envolve mais do que apenas coletar conjuntos de dados; trata-se de prepará-los estruturalmente para a análise aprofundada que se segue. Essa abordagem meticulosa para organizar e executar a fase de extração prepara o cenário para os insights transformadores que pretendemos obter nos estágios subsequentes da nossa análise de dados.
Pré-processamento e transformação: A fase crítica da análise de dados
A transição de dados brutos para insights acionáveis envolve uma série de etapas cruciais no processamento de dados. Depois de extrair os dados, nosso foco muda para refiná-los para análise. Os conjuntos de dados de segurança cibernética geralmente incluem várias formas de ruído, como falsos positivos e anomalias, que devem ser abordados para garantir uma análise precisa e relevante.
Principais etapas do pré-processamento e transformação de dados:
- Limpeza de dados: esta etapa envolve o preenchimento de valores NULL, a correção de desalinhamentos de dados e a validação de tipos de dados para garantir a integridade do conjunto de dados.
- Enriquecimento de dados: nesta etapa, contexto adicional é adicionado ao conjunto de dados. Por exemplo, a incorporação de dados de terceiros, como reputações de malware de fontes como o VirusTotal, aumenta a profundidade da análise.
- Normalização: esse processo padroniza os dados para garantir consistência, o que é particularmente importante para conjuntos de dados variados, como alertas de malware de endpoint.
- Detecção de anomalias: identificar e retificar valores discrepantes ou falsos positivos é essencial para manter a precisão do conjunto de dados.
- Extração de recursos: O processo de identificação de pontos de dados significativos e consistentes que podem ser extraídos para análise.
Abraçando a arte da limpeza de dados
A limpeza de dados é uma etapa fundamental na preparação de conjuntos de dados para análise abrangente, especialmente em segurança cibernética. Esse processo envolve uma série de verificações técnicas para garantir a integridade e a confiabilidade dos dados. Aqui estão as etapas específicas:
-
Mapeamento para a estrutura MITRE ATT&CK: verifique se todas as regras de detecção e resposta no conjunto de dados estão mapeadas com precisão para as táticas e técnicas correspondentes na estrutura MITRE ATT&CK. Essa verificação inclui procurar por valores NULL ou quaisquer inconsistências na forma como os dados se alinham com a estrutura.
-
Validação do tipo de dados: confirme se os tipos de dados no conjunto de dados são apropriados e consistentes. Por exemplo, os registros de data e hora devem estar em um formato de data e hora padronizado. Esta etapa pode envolver a conversão de formatos de string em objetos de data e hora ou a verificação de que valores numéricos estão no formato correto.
-
Integralidade dos dados críticos: garanta que nenhuma informação vital esteja faltando no conjunto de dados. Isso inclui verificar a presença de elementos essenciais, como hashes SHA256 ou nomes executáveis em logs de comportamento de endpoint. A ausência de tais dados pode levar a análises incompletas ou tendenciosas.
-
Padronização entre formatos de dados: avalie e implemente a padronização de formatos de dados em todo o conjunto de dados para garantir uniformidade. Isso pode envolver a normalização de formatos de texto, garantindo capitalização consistente ou padronizando representações de data e hora.
-
Identificação de entrada duplicada: identifique e remova entradas duplicadas examinando identificadores exclusivos, como IDs de agente XDR ou IDs de cluster. Esse processo pode envolver o uso de funções para detectar e remover duplicatas, garantindo a exclusividade de cada entrada de dados.
-
Exclusão de dados internos irrelevantes: localize e remova quaisquer dados internos que possam ter sido incluídos inadvertidamente no conjunto de dados. Esta etapa é crucial para evitar que vieses internos ou informações irrelevantes afetem a análise.
É importante observar que a limpeza de dados ou “limpeza de dados” é um esforço contínuo em todo o nosso fluxo de trabalho. À medida que continuamos a descascar as camadas dos nossos dados e a analisá-los para obter vários insights, espera-se que identifiquemos mudanças adicionais.
Utilizando Pandas para limpeza de dados
A biblioteca Pandas em Python oferece diversas funcionalidades que são particularmente úteis para limpeza de dados em contextos de segurança cibernética. Alguns desses métodos incluem:
DataFrame.isnull()
ouDataFrame.notnull()
para identificar valores ausentes.DataFrame.drop_duplicates()
para remover linhas duplicadas.- Métodos de conversão de tipo de dados como
pd.to_datetime()
para padronizar formatos de registro de data e hora. - Utilizando indexação booleana para filtrar dados irrelevantes com base em critérios específicos.
Uma compreensão completa do conjunto de dados é essencial para determinar os métodos de limpeza corretos. Pode ser necessário explorar o conjunto de dados preliminarmente para identificar áreas específicas que requerem limpeza ou transformação. Métodos e fluxos de trabalho úteis adicionais podem ser encontrados listados neste blog do Real Python.
Extração e enriquecimento de recursos
A extração e o enriquecimento de recursos são etapas essenciais na análise de dados, principalmente no contexto da segurança cibernética. Esses processos envolvem transformar e aumentar o conjunto de dados para aumentar sua utilidade para análise.
- Criar novos dados a partir dos existentes: é aqui que modificamos ou usamos dados existentes para adicionar colunas ou linhas adicionais.
- Adicionar novos dados de terceiros: aqui, usamos dados existentes como referência de consulta para APIs RESTful de terceiros, que respondem com dados adicionais que podemos adicionar aos conjuntos de dados.
Extração de características
Vamos analisar um exemplo concreto. Imagine que recebemos uma recompensa de assinaturas YARA disponíveis publicamente que a Elastic compartilha com sua comunidade. Essas assinaturas acionam alguns dos alertas de malware de endpoint em nosso conjunto de dados. Uma convenção de nomenclatura consistente foi observada com base no nome da regra que, é claro, aparece nos dados brutos: OperationsSystem_MalwareCategory_MalwareFamily
. Esses nomes podem ser desconstruídos para fornecer insights mais específicos. Com o Pandas, podemos segmentar e analisar os dados com maestria. Para aqueles que preferem fazer isso durante a fase de preparação do conjunto de dados com o BigQuery, a combinação das cláusulas SPLIT e OFFSET pode produzir resultados semelhantes:
df[['OperatingSystem', 'MalwareCategory', 'MalwareFamily']] = df['yara_rule_name'].str.split('_', expand=True)
Extração de recursos com nossos dados YARA
Existem abordagens, métodos e processos adicionais para extração de recursos na análise de dados. Recomendamos consultar os desejos/necessidades das partes interessadas e explorar seus dados para ajudar a determinar o que é necessário para extração e como.
Enriquecimento de dados
O enriquecimento de dados aumenta a profundidade e o contexto dos conjuntos de dados de segurança cibernética. Uma abordagem eficaz envolve a integração de fontes de dados externas para fornecer perspectivas adicionais sobre os dados existentes. Isso pode ser particularmente valioso para entender e interpretar alertas de segurança cibernética.
Exemplo de enriquecimento de dados: Integração de dados de reputação do VirusTotal Um método comum de enriquecimento de dados em segurança cibernética envolve a incorporação de pontuações de reputação de serviços externos de inteligência de ameaças, como o VirusTotal (VT). Este processo normalmente inclui:
- Buscando dados de reputação: usando uma chave de API do VT, podemos consultar dados de reputação com base em identificadores exclusivos em nosso conjunto de dados, como hashes SHA256 de binários.
import requests
def get_reputation(sha256, API_KEY, URL):
params = {'apikey': API_KEY, 'resource': sha256}
response = requests.get(URL, params=params)
json_response = response.json()
if json_response.get("response_code") == 1:
positives = json_response.get("positives", 0)
return classify_positives(positives)
else:
return "unknown"
Nesta função, classify_positives
é uma função personalizada que classifica a reputação com base no número de mecanismos antivírus que sinalizaram o arquivo como malicioso.
- Adicionando dados de reputação ao conjunto de dados: Os dados de reputação obtidos do VirusTotal são então integrados ao conjunto de dados existente. Isso é feito aplicando a função
get_reputation
a cada entrada relevante no DataFrame.
df['reputation'] = df['sha256'].apply(lambda x: get_reputation(x, API_KEY, URL))
Aqui, uma nova coluna chamada reputation
é adicionada ao dataframe, fornecendo uma camada adicional de informações sobre cada binário com base em sua taxa de detecção no VirusTotal.
Esse método de enriquecimento de dados é apenas uma das muitas opções disponíveis para aprimorar dados sobre ameaças à segurança cibernética. Ao utilizar funções auxiliares robustas e acessar repositórios de dados externos, os analistas podem enriquecer significativamente seus conjuntos de dados. Esse enriquecimento permite uma compreensão mais abrangente dos dados, levando a uma análise mais informada e diferenciada. As técnicas demonstradas aqui fazem parte de uma gama mais ampla de métodos avançados de manipulação de dados que podem refinar ainda mais a análise de dados de segurança cibernética.
Normalização
Especialmente ao lidar com conjuntos de dados variados em segurança cibernética, como alertas de endpoint e notificações SIEM na nuvem, a normalização pode ser necessária para aproveitar ao máximo seus dados.
Compreendendo a normalização: Basicamente, a normalização consiste em ajustar valores medidos em diferentes escalas para uma escala comum, garantindo que eles sejam representados proporcionalmente e reduzindo a redundância. No contexto da segurança cibernética, isso significa representar eventos ou alertas de uma maneira que não amplifique ou reduza involuntariamente sua importância.
Considere nosso conjunto de dados de malware de endpoint. Ao analisar tendências, por exemplo, infecções baseadas em famílias ou categorias de malware, buscamos uma representação precisa. No entanto, uma única infecção de malware em um endpoint pode gerar vários alertas, dependendo do sistema Extended Detection and Response (XDR). Se isso não for controlado, poderá distorcer significativamente nossa compreensão do cenário de ameaças. Para neutralizar isso, consideramos os agentes Elastic, que são implantados como parte da solução XDR. Cada endpoint tem um agente exclusivo, representando uma única instância de infecção caso malware seja detectado. Portanto, para normalizar esse conjunto de dados, nós o "nivelaríamos" ou ajustaríamos com base em IDs de agentes exclusivos. Isso significa que, para nossa análise, consideraríamos o número de IDs de agentes exclusivos afetados por uma família ou categoria de malware específica, em vez do número bruto de alertas.
Exemplo de visualização de normalização de alerta de malware por agentes exclusivos
Conforme ilustrado na imagem acima, se optássemos por não normalizar os dados de malware em preparação para a análise de tendências, nossas principais descobertas retratariam informações imprecisas. Essa imprecisão pode ser originada de uma infinidade de inconsistências de dados, como regras genéricas do YARA, operações programáticas que foram sinalizadas repetidamente em um único ponto de extremidade e muito mais.
Diversificando a abordagem: Por outro lado, ao lidar com alertas de comportamento de endpoint ou alertas de nuvem (de plataformas como AWS, GCP, Azure, Google Workspace e O365), nossa abordagem de normalização pode ser diferente. Esses conjuntos de dados podem ter suas próprias nuances e podem não exigir a mesma técnica de "nivelamento" usada para alertas de malware.
Conceituando opções de normalização: Lembre-se de que o objetivo da normalização é reduzir a redundância nos seus dados. Certifique-se de manter suas operações o mais atômicas possível, caso precise voltar e ajustá-las mais tarde. Isto é especialmente verdadeiro ao realizar tanto a normalização quanto a padronização. Às vezes, pode ser difícil separá-los, e você pode ter que alternar entre os dois. Os analistas têm uma infinidade de opções para isso. Da escala Min-Max , onde os valores são deslocados e redimensionados para variar entre 0 e 1, à normalização (ou padronização) do escore Z , onde os valores são centralizados em torno de zero e desvios padrão da média. A escolha da técnica depende da natureza dos dados e dos requisitos específicos da análise.
Em essência, a normalização garante que nossa análise de segurança cibernética seja baseada em condições de igualdade, dando às partes interessadas uma visão precisa do ambiente de ameaças sem distorções indevidas. Esta é uma etapa crítica antes da análise de tendências.
Detecção de anomalias: refinando o processo de análise de dados
No campo da análise de segurança cibernética, não existe uma abordagem única para detecção de anomalias. O processo é altamente dependente das características específicas dos dados em questão. O objetivo principal é identificar e abordar valores discrepantes que possam distorcer a análise. Isso requer uma metodologia dinâmica e adaptável, onde entender as nuances do conjunto de dados é crucial.
A detecção de anomalias em segurança cibernética envolve a exploração de diversas técnicas e metodologias, cada uma adequada a diferentes tipos de irregularidades de dados. A estratégia não é aplicar rigidamente um único método, mas sim usar uma compreensão profunda dos dados para selecionar a técnica mais apropriada para cada situação. A ênfase está na flexibilidade e adaptabilidade, garantindo que a abordagem escolhida forneça os insights mais claros e precisos sobre os dados.
Métodos estatísticos – A espinha dorsal da análise:
A análise estatística é sempre uma abordagem opcional para detecção de anomalias, especialmente para dados de segurança cibernética. Ao compreender a distribuição inerente e as tendências centrais dos nossos dados, podemos destacar valores que se desviam da norma. Um método simples, porém poderoso, o Z-score, mede a distância de um ponto de dados da média em termos de desvios padrão.
import numpy as np
# Derive Z-scores for data points in a feature
z_scores = np.abs((df['mitre_technique'] - df['mitre_technique'].mean()) / df['mitre_technique'].std())
outliers = df[z_scores > 3] # Conventionally, a Z-score above 3 signals an outlier
Por que isso é importante: Esse método nos permite avaliar quantitativamente a importância do desvio de um ponto de dados. Esses valores discrepantes podem distorcer muito métricas agregadas, como média, ou até mesmo influenciar negativamente o treinamento do modelo de aprendizado de máquina. Lembre-se, valores discrepantes nem sempre devem ser removidos; é tudo uma questão de contexto! Às vezes, você pode até estar procurando especificamente pelos valores discrepantes.
Biblioteca de chaves: Embora utilizemos o NumPy acima, o SciPy também pode ser empregado para operações estatísticas complexas.
Agregações e classificação – desvendando camadas:
Os dados geralmente se apresentam em camadas. Começando com uma visão geral e aprofundando-nos gradualmente em detalhes, podemos localizar inconsistências ou anomalias. Quando agregamos por categorias, como a tática MITRE ATT&CK, e depois nos aprofundamos, gradualmente descobrimos os detalhes mais sutis e as possíveis anomalias à medida que passamos da técnica para a lógica das regras e o contexto do alerta.
# Aggregating by tactics first
tactic_agg = df.groupby('mitre_tactic').size().sort_values(ascending=False)
A partir daqui, podemos identificar as táticas mais comuns e escolher a tática com a maior contagem. Em seguida, filtramos nossos dados para essa tática para identificar a técnica mais comum associada à tática mais comum. As técnicas geralmente são mais específicas que as táticas e, portanto, acrescentam mais explicações sobre o que podemos estar observando. Seguindo a mesma abordagem, podemos filtrar essa técnica específica, agregar por regra e revisar essa regra de detecção para obter mais contexto. O objetivo aqui é encontrar regras “ruidosas” que podem estar distorcendo nosso conjunto de dados e, portanto, os alertas relacionados precisam ser removidos. Esse ciclo pode ser repetido até que os valores discrepantes sejam removidos e as porcentagens pareçam mais precisas.
Por que isso é importante: essa abordagem de análise em camadas garante que nada fique sem ser explorado. Ao navegar do geral para o específico, eliminamos sistematicamente as inconsistências.
Biblioteca principal: O Pandas continua sendo o herói, equipado para lidar com tarefas de coleta de dados com delicadeza.
Visualização – A lente da clareza:
Às vezes, o olho humano, quando auxiliado pela representação visual correta, pode detectar intuitivamente o que até mesmo os algoritmos mais complexos podem deixar passar. Um boxplot, por exemplo, não apenas mostra a tendência central e a dispersão dos dados, mas também marca claramente os valores discrepantes.
import seaborn as sns
import matplotlib.pyplot as plt
plt.figure(figsize=(12, 8))
sns.boxplot(x='Malware Family', y='Malware Score', data=df)
plt.title('Distribution of Malware Scores by Family')
plt.show()
Exemplo de visualização de pontuações de distribuição de malware por família a partir de um conjunto de dados de exemplo
Por que isso é importante: a visualização transforma dados abstratos em insights tangíveis. Ela oferece uma perspectiva holística e granular, dependendo da necessidade.
Biblioteca principal: Seaborn, construída sobre Matplotlib, se destaca em transformar dados em histórias visuais.
Aprendizado de máquina – A guarda avançada:
Quando os métodos tradicionais são insuficientes, o aprendizado de máquina entra em cena, oferecendo uma lente preditiva para anomalias. Embora muitos algoritmos sejam projetados para classificar padrões conhecidos, alguns, como autocodificadores em aprendizado profundo, aprendem a recriar dados "normais", marcando qualquer desvio como uma anomalia.
Por que isso é importante: À medida que a complexidade dos dados aumenta, os limites do que constitui uma anomalia se tornam mais confusos. O aprendizado de máquina oferece soluções adaptativas que evoluem com os dados.
Bibliotecas principais: O Scikit-learn é um tesouro de técnicas clássicas de aprendizado de máquina fáceis de usar, enquanto o PyTorch traz o poder do aprendizado profundo para a mesa.
Aperfeiçoar a detecção de anomalias na análise de dados é semelhante a refinar uma habilidade complexa por meio da prática e da iteração. O processo geralmente envolve tentativa e erro, com cada iteração aumentando a familiaridade do analista com o conjunto de dados. Essa compreensão progressiva é essencial para garantir que a análise final seja robusta e esclarecedora. Na análise de dados, a jornada de exploração e refinamento é tão valiosa quanto o resultado final em si.
Antes de prosseguir com uma análise de tendências aprofundada, é muito importante garantir que os dados sejam cuidadosamente pré-processados e transformados. Assim como precisão e confiabilidade são essenciais em qualquer tarefa meticulosa, elas são igualmente críticas na análise de dados. As etapas de limpeza, normalização, enriquecimento e remoção de anomalias da base para obter insights significativos. Sem esses preparativos cuidadosos, a análise pode variar de ligeiramente imprecisa a significativamente enganosa. Somente quando os dados são adequadamente refinados e livres de distorções é que eles podem revelar seu verdadeiro valor, levando a insights confiáveis e acionáveis na análise de tendências.
Análise de tendências: revelando padrões em dados
No campo dinâmico da segurança cibernética, onde os agentes de ameaças evoluem continuamente suas táticas, técnicas e procedimentos (TTPs), ficar à frente das ameaças emergentes é fundamental. A análise de tendências serve como uma ferramenta vital nesse sentido, oferecendo uma maneira de identificar e entender padrões e comportamentos em ameaças cibernéticas ao longo do tempo.
Ao utilizar a estrutura MITRE ATT&CK, os profissionais de segurança cibernética têm uma abordagem estruturada e padronizada para analisar e categorizar essas ameaças em evolução. Essa estrutura auxilia na identificação sistemática de padrões em metodologias de ataque, permitindo que os defensores antecipem e respondam às mudanças nos comportamentos dos adversários de forma eficaz.
A análise de tendências, através das lentes da estrutura MITRE ATT&CK, transforma a telemetria bruta de segurança cibernética em inteligência acionável. Ele permite que analistas acompanhem a evolução das estratégias de ataque e adaptem seus mecanismos de defesa adequadamente, garantindo uma postura proativa na gestão da segurança cibernética.
Começando com uma visão geral ampla: Agregação e classificação
Começar nossa análise com uma visão panorâmica é fundamental. Essa perspectiva panorâmica nos permite primeiro identificar as táticas mais amplas em jogo antes de nos aprofundarmos nas técnicas mais granulares e nas regras de detecção subjacentes.
Principais táticas: Ao agregar nossos dados com base nas táticas do MITRE ATT&CK, podemos discernir as estratégias abrangentes que os adversários adotam. Isso descreve seus objetivos principais, seja acesso inicial, execução ou exfiltração.
top_tactics = df.groupby('mitre_tactic').size()
.sort_values(ascending=False)
Ampliando as técnicas: depois de identificar uma tática importante, podemos canalizar nossa atenção para as técnicas vinculadas a essa tática. Isso revela o modus operandi específico dos adversários.
chosen_tactic = 'Execution'
techniques_under_tactic = df[df['mitre_tactic'] == chosen_tactic]
top_techniques = techniques_under_tactic.groupby('mitre_technique').size()
.sort_values(ascending=False)
Regras de detecção e lógica: Com nossos holofotes voltados para uma técnica específica, é hora de nos aprofundarmos, identificando as regras de detecção que acionaram os alertas. Isso não apenas mostra o que foi detectado, mas, ao revisar a lógica de detecção, também obtemos uma compreensão dos comportamentos e padrões precisos que foram sinalizados.
chosen_technique = 'Scripting'
rules_for_technique = techniques_under_tactic[techniques_under_tactic['mitre_technique'] == chosen_technique]
top_rules = rules_for_technique
.groupby('detection_rule').size().sort_values(ascending=False)
Essa abordagem hierárquica e em cascata é semelhante a descascar uma cebola. Com cada camada, expomos detalhes mais complexos, refinando nossa perspectiva e aguçando nossos insights.
O poder do tempo: Análise de séries temporais
No campo da segurança cibernética, o tempo não é apenas uma métrica; é uma narrativa. Os registros de data e hora, muitas vezes ignorados, são minas de ouro de insights. A análise de séries temporais nos permite traçar eventos ao longo do tempo, revelando padrões, picos ou calmarias que podem ser indicativos de campanhas adversárias, ondas de ataques específicas ou períodos de dormência.
Por exemplo, traçar alertas de malware de endpoint ao longo do tempo pode revelar o horário de funcionamento de um adversário ou destacar um ataque sincronizado e multivetorial:
import matplotlib.pyplot as plt
# Extract and plot endpoint alerts over time
df.set_index('timestamp')['endpoint_alert'].resample('D').count().plot()
plt.title('Endpoint Malware Alerts Over Time')
plt.xlabel('Time')
plt.ylabel('Alert Count')
plt.show()
A análise de séries temporais não apenas destaca "quando", mas frequentemente fornece insights sobre o "porquê" por trás de certos picos ou anomalias. Ele ajuda a correlacionar eventos externos (como o lançamento de um novo exploit) com tendências de dados internos.
Análise de correlação
Entender as relações entre diferentes conjuntos de dados pode oferecer insights valiosos. Por exemplo, um pico em um tipo de alerta pode estar correlacionado a outro tipo de atividade no sistema, revelando campanhas de ataque em vários estágios ou estratégias de desvio.
# Finding correlation between an increase in login attempts and data exfiltration activities
correlation_value = df['login_attempts'].corr(df['data_exfil_activity'])
Essa análise, com a ajuda do pandas corr, pode ajudar a discernir se múltiplas atividades aparentemente isoladas fazem parte de uma cadeia de ataque coordenada.
A correlação também não precisa ser orientada por métricas. Ao analisar ameaças, é fácil encontrar valor e novos insights comparando descobertas antigas com as novas.
Aprendizado de máquina e detecção de anomalias
Com o grande volume de dados, a análise manual se torna impraticável. O aprendizado de máquina pode ajudar a identificar padrões e anomalias que podem escapar ao olho humano. Algoritmos como Isolation Forest ou K-nearest neighbor(KNN) são comumente usados para detectar desvios ou agrupamentos de dados comumente relacionados.
from sklearn.ensemble import IsolationForest
# Assuming 'feature_set' contains relevant metrics for analysis
clf = IsolationForest(contamination=0.05)
anomalies = clf.fit_predict(feature_set)
Aqui, a variável anomalias sinalizará pontos de dados que se desviam da norma, ajudando analistas a identificar comportamentos incomuns rapidamente.
Padrões comportamentais e análise de dados de endpoint
Analisar dados comportamentais de endpoint coletados de regras de detecção nos permite descobrir padrões e tendências abrangentes que podem ser indicativos de cenários de ameaças mais amplos, campanhas cibernéticas ou TTPs de invasores em evolução.
Padrões de progressão tática: Ao monitorar a sequência de comportamentos detectados ao longo do tempo, podemos identificar padrões em como os adversários se movem em sua cadeia de ataque. Por exemplo, se houver uma tendência consistente em que as técnicas de acesso inicial são seguidas pela execução e depois pelo movimento lateral, isso é indicativo de que um manual de ataque comum está sendo empregado.
Análise de tendências de linha de comando: Mesmo dentro de argumentos de linha de comando maliciosos, certos padrões ou sequências podem surgir. Monitorar os argumentos maliciosos detectados com mais frequência pode fornecer insights sobre ferramentas ou scripts de ataque preferidos.
Exemplo:
# Most frequently detected malicious command lines
top_malicious_commands = df.groupby('malicious_command_line').size()
.sort_values(ascending=False).head(10)
Tendências de interação de processos: embora os relacionamentos individuais entre processos pai e filho possam ser maliciosos, identificar tendências nessas interações pode indicar campanhas de malware generalizadas ou TTPs de invasores. Por exemplo, se um grande subconjunto de endpoints estiver mostrando a mesma interação incomum de processo, isso pode sugerir uma ameaça comum.
Padrões de comportamento temporal: assim como acontece com outros tipos de dados, o aspecto temporal dos dados comportamentais de endpoint pode ser esclarecedor. Analisar a frequência e o momento de certos comportamentos maliciosos pode indicar o horário de funcionamento do invasor ou a duração da campanha.
Exemplo:
# Analyzing frequency of a specific malicious behavior over time
monthly_data = df.pivot_table(index='timestamp', columns='tactic', values='count', aggfunc='sum').resample('M').sum()
ax = monthly_data[['execution', 'defense-evasion']].plot(kind='bar', stacked=False, figsize=(12,6))
plt.title("Frequency of 'execution' and 'defense-evasion' Tactics Over Time")
plt.ylabel("Count")
ax.set_xticklabels([x.strftime('%B-%Y') for x in monthly_data.index])
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
Nota: Esta imagem é de dados de exemplo e não do Relatório Global de Ameaças
Ao agregar e analisar dados comportamentais de endpoints em um nível macro, não apenas identificamos ameaças isoladas, mas também podemos detectar ondas, tendências e padrões emergentes. Essa perspectiva mais ampla capacita as equipes de segurança cibernética a antecipar, se preparar e combater ameaças cibernéticas em larga escala de forma mais eficaz.
Embora estes sejam alguns exemplos de como realizar análises de tendências, não existe uma abordagem certa ou errada. Cada analista tem sua própria preferência ou conjunto de perguntas que ele ou as partes interessadas podem querer fazer. Aqui estão algumas perguntas ou dúvidas adicionais que os analistas podem ter sobre dados de segurança cibernética ao fazer análises de tendências.
- Quais são as três principais táticas utilizadas pelos adversários neste trimestre?
- Quais regras de detecção são mais acionadas e há um denominador comum?
- Há algum padrão baseado em tempo em alertas de endpoint, possivelmente indicando o fuso horário de um adversário?
- Como os alertas na nuvem evoluíram com a migração de mais serviços para a nuvem?
- Quais famílias de malware estão se tornando mais prevalentes e qual pode ser a causa?
- Os padrões de dados sugerem alguma sazonalidade, como aumento de atividades no final do ano?
- Existem correlações entre eventos externos e picos de atividades cibernéticas?
- Como os dados dos dias úteis diferem dos fins de semana em termos de alertas e ataques?
- Quais ativos organizacionais são mais visados e suas defesas estão atualizadas?
- Há algum sinal de ameaças internas ou comportamentos incomuns entre contas privilegiadas?
A análise de tendências em segurança cibernética é um processo dinâmico. Embora tenhamos estabelecido algumas técnicas e questões fundamentais, há inúmeras maneiras de abordar esse vasto domínio. Cada analista pode ter suas preferências, ferramentas e metodologias, e isso é perfeitamente normal. A essência está na evolução contínua e na adaptação à nossa abordagem, ao mesmo tempo em que estamos cientes do cenário de ameaças em constante mudança para cada ecossistema exposto a ameaças.
Redução: Simplificação para maior clareza
Tendo progredido pelos estágios iniciais da nossa análise de dados, agora entramos na próxima fase: redução. Esta etapa consiste em refinar e concentrar nossos dados abrangentes em um formato mais digerível e focado.
Recapitulação da jornada de análise até agora:
- Extração: A fase inicial envolveu a configuração do nosso ambiente do Google Cloud e a seleção de conjuntos de dados relevantes para nossa análise.
- Pré-processamento e transformação: Nesta etapa, os dados foram extraídos, processados e transformados em nossos notebooks Colab, preparando-os para análise detalhada.
- Análise de tendências: esta fase forneceu insights aprofundados sobre táticas, técnicas e malware de ataques cibernéticos, formando o núcleo da nossa análise.
Embora os dados detalhados em nossos Colab Notebooks sejam extensos e informativos para um analista, eles podem ser muito complexos para um público mais amplo. Portanto, a fase de redução se concentra em destilar essas informações em uma forma mais concisa e acessível. O objetivo é tornar as descobertas claras e compreensíveis, garantindo que elas possam ser comunicadas e utilizadas de forma eficaz por vários departamentos ou partes interessadas.
Selecionando e agregando pontos de dados principais
Para comunicar nossas descobertas de forma eficaz, precisamos adaptar a apresentação às necessidades do público. Nem todas as partes interessadas exigem toda a profundidade dos dados coletados; muitas preferem uma versão resumida que destaque os pontos mais acionáveis. É aqui que a seleção e agregação de dados entram em ação, concentrando-se nos elementos mais vitais e apresentando-os em um formato acessível.
Aqui está um exemplo de como usar o Pandas para agregar e condensar um conjunto de dados, com foco nos principais aspectos do comportamento do endpoint:
required_endpoint_behavior_cols = ['rule_name','host_os_type','tactic_name','technique_name']
reduced_behavior_df = df.groupby(required_endpoint_behavior_cols).size()
.reset_index(name='count')
.sort_values(by="count", ascending=False)
.reset_index(drop=True)
columns = {
'rule_name': 'Rule Name',
'host_os_type': 'Host OS Type',
'tactic_name': 'Tactic',
'technique_name': 'Technique',
'count': 'Alerts'
}
reduced_behavior_df = reduced_behavior_df.rename(columns=columns)
Um aspecto notável desse código e processo é a flexibilidade que ele oferece. Por exemplo, podemos agrupar nossos dados por vários pontos de dados adaptados às nossas necessidades. Interessado em identificar táticas populares usadas por adversários? Grupo pela tática MITRE ATT&CK. Quer esclarecer como mascarar binários maliciosos? Revise a extração para adicionar mais campos do Elastic Common Schema (ECS), como caminho do arquivo, filtro para Evasão de Defesa e agregação para revelar os caminhos comumente percorridos. Essa abordagem garante que criemos conjuntos de dados esclarecedores e não excessivamente ricos, feitos sob medida para as partes interessadas que desejam entender as origens de nossa análise.
Esse processo envolve agrupar os dados por categorias relevantes, como nome da regra, tipo de sistema operacional host e táticas e técnicas do MITRE ATT&CK, e então contar as ocorrências. Este método ajuda a identificar os padrões e tendências mais prevalentes nos dados.
Exemplo de diagrama de agregação de dados para obter conjunto de dados reduzido
Exportando dados reduzidos para o Planilhas Google para acessibilidade
Os dados reduzidos, agora armazenados como um dataframe na memória, estão prontos para serem exportados. Usamos o Planilhas Google como plataforma para compartilhar esses insights devido à sua ampla acessibilidade e interface amigável. O processo de exportação de dados para o Planilhas Google é simples e eficiente, graças à integração com os serviços do Google Cloud.
Aqui está um exemplo de como os dados podem ser carregados no Planilhas Google usando Python a partir do nosso notebook Colab:
auth.authenticate_user()
credentials, project = google.auth.default()
gc = gspread.authorize(credentials)
workbook = gc.open_by_key("SHEET_ID")
behavior_sheet_name = 'NAME_OF_TARGET_SHEET'
endpoint_behavior_worksheet = workbook.worksheet(behavior_sheet_name)
set_with_dataframe(endpoint_behavior_worksheet, reduced_behavior_df)
Com algumas linhas simples de código, transferimos efetivamente nossos resultados de análise de dados para o Planilhas Google. Essa abordagem é amplamente utilizada devido à sua acessibilidade e facilidade de uso. No entanto, existem vários outros métodos para apresentar dados, cada um adequado a diferentes requisitos e públicos. Por exemplo, alguns podem optar por uma plataforma como o Looker para apresentar os dados processados em um formato de painel mais dinâmico. Este método é particularmente útil para criar apresentações de dados interativas e visualmente envolventes. Ele garante que até mesmo as partes interessadas que talvez não estejam familiarizadas com os aspectos técnicos da análise de dados, como aquelas que trabalham no Jupyter Notebooks, possam entender e extrair valor facilmente dos insights.
Esse processo simplificado de redução e apresentação de dados pode ser aplicado a diferentes tipos de conjuntos de dados, como alertas de SIEM na nuvem, alertas de comportamento de endpoint ou alertas de malware. O objetivo continua o mesmo: simplificar e concentrar os dados para obter insights claros e acionáveis.
Apresentação: Apresentando os insights
Depois de refinar meticulosamente nossos conjuntos de dados, agora nos concentramos na etapa final: a apresentação. Aqui, pegamos nossos conjuntos de dados, agora organizados em plataformas como Planilhas Google ou Looker, e os transformamos em um formato que é informativo e envolvente.
Tabelas dinâmicas para análise aprofundada
Usando tabelas dinâmicas, podemos criar uma visão geral abrangente das descobertas da nossa análise de tendências. Essas tabelas nos permitem exibir dados de maneira multidimensional, oferecendo insights sobre vários aspectos da segurança cibernética, como táticas predominantes do MITRE ATT&CK, técnicas escolhidas e famílias de malware preferidas.
Nossa abordagem para visualização de dados envolve:
- Visão geral ampla com as táticas do MITRE ATT&CK: começando com uma perspectiva geral, usamos tabelas dinâmicas para obter uma visão geral das diferentes táticas empregadas em ameaças cibernéticas.
- Análise detalhada: A partir dessa visão panorâmica, nos aprofundamos, criando tabelas dinâmicas separadas para cada tática popular e, em seguida, ramificando em análises detalhadas para cada técnica e regra de detecção específica.
Esse processo metódico ajuda a descobrir as complexidades da lógica de detecção e alertas, narrando efetivamente a história do cenário de ameaças cibernéticas.
Diagrama mostrando agregações de funil em informações de relatório contextual
Acessibilidade entre públicos: Nossas apresentações de dados são projetadas para atender a uma ampla variedade de públicos, desde aqueles profundamente versados em ciência de dados até aqueles que preferem uma compreensão mais direta. O ecossistema do Google Workspace facilita o compartilhamento desses insights, permitindo que tabelas dinâmicas, conjuntos de dados reduzidos e outros elementos sejam facilmente acessíveis a todos os envolvidos no processo de criação de relatórios.
Integração de visualizações em relatórios: ao criar um relatório, por exemplo, no Google Docs, a integração de gráficos e tabelas do Planilhas Google é perfeita. Essa integração garante que quaisquer modificações nos conjuntos de dados ou tabelas dinâmicas sejam facilmente atualizadas no relatório, mantendo a eficiência e a coerência da apresentação.
Adaptando a apresentação ao público: a apresentação de insights de dados não se trata apenas de transmitir informações; trata-se de fazê-lo de uma maneira visualmente atraente e digerível. Para um público mais familiarizado com tecnologia, um Colab Notebook interativo com gráficos e funções dinâmicas pode ser ideal. Por outro lado, para equipes de marketing ou design, um painel bem projetado no Looker pode ser mais apropriado. O segredo é garantir que a apresentação seja clara, concisa e visualmente atraente, adaptada às preferências e necessidades específicas do público.
Conclusão: Refletindo sobre a jornada de análise de dados
Ao concluir, é valioso refletir sobre o território que navegamos na análise de dados de ameaças cibernéticas. Essa jornada envolveu várias etapas importantes, cada uma contribuindo significativamente para nossos insights finais.
Viagem pelo ecossistema de nuvem do Google
Nosso caminho nos levou por vários serviços do Google Cloud, incluindo GCP, GCE, Colab Notebooks e Google Workspace. Cada um desempenhou um papel fundamental:
Exploração de dados: começamos com um conjunto de perguntas relacionadas à cibernética que queríamos responder e exploramos os vastos conjuntos de dados que tínhamos disponíveis. Neste blog, focamos apenas na telemetria disponível no BigQuery. Extração de dados: começamos extraindo dados brutos, utilizando o BigQuery para lidar com grandes volumes de dados com eficiência. A extração ocorreu no BigQuery e em nossos notebooks Colab. Processamento e organização de dados: o poder do Python e da biblioteca pandas foi aproveitado para limpar, agregar e refinar esses dados, assim como um chef prepara ingredientes com habilidade. Análise de tendências: Em seguida, realizamos uma análise de tendências em nossos conjuntos de dados reformados com diversas metodologias para obter insights valiosos sobre táticas, técnicas e procedimentos adversários ao longo do tempo. Redução: Com base na nossa análise de tendências, agregamos nossos diferentes conjuntos de dados por pontos de dados específicos em preparação para apresentação às partes interessadas e colegas. Transição para apresentação: A facilidade de passar da análise de dados para a apresentação em um navegador da web destacou a agilidade de nossas ferramentas, facilitando um fluxo de trabalho perfeito.
Modularidade e flexibilidade no fluxo de trabalho
Um aspecto essencial da nossa abordagem foi a natureza modular do nosso fluxo de trabalho. Cada fase, da extração de dados à apresentação, contou com componentes intercambiáveis no ecossistema do Google Cloud, permitindo-nos adaptar o processo às necessidades específicas:
Ferramentas versáteis: o Google Cloud Platform oferece uma gama diversificada de ferramentas e opções, permitindo flexibilidade no armazenamento, análise e apresentação de dados. Caminho de análise personalizado: Dependendo dos requisitos específicos da nossa análise, podemos adaptar e escolher diferentes ferramentas e métodos, garantindo uma abordagem personalizada para cada conjunto de dados. Autenticação e autorização: como nossas entidades estão hospedadas no ecossistema do Google Cloud, o acesso a diferentes ferramentas, sites, dados e muito mais foi tranquilo, garantindo uma transição tranquila entre os serviços.
Orquestração e sincronização de ferramentas
A sinergia entre nossas habilidades técnicas e as ferramentas escolhidas foi crucial. Essa harmonização garantiu que o processo analítico não fosse apenas eficaz para este projeto, mas também estabeleceu a base para análises futuras mais eficientes e criteriosas. As ferramentas foram usadas para aumentar nossas capacidades, mantendo o foco em obter insights significativos em vez de nos envolvermos em complexidades técnicas.
Em resumo, essa jornada pela análise de dados enfatizou a importância de uma abordagem bem pensada, aproveitando as ferramentas e técnicas certas e a adaptabilidade para atender às demandas da análise de dados de ameaças cibernéticas. O resultado final não é apenas um conjunto de descobertas, mas uma metodologia refinada que pode ser aplicada a futuros esforços de análise de dados no campo em constante evolução da segurança cibernética.
Chamada para ação: embarcando em sua própria jornada de análise de dados
Seu espaço de trabalho analítico está pronto! Que abordagens ou experiências inovadoras com o Google Cloud ou outras plataformas de análise de dados você pode trazer para a mesa? O campo da análise de dados é vasto e variado e, embora cada analista traga um toque único, os métodos e princípios subjacentes são universais.
O objetivo não é apenas se destacar em seus projetos analíticos atuais, mas aprimorar e adaptar continuamente suas técnicas. Esse refinamento contínuo garante que seus esforços futuros em análise de dados sejam ainda mais produtivos, esclarecedores e impactantes. Mergulhe e explore o mundo da análise de dados com o Google Cloud!
Incentivamos qualquer feedback e engajamento sobre este tópico! Se preferir, sinta-se à vontade para interagir conosco no canal público #security do Slack da Elastic.