Inscreva-se no The Softtek Blog
Actualmente, os processos de detecção manual de ameaças estão a tornar-se obsoletos. A engenharia de detecção pode fazer avançar as operações de segurança, especialmente a detecção como código (DaC), que é uma abordagem muito adequada à detecção de ameaças.
A realização de detecções permite definir a lógica de análise de dados de diferentes registos de segurança e decifrar o comportamento dos atacantes. Assim, com este tipo de detecção, quando uma regra de ataque é cumprida, é enviado um alerta à equipa de cibersegurança para investigar e resolver a situação.
DaC é uma abordagem flexível e estruturada à escrita de detecções que aplica as melhores práticas de engenharia de software à segurança cibernética. As equipas podem criar processos escaláveis para escrever e reforçar detenções e identificar ameaças sofisticadas em ambientes em rápida expansão.
Como mencionado, DaC é uma abordagem sistemática e abrangente à detecção de ameaças por software, ou seja, ficheiros de definição legíveis por máquina e modelos descritivos.
A abordagem stop-as-code está estruturada para analisar os dados de registo de segurança que são utilizados para identificar os comportamentos dos cibercriminosos. Escrever detenções expressivas e automatizar respostas em código permite às equipas de segurança criar processos escaláveis para identificar ameaças sofisticadas em ambientes em rápida expansão.
A combinação da engenharia de detecção com o conjunto de práticas e sistemas pode proporcionar uma detecção de ameaças moderna e eficaz para impulsionar as operações de qualquer empresa, como já foi o caso com o DevOps. Um fluxo de trabalho de engenharia de detecção segue os seguintes passos:
Assim, a detecção como código surge da necessidade de abordagens de segurança que sejam automatizadas, sistemáticas, repetíveis e previsíveis. Assim, os problemas podem ser ajustados a ambientes específicos do sistema. Da mesma forma, as equipas de segurança podem produzir alertas de alta qualidade que indicam rapidamente a possibilidade de ameaças, através de código bem escrito, verificação do controlo da fonte e revisão pelos pares.
Uma primeira fase da implementação do DaC consiste em estabelecer um canal que permita à empresa apresentar pedidos de novos detectores, ou seja, os funcionários devem poder apresentar ideias de comunicação através da nova função de pedido integrada numa plataforma SCM. Devem também criar modelos para assegurar que todos os dados necessários aos engenheiros de detecção sejam introduzidos. Estes engenheiros devem criar sprints de detecção para rastrear o desempenho e orientar toda a empresa sobre quais as questões de detecção a priorizar.
A segunda fase envolve o desenvolvimento do detector, o engenheiro de detecção deve criar um modelo que será utilizado na construção do próprio detector. Este modelo deve ser escrito num formato que seja fácil de analisar programática e humanamente legível, tal como YAML/TOML. Uma vez criado este modelo, a lógica do detector deve ser identificada. Isto pode significar a realização de alguns testes localizados num ambiente de teste para obter a lógica inicial.
A fase três é a fase de testes, em que os testes são executados contra o novo código do detector. Se passarem os testes, são integrados na conduta CI/CD. Uma vez concluídos os testes, é realizada uma revisão por pares para verificar o código com precisão contra o problema descrito na fase um.
Finalmente, na fase quatro, uma vez que o ramo de desenvolvimento foi fundido com o ramo principal, as ferramentas CI/CD leram a configuração do código. Se definidas como “activas”, as ferramentas de CD tentam implementar a lógica de regras na plataforma de detecção listada no ficheiro de configuração.
Os benefícios do DaC incluem a capacidade de detecção geral, flexibilidade e personalização utilizando uma linguagem de programação reconhecida, como o Python. Línguas como a Python permitem a escrita de detecções mais sofisticadas, utilizando regras que tendem a tornar-se mais legíveis e mais fáceis de compreender à medida que a complexidade do código aumenta.
Um benefício adicional da utilização de linguagens como o Python é a capacidade de utilizar um conjunto de bibliotecas integradas ou de terceiros para comunicar com APIs, o que melhora a eficiência da detecção.
Outro grande benefício desta abordagem é detectar precocemente os pontos cegos, cobrir testes de falsos alertas e promover a eficiência da detecção, desde que haja um controlo de qualidade adequado do código. Por conseguinte, o emprego de uma abordagem de desenvolvimento orientada por testes (TDD) facilita às equipas de cibersegurança a reflexão sobre como um atacante o faria, analisaria essa informação e compreenderia como funciona o ciclo de vida do ataque.
A utilização de TDD é uma validação de correcção de código que melhora a qualidade do código e permite detecções mais modulares e flexíveis. Além disso, podem facilmente ser feitas alterações à sua detecção sem interromper alertas e operações de código.
Por outro lado, quando são escritas novas modificações ou detecções, o controlo de versão permite às equipas voltarem ao estado anterior e indica se as equipas estão a utilizar a detecção mais actualizada.
medida que novos dados e características adicionais são introduzidos no sistema, as detecções também devem ser modificadas. O controlo das alterações é, portanto, essencial para ajustar as detecções conforme necessário e para assegurar que as alterações sejam documentadas e revistas.
Além disso, a utilização de uma conduta CI/CD ajuda a eliminar silos entre equipas porque trabalham em conjunto numa plataforma comum, analisam o código um do outro, e é mantida uma organização adequada. Por sua vez, são fornecidos canais de teste e automatizados para detecções de segurança. As equipas podem continuar a trabalhar de uma forma ágil, concentrando-se em detecções precisas.
Finalmente, DaC pode encorajar a reutilização do código através de um grande conjunto de detecções. Esta capacidade de reutilizar código é utilizada para executar a mesma função ou uma função muito semelhante através de diferentes detecções sem necessidade de iniciar um código a partir do zero. A reutilização de códigos permite a partilha de funções entre escolhas ou a adaptação da detecção para usos específicos.
Em suma, como o departamento de segurança escreve detecções durante um período de tempo prolongado, começa a identificar padrões à medida que estes surgem, e é aqui que o código existente pode ser reutilizado para satisfazer as necessidades de diferentes detecções sem começar do zero.
Em conclusão, cada ambiente é diferente e cada um necessita de um conjunto diferente de soluções de detecção. Para que isto seja possível, as equipas de ciber-segurança devem criar regras personalizadas para terem um controlo de versões adequado às suas necessidades.
A flexibilidade de uma linguagem de programação expressiva torna possível detectar comportamentos avançados ou simples, procurar o contexto e analisar os acontecimentos ocorridos. DaC torna possível escrever detecções flexíveis e específicas da empresa.
As equipas de ciber-segurança podem estruturar e normalizar os registos num esquema rigoroso de consulta e análise de grandes volumes de dados de segurança. DaC juntamente com Infra-estrutura como Código (IaC) formam a ideia emergente de Tudo como Código (EaC), onde em cada camada de segurança, tudo é expresso em código.