sábado, 28 de novembro de 2009

Fuzzy Logic aplicada a busca de padrões em Logs



Olá senhores (as),


Seguindo um pouco o gancho do primeiro post real, vou descrever abaixo um modelinho legal para tratamento de logs e busca de padrões onde poderemos utilizar por exemplo, no desenvolvimento de um SIEM de verdade, não estas coisas meramente deterministicas que vemos hoje em dia.

Inicialmente, para quem não conhece logica fuzzy, ela é simples, eu estudo fuzzy desde a época que fui programador na falecida DEC (Digital Equipaments Corporation), REST IN PEACE. Um dia ainda escrevo sobre as facetas legais dos processadores Alpha, tão a frente na época que alguns até diziam ser tecnologia de Aliens.. hahaha, comico dimais... Bem, basicamente, logica fuzzy é a lógica que leva em consideração o meio, aquilo que a lógica convencional descarta, certamente é o que chega mais proximo da lógica humana e porque considera não somente o SIM ou o NÃO, mas tambem o TALVEZ. Essa e a explicação mais simples que costumo dar, obviamente é deveras simples, quem quiser entender mais, googleia logica fuzzy e seja feliz! :)


Hoje, como sabem temos uma série de logs em vários sistemas, onde podemos sim encontrar muitas informações importantes no qual certamente mediante a identificação de padrões, podemos criar perfis e então aplica-los posteriormente na descoberta de divergencias, isso pode ser aplicado a segurança como identificar comportamento humano, operacionalmente para identificar tendencias comuns de determinados ativos e não comuns, bem como utilizado no mundo de mining para criar perfis de clientes, parceiros, etc... Hoje o foco é total em segurança, mas apliquem este mesmo algoritmo em qualquer area e terão resultados surpreendentes.

Quando um usuário interage com algum sistema, onde podemos identifica-los seja por endereçamento IP, cookies, informações populadas externamente, listas ativas, listas de sessões, etc, podemos com base nestas trilharmos um perfil do mesmo.
Vamos ver isto por dois pontos de vista, a pessoa (usuário) e o ativo gerador de um evento, o ponto de vista pessoa esta relacionada ao que o mesmo esta fazendo no ambiente computacional ou mesmo físico, e o ponto de vista ativo nos informa as ações realizadas por N formas (logs, telemetria, imagens, flows de rede, fotos, etc...),

O tratamento do usuário pode ser dados de duas formas, a primeira esta relacionada a informação previa existente em sistemas de gerenciamento de identidade ou mesmo mais simplorios como AD, LDAP, etc, e o segundo relacionado a quatro diferentes variáveis, vamos levar em conta o aspecto social, informações que estão nos logs referentes ao mesmo, onde teremos também as ações do mesmo e por fim a sessão, que no nosso caso podemos considerar desde uma sessão de VPN, até mesmo o fator login em um AD, um sessão DHCP, ou até a entrada em uma determinada sala controlada (logs de crachas, informações de cameras / CCTV, etc).

O principal problema neste modelo esta quando não existe uma pre-classificação como sistemas mais completos de gestão de identidade que nos indica informações relevantes como area, acessos factiveis, grupos de acesso, entre outros.

- Pontos importantes na mineração de logs usando Lógica Fuzzy

Bem, a Lógica Fuzzy irá atuar
justamente no modelo de orientação aos logs com foco no usuário, dando muito mais flexibilidade e produzindo informações mais interpretaveis, não somente um monte de outros eventos correlacionados, mas modelos no qual podemos desenhar e identificar visualmente padrões que antes da lógica fuzzy, por serem não lineares eram humanamente complexos no processo de identificação.

As principais técnicas que podemos utilizar para minerar informação com logica fuzzy são Fuzzy Clustering e Fuzzy Associantion Rules. Estas são técnicas que vamos tambem, utilizar para obtenção de perfis genéricos como logs provenientes de AP (Access Points) abertos, sem devida identificação, como muitos utilizam para acesso externo/ataques no qual o perimetro bem protegido falha quando um interno abre uma porta la dentro, muitos Pen-Testers usam isso para conseguir sucesso em suas investidas (se veste de fachineiro, entra na empresa com uma caixa grande, abrem a porta p/ ele, e o mesmo adiciona o mini-AP em algum ponto da rede, normalmente saidas de impressora/VoIP phones que muitas vezes não estão controladas pelos dot1x da vida).

Algoritmos de Fuzzy Clustering como o Fuzzy C-Means (FCM), com o fuzzyc (FCTM) e o fuzzy-c (FCLMedS) são usados para mining em informações no geral, outra aplicação com agrupamento de difusão pode tambem ser utilizado para o mesmo propósito. Aplicamos um algoritmo chamado CARD (Competitive Agglomeration of Relational Data), para agrupas diferentes sessões de usuários e dados.
Para termos efeito, não apenas logs são utilizados, portanto, SIEMs que só levem em consideração os logs
propriamente dito, não podem possuir este tipo de inteligência, estão anos luz disto ainda.
Outro algoritmo muito utiliza
do é o Fuzzy Association, onde com base nas informações extraídas pelos algoritmos acima, tambem podemo tentar PREVER determinados padrões, o que pode ser muito util mediante mudaças do ambiente, ou mudanças de valores financeiros se aplicamos ao conceito de fraude por exemplo, tambem mudarão o comportamento. Isso não é mágica, isso é MATEMÁTICA, pois com a geração de um indice “fuzzy”, podemos criar arvores de acesso ou comportamentos que são dinamicos na sua maioria. Certo? E sim, podemos ser muito eficientes nisto. :)

Uma coisa muito legal na lógica fuzzy, é que ela permite a exploração de dados incompletos, informações que muitas vezes são importantes, mas por algum motivo não a temos. Quando construimos um modelo para identificação sem o contexto inicial, podemos rotular uma série de outras informações para nos ajudarem a estabelecer o padrão, entre elas temos o modelo de aproximação, pelo comportamento prévio estabelecido, como perfíes pessoais associados (Fuzzy Association) a transações ou informações não rotuladas/contextualizadas, porêm deveras parecida com de uma determinada pessoa.

- Regras de Associação

As regras de associação relacionam a
s afinidades entre grupos e pessoais por si so, existe dentro disto um conjunto chamado Itens “I”, e um conjuntos chamado de “transações”, onde cada transação sendo um conjunto de “Itens”. Vamos considerar dois conjuntos de itens “I1, I2 ⊆ I” onde “I1 ∩ I2 = ∅”. Uma regra de associação “I1 ⇒ I2”, é uma regra onde aparições de elementos no conjunto de itens I1 em uma transação impliaca a aparição do conjunto de itens I2 na mesma transação. I1 e I2 são chamados de atencedente e a consequantes da regra, respectivamente. As medidas mais utilizadas para descrever as relações entre eles são “Support” e “Confidence”, onde Support é a porcentagem de transações e Confidence, mede a força deste Support mediante o número de vezes que aparece os itens.

Existem vários estudos sobre regras de associação como um fator de generalização quando os dados são “nebulosos/fuzzy”. Mas, por enquanto é somente largamente utilizada, não uma regra, eu particularmente gosto muito dela até mesmo porque a não ser que adicionarmos sets neurais, não temos nada melhor.


As regras de associação podem ser retiradas por meio de um algoritmo de extração, tais como o APioriTID, uma operação fuzzy pode ser definida como um subconjunto não vazio onde τ ⊆ I. E para cada i ∈ I veremos τ(˜i) o grau de adesão de i em uma transação ~i, é definida como:


As operações fuzzy gerenciam as imprecisões e podem dar mais flexibilidade porque nos permite lidar com valores intermediários entre 0 e 1, sacaram a diferença e o poder da mesma? :)


Para avaliação do desempenho das regras de associação, empregamos uma abordagem semântica basea
da na avaliação quantificada. Uma sentença qualificada é uma expressão da forma “Q de F é G”, onde F e G dois subconjuntos fuzzy de um conjunto finito X e Q é um qualificados relativo fuzzy.


Quantificadores relativos são rótulos que podem ser representados por meio ou na maioria das vezes dois conjuntos fuzzy em [0,1], tais como “,” quase ou “muitos”. Desta forma podemos definir medidas estimadas das regras. Vamos observar que as famílias de apoio e “Support” / “Confidence”, podem
ser obtidas em função da avaliação dos dados e o quantificados que escolhemos. Podemos avaliar as sentenças pelo método “GD” que foi mostrado para verificar as propriedades com um desemplenho melhor que outros. A avaliação “Q e F é G” por meio de GD, é definida da seguinte forma:



Outra medida interessante é o fator de segurança de uma regra de associação fuzzy. Dada a A → C, o fator de segurança toma valores em [1, 1]. É positivo quando a dependência entre A e C é positiva, 0 quando não é a independência e um valor negativo quando a dependência é negativo. Falamos que uma regra de associação fuzzy é realmente boa quando seu fator de “certidão” e suporte são superior a dois definidos pelo usuário minCF thresholds e minSupp, respectivamente.

No próximo post, uma representação prática disto... :)

5 comentários:

  1. A primeira metade foi paia... A segunda esquentou :-)

    Aguardando o próximo post!

    ResponderExcluir
  2. getting better and better...
    fuzzy is c00l man!

    awesome zana!
    we awaiting for your next post !

    best regards

    léo

    ResponderExcluir
  3. Fala Zanardo. Muito bom o post - você deveria incluir um aviso para os leitores não tentarem entender as fórmulas sóbrios... =)

    Incluí alguns comentários sobre seu post no meu blog: http://sseguranca.blogspot.com/2009/11/fuzzy-logic-e-fuzzy-hashing.html

    [ ]s,

    Sandro Süffert

    ResponderExcluir
  4. Zanardo Cohen? Que mané SIEM ... você ta querendo é prever o mercado de ações ... ou ta querendo decifrar a Torá.
    Isso ta mais com cara de Cabala do que qualquer outra coisa.
    Pow! Toda essa teoria sem aplicação prática é pior que novela da Rede Bobo. Quando sai o próximo post? (ref.: www.pithemovie.com)

    ResponderExcluir