swarm-forense: uma ferramenta para anÁlise … · • política de segurança da informação ......

20
1 SWARM-FORENSE: UMA FERRAMENTA PARA ANÁLISE FORENSE COMPUTACIONAL BASEADA NA INTELIGÊNCIA COLETIVA Bruno Viganico Barreto <[email protected]> Fabiana Lorenzi <[email protected]> – Oritentadora Universidade Luterana do Brasil (ULBRA) – Curso de Ciência da Computação – Campus Canoas Av. Farroupilha, nº 8001 – Bairro São José – CEP: 92425-900 – Canoas – RS 30 de novembro de 2011 RESUMO Este artigo apresenta a proposta e o desenvolvimento da ferramenta Swarm-Forense, que auxilia um analista forense computacional a realizar uma análise de logs de servidores Linux (auth.log) e Apache (access.log), a fim de buscar evidências de ataques nestes tipos de logs. A ferramenta Swarm-Forense se baseia no uso de técnicas de inteligência coletiva, conhecida como Swarm Intelligence, para formar grupos de registros similares desses logs, facilitando a análise forense computacional. Inicialmente são apresentados os conceitos envolvendo Análise Forense e as ferramentas que auxiliam neste processo. Posteriormente são apresentados os conceitos de Swarm Intelligence e o Algoritmo de Agrupamento por Colônia de Formigas (Ant Clustering Algorithm), técnica que é aplicada na ferramenta proposta. Logo após, é apresentado o desenvolvimento da ferramenta e seu estado atual, com testes de validação em cima de logs de um servidor Apache. Com estes testes conclui-se que a ferramenta Swarm-Forense consegue atingir o objetivo proposto, e que pode ser futuramente ampliada e melhorada. Palavras-chave: Análise forense computacional, Swarm Intelligence, Classificação de Dados, Ant Clustering Algorithm. ABSTRACT Title: “Swarm-Forense: a tool for computer forensic analysis based on collective intelligence” This paper describes the proposal and the development of the Swarm-Forense tool, which helps a computer forensic analyst to perform an analysis of logs from Linux server (auth.log) and Apache server (access.log), in order to find attack evidences in these types of logs. Swarm-Forense tool is based on the use of collective intelligence techniques, known as Swarm Intelligence, to form groups of similar records in these logs, helping the computer forensic analysis. Initially is presented the concepts involving Forensic Analysis and tools that assist in this process. Later are presented the concepts of Swarm Intelligence and Ant Colony Grouping (Ant Clustering Algorithm), a technique that is applied to the proposed tool. Soon after is presented the development of the tool and its current state, with validation tests over logs of an Apache server. With these tests it was concluded that the Swarm-Forense tool can reach the proposed objective, and that can be further expanded and inproved. Key-words:Computer forensics, Swarm Intelligence, Data Classification, Ant Clustering Algorithm. 1 INTRODUÇÃO O uso de tecnologia computacional se apresenta como a principal forma de armazenamento e troca de informações entre empresas, instituições e no uso pessoal. Este fato se deve principalmente ao seu uso em aplicações sensíveis envolvendo processos críticos e a popularização da Internet. A aplicação da tecnologia também cresce com a necessidade das empresas de utilizarem este meio para disponibilizar informações e serviços para seus clientes. A preocupação com a segurança dos dados e sistemas cresce na mesma proporção. A segurança computacional possui atributos básicos que devem ser garantidos para impedir o comprometimento dos ativos de Tecnologia da Informação e Comunicação (TIC): confidencialidade – é a garantia de que os dados e sistemas estarão acessíveis apenas aos usuário autorizados. No caso dos dados, esta garantia deve ser mantida tanto em situações de armazenamento dos mesmos, quanto em trânsito; autenticidade – garantia de que um usuário ou sistema é autêntico, ou seja, não deve ser

Upload: donguyet

Post on 08-Nov-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

1

SWARM-FORENSE: UMA FERRAMENTA PARA ANÁLISE FORENSE COMPUTACIONAL BASEADA NA

INTELIGÊNCIA COLETIVA

Bruno Viganico Barreto <[email protected]> Fabiana Lorenzi <[email protected]> – Oritentadora

Universidade Luterana do Brasil (ULBRA) – Curso de Ciência da Computação – Campus Canoas Av. Farroupilha, nº 8001 – Bairro São José – CEP: 92425-900 – Canoas – RS

30 de novembro de 2011

RESUMO Este artigo apresenta a proposta e o desenvolvimento da ferramenta Swarm-Forense, que auxilia um analista

forense computacional a realizar uma análise de logs de servidores Linux (auth.log) e Apache (access.log), a fim de buscar evidências de ataques nestes tipos de logs. A ferramenta Swarm-Forense se baseia no uso de técnicas de inteligência coletiva, conhecida como Swarm Intelligence, para formar grupos de registros similares desses logs, facilitando a análise forense computacional. Inicialmente são apresentados os conceitos envolvendo Análise Forense e as ferramentas que auxiliam neste processo. Posteriormente são apresentados os conceitos de Swarm Intelligence e o Algoritmo de Agrupamento por Colônia de Formigas (Ant Clustering Algorithm), técnica que é aplicada na ferramenta proposta. Logo após, é apresentado o desenvolvimento da ferramenta e seu estado atual, com testes de validação em cima de logs de um servidor Apache. Com estes testes conclui-se que a ferramenta Swarm-Forense consegue atingir o objetivo proposto, e que pode ser futuramente ampliada e melhorada.

Palavras-chave: Análise forense computacional, Swarm Intelligence, Classificação de Dados, Ant Clustering Algorithm.

ABSTRACT Title: “Swarm-Forense: a tool for computer forensic analysis based on collective intelligence”

This paper describes the proposal and the development of the Swarm-Forense tool, which helps a computer forensic analyst to perform an analysis of logs from Linux server (auth.log) and Apache server (access.log), in order to find attack evidences in these types of logs. Swarm-Forense tool is based on the use of collective intelligence techniques, known as Swarm Intelligence, to form groups of similar records in these logs, helping the computer forensic analysis. Initially is presented the concepts involving Forensic Analysis and tools that assist in this process. Later are presented the concepts of Swarm Intelligence and Ant Colony Grouping (Ant Clustering Algorithm), a technique that is applied to the proposed tool. Soon after is presented the development of the tool and its current state, with validation tests over logs of an Apache server. With these tests it was concluded that the Swarm-Forense tool can reach the proposed objective, and that can be further expanded and inproved.

Key-words:Computer forensics, Swarm Intelligence, Data Classification, Ant Clustering Algorithm.

1 INTRODUÇÃO O uso de tecnologia computacional se apresenta como a principal forma de armazenamento e troca de informações entre empresas, instituições e no uso pessoal. Este fato se deve principalmente ao seu uso em aplicações sensíveis envolvendo processos críticos e a popularização da Internet. A aplicação da tecnologia também cresce com a necessidade das empresas de utilizarem este meio para disponibilizar informações e serviços para seus clientes.

A preocupação com a segurança dos dados e sistemas cresce na mesma proporção. A segurança computacional possui atributos básicos que devem ser garantidos para impedir o comprometimento dos ativos de Tecnologia da Informação e Comunicação (TIC):

• confidencialidade – é a garantia de que os dados e sistemas estarão acessíveis apenas aos usuário autorizados. No caso dos dados, esta garantia deve ser mantida tanto em situações de armazenamento dos mesmos, quanto em trânsito;

• autenticidade – garantia de que um usuário ou sistema é autêntico, ou seja, não deve ser

2

permitida a personificação de terceiros; • integridade – qualquer alteração não autorizada (maliciosa ou não) de dados deve ser

identificada; • disponibilidade – um sistema ou dado deve estar disponível sempre que requisitado por

usuário autentico.

Estes atributos são sustentados por três elementos essenciais, sendo: • Política de Segurança da Informação (PSI)– documentos que descrevem as regras a serem

aplicadas aos dados e sistemas para garantir a efetividade dos atributos; • Mecanismos – ativos de software e hardware capazes de garantir que as regras descritas na

PSI sejam efetivas; • Cultura – conhecimento dos aspectos de segurança difundido entre todas as partes

envolvidas no processo computacional.

Em relação à segurança dos dados e sistemas, podem-se classificar as ameaças aos atributos em dois grupos distintos: ataques locais e ataques remotos. Para que ataques locais sejam realizados, é necessário que o atacante tenha acesso físico ao ativo que contém o sistema ou dado. Os ataques remotos são realizados via rede interna ou externa.

O nível de exposição de ativos a ataques locais é controlado através de segurança física de perímetro e, apesar de ser uma ameaça considerável, o nível de exposição é menor (e mais fácil de ser controlado) do que ataques via rede. Tendo em vista a atual necessidade de disponibilização dos dados a usuários e clientes remotos, esta exposição necessária aumenta o risco que as empresas e instituições correm de terem seus sistemas violados por usuários maliciosos.

Para que se possa identificar o nível de segurança existente em um ambiente computacional, um especialista em segurança deve realizar uma análise de riscos. Esta análise é realizada através do levantamento de possíveis ameaças ao ambiente (eventos que podem ocorrer e que comprometeriam algum atributo de segurança), quais os controles que impedem que cada ameaça se concretize (os mecanismos que devem ser aplicados) e qual o grau de vulnerabilidade à uma ameaça (em caso de inexistência de um controle, têm-se uma vulnerabilidade). Com este levantamento, chega-se a uma análise dos riscos existentes no ambiente computacional.

Mesmo contando com todos os elementos e preocupações com a segurança, não é possível eliminar-se completamente os riscos. Os incidentes de segurança podem ser mitigados, porém nunca se atinge a completa impossibilidade de incidentes. Em situações nas quais é constatada a violação de um ou mais atributos de segurança, é necessário que seja feita uma análise meticulosa em busca de informações sobre o incidente, destacando:

• qual a técnica utilizada pelo usuário malicioso para realizar o ataque; • qual a vulnerabilidade explorada; • quais as ações executadas pelo atacante após o incidente inicial; • quais os dados e sistemas que foram comprometidos e de qual forma.

Sem este levantamento, não é possível confiar-se nos sistemas e dados contidos no ambiente, nem a correção da vulnerabilidade explorada com objetivo de evitar novos incidentes.

Para que se faça este levantamento, técnicas de análise forense computacional foram criadas. Estas técnicas objetivam a criação de uma linha de tempo que inicia na exploração de uma vulnerabilidade, mapeando a partir deste ponto todas as ações realizadas pelo atacante, até o momento da detecção de que o sistema sofreu o incidente.

A análise forense envolve a investigação de todos os elementos existentes no sistema comprometido, ou seja, memória volátil, processos em execução, tráfego de rede e sistema de arquivos. Destaca-se também a análise do sistema de registros de eventos (logs) dos diversos processos existentes, por possuir traços de ações realizadas, não ser volátil e, devido a isto, possuir a maior quantidade de informações do que ocorreu no ativo.

O artigo aqui apresentado foca na utilização de técnicas para facilitar a interpretação de ações ocorridas em um sistema através da análise do sistema de registros existente.

3

Atualmente existem ferramentas que auxiliam o analista forense na busca de evidências de um ataque já ocorrido. Porém, este é um processo minucioso que leva tempo e dedicação para analisar todos os dados que revelam o ataque. O custo de tempo despendido em uma investigação desse tipo para coletar e analisar estas informações é algo que pode durar de dias a meses, dependendo de quanto o profissional deseja saber do ataque ocorrido (FARMER e VENEMA, 2005). Os dispositivos de armazenamento atuais e por consequência a quantidade de informações armazenadas neles estão cada vez maiores, o que leva a este tempo despendido também ser cada vez maior. Por esta razão, o presente trabalho propõe uma maneira de acelerar este processo, através da ferramenta Swarm-Forense. O algoritmo de agrupamento por colônia de formigas é utilizado com objetivo de classificar as informações existentes nos arquivos de logs de servidores Linux (auth.log) e Apache (access.log) e diminuir o tempo gasto pelo analista forense para processar todas estas informações. Os registros dos logs destes servidores são agrupados de acordo com suas similaridades em uma tabela ou grade e mostrados para o analista, como forma de facilitar a visualização de possíveis registros de ataques. O analista deve então verificar os agrupamentos de registros que lhe parecem interessantes, e/ou os registros que não pertencem a nenhum grupo, já que estes podem representar um ataque isolado.

Assim, paralelamente com a análise manual, é realizada a classificação de dados por similaridade, com o intuito de diminuir o tempo gasto pelo analista forense na busca por informações distribuídas no dispositivo de armazenamento de dados através de seu agrupamento. Este artigo está organizado da seguinte forma: a próxima seção apresenta os principais conceitos necessários para o entendimento da ferramenta. Na seção 3 é apresentado o que se espera do funcionamento da ferramenta e que tipos de ataques a ferramenta Swarm-Forense deve buscar. Na seção 4 é apresentada a ferramenta desenvolvida, suas formas de funcionamento e de utilização. Logo após, na seção 5, é mostrada a validação da ferramenta junto com os testes aplicados. A última seção consiste na apresentação da conclusão referente a este trabalho.

2 REFERENCIAL TEÓRICO Para uma melhor identificação dos elementos teóricos envolvidos no sistema proposto, são

apresentados os conceitos de análise forense computacional e da técnica de Inteligência Artificial (IA) utilizada.

2.1 Análise Forense Computacional A análise forense de um sistema computacional gira em torno de um ciclo de coleta de dados e

processamento das informações recolhidas (FARMER e VENEMA, 2005). Quanto mais precisos forem os dados do sistema atacado, melhor será a análise. Enquanto o sistema é utilizado por outros usuários, mudanças podem ocorrer alterando o estado dele, ou destruindo evidências valiosas. O ideal é, no momento em que detecta o comprometimento de um sistema, que seja feita uma cópia exata do sistema e de todos os seus dados, para que a análise seja feita nesta cópia. Mais de uma cópia pode ser gerada, com o intuito de manter sua integridade durante todo o processo de análise. Também é necessário que o sistema comprometido seja interrompido tendo em vista a possível escalada no ataque levando a maiores problemas de segurança.

As múltiplas cópias têm o intuito de preservar o sistema original intacto, já que o próprio processo de análise prejudica muitas das informações de evidências.

Em caso de não ser possível fazer uma análise de uma imagem (cópia exata) do sistema, a análise poderá ser feita no sistema em execução (situação a ser evitada). O primeiro passo é isolar o sistema de outros usuários e da rede. Então, os dados mais efêmeros devem ser coletados antes dos dados mais estáveis, seguindo uma Ordem de Volatilidade (FARMER e VENEMA, 2005). Segundo este conceito, as informações com tempo de vida menor são aquelas que são mais propensas a serem afetadas pelo próprio processo de coleta.

O conceito de timemachine (FARMER e VENEMA, 2005) na análise forense refere-se à linha de tempo de um ataque, e como isto influencia na busca de evidências. Alguns eventos individuais se forem analisados separadamente, podem não possuir muito significado. Por exemplo, instalações de softwares podem ocorrer com certa frequência dependendo do sistema. Porém, este evento se torna muito mais importante caso tenha ocorrido logo após a invasão de um sistema pelo atacante.

4

Além dos atributos e conteúdo de arquivos, outras fontes de informações são essenciais para uma análise forense. Dentre elas, destacam-se:

• informações de registros (logs) do sistema operacional; • informações de registros (logs) de demais sistemas; • arquivos executáveis modificados pelo atacante; • arquivos e diretórios ocultos; • conjuntos de programas utilizados para facilitação de acesso e escalada de privilégios no

sistema (root kits).

Conforme aumentou complexidade dos ataques e, consequentemente, da análise forense, pesquisadores e desenvolvedores iniciaram a criação de ferramentas para auxílio deste processo. Algumas ferramentas comuns na pesquisa e prática de análise forense são descritas a seguir.

2.1.1 The Coroner's Tool Kit

Dan Farmer e Wietse Venema desenvolveram um conjunto de ferramentas que auxiliam a análise forense de um sistema atacado, chamado de The Coroner’s Toolkit (TCT). O TCT é composto por alguns comandos e utilitários, como grave-robber, mactime e o lazarus.

O comando grave-robber coleta informações forenses e pode ser usado tanto numa imagem do disco da máquina atacada ou online (em uma máquina que esteja de fato rodando). A Ordem de Volatilidade é respeitada nesta última situação. Este comando utiliza várias ferramentas que são parte do TCT e outros comandos nativos do UNIX para coletar as seguintes informações, respectivamente:

• os atributos de todos os comandos e arquivos que o TCT acessa enquanto colhe as informações, a fim de preservar seus MACtimes;

• estado dos processos e (opcionalmente) a memória dos processos que estão em execução; • arquivos apagados que ainda estão ativos; • arquivos executáveis pertencentes aos processos que estão rodando; • todos os atributos dos arquivos apagados; • informações sobre o estado da rede; • informações sobre o sistema em si; • atributos dos arquivos existentes – aqui é produzido um arquivo body que é utilizado pelo

comando mactime do TCT; • informações de segurança que estão sob o controle dos usuários do sistema (opcional); • cópias dos arquivos de configurações e outros arquivos críticos.

O comando mactime usa o arquivo body produzido pelo grave-robber para produzir um relatório com os atributos MACtimes dos arquivos em ordem cronológica. A Tabela 1 mostra um exemplo de relatório gerado por este comando.

Tabela 1 – Exemplo de Relatório Gerado Pelo Comando mactime (FARMER e VENEMA, 2005)

5

A coluna MAC se refere aos atributos MACtimes alterados no horário que consta na coluna time. Neste exemplo, um usuário com privilégios de administrador (root) descompactou um arquivo com nome sshdlinux.tar e logo após saiu do sistema.

Outra ferramenta que o TCT possui é o lazarus, que serve para recuperar arquivos apagados no disco. Ele procura no disco fragmentos do arquivo apagado, que tendem a estar próximos, para então reuni-los e formar o arquivo original.

Existem ainda comandos no TCT que trabalham principalmente com a análise de arquivos apagados, retornando seus MACtimes, o que torna possível saber quando um invasor do sistema apagou algum arquivo, ou substituiu este arquivo por outro.

2.1.2 The Sleuth Kit e Autopsy Browser

The Sleuth Kit (TSK) é uma coleção de comandos UNIX para a análise forense (CARRIER, 2010). Ele utiliza as ferramentas desenvolvidas no The Coroner’s Toolkit e implementa algumas a mais. Além disso, ele oferece suporte a outros tipos de sistema de arquivos, como o NTFS.

O TSK é dividido em dois conjuntos de ferramentas: file system tools, que permitem analisar os arquivos de um computador atacado, e volume system tools, que permitem identificar as partições do disco e extraí-las para que possam ser analisadas pela primeira parte.

O Autopsy Browser é uma interface gráfica baseada em HTML para o TSK, desenvolvida pelo mesmo autor. Existem algumas técnicas de procura de evidencias incluídas no Autopsy que facilitam a análise forense, como por exemplo:

• File Type Sorting: classifica os arquivos com base na sua assinatura interna para identificar os tipos de arquivos. Também verifica a extensão do arquivo caso possa ter sido alterada para escondê-lo.

• Timeline of File Activity: semelhante ao mactime do TCT, em uma interface gráfica • Keyword Search: varre a imagem do disco em busca de palavras-chave, podendo procurar

em todo o disco ou apenas no espaço não-alocado

Em resumo, o TSK amplia as funcionalidades do TCT e adiciona uma interface amigável para o analista. Os objetivos permanecem os mesmos, de se realizar o levantamento da linha de tempo entre o ataque e todas as ações subsequentes.

2.2 Swarm Intelligence O conceito de Swarm Intelligence foi introduzido por Beni e Wang (1989) e refere-se à área da

Inteligência Artificial em que o problema proposto é resolvido através de interações de agentes simples que processam informação. O termo, que significa inteligência coletiva em tradução livre, vem da biologia e é inspirado no comportamento de animais sociais, como insetos (formigas, abelhas, cupins, etc.), cardumes, bando de pássaros, etc. O comportamento destes animais é interessante, pois os indivíduos agem de forma independente, mas de forma organizada e eficiente para o grupo, sem nenhuma coordenação centralizada.

A exemplo, é possível citar os insetos sociais como as formigas. Cada formiga de uma colônia age independente das demais, e mesmo assim a colônia se mantém organizada. Todas as atividades das formigas são integradas, e não requerem nenhum supervisor (BONABEAU et al., 1999).

Pode-se observar tal organização em algumas espécies distintas. As operárias da espécie formiga-tecelã (Oecophylla) são capazes de se juntar em grupos para conseguir montar ninhos (HÖLLDOBLER e WILSON, 1978). A partir de uma folha, formam uma corrente com seus próprios corpos para que consigam alcançar outra folha, puxando a mesma para junto da primeira. Quando as duas folhas estão unidas, outra operária, carregando uma larva que produz uma secreção de seda capaz de grudar as folhas, aparece e as prende para que as demais formigas possam soltá-las.

Algumas espécies de formigas, como a Pheidole pallidula (DENEUBOURG et al., 1991) e a Messor sancta (THERAULAZ et al., 2002) foram estudadas por possuírem a característica de formar pilhas de corpos para a fim de limpar o formigueiro. Em experimentos realizados, vários corpos de formigas mortas foram distribuídos homogeneamente pela periferia de uma superfície localizada perto do formigueiro

6

(Figura 1). Foi observado que as formigas operárias, ao chegarem à superfície, pegam os corpos e os largam para formarem pilhas. Inicialmente, as formigas vão formando vários grupos distintos de corpos. Estes grupos são constantemente abastecidos e retirados, e com o tempo, apenas os grupos de corpos que cresceram mais rapidamente prevalecem.

Figura 1: Organização do cemitério da colônia ao longo de 36 horas (BONABEAU et al., 1999)

As formigas detectam a densidade de corpos na vizinhança do formigueiro, e com isso há probabilidades delas quererem pegar ou soltar um corpo (GARNIER et al., 2007). A chance de uma formiga querer pegar um corpo de uma pilha já formada é inversamente proporcional ao tamanho desta pilha, ou seja, quanto maior o tamanho da pilha, menos uma formiga vai querer retirar um corpo dali.

2.3 Algoritmo de Agrupamento por Colônia de Formigas Através dos estudos do agrupamento que algumas espécies de formigas fazem com os corpos dos indivíduos mortos, originaram-se os algoritmos de agrupamento baseados em colônia de formigas (DORIGO et al, 2006).

Deneubourg et al. (1991) foram os primeiros a introduzir este tipo de modelo. Nele, formigas (agentes) movem-se por uma matriz ou grade de duas dimensões, onde objetos estão espalhados aleatoriamente. Cada formiga pode pegar um objeto da matriz ou largar um objeto nela, de acordo com uma probabilidade que é baseada na densidade e na similaridade dos outros objetos na vizinhança da formiga. Este modelo foi aprimorado mais tarde por Lumer e Faieta (1994) para fazer com que o algoritmo englobasse mais do que dois tipos de objetos. Nesta nova proposta, que ficou conhecida como Standard Ant Clustering Algorithm (SACA), foi introduzido também uma função que avalia continuamente a similaridade entre os diferentes objetos.

2.3.1 Funcionamento do Algoritmo O Algoritmo de Agrupamento por Colônia de Formigas funciona da seguinte maneira: inicialmente,

os objetos ou padrões que devem ser classificados são espalhados por toda grade, e cada formiga (de um total de formigas definido inicialmente) escolhe um padrão para carregar e é colocada em uma posição da grade. Depois, uma destas formigas, selecionada randomicamente, se desloca na grade em direção aleatória,

7

com um passo de comprimento pré-definido. Então, a formiga poderá ou não soltar seu objeto na posição em que ela se encontra, de acordo com uma probabilidade Pd descrita na equação (1). Caso a formiga não solte o objeto, uma nova formiga é selecionada e o processo recomeça.

Se a formiga decidir soltar, ela descarrega o objeto na posição em que ela se encontra, se estiver vazia, ou em alguma posição vizinha (escolhida aleatoriamente) que esteja vazia. Sem objeto nenhum, a formiga então procura um novo objeto para carregar, pulando para a posição de outro objeto qualquer na grade. Neste momento, ela decide se irá ou não pegar o objeto, tendo uma probabilidade Pp (equação 2) para isto. Se decidir não pegar, ela vai pulando para outra posição na grade até decidir pegar outro objeto. Assim, outra formiga é selecionada para dar outro passo, e o processo se repete até que o critério de parada seja satisfeito. A Figura 2 representa o fluxograma de funcionamento do algoritmo.

Figura 2: Fluxograma de funcionamento do algoritmo SACA (LAURO, 2008)

As probabilidades de uma formiga soltar ou pegar um objeto são dadas respectivamente pelas equações (1) e (2).

(1)

(2)

Nestas equações, f(i) é uma função que tem seu valor entre 0 e 1 e representa a densidade de objetos similares na vizinhança da formiga e kp (ou k1) e kd (ou k2) são constantes definidas de acordo com a base de dados que se deseja agrupar, e que os autores definiram inicialmente como 0,1 e 0,15, respectivamente. A equação (3) define f(i).

8

(3)

onde: • s² é o número de células ao redor de i, ou a visão da formiga; • � (alpha) representa um parâmetro escalar que estabelece a dependência em relação aos

dados, ou seja, determina a porcentagem de itens da base de dados que serão considerados similares;

• d(i,j) é uma função de dissimilaridade entre os atributos do objeto i e os atributos de todos os objetos ao seu redor.

Um valor de � muito pequeno resulta em objetos similares colocados em grupos separados na grade, e um valor muito alto resulta em poucos grupos de objetos não similares. O valor máximo formaria um único grupo com todos os objetos.

A função d(i,j) representa a dissimilaridade entre os objetos i e j em seu espaço dimensional, e pode ter seu valor entre 0 e 1. Esta função é definida pela equação (4).

(4)

onde i = (xi1, xi2, ..., xin), e j = (xj1, xj2, ..., xjn) são os valores dos atributos de dois dados N-dimensionais.

O valor máximo para f(i) é obtido se todos os espaços na vizinhança do agente são ocupados por objetos iguais. Neste caso, Pp (probabilidade da formiga pegar o objeto) tende a ser 0 e Pd (probabilidade da formiga soltar) tende a ser 1. Ao mesmo tempo, quanto menor o valor de f(i) for, maior o valor de Pp e menor o valor de Pd.

A Figura 3 representa um pseudocódigo de implementação do algoritmo SACA.

Figura 3: Implementação do algoritmo (HANDL, 2003)

9

2.3.2 Aplicações do Algoritmo Para fim de testes, existem vários bancos de dados que contém elementos com atributos que podem

ser classificados em grupos definidos. Como exemplo, a base de dados de nome “Ruspini” possui 75 elementos com 2 atributos cada, sendo o primeiro atributo um valor que vai de 0 à 120, e o segundo de 0 à 160. Estes elementos estão distribuídos no gráfico da Figura 4 a seguir, onde se pode perceber claramente 4 grupos distintos de dados.

Figura 4: Distribuição dos elementos da base de dados Ruspini (VIZINE et al., 2005)

Lauro (2008) submeteu esta base ao algoritmo SACA para validar a eficácia do mesmo. Para isto, foram adotados os seguintes parâmetros iniciais:

• Iterações: 300.000; • Tamanho da grade: 28x28; • Número de agentes (formigas): 5; • � = 0,25; • s² = 3x3; • kp = 0,1; • kd = 0,3;

Os elementos do grupo 1 são representados pelo triângulo com base do lado superior, do grupo 2 pelo triângulo com base no lado inferior, do grupo 3 pela estrela e do grupo 4 pelo círculo. O quadrado de cor azul claro representa os agentes ou formigas.

A Figura 5 mostra a grade com os objetos espalhados randomicamente, onde o número de iterações é zero. A Figura 6 mostra o resultado ao final das 300.000 iterações.

10

Figura 5: Distribuição inicial dos elementos (LAURO, 2008)

Figura 6: Distribuição final dos elementos após aplicação do SACA (LAURO, 2008)

Pode-se observar que o algoritmo conseguiu agrupar os dados em quatro grupos principais distintos. Esta aplicação foi utilizada apenas para demonstrar o funcionamento do algoritmo SACA em uma base com dados que eram previamente conhecidos, onde já se conheciam quais objetos pertenciam a qual grupo antes de iniciar as iterações do algoritmo, apesar de que estes objetos não estavam previamente reunidos. No entanto, aplicações práticas também existem. Vizine (2007) utilizou o algoritmo e uma variação dele na aplicação de agrupamento de bases textuais contendo resumos de textos e artigos, a fim de organizar os documentos que possuam características semelhantes. Como resultado, esperou-se apresentar um sistema de recomendação com uma representação gráfica dos grupos de documentos formados, o que possibilitaria o acompanhamento visual do processo de agrupamento, facilitando o processo de busca por assuntos correlatos.

3 FERRAMENTA SWARM-FORENSE Como apresentado na seção 2.3, o algoritmo de agrupamento de dados por colônia de formigas é uma técnica interessante de mineração de dados que pode ser aplicada a uma base de dados para procurar relações entre os atributos de seus objetos, em que a pessoa que irá fazer a análise deve interpretar o resultado obtido pelo algoritmo a fim de estabelecer uma ligação entre os objetos dos grupos formados.

De uma maneira semelhante, o processo de análise forense leva em conta vários dados contidos no

11

computador atacado que podem ser analisados e interpretados pelo analista de forma com que o mesmo possa estabelecer alguma ligação entre o ataque e estes dados. Os dados podem ser, por exemplo, as informações em um arquivo de registros. Cada entrada em um destes arquivos possui atributos, como data, origem e ação realizada. Um analista pode verificar, a partir de uma data ou período, se existe alguma relação entre as ocorrências sendo analisadas que possa indicar uma atividade suspeita. Esta data ou período pode ser o momento em que houve o ataque, e arquivos que foram modificados, criados ou acessados neste período podem ser interessantes do ponto de vista de uma análise temporal do ataque.

A técnica de classificação é utilizada então para que, paralelamente com a análise manual, seja feita a classificação de dados encontrados em arquivos de registros por similaridade. O objetivo é o de diminuir o tempo gasto pelo analista forense na busca por informações distribuídas no arquivo de registros através de seu agrupamento.

O primeiro passo para que se possa adaptar a técnica à análise forense, é o de identificar as possíveis formas de classificação das informações e quais os atributos comuns aos dados envolvidos na análise.

Partiu-se então para o estudo dos tipos de ataques que seriam considerados na pesquisa. Detectou-se que estes ataques seriam:

• ataques de buffer overflow; • ataques de exploração de vulnerabilidades em sistemas web; • ataques de força bruta em senhas.

Os ataques citados somam, de acordo com o (CERT, 2010) o maior volume de incidentes de segurança. Exclui-se da lista os ataques de negação de serviço, os quais na maioria dos incidentes não acarretam em violação de nenhum atributo de segurança além da disponibilidade do serviço.

Nos ataques de buffer overflow, o atacante aproveita-se de uma falha na programação do software servidor de aplicação, fazendo com que uma entrada de dados não validada acarrete na execução de código malicioso no sistema. A operacionalização do ataque utiliza a área de memória reservada para uma entrada de dados e insere uma quantidade maior do que o esperado pelo sistema.

Todo o espaço reservado para variáveis é ocupado pelos dados do atacante, até invadir a área de pilha auxiliar do processo. A área de pilha é responsável pelo armazenamento de dados auxiliares, entre eles, endereços de retorno de subrotinas. Ao alterar o endereço de retorno da subrotina que fez a leitura da entrada de dados explorada, o atacante faz com que o processo execute os comandos inseridos por ele na área de dados. Este tipo de ataque normalmente deixa um rastro nos registros (logs) do servidor explorado e possui características particulares.

Como o atacante precisa entrar com um conjunto de dados de grande volume, estes dados normalmente apresentam caracteres repetidos em sua formação. Nota-se na Figura 7 abaixo o registro de um ataque deste tipo (BOYCE, 2010):

Figura 7: Registro de ataque do tipo buffer overflow (BOYCE, 2010)

Neste exemplo é apresentada uma requisição HTTP a um servidor web, a qual acarreta em um estouro de área de dados (buffer overflow).

É possível então classificar registros de sistemas que possuem um volume de dados considerado “acima do normal” como sendo possíveis evidências de ataques do tipo buffer overflow. O sistema proposto deve, então, buscar por este tipo de registro e agrupá-los de forma a facilitar sua identificação pelo analista. Obviamente que a decisão final, de que o registro se trata de ataque ou não, cabe ao analista forense.

12

Em ataques de exploração de vulnerabilidades de sistemas web, o alvo não é o servidor, porém a aplicação que está em execução nele. Dentre os possíveis ataques, tornam-se mais frequentes os de injeção de comandos (injection). Citam-se dois exemplos deste tipo: SQLInjetction e PHPInjection.

Ambos os ataques também deixam rastros nos registros dos servidores com os comandos executados pelo atacante. Em ambos os casos, os próprios comandos maliciosos ficam registrados no arquivo de logs do servidor. Qualquer registro que contenha um comando SQL ou em linguagem PHP, etc, deve ser classificado e organizado pelo sistema.

No caso de exploração de força bruta, o atacante realiza inúmeras tentativas para obter a senha de um usuário ou sistema. Estas tentativas também ficam registradas nos logs do servidor ao qual o atacante está tentando obter acesso. Os registros de tentativas de acesso frustradas, seguidas ou não do acesso fornecido pelo sistema devem ser organizadas pelo sistema.

Demais registros que devem ser classificados pelo sistema: • comando chmod – alteração de permissões em arquivos e diretórios; • comando delete ou rm – deleção de arquivos; • comando su ou sudo – escalada de privilégios de usuário; • comando adduser – criação de usuário; • registro login failure – registro de tentativa de acesso frustrada; • registro promiscuous mode – acionamento de modo de captura da interface de rede; • comando passwd – alteração de senha de usuário; • comando vi ou nano – editores de texto utilizados para alteração de arquivos de

configurações; • registro overflow – alguns sistemas registros ataques com esta descrição;

4 IMPLEMENTAÇÃO DA SWARM-FORENSE A ferramenta Swarm-Forense foi desenvolvida na linguagem de programação JAVA através da IDE

(Integrated Development Environment) NetBeans 7.0, em um sistema operacional Windows Vista 32bits com a seguinte configuração de hardware: processador Intel Core 2 Duo T8100, 2GB de RAM.

Seu funcionamento consiste em utilizar o algoritmo SACA proposto na seção 2.3 para analisar dois tipos de arquivos logs de servidores Linux: Apache (access.log) e o auth.log. Foram escolhidos estes dois tipos de logs pois são os que mais possuem a possibilidade de registrar um ataque de exploração na autenticação do sistema ou ao servidor HTTP, porém a ferramenta pode ser futuramente expandida para analisar outros tipos de logs.

Inicialmente, foi utilizado o algoritmo SACA em seu estado original. Porém, após alguns testes, foi verificado que o algoritmo não era muito eficiente e que poderia ser melhorado. Foram implementadas então três modificações propostas por Vizine et al. (2005), descritas a seguir:

• Cooling Schedule for kp: refrigeração do kp (constante que influencia na probabilidade de pegar), a cada dez mil passos de formiga, o valor de kp vai caindo geometricamente na razão de 0.98 até atingir um valor mínimo 0.001 que corresponde ao critério de parada do algoritmo, ao invés de utilizar um número de iterações pré-fixado. Esta modificação resulta em comparações mais adequadas e justas, pois tende a convergir para uma melhor solução de agrupamento ao longo das iterações.

• Progressive Vision: visão progressiva onde o campo de visão é independente para cada formiga ou agente, e cada vez que ele percebe uma região com grande densidade (de acordo com um limiar chamado Theta que é pré definido) sua visão aumenta até um valor máximo, que nesta implementação foi utilizado 9x9. Esta alteração supera o problema de que as formigas têm em perceberem agrupamentos maiores ao longo das iterações, caso sua visão seja muito pequena. E se for definida uma visão inicial muito grande o algoritmo se torna ineficiente, pois analisar uma área grande no início do algoritmo, quando ainda não existem grupos formados, implica em analisar mais de um agrupamento ao mesmo tempo.

• Utilização da equação (5) – ao invés da equação (1) – para a probabilidade de a formiga deixar um objeto. Esta modificação foi adotada pois conforme Vizine et al. (2005) o uso

13

desta equação apresentou resultados superiores comparado aos resultados utilizando a equação original proposta por Deneubourg et al. (1991). A equação (5) é uma função inversa do parâmetro kd.

(5)

Além das modificações descritas anteriormente, foram ainda implementadas as seguintes modificações, para enquadrar o algoritmo nesta proposta de análise de logs:

• Tamanho dinâmico da grade: já que o número inicial de objetos não é conhecido, e que a análise da matriz pode ser feita várias vezes com a quantidade de objetos diminuída, a seguinte equação (6) foi adotada para a criação da matriz, onde os tamanhos X e Y da matriz são iguais ao arredondamento da raiz quadrada do número de objetos multiplicado por 10.

(6)

• Número de formigas e tamanho máximo do passo dinâmicos: a quantidade de formigas foi fixada como sendo 40% do número de objetos da grade, e o tamanho máximo do passo foi fixado como sendo igual ao tamanho X e Y da grade. O passo dado por cada formiga é um valor aleatório que vai de um até o número máximo.

• Peso dos atributos: é possível colocar pesos para os atributos de cada objeto, fazendo assim com que o algoritmo, no ato da comparação de dois objetos, leve em maior consideração os atributos que tenham um peso maior. Para isto, no momento da criação do objeto, o valor do atributo é elevado ao valor do peso determinado. Com esta modificação, é possível para o analista modificar a importância de um ou outro atributo, já que o algoritmo tenderá a formar grupos de objetos com atributos semelhantes de peso maior.

• Eliminação de probabilidades menores que 33% para formiga pegar um objeto: se a probabilidade de uma formiga pegar um objeto for menor que 33%, o algoritmo não deixa que esta formiga consiga pegar o objeto, pois a densidade da região deste objeto deve ser razoavelmente alta, ou seja, ele está perto de outros objetos similares.

4.1 Conceitos sobre arquivos logs de autenticação e de acesso (Apache) A ferramenta funciona através da análise de arquivos log de servidores. Logs são arquivos com

registros de eventos ocorridos no sistema de um computador. Cada linha de um log representa um registro de evento ocorrido em um determinado momento. Um arquivo log pode conter centenas de milhares de linhas, dependendo do período que o log registrou e da quantidade de eventos que ocorreram no servidor.

Dependendo do sistema do computador, a forma com que os arquivos log registram cada evento pode ser diferente, mas em geral todos arquivos log contém pelo menos duas informações básicas em cada linha (ou registro): o tempo em que ocorreu o evento, e a informação do que ocorreu.

Em um log de autenticação auth.log, o tempo é dado no formato “MMM dd HH:mm:ss”, ou seja, mês abreviado, seguido do dia, horas no formato 24h, minutos e segundos.

Além do tempo, cada registro do log do servidor de autenticação contém também o processo que gerou o registro (sudo, CRON, groupadd, useradd, etc.). Este processo pode ser importante para o analista, pois dependendo do ataque acontecido, é gerado registros no log com nome de processos específicos. Por isso foi adicionada na ferramenta a possibilidade do analista filtrar o log em busca de registros que contenham apenas o processo desejado.

Por fim, em cada registro existe a informação sobre o evento ocorrido, que é o texto que vem logo após o nome do processo. A Figura 8 apresenta um detalhamento de um registro extraído de um arquivo log

14

de autenticação.

Figura 8: Exemplo de um registro de auth.log

O exemplo anterior é de um tipo de log de autenticação (auth.log). A ferramenta desenvolvida trabalha também com logs de acesso de servidores Apache. Apache é um servidor web, ou seja, servidor que disponibiliza arquivos e páginas para a internet. O formato de um registro de arquivo log de acesso deste servidor, chamado de access.log, é ligeiramente diferente. O formato de log que a ferramenta interpreta é o Combined Log Format (APACHE, 2011).

Cada registro de um log Apache contém um campo IP, que é o endereço IP do computador cliente que requisitou a informação ao servidor. Este endereço é importante para o analista identificar a origem de um possível ataque.

O tempo em um log Apache é dado no formato “dd/MMM/yyyy:HH:mm:ss”, ou seja, o mês vem depois do dia, e contém também o ano, diferentemente de um log de autenticação.

Assim como nos arquivos logs de autenticação, existe também em cada registro a informação do evento. Esta informação pode ser subdividida entre a linha de requisição web do cliente, mais o retorno dado pelo servidor, além de algumas outras informações adicionais. A Figura 9 ilustra cada campo de um log de acesso Apache:

Figura 9: Exemplo de um registro de log de acesso Apache

4.2 Forma de funcionamento da ferramenta O algoritmo de agrupamento que a ferramenta utiliza analisa objetos em uma grade e calcula a

probabilidade de pegar ou soltar um objeto, de acordo com seus atributos e os atributos de cada objeto vizinho. Para isso, foi necessário que a ferramenta transformasse os arquivos log em algo que o algoritmo pudesse interpretar a fim de conseguir analisá-los.

Foi então definido que cada registro de um arquivo log (Figura 8 e Figura 9) fosse considerado como um objeto diferente pelo algoritmo. Assim, cada objeto na grade seria um registro do log analisado, e o algoritmo iria agrupar os registros semelhantes.

Partindo deste princípio, o algoritmo precisa saber quais são os atributos de cada objeto. Os atributos do objeto precisam ser dados em valores numéricos, para que o algoritmo consiga compará-los e saber um objeto ou registro é semelhante a outro, ou não. Assim, foi escolhido que os campos de cada registro seriam atributos ideais a serem analisados, já que todos os registros possuem estes campos.

Portanto, para arquivos log de autenticação auth.log, cada objeto é uma linha de registro do log, e seus atributos são o tempo e a informação. Para arquivos log de servidores Apache, além do tempo e da informação, existe ainda um terceiro atributo que é o endereço IP. A cada registro do arquivo log analisado, a ferramenta cria um novo objeto, e precisa converter os campos do registro em atributos de valores numéricos.

Para transformar o tempo de um registro em um atributo do novo objeto criado, a ferramenta pega a data da linha do registro e a converte em milissegundos, adicionando-o como um atributo do objeto.

Outro atributo do objeto criado é o IP registrado. Todo registro do log de acesso possui um

15

identificador de IP, que é convertido em um valor numérico e adicionado como outro atributo do objeto criado. Para logs auth.log, a linha do registro pode ou não conter um endereço IP: caso possua, também é convertido em um valor numérico e adicionado ao atributo IP. Caso não possua, este atributo possuirá o valor zero no objeto criado.

O segundo atributo a ser adicionado ao novo objeto criado é a informação do registro. Para os logs de autenticação auth.log, esta informação é dividida em quatro partes iguais, e cada parte é convertida caractere para valores numéricos ASCII e adicionada como um atributo diferente do objeto criado.

Para os logs de acesso do servidor Apache (access.log), a parte da informação é subdividida em seis atributos distintos:

• Método HTTP: indica a ação a ser realizada no recurso web solicitado. Determina o que o servidor deve fazer com o URL fornecido pelo cliente.

• Recurso: é a URL requisitada pelo cliente. • Código de retorno: indica ao cliente se sua requisição foi bem sucedida ou não (ex: 404). • Tamanho do objeto: indica a quantidade de bytes retornados ao cliente de acordo com o

recurso solicitado. • Referer: é o site que o cliente informa de onde ter vindo. • User Agent: indica a informação de identificação que o browser do cliente reporta.

Ainda, para os arquivos log de autenticação auth.log, existe o campo referente ao tipo de processo do registro. Caso o tipo de processo seja o mesmo especificado pelo analista na interface da ferramenta, o objeto é criado, caso contrário, o objeto é descartado e não entra para a análise de comparação do algoritmo.

O analista que está utilizando a ferramenta ainda tem a possibilidade de adicionar um filtro por palavras. Assim, o objeto só será finalmente criado, caso o registro que está virando objeto contenha a palavra que o analista especificar na interface da ferramenta.

Após a conversão de todos os registros do arquivo log em objetos, é criada uma grade com o tamanho de acordo com o número de objetos convertidos. Então o algoritmo começa a trabalhar como visto na seção 2.3: os objetos são espalhados randomicamente pela grade, e os agentes começam a comparar os atributos de cada objeto e formar os grupos, até o valor do parâmetro kp atinja seu valor mínimo 0.001.

4.3 Forma de utilização da ferramenta A ferramenta Swarm-Forense deve ser utilizada para encontrar registros suspeitos e incomuns em

um log especificado. Através do agrupamento de registros semelhantes, é possível analisar os registros que se diferem de todos os outros, a fim de encontrar um possível ataque registrado no log. A ferramenta deve ser utilizada da seguinte maneira:

1. Define os valores para kp, kd e alpha, que foram escolhidos inicialmente 0.2, 0.05 e 0.35, respectivamente, sendo os mesmos valores utilizados na maioria das vezes por Vizine et al (2005), e que também obtiveram bons resultados de agrupamentos dos registros de arquivos log na maioria dos casos;

2. Escolhe entre o tipo de arquivo log a ser analisado: Apache ou auth.log;

3. Entre com o caminho do arquivo, clicando no botão “...” e escolhendo o arquivo log correspondente ao tipo definido no item anterior;

4. Defina um período de data, caso queira que a ferramenta analise apenas um período do arquivo log;

5. Se for um tipo de log de autenticação (auth.log), pode-se ainda filtrar por processo que gerou os registros do log, selecionando na lista ou especificando no campo ao lado;

6. Caso queira, é possível colocar um filtro por palavra contida nos registros do log, assim somente serão analisadas as linhas do log que contenham esta palavra;

7. Existem ainda configurações adicionais, como a possibilidade de configurar os pesos de cada atributo dos objetos log. Quanto maior o peso de um atributo, mais dissimilaridade um objeto terá do outro, na comparação deste atributo. Para configurar isto, basta clicar em

16

Configurações.

8. Após feitas todas as configurações, clica-se no botão “Executar” (Figura 10) para que o algoritmo comece a trabalhar;

Figura 10: Tela principal de configuração do programa

9. Alguns segundos depois irá abrir uma nova janela com a matriz de objetos. Nela é possível selecionar uma região para visualizar seu conteúdo no campo abaixo da grade (Figura 11);

10. Caso o analista constate que um ou mais agrupamentos de objetos não são interessantes, ele pode selecionar estes objetos e pressionar a tecla DELETE para que eles sejam excluídos da grade;

11. É possível ainda alterar os valores iniciais de kp, kd e alpha, caso o resultado da matriz não seja satisfatório (pouca ou nenhuma formação de agrupamentos, ou número de agrupamentos muito elevado);

12. Feitas as alterações e exclusões de objetos, o analista pode clicar em Reorganizar para que o algoritmo execute novamente, com os novos parâmetros e sem os objetos excluídos, exibindo a nova composição de objetos da matriz.

Figura 11: Tela de resultado da organização

17

A Figura 11 mostra o resultado de uma análise inicial de um log de um servidor Apache, com as configurações especificadas na Figura 10. Neste caso, foram encontrados 148 registros com estas especificações, o suficiente para a montagem de uma grade de tamanho 38x38. Na grade existem alguns agrupamentos que o algoritmo identificou, sendo que um deles está sendo selecionado (área azul) e exibido na tela de baixo. Estes registros foram agrupados pois continham em sua composição o seguinte trecho: GET /index.php?INTERESSE=welcome.(...).

Ainda existem outros objetos espalhados que o algoritmo não identificou como pertencentes a nenhum grupo específico, e que poderiam representar um registro de ataque.

5 VALIDAÇÃO Para fins de validação da ferramenta Swarm-Forense alguns experimentos foram realizados

inicialmente na busca de registros de ataques. Os primeiros testes não deram o resultado esperado, ou seja, não encontraram os registros que continham os ataques. A ferramenta agrupava os objetos, porém objetos com registros diferentes ficavam no mesmo grupo, ao invés de criar agrupamentos consistentes de objetos semelhantes. Assim, não era possível encontrar um registro de ataque, já que ele ficava normalmente misturado em algum agrupamento na grade.

Em busca de resultados mais satisfatórios, algumas modificações foram feitas na ferramenta até então desenvolvida. Foi modificada a forma de normalização da equação (4) que estava sendo feita de maneira errada, além da adição de mais atributos nos objetos criados a partir dos logs analisados. Outra modificação importante que ajudou na formação de agrupamentos distintos, foi a adição de um determinado peso a cada atributo, assim é possível fazer com que um atributo seja mais importante do que o outro na hora de construir um agrupamento. As demais modificações implementadas estão descritas no começo da seção 4, e após estas implementações a ferramenta apresentou bons resultados, praticamente eliminando o problema anterior de agrupamentos com objetos dissimilares.

Após as melhorias e correções aplicadas na ferramenta, foi feito um teste de agrupamento de um arquivo Apache access.log, que continha 148 registros, sendo um desses registros, um ataque PHPInjection (Figura 12). Os outros registros são acessos normais de clientes requisitando informações no servidor. O tamanho da grade criada é 38x38.

Figura 12: parte do registro do ataque PHPInjection

A Figura 13 mostra o estado da distribuição inicial dos objetos:

Figura 13: grade inicial antes do agrupamento

18

Cada célula na grade acima que possui conteúdo contem um objeto. Nota-se que não existe nenhum grupo de objetos formados ainda, já que eles foram espalhados aleatoriamente pela grade (fase inicial do algoritmo).

Os parâmetros para o teste de agrupamento feito nesta grade são os seguintes: • � = 0,35; • kp = 0,2; • kd = 0,05; • Número do Agentes (criado a partir do número de objetos) : 59 • Tamanho máximo do passo de cada agente (igual ao tamanho da grade): 38

A Figura 14 mostra as configurações de peso colocadas para esta análise:

Figura 14: distribuição dos pesos na análise

A utilização desta configuração de pesos foi escolhida neste caso pois queria-se dar uma maior ênfase no atributo “Recurso”, já que é nele que se encontra a informação da maioria dos ataques. Assim, o algoritmo levará em consideração principalmente este atributo ao construir os agrupamentos, e serão agrupados os objetos que tenham o valor de “Recurso” semelhante.

A Figura 15 mostra o resultado final do agrupamento após todas as iterações:

Figura 15: grade após aplicação do algoritmo da ferramenta

Após a aplicação do algoritmo de agrupamento, formaram-se vários agrupamentos de objetos semelhantes, além de alguns outros objetos espalhados pela grade. Para validar se o resultado foi satisfatório, estes agrupamentos devem conter registros semelhantes, e os registros dissimilares (como o ataque) devem ficar isolados.

A área circundada em tracejado azul na Figura 15 representa um agrupamento, e apenas como exemplo, seu conteúdo é representado pela Figura 16. Os registros deste agrupamento são acessos de um usuário comum, e não representam qualquer ameaça.

19

Figura 16: conteúdo de um agrupamento

Os registros deste agrupamento contêm atributos similares, logo foi agrupado corretamente. Este tipo de agrupamento normalmente são acessos rotineiros de usuários normais. Os objetos que se encontram em agrupamentos menores ou sozinhos são os objetos dissimilares ou incomuns. São estes objetos que o analista deve buscar.

A célula que está apontada pela seta vermelha na Figura 15 contém o objeto que representa o registro de ataque do log, logo o algoritmo conseguiu identificar corretamente este registro como sendo dissimilar a todos os outros. Este é o registro que é representado pela Figura 12.

Com este exemplo de teste, conclui-se que a ferramenta foi bem sucedida em identificar e separar o ataque ocorrido no log, e agrupar os outros tipos de registros semelhantes.

6 CONCLUSÕES A ferramenta Swarm-Forense visa ampliar o ferramental de auxílio na análise forense

computacional. Apesar da existência de diversas aplicações com este intuito, nota-se ainda a necessidade de uma busca manual pelas informações relevantes que formam as evidências das ações maliciosas de um atacante.

Para que se possa agilizar a análise, a utilização de técnicas de inteligência artificial e mais especificamente nas soluções de swarm intelligence se mostra como uma alternativa eficiente.

A swarm intelligence apresenta paralelismo em suas ações, organização e agilidade em um processo desgastante para o analista. A análise forense deve focar o analista principalmente na interpretação dos dados e não em sua busca. Nota-se no entanto que atualmente uma grande parcela (a maior) de tempo gasto nas análises fica concentrada em buscas textuais e por arquivos distribuídos nos dispositivos de armazenamento, os quais possuem cada vez mais capacidade. Este aumento de capacidade acaba por gerar um aumento no tempo gasto para a análise.

O sistema proposto surge como uma forma de inverter esta situação através da busca automatizada das evidências mais comumente deixadas por um ataque, em sua classificação e disponibilização ao analista de forma eficiente e prática.

Espera-se a sua distribuição, aplicação, e aperfeiçoamento contínuo, adicionando-se novas formas de busca de evidências e bases de informações sobre ataques, como por exemplo a análise de mais tipos de logs de servidores, melhorias no algoritmo de agrupamento, etc.

REFERÊNCIAS APACHE. Log Files–Apache HTTP Server. Disponível em: < http://httpd.apache.org/docs/2.0/logs.html> . Acesso em: 29 nov. 2011.

BENI, Gerardo; WANG, Jing. Swarm Intelligence in Cellular Robotic Systems, Proceed. NATO Advanced Workshop on Robots and Biological Systems, Tuscany, Italy, June 26–30 (1989)

BONABEAU, Eric; DORIGO, Marco; THERAULAZ, Guy. Swarm intelligence — from natural to artificial systems. New York: Oxford University Press. 1999.

BOYCE, Roberto. Malware FAQ: Code Red - ISS Buffer Overflow. Disponível em <http://www.sans.org/security-resources/malwarefaq/code-red.php>. Acesso em 31 mai. 2010.

20

CARRIER, Brian. The Sleuth Kit. Disponível em: <http://www.sleuthkit.org/>. Acesso em: 18 abr. 2010. CERT. Estatísticas dos Incidentes Reportados no CERT.br. Disponível em <http://www.cert.br/stats/incidentes/>. Acesso em 18 mai. 2010.

DENEUBOURG, Jean-Louis; GOSS, Simon; FRANKS, Nigel R.; SENDOVA-FRANKS, Ana B.; DETRAIN, Claire; CHRÉTIEN, L. In: The Dynamics of Collective Sorting: Robot-Like Ant and Ant-Like Robot, 1991, London. Proceedings… London: First International Conference On the Simulation of Adaptive Behavior: From Animals to Animats, 1991.

DORIGO, Marco; GAMBARDELLA, Luca Maria; BIRATTARI, Mauro; MARTINOLI, Alcherio; MARTINOLI, Riccardo Poli; STÜTZLE, Thomas. In: Ant Colony Optimization and Swarm Intelligence, (2006), Berlin. Proceedings… Berlin: 5th International Workshop, 2006. FARMER, Dan; VENEMA, Wietse; Forensic Discovery. Upper Saddle River: Addison-Wesley Professional Computing Series. 2005

GARNIER, Simon; JACQUES, Gautrais; THERAULAZ, Guy. The biological principles of swarm intelligence. Swarm Intelligence, New York, v.1, n.1, p.3-31, feb. 2007.

HANDL, Julia. Ant-based methods for tasks of clustering and topographic mapping: extensions, analysis and comparison with alternative techniques. Masters Thesis, Universität Erlangen-Nürnberg, Erlangen, Germany, 2003.

HÖLLDOBLER, Bert; WILSON, Edward O. The Multiple Recruitment Systems of the African Weaver ant Oecophylla longinoda (Latreille). Berlin: Springer Berlin / Heidelberg. 1978

LAURO, André Luís. Agrupamento de dados utilizando algoritmo de colônia de formigas. Dissertação de Mestrado, Universidade Federal do Rio de Janeiro, Rio de Janeiro, Brasil, 2008.

LUMER, Erik D.; FAIETA, Baldo. In: Diversity and Adaptation in Populations of Clustering Ants, 1994, Brighton. Proceedings… Brighton: Third International Conference On the Simulation of Adaptive Behavior: From Animals to Animats 3, 1994.

THERAULAZ, Guy; BONABEAU, Eric; NICOLIS, Stamatios. C.; SOLE, Ricard V.; FOURCASSIÉ, Vincent; BLANCO, Shéphane; FOURNIER, Richard; JOLY, Jean-Louis; FERNÁNDEZ, Pau; GRIMAL, Anne; DALLE, Patrice; DENEUBOURG, Jean-Louis. In: Spatial patterns in ant colonies, 2002, USA. Proceedings… USA: The National Academy of Sciences, 2002.

VIZINE, André Luiz, CASTRO, Leandro N. de, HRUSCHKA, Eduardo R., GUDWIN, Ricardo .R. Towards Improving Clustering Ant: An Adaptative Ant Clustering Algorithm. Informatica .29:143-154, 2005.

VIZINE, André Luiz, Busca na web e agrupamento de textos usando computação inspirada na biologia. Dissertação de Mestrado, UNICAMP, Campinas, Brasil, 2007.