Regras Sigma. Artesanato ou novo padrão para SOC

Sou Sergey Rublev, chefe do SOC (Security Operations Center) na Infosecurity.
Neste artigo, examinarei em detalhes o ambicioso projeto Sigma Rules , cujo lema é: "Sigma para logs é como Snort para tráfego e Yara para arquivos".



Serão cerca de três aspectos:

  • Aplicabilidade da sintaxe da regra Sigma para manter uma base de conhecimento de scripts de detecção de ameaças
  • Recursos de ferramentas de geração de regras para sistemas SIEM in a box
  • Valor para o SOC do conteúdo atual dos repositórios públicos de regras Sigma

Era uma vez, em uma galáxia distante, distante


Tudo começou há alguns anos atrás, quando as árvores eram grandes e nossa equipe de monitoramento ainda era pequena. Enfrentamos muitas perguntas, quase todas as equipes que crescem em uma linha de três pessoas passam por isso.



As razões para o surgimento de perguntas são diferentes:

  • Crescimento da equipe
  • Rotatividade de pessoal
  • Um grande número de sistemas heterogêneos para monitoramento

Se você precisar de suporte já configurado por alguém SIEM, o número de perguntas aumenta como uma avalanche.

Biblioteca de Casos de Uso


A experiência mundial na construção de centros de monitoramento já encontrou uma solução para organizar o caos e seu nome é a biblioteca de estudos de caso. O objetivo de cada caso é descrever de maneira abrangente a solução para um problema na estrutura do monitoramento de segurança da informação.

A composição do conhecimento estabelecida em cada caso pode variar; procedemos do seguinte conjunto:

  • Objetivo - a tarefa resolvida pelo caso
  • Ameaça - a ameaça que a regra de detecção procura detectar.
  • Stakeholders - pessoas interessadas nesta regra: IB / TI / Negócios
  • Requisitos de dados - o conjunto de dados necessário para identificar uma ameaça
  • Lógica - lógica da regra de detecção de ameaças
  • Teste - um algoritmo para testar a correção da regra de detecção
  • Prioridade - prioridade do processamento de eventos por caso (geralmente calculada a partir do dano potencial de uma ameaça implementada com sucesso)
  • Saída - Uma lista de ações para analisar o alerta, uma descrição das saídas corretas do procedimento de análise e a composição dos dados registrados nos resultados da análise

Exemplo de caso de uso para a tarefa de detectar a comunicação com o servidor de gerenciamento de botnet (vulgarmente conhecido como C&C ou apenas C2):



O exemplo é bastante simplificado: na realidade, com uma descrição adequada, um caso cresce em um documento de várias páginas.

Naquele momento, quando o número de casos excedeu várias dezenas, começamos a procurar ferramentas prontas para manter essa base de conhecimento, de preferência tendo, além de amigável ao ser humano, também algum tipo de interface amigável para o trabalho.

Projeto Sigma


O projeto Sigma certamente merece consideração no contexto da base de conhecimento sobre regras de detecção de incidentes. Tudo começou em 2016, e eu o acompanho quase desde o começo.

De fato, o projeto consiste em

  • A Sigma se governa
  • Utilitários para converter regras em consultas para vários sistemas SIEM

A lista SIEM é impressionante: quase todas as soluções populares de análise de eventos estão presentes. Mais sobre tudo em detalhes e em ordem.

Sintaxe da regra


Regras Sigma são documentos YAML que descrevem um cenário para detectar um ataque específico. Sintaticamente, as regras consistem nos seguintes blocos:

Meta informação


Peça descritiva para estruturar e simplificar a busca pelas regras necessárias.

title: Access to ADMIN$ Share description: Detects access to $ADMIN share author: Florian Roth falsepositives: - Legitimate administrative activity level: low tags: - attack.lateral_movement - attack.t1077 status: experimental 

Também gostaria de observar que muitas regras já são fornecidas com links para a técnica de ataque, de acordo com a metodologia MITRE ATT & CK.

Declaração de fonte de dados


Descrição da fonte com base nos eventos em que a lógica de detecção é implementada.

 logsource: product: windows service: security 

É sintaticamente possível descrever o serviço final de um produto específico e uma categoria inteira de sistemas.

Declaração de lógica de processamento


No nível da lógica de detecção, são descritos a seguir:

  • Padrões pesquisados
  • Valores de determinados campos no log
  • Prazo
  • Funções agregadas

A lógica pode ser trivial, por exemplo, condições impostas a um conjunto de campos:

 detection: selection: EventID: 5140 ShareName: Admin$ filter: SubjectUserName: '*$' condition: selection and not filter 

e bastante complicado:

 detection: selection1: EventID: - 529 - 4625 UserName: '*' WorkstationName: '*' selection2: EventID: 4776 UserName: '*' Workstation: '*' timeframe: 24h condition: - selection1 | count(UserName) by WorkstationName > 3 - selection2 | count(UserName) by Workstation > 3 

Os meios expressivos da linguagem, embora não sejam universais, ainda são bastante amplos e permitem descrever um grande número de casos para identificar ataques.

Ferramentas de desenvolvimento de regras


Além do seu editor de texto favorito para YAML, a interface WEB da SOC Prime também está disponível, o que permite validar a sintaxe de uma regra já escrita e criar regras manualmente a partir de blocos gráficos.



Sigma como uma ferramenta da base de conhecimento


Para resumir um breve resumo.

No momento, a sintaxe das regras concentra-se principalmente na descrição da lógica de detecção de ameaças e não se destina a uma descrição abrangente do caso de uso; portanto, não funcionará para manter uma biblioteca completa usando apenas regras Sigma.

Para a estrutura de casos de uso que escolhemos, o Sigma fecha apenas metade (Objetivo, Requisitos de dados, Lógica e Prioridade).



Converta para vários SIEM


Como somos prestadores de serviços SOC, a ideia de manter todos os nossos desenvolvimentos de acordo com as regras de correlação em algum formato universal e no estágio de implementação para converter para o formato SIEM desejado nos pareceu muito atraente.

O projeto inclui utilitários de console para gerar solicitações de eventos no formato de vários SIEMs. Considere o que é a conversão e o que está por baixo dela.



A conversão ocorre em 3 etapas:

  1. Regras de análise - acho que isso está claro: o documento YAML é classificado em blocos de componentes
  2. Redução à taxonomia SIEM
    A necessidade desse estágio está relacionada ao fato de que a normalização nos sistemas SIEM é implementada de uma maneira um pouco diferente; portanto, as declarações das regras Sigma precisam ser reduzidas à taxonomia dos eventos do SIEM selecionado.
  3. Geração de solicitação para SIEM
    Para que esta etapa funcione, é necessário outro componente - um back-end para este SIEM.
    De fato, o back-end é um plug-in para o utilitário de conversão, que contém a lógica para converter para o formato de solicitação final no SIEM. Os blocos de detecção e de origem de log são convertidos levando em consideração o mapeamento de campos previamente sobrepostos, informações adicionais específicas do SIEM são adicionadas.

Como resultado, iniciar o utilitário de conversão fica assim:



Os seguintes parâmetros são passados:

  • Target SIEM
  • A regra
  • Arquivo de mapeamento para este SIEM


O SOC Prime também possui uma interface pronta para a função de conversão ( uncoder.io )



Armadilhas da conversão


  • Depois de estudar a mecânica da conversão, encontramos limitações significativas, o que nos impediu de converter todos os desenvolvimentos para o formato Sigma:
  • O conversor opera apenas com uma solicitação. A regra de correlação no SIEM afeta mais aspectos: janela de tempo, agregação, ações com base nos resultados dos alertas identificados
  • Os principais recursos de SIEMs individuais, como ActiveLists, não são levados em consideração.
  • Detalhamento insuficiente do mapeamento de campo - como parte da configuração do mapeamento, os campos de apenas algumas fontes são descritos; portanto, tendo regras para várias dezenas de tipos diferentes de fontes de eventos no banco de dados, você terá que investir muito na escrita do mapeamento.

Base de regra


Vamos ver o que a base de regras Sigma disponível ao público carrega. Atualmente, o conteúdo está sendo adicionado ativamente a dois repositórios:

  • O repositório principal do projeto
  • Mercado de detecção de ameaças SOC SOC

As regras nos repositórios têm uma interseção diferente de zero.
O SOC Prime possui várias regras que se aplicam a assinaturas pagas; não considero seu conteúdo neste artigo.

Para análise, precisamos da biblioteca sigmatools para Python e algumas habilidades de programação.

Para analisar e carregar regras de um diretório em um dicionário, você pode usar o seguinte código:

 from sigma.parser.collection import SigmaCollectionParser import pathlib import itertools def alliter(path): for sub in path.iterdir(): if sub.name.startswith("."): continue if sub.is_dir(): yield from alliter(sub) else: yield sub def get_inputs(paths, recursive): if recursive: return list(itertools.chain.from_iterable([list(alliter(pathlib.Path(p))) for p in paths])) else: return [pathlib.Path(p) for p in paths] BASE_PATH = [r'sigma\rules'] path_list = get_inputs(BASE_PATH, True) rules_map = {} for sigmafile in get_inputs(BASE_PATH, True): f = sigmafile.open(encoding='utf-8') parser = SigmaCollectionParser(f) rule = next(iter(parser)) rules_map[rule['title']] = rule 

Desduplicando as mesmas regras, surge a seguinte imagem:



Como parte de uma lista exclusiva de regras, obtemos as seguintes distribuições:

Por tipo de fonte de eventos:


Estatísticas um pouco maiores

  • Windows ~ 80%
  • Sysmon ~ 53%
  • Proxy ~ 8%
  • Linux ~ 4%

Basicamente, o conteúdo atual se concentra no sistema Windows e Sysmon, em particular, as regras para o restante dos sistemas são poucas.

Por disponibilidade de conteúdo:


Acontece que os desenvolvedores das regras da Sigma marcaram como estáveis ​​menos de 20% de todas as regras existentes.

Resumir


Nas fontes publicamente disponíveis, há um grande número de regras. Eles são atualizados regularmente, e as regras para a detecção de indicadores e, às vezes, até as técnicas das empresas de alto nível do APT, aparecem rapidamente.

Existem muitas restrições para a aplicação das regras na vida real:

  • Existem muitas regras para o Microsoft Sysmon, que raramente são usadas na empresa.
  • Existem muitas regras que realmente executam verificações de IoC (hashes, endereços IP, URLs, agentes do usuário). Essas regras rapidamente se tornam obsoletas e existem mecanismos mais eficazes para encontrar a IoC do que regras.
  • Muitos conteúdos experimentais, respectivamente, são impostos a testes de alta qualidade antes do comissionamento.

Na Infosecurity, usamos o conteúdo das regras Sigma como uma fonte adicional de conhecimento para uma detecção mais eficaz de incidentes. Se encontrarmos algo interessante, já o implementaremos dentro da estrutura de nossas regras de correlação, que levarão em consideração o kernel no qual as regras funcionam (Apache Spark) e as especificidades das infraestruturas e os meios de proteção que usamos.

Source: https://habr.com/ru/post/pt442570/


All Articles