Sunday, November 8, 2009

Expressoes Regulares em Resposta a Incidentes


A utilização de expressões regulares para filtragens, criação de regras, alertas, condições, entre outras funcionalidades é uma das ferramentas técnicas que une as diversas tecnologias utilizadas para resposta a incidentes de segurança e forense computacional.

Antes de prosseguir, precisamos ter em mente que a utilização de pattern matching - apesar de extremamente útil - sempre nos trará um número de falsos-positivos e falsos-negativos.

Praticamente todas as linguagens de programação suportam o uso das expressões regulares, por exemplo: .NET, Java, Javascript, Lua, Perl, PHP, Python, Ruby e Tcl nem mesmo precisam de chamada a módulos externos por suportar nativamente regex.

Do ponto de vista das diferentes implementações, a
PCRE (Perl Compatible Regular Expressions) é a mais completa, por suportar diretivas, condicionais, referencias nominais, grupos atômicos, comentários, código embutido, matching parcial e unicode.

No caso da Resposta a Incidentes e Forense computacional,
as expressões regulares representam um papel fundamental tanto na 1) Correlação de Logs e Eventos de Segurança, quanto na 2) Monitoração e/ou Forense de Rede, quanto na 3) Forense de Mídias (local ou remotamente).


1) Correlação de Logs e Eventos de Segurança
As expressões regulares são fundamentais para o processamento direto de arquivos de log e outras evidências. em ferramentas como grep, awk, sed e o próprio perl (exemplo). Além disto, as ferramentas empresariais de SIEM/SIM durante as fases filtragem de dados, na normalização e categorização de eventos e também na correlação de informações e criação de alertas (exemplo).

2) Monitoração e/ou Forense de Rede


Desde as ferramentas básicas como IDS/IPS (como o suporte a PCRE do
Snort ou o uso de regex com o ngrep) até filtros de conteúdo, e as ferramentas de Forense de Rede (exemplo: no NetWitness você pode utilizar expressões regulares para pesquisas avançadas em conteúdos, metadados, ou para identificação de detalhes de protocolos/aplicações com a tecnologia de FlexParser)

3) Forense de Mídias

O uso de expressões regulares está entre as análises mais comuns que são utilizadas em forense computacional (seja em frameworks GPL como o CAINE e o SIFT, seja em ferramentas comerciais como o FTK e ENCASE).
Isto vale tanto na para criação de palavras-chave para pesquisa quanto para a identificação de assinaturas de arquivos / análise de extensão versus header (Exemplo: os primeiros bytes de um JPEG padrão iniciarão com [\xFF\xD8\xFF[\xE0\xEE] - onde \x significa um valor hexadecimal e as chaves significam ou E0 ou EE).

Referências:

Seguem algumas referências para facilitar o treinamento de equipes que precisam utilizar expressões regulares em seu dia-a-dia:

1 - http://gskinner.com/RegExr/ - editor de expressões regulares em versão online e desktop
2 - http://ryanswanson.com/regexp/#start - flex 3 regular expression explorer (obrigado @welias)
3 - Regex Coach - Programa (Win/Linux) gratuito para auxiliar a criação de regexes;
4 - http://www.regular-expressions.info/ - repositório com exemplos, sintaxe, referências, livros, etc;

2 comments:

  1. Boas as informações e referências.

    Uma pergunta. Existe alguma ferramenta de código aberto que use expressões regulares para capturas "live" de tráfego de rede?

    ReplyDelete
  2. Ola Anonimo =)

    A mais simples e direta ao ponto que me lembro eh o ngrep - eh bem provavel que voce ja a tenha no seu Linux/BSD - segue pagina oficial: http://ngrep.sourceforge.net/

    um abraço e boa sorte,

    S.S.

    ReplyDelete