Vous êtes sur la page 1sur 42

FACULDADE DE ARACRUZ

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO E INFORMÁTICA

POLÍBIO ÍCARO MORO CAPO

SISTEMA MULTIAGENTE DE VERIFICAÇÃO, NOTIFICAÇÃO E REAÇÃO CONTRA APLICATIVOS SUSPEITOS

ARACRUZ

2008

POLÍBIO ÍCARO MORO CAPO

SISTEMA MULTIAGENTE DE VERIFICAÇÃO, NOTIFICAÇÃO E REAÇÃO CONTRA APLICATIVOS SUSPEITOS

Trabalho de Conclusão de Curso apresentado ao Departamento de Ciência da Computação e Informática da Faculdade de Aracruz – FAACZ, como requisito parcial para obtenção do grau de Bacharel em Ciência da Computação.

Orientador: Ms. Prof. Célio Proliciano Maioli.

ARACRUZ

2008

Dedico este trabalho aos meus pais pelo exemplo e ao meu amor Edvana da Silva Silveira.

A todos que me apoiaram e estiveram ao

meu lado para conclusão deste trabalho.

A

dedicação constantes.

minha

família

pelo

exemplo

e

A minha namorada e futura esposa Edvana da Silva Silveira por ser minha inspiração e sempre estar me dando forças.

A todos os Professores.

RESUMO

Existem diversas técnicas de ataques a computadores, podem ser ataques externos, pela Internet, ou internos causados por usuários legítimos do sistema. Usuários mal informados ou mal intencionados podem causar grandes prejuízos; podem expor o sistema a senhas fracas, fornecer sua senha a terceiros, utilizar programas de origem duvidosa. Dado o potencial de um usuário executar um software de origem duvidosa, ou até mesmo com intuito de roubar informações, este trabalho apresenta um sistema modular para identificação, notificação e reação contra aplicativos suspeitos em execução, adotando a tecnologia de agentes móveis para o seu desenvolvimento. Utilizando o método de Pesquisa Explicativa. Do ponto de vista dos procedimentos técnicos, a Pesquisa Bibliográfica e Experimental. A arquitetura modular para desenvolvimento, trouxe benefícios para o sistema desenvolvido, como fácil configuração, escalabilidade e capacidade de extensão. Através dos resultados gerados pelo sistema, o administrador pode gerar relatórios sobre o comportamento dos usuários atribuindo a estes as devidas responsabilidades, além de propor melhorias na gestão de incidentes de segurança e na política de segurança conforme norma ISO/IEC 27001:2005.

Palavras-chave: Agentes Móveis. Segurança Computacional. Aglets.

LISTA DE FIGURAS

Figura 1 - Comparativo entre Ambientes de Desenvolvimento

16

Figura 2 - Servidor Tahiti do Ambiente Aglets da IBM

16

Figura 3 - Arquitetura em Camadas proposta por Bernardes

21

Figura 4 - Adaptação da Arquitetura Proposta por Bernardes

22

Figura 5 - Representação dos Elementos do DFD

23

Figura 6 - Identificação de Serviços Não Permitidos

24

Figura 7 - Rede de Computadores Utilizada

26

Figura 8 - Interface do Agente de Controle

28

Figura 9 - Tela Inicial do Editor de Perfil

29

Figura 10 - Novo Perfil

30

Figura 11 - Edição de Perfil Existente

31

Figura 12 - Notificação ao Administrador

34

Figura 13 - Mensagem ao usuário

35

Figura 14 - Mensagem ao administrador

36

SUMÁRIO

1INTRODUÇÃO

8

2

SEGURANÇA DA INFORMAÇÃO E ATAQUES

10

2.1 NORMA ISO/IEC 27001:2005

10

2.2 ATAQUES

11

3

AGENTES

13

3.1 AGENTES MÓVEIS

13

3.2 AMBIENTES SERVIDORES DE AGENTES MÓVEIS

14

3.3 AGENTES MÓVEIS E PROBLEMAS DE SEGURANÇA

17

4

SISTEMAS BASEADOS EM AGENTES MÓVEIS

19

4.1 VANTAGENS DA UTILIZAÇÃO DE AGENTES MÓVEIS

19

4.2 ARQUITETURA DO SISTEMA PROPOSTO

21

4.3 CENÁRIO DE IDENTIFICAÇÃO DE SERVIÇOS NÃO PERMITIDOS

23

5

FERRAMENTAS PARA IMPLEMENTAÇÃO DO PROTÓTIPO

25

5.1 LINGUAGEM DE PROGRAMAÇÃO E COMPILADOR

25

5.2 REDE DE COMPUTADORES UTILIZADA

26

6

IMPLEMENTAÇÃO DO PROTÓTIPO

27

6.1

AGENTE DE CONTROLE

27

6.2

AGENTE DA CAMADA DE VIGILÂNCIA

32

6.3 AGENTE DA CAMADA DE TOMADA DE DECISÃO

33

6.4 AGENTE DA CAMADA DE NOTIFICAÇÃO

33

6.5 AGENTE DA CAMADA DE REAÇÃO

35

7

CONCLUSÕES E TRABALHOS FUTUROS

37

7.1 CONCLUSÃO

37

7.2 TRABALHOS FUTUROS

38

8 REFERÊNCIAS

39

1 INTRODUÇÃO

Os estudos oriundos da Ciência da Computação podem ser aplicados em qualquer área do conhecimento humano em que seja possível definir métodos de resolução de problemas baseados em repetições previamente observadas. A formação abrange a compreensão do campo científico da computação, a sua aplicação na solução de problemas da sociedade e no desenvolvimento de conhecimento e tecnologias que permitam a evolução da computação.

Na computação, raramente vemos computadores trabalhando sozinhos. O mundo está interligado por redes de computadores, uma rede de computadores consiste de dois ou mais computadores e outros dispositivos conectados entre si.

Visando o aproveitamento dos recursos para desenvolver as tarefas da instituição e a segurança do ambiente, alguns administradores impõem limitações quanto à execução de aplicativos. Apesar das limitações impostas em algumas redes, usuários podem executar aplicativos diretamente de pen drive, cds. Além disso, em ambientes sem administração de redes centralizada ou onde existam muitos usuários com privilégios de administradores, aumenta a possibilidade de programas serem executados sem as devidas licenças pondo em risco os recursos computacionais da organização, deixando a rede vulnerável a ataques.

Ataques ocorrem onde existem falhas, segundo Bernardes (1999), falhas podem ser atribuídas a três causas principais: softwares, administradores e usuários. Usuários mal informados ou mal intencionados podem causar grandes prejuízos. Podem expor o sistema através de senhas fracas, podem fornecer sua senha a terceiros,

utilizar programas de origem duvidosa, etc. Segundo Lobo (2008), “[

42% das

grandes empresas assumem que os ataques internos são de grande preocupação [

]

Dado o potencial de um usuário executar um software de origem duvidosa, ou até mesmo com intuito de roubar informações, este projeto tem como objetivo geral desenvolver um sistema multiagente de verificação, notificação e reação contra aplicativos suspeitos, adotando a tecnologia de agentes para o seu desenvolvimento, especificamente agentes móveis. Este sistema visa mitigar

problemas causados por usuários que, acidental ou intencionalmente, executam aplicativos não autorizados e acabam causando algum dano à organização.

A tecnologia de agentes móveis possui algumas vantagens sobre sistemas centralizados. Segundo Bernardes (1999), fácil configuração, eficiência, capacidade de extensão, resistência à subversão e escalabilidade, são algumas destas vantagens.

Tendo em vista o objetivo deste projeto, adota-se o método de Pesquisa Explicativa. Do ponto de vista dos procedimentos técnicos, a Pesquisa Bibliográfica e Experimental, conforme descrição abaixo.

Segundo Gil (1991 apud SILVA e MENEZES, 2001) a pesquisa explicativa visa identificar os fatores que determinam ou contribuem para a ocorrência dos fenômenos. Aprofunda o conhecimento da realidade porque explica a razão, o “por que” das coisas.

Do ponto de vista dos procedimentos técnicos (GIL, 1991 apud SILVA e MENEZES,

2001):

Pesquisa Bibliográfica: quando elaborada a partir de material já publicado, constituído principalmente de livros, artigos de periódicos e atualmente com material disponibilizado na Internet.

Pesquisa Experimental: quando se determina um objeto de estudo, selecionam-se as variáveis que seriam capazes de influenciá-lo, definem-se as formas de controle e de observação dos efeitos que a variável produz no objeto.

O desenvolvimento deste trabalho está dividido nas seguintes seções: Introdução, Segurança da Informação e Ataques, Agentes, Sistemas Baseados em agentes móveis, Ferramentas para Implementação do Protótipo, Implementação do Protótipo, Conclusões e Trabalhos Futuros.

Através dos resultados gerados pelo sistema, o administrador pode gerar relatórios sobre o comportamento dos usuários atribuindo a estes as devidas responsabilidades, além de propor melhorias na gestão de incidentes de segurança e na política de segurança conforme norma ISO/IEC 27001:2005.

2 SEGURANÇA DA INFORMAÇÃO E ATAQUES

Segundo Bernardes (1999), a segurança está relacionada à necessidade de proteção contra o acesso ou manipulação, intencional ou não, de informações confidenciais por elementos não autorizados, e a utilização não autorizada do computador ou de seus periféricos.

2.1 NORMA ISO/IEC 27001:2005

A norma ISO/IEC 27001 é um padrão para sistema de gerência da segurança da informação (ISMS - Information Security Management System) publicado em outubro de 2005 pelo International Organization for Standardization e pelo International Electrotechnical Commision. Seu nome completo é ISO/IEC 27001:2005, mas conhecido como "ISO 27001". Na família 27000 são abordados novos segmentos sob normas que variam de 27000 a 27009 (ISO/IEC-27001, 2005).

A documentação da ISO/IEC-27001:2005 aborda 11 tópicos, dos quais se adota os que apóiam o sistema proposto:

1. política de segurança. Descreve a importância e relaciona os principais assuntos que devem ser abordados numa política de segurança.

2. segurança relacionada com as pessoas. Tem como enfoque o risco decorrente de atos intencionais ou acidentais feitos por pessoas. Também são abordados aspectos como a inclusão de responsabilidades relativas à segurança na descrição dos cargos, a forma de contratação e a formação em assuntos relacionados com a segurança.

informação. O outro é a gestão de incidentes de segurança da informação e melhorias.

O sistema contribuirá para a adequação dos usuários com a política de segurança, um exemplo seria um cenário no qual se bloqueia a execução de um determinado software não condizente com a política da organização.

No item 2, em casos onde um usuário executa um aplicativo não permitido, acidental ou intencionalmente, o sistema informará ao administrador quem é este usuário, quais são os aplicativos, atribuindo assim a responsabilidade ao usuário.

Quanto à gestão de incidentes, está relacionado com um dos resultados do sistema que é a notificação de fragilidades visando manter o administrador informado sobre as falhas. A gestão de incidentes pode ser feita com base nos arquivos de logs gerados pelo sistema, com essas informações à disposição melhorias podem ser realizadas na segurança.

Uma vez que a organização não adote medidas de segurança, temos um cenário de risco. Bernardes (1999) afirma que semanalmente são divulgados relatórios com novos problemas de segurança nos mais variados sistemas operacionais e softwares. Segundo o autor, existe certa demora no lançamento de atualizações de segurança e uma grande dificuldade dos administradores se manterem constantemente atualizados, portanto, tem-se um cenário com redes potencialmente vulneráveis a ataques.

2.2 ATAQUES

Existem diversas técnicas de ataques a computadores, podem ser ataques externos, pela Internet, ou internos causados por usuários legítimos do sistema.

Tavares (2002), afirma que se considerarmos as diversas formas de ataques, elas geralmente resultam em violações de quatro propriedades de segurança:

disponibilidade, confidencialidade, integridade e controle. Ele as descreve da seguinte forma:

Violação da confidencialidade - consiste no acesso aos dados sem autorização (implícita ou explicita) do proprietário da informação;

Violação da Integridade: Um ataque causa uma violação de integridade se permitir que o estado do sistema ou de qualquer outro dado residindo ou trafegando no sistema seja alterado ilegalmente;

Violação da Disponibilidade - um ataque causa uma violação de disponibilidade se ele não permitir que um usuário autorizado (humano ou máquina) acesse um recurso particular de sistema quando, onde, e na forma que for necessário;

Violação do Controle - um ataque causa uma violação de controle se ele garantir privilégios que violem a política de controle de acesso do sistema. Estes privilégios habilitam uma violação de confidencialidade, integridade ou disponibilidade subseqüente.

Conforme Tavares (2002), alguns tipos de ataques são reportados freqüentemente, são eles: ataques de sondagem (scanning attacks), ataques de comprometimento de recursos (Denial of Service attacks – DoS, conhecido como negação de serviço), e ataques de penetração de sistema. Estes ataques podem ser lançados localmente ou remotamente, utilizando uma rede para acessar o alvo.

Ataques ocorrem onde existir falhas. Segundo Bernardes (1999), falhas podem ser atribuídas a três causas principais: softwares, administradores e usuários.

softwares: Os softwares em execução no computador podem apresentar falhas que podem ser exploradas por atacantes. Softwares de origem duvidosa podem conter códigos maliciosos que roubam informações;

administradores: As falhas mais comuns oriundas de administradores são: a não instalação de sistemas de proteção e auditoria, não aplicação de patches de problemas conhecidos e não orientar os usuários;

usuários: Usuários mal informados ou mal intencionados podem causar grandes prejuízos. Podem expor o sistema através de senhas fracas, podem fornecer sua senha a terceiros, utilizar programas de origem duvidosa, etc.

Dado o potencial de um usuário executar um software de origem duvidosa, ou até mesmo com intuito de roubar informações, este projeto apresenta uma ferramenta de auxílio para identificação destes programas, adotando a tecnologia de agentes para o seu desenvolvimento.

3 AGENTES

Conforme o Dicionário Eletrônico Aurélio, versão 5.0, da Língua Portuguesa, a definição de agente consiste em “Pessoa especializada que trata de negócio por conta alheia, ou que representa os interesses de seus clientes”.

Existem várias definições de agentes e este problema deve-se, em parte, à falta de coordenação entre as diversas pesquisas paralelas que foram feitas ao longo dos anos. Por outro lado, o termo agente não é propriedade dos pesquisadores da área, sendo usado diariamente no mundo real (agente de viagem, agente econômico, agente de seguros, etc.). (REAMI, 1998 apud BERNARDES, 1999).

Segundo Nwana (1996 apud BERNARDES, 1999), existe tanta chance de se atingir um consenso sobre a definição de agente, quanto dos pesquisadores de inteligência artificial têm de chegar sobre uma definição da mesma, ou seja, nenhuma.

Neste trabalho será adotada a definição de Nagamuta (1999) de que, “Agente é uma entidade de software (um programa) que executa um certo conjunto de tarefas em nome do usuário que o criou.” (NAGAMUTA, 1999).

3.1 AGENTES MÓVEIS

Agentes móveis podem ser definidos como:

Agentes que possuem a capacidade de mover-se através da rede. Devem possuir habilidades para executar operações em qualquer máquina preparada para recebê-los dentro da rede, independente da plataforma utilizada, o que motiva a utilização da linguagem Java na implementação dos agentes móveis (PEREIRA FILHO, 2001).

Em modelos baseados em agentes móveis, um agente, que é enviado por um usuário, é responsável por realizar a tarefa desejada, sendo que o agente irá migrar para o servidor interagindo com ele localmente e em seguida retornar os resultados obtidos ao usuário (OYAMADA & ITO, 1998, apud PEREIRA FILHO).

Segundo Pereira Filho (2001) os agentes móveis são constituídos de código, estado e atributos, onde o código de um agente móvel é o programa que define seu comportamento. Este código pode ser escrito em uma linguagem interpretada independente de plataforma, permitindo assim a mobilidade do agente. O estado do agente é utilizado para que ele possa retomar suas atividades a partir do ponto onde havia parado após se mover de um servidor para outro, pois o estado mantém guardado o ponto de execução e as variáveis necessárias para a realização das tarefas. Já atributos são utilizados para descrever o agente para seus servidores. Estes atributos incluem um identificador único de cada agente, um endereço para onde serão enviados os resultados intermediários, mensagens de erro, o tempo e a história do agente. Além disso, os atributos impõem limitações na mobilidade dos agentes.

Pereira Filho (2001) afirma que os ambientes servidores de agente têm que oferecer todo o suporte para os agentes realizarem suas tarefas. Para que isto ocorra, os agentes devem ser capazes de interagir com os servidores, se comunicarem com outros agentes e moverem-se através da rede.

3.2 AMBIENTES SERVIDORES DE AGENTES MÓVEIS

Pereira Filho (2001), avalia diversos ambientes de agentes móveis em seu trabalho. Conforme o autor, foram encontrados diversos ambientes servidores, comerciais e acadêmicos, implementados em C++, TCL, PERL, LISP e Java. Ele apresenta alguns kits de desenvolvimento em linguagem Java. De forma resumida são eles:

Aglet Software Development Kit (IBM, 1998 apud PEREIRA FILHO, 2001) – Aglets são objetos Java que podem mover-se de um host para outro na rede. Em cada host deve haver o servidor de Aglets denominado Tahiti. O Tahiti é uma aplicação Java que permite ao usuário receber, gerenciar, e enviar Aglets para outros computadores que também estão executando o servidor Tahiti.

Concórdia (MITSUBISHI, 1997 apud PEREIRA FILHO, 2001) - concebido pela Mitsubishi constitui-se de um framework para o desenvolvimento e gerenciamento de agentes móveis podendo ser utilizado por qualquer dispositivo que suporte Java. O sistema Concórdia é composto de uma JVM (Máquina Virtual Java), o Concórdia Server e pelo menos um agente e um nó da rede. Normalmente, o sistema Concórdia consiste em múltiplas máquinas em uma rede, cada uma com uma JVM, Concórdia Server e agentes móveis.

Grasshopper (IKV, 99a apud PEREIRA FILHO, 2001) – Grasshopper é completamente desenvolvido em Java. Desta forma, o ambiente pode ser instalado em qualquer computador que possui uma Máquina Virtual Java. Além disso, oferece um suporte a segurança e facilidades para gerenciamento. A proteção oferecida é aplicável aos agentes e ao ambiente (contra agentes maliciosos).

Gossip e Tryllian Agent Toolkit (TRYLLIAN, 1999 apud PEREIRA FILHO, 2001) – Na Tryllian, desenvolvedora do Gossip, a definição de um agente é ”assistente inteligente móvel”. Todas as informações do usuário, como interesses e preferências, são armazenadas em um perfil do usuário. Os agentes criados pela Tryllian demonstram certo nível de inteligência. Eles

utilizam um laço de sense-reason-act. O laço sense-reason-act é um mecanismo que controla a interação entre uma entidade inteligente e um ambiente dinâmico ou desconhecido.

Sense: observa o ambiente e o modela internamente. Reason: atualiza o estado interno e determina uma ação baseada no estado do ambiente e no seu estado interno. Act: Realiza a ação proposta.

A Figura 1 demonstra alguns dos resultados obtidos por Pereira Filho (2001), na qual ele avalia os ambientes nos quesitos, segurança, desempenho e documentação.

nos quesitos, segurança, desempenho e documentação. Figura 1 – Comparativo entre Ambientes de Desenvolvimento.

Figura 1 – Comparativo entre Ambientes de Desenvolvimento. Fonte: Pereira Filho (2001).

Dentre as diversas plataformas de agentes móveis apresentadas na Figura 1, podemos notar que a plataforma Aglets (ASDK) da IBM tem um desempenho relativamente superior nos quesitos segurança, desempenho e obteve uma média geral de muito bom a ótimo, o que a torna a escolha adequada para o desenvolvimento do projeto. A Figura 2 apresenta a interface do ambiente Tahiti, servidor dos agentes Aglets.

Figura 2 – Servidor Tahiti do Ambiente Aglets da IBM. Além dos ambientes servidores, uma

Figura 2 – Servidor Tahiti do Ambiente Aglets da IBM.

Além dos ambientes servidores, uma outra função de extrema importância dos sistemas de agentes é a de garantir a segurança, tanto dos servidores quanto dos agentes neles hospedados. A segurança é um aspecto crítico no processo de execução de código móvel e em particular na execução de agentes móveis.

3.3 AGENTES MÓVEIS E PROBLEMAS DE SEGURANÇA

Sander e Tschudin (apud BERNARDES, 1999) fornecem um exemplo interessante de problema de segurança que pode ocorrer durante uma busca por preços de passagem feita por um agente de compras. Suponha que o objetivo programado pelo usuário seja visitar os servidores de várias empresas aéreas, encontrar um vôo disponível e, uma vez determinada a melhor oferta, agendar o vôo. Alguns ataques possíveis são:

Ao chegar a um servidor A (servidor malicioso), o estado e código do agente são alterados de forma que ele esqueça os outros servidores já visitados e opte pela oferta do servidor A;

Alterar o estado interno do agente e roubar toda moeda eletrônica que ele esteja levando;

Agente resolve agendar o vôo e, portanto, precisa assinar digitalmente com sua chave-privada: a chave-privada é roubada.

De forma geral, os problemas mais preocupantes são: proteger um host de um agente mal intencionado e proteger um agente de um host mal intencionado. O primeiro problema pode ser tratado através de técnicas convencionais como listas de controle de acesso e autenticação. Por sua vez, é amplamente aceito que não existe uma solução que previna a ocorrência do segundo problema, a menos que haja hardware confiável e a prova de adulteração (CHESS et. al., 1995 apud BERNARDES, 1999).

Diversas pesquisas têm sido feitas com intuito de criar ambientes de agentes que possam garantir um mínimo de segurança. Uma delas é o trabalho de Uto (2003), o qual descreve diversas formas de segurança voltadas a agentes móveis.

4 SISTEMAS BASEADOS EM AGENTES MÓVEIS

A tecnologia de agentes vem sendo aplicada academicamente nos mais diversos campos, principalmente em inteligência artificial, sistemas distribuídos e engenharia de software (PEREIRA FILHO, 2001).

No desenvolvimento de sistemas, a tecnologia de agentes pode ser aplicada nas seguintes áreas (AGENTBUILDER, 2003 apud KNYCHALA NETO, 2003):

automação de processos e workflow;

comércio eletrônico;

solução de problemas distribuídos;

ensino Colaborativo;

aplicação de Internet.

Além das aplicações citadas por Knychala Neto, diversos autores como Bernardes (1999), Pereira Filho (2001) e Tavares (2002), propõem a utilização voltada à segurança computacional, citando algumas vantagens sobre abordagens centralizadas.

4.1 VANTAGENS DA UTILIZAÇÃO DE AGENTES MÓVEIS

Tavares (2002) diz que em um sistema centralizado a análise dos dados é realizada em um número fixo de lugares, independente da quantidade de máquinas sendo monitoradas. Segundo o autor em um sistema distribuído (neste caso, agentes móveis) a análise dos dados é realizada em um número de posições proporcional ao número de máquinas que estão sendo monitoradas.

Conforme Bernardes (1999) uma abordagem centraliza apresenta alguns problemas práticos, dentre eles, uma preocupação diz respeito à tolerância à falhas, uma vez que um sistema centralizado apresenta-se como um único ponto de falha e ataques. Consequentemente, metodologias de ataques, como, ataques Denial of Service, são proferidos a máquina que hospeda o sistema e comprometem por completo a integridade do sistema.

Bernardes (1999) destaca algumas vantagens de sistemas baseados em agentes móveis sobre sistemas centralizados:

fácil configuração - uma vez que é possível ter uma série de pequenos agentes especializados em tarefas específicas de detecção, o sistema pode ser configurado da forma mais adequada para cada caso; a adição e remoção de agentes do sistema são facilitadas;

eficiência - agentes podem ser treinados previamente e otimizados para que realizem suas tarefas de maneira a gerar a menor sobrecarga possível no sistema;

capacidade de extensão - um sistema de agentes pode ser facilmente modificado para operar em rede e permitir migração para rastrear comportamentos anômalos através da rede, ou mover para máquinas onde eles possam ser mais úteis;

resistência à subversão: caso um sistema de defesa seja subvertido, ele poderá dar a falsa sensação de segurança. Entretanto, com agentes móveis, isto se torna mais difícil, pois os conhecimentos adquiridos de um agente não fornecem o conhecimento das operações de outros, visto que eles desempenham funções diferentes;

escalabilidade: para atuar em sistemas maiores, basta adicionar mais agentes e aumentar sua diversidade.

Tendo em vista os aspectos citados acima, este projeto apresenta a proposta de uma abordagem modular baseada em agentes móveis para o desenvolvimento de um Sistema Multiagente de Verificação, Notificação e Reação contra aplicativos suspeitos, em execução no ambiente de rede.

4.2 ARQUITETURA DO SISTEMA PROPOSTO

Uma arquitetura para a introdução de agentes móveis em Sistemas Detecção de Intrusão foi proposta por Bernardes (1999) e é apresentada na Figura 3.

proposta por Bernardes (1999) e é apresentada na Figura 3. Figura 3 – Arquitetura em Camadas

Figura 3 – Arquitetura em Camadas proposta por Bernardes. Fonte: Bernardes (1999).

As camadas são numeradas a partir da camada de Vigilância (camada 1), e cada uma delas representa um grupo de tarefas específicas desempenhadas por agentes especializados nas funções desta camada. Através do mecanismo de troca de mensagens, um agente em uma camada aciona um ou mais agentes em uma camada superior. Em outras palavras, a camada N utiliza os serviços da camada N-1, desempenha suas funções e fornece serviços para a camada N+1 (BERNARDES, 1999).

Com base na arquitetura apresentada por Bernardes, algumas modificações foram realizadas para desenvolvimento do sistema proposto, conforme Figura 4.

para desenvolvimento do sistema proposto, conforme Figura 4. Figura 4 – Adaptação da Arquitetura Proposta por

Figura 4 – Adaptação da Arquitetura Proposta por Bernardes.

Como visto na Figura 3 os agentes da camada de Notificação se comunicavam com

os da camada 4 (Reação), esta comunicação foi retirada visando dar maior controle

ao responsável pela rede, uma vez que este decide a melhor maneira de sanar o problema identificado.

A introdução de um agente de controle se deu em virtude da necessidade de

gerenciar o envio e recebimento dos agentes, diminuindo o trabalho do administrador em gerenciar os agentes de vigilância e visualização dos resultados.

A nova arquitetura pode ser descrita, de forma mais específica, da seguinte maneira:

Agente de Controle - controla o envio e recebimento dos agentes. É a interface entre o administrador da rede e os agentes, possibilita a visualização dos resultados;

Agentes de Vigilância - responsáveis por verificar os possíveis serviços em execução não permitidos a determinado usuário, os mesmos se

comunicam através de mensagens com os Agentes de Tomada de Decisão;

Agentes de Tomada de Decisão - analisa os resultados do agente de vigilância e compara com o perfil de usuário, detectando possíveis serviços suspeitos, uma vez identificados serão enviadas mensagens aos Agentes de Notificação;

Agentes de Notificação - coletam os resultados dos Agentes de Tomada de Decisão e notificam o administrador da rede;

Agentes de Reação - com base nos resultados dos Agentes de Notificação o administrador solicita uma reação, neste caso, fechar o processo não permitido.

4.3 CENÁRIO DE IDENTIFICAÇÃO DE SERVIÇOS NÃO PERMITIDOS

No processo de modelagem torna-se interessante a representação do cenário de execução do sistema. Para essa representação, utiliza-se uma ferramenta lógica conhecida como Diagrama de Fluxo de Dados (DFD), por ser uma ferramenta simples, de fácil entendimento e bastante utilizada na modelagem de sistemas.

A Figura 5 apresenta os símbolos utilizados e sua representação neste contexto.

Figura 5 – Representação dos Elementos do DFD. Fonte: Bernardes (1999). Visando sua compreensão e

Figura 5 – Representação dos Elementos do DFD. Fonte: Bernardes (1999).

Visando sua compreensão e visualização do relacionamento entre as camadas da arquitetura proposta, a modelagem do cenário de identificação de serviços não autorizados é apresentada conforme Figura 6.

serviços não autorizados é apresentada conforme Figura 6. Figura 6 – Identificação de Serviços Não Permitidos.

Figura 6 – Identificação de Serviços Não Permitidos.

Este sistema consiste de um conjunto de pequenos processos (agentes) que podem agir independentemente no ambiente. Eles serão desenvolvidos para moverem-se

pelo ambiente (rede de computadores), observarem os comportamentos dos aplicativos em execução, cooperarem uns com os outros via passagem de mensagens, notificarem quando uma ação for considerada suspeita e, se necessário, executar uma reação.

5 FERRAMENTAS PARA IMPLEMENTAÇÃO DO PROTÓTIPO

Uma vez definidos o ambiente servidor de agentes e a arquitetura, e modelado o cenário de execução, devemos especificar as tecnologias utilizadas, como linguagem de programação, compilador para linguagem e definir o ambiente de rede.

5.1 LINGUAGEM DE PROGRAMAÇÃO E COMPILADOR

Conforme visto na seção 3.2, o ambiente servidor de agentes adotado, Tahiti, utiliza a linguagem Java como padrão. Isto torna Java a linguagem adequada para desenvolvimento do sistema proposto.

O compilador Java traduz programas-fonte Java em um código intermediário e independente da plataforma, chamado Java Byte Code, que é interpretado por uma Java Virtual Machine (JVM), o que torna a linguagem independente da plataforma (Windows, Linux, Mac OS, etc) sendo necessário apenas a JVM adequada ao seu sistema operacional.

Existem diversos IDEs (Integrated Development Environment), ambientes integrados para desenvolvimento de software em Java, entre eles foram testados o Eclipse, versão 3.4, e o NetBeans, versão 5.5.1. O ambiente adotado para desenvolvimento do sistema foi o NetBeans, pois para desenvolvimento dos agentes o compilador atendeu de forma satisfatória. Principalmente quanto a interface, este ambiente nos deu maior flexibilidade e facilidade para desenvolvimento da interface do sistema.

5.2 REDE DE COMPUTADORES UTILIZADA

Como o sistema tem a finalidade de execução em rede, foi montado um ambiente para implementação e testes do sistema, conforme Figura 7.

Figura 7: Rede de Computadores Utilizada. O ambiente é composto por três máquinas, sendo duas

Figura 7: Rede de Computadores Utilizada.

O ambiente é composto por três máquinas, sendo duas físicas e uma virtual emulada por um software de virtualização.

6 IMPLEMENTAÇÃO DO PROTÓTIPO

O desenvolvimento do protótipo foi realizado em camadas sendo elas, agente de controle, agente de vigilância, agente de tomada de decisão, agente de notificação e agente de reação, conforme seção 4.2, Figura 4.

6.1 AGENTE DE CONTROLE

O Agente de Controle é a interface do sistema com o administrador, responsável pelo envio e recebimento de agentes, além de possuir um gerenciador de perfis.

De forma específica este agente tem as seguintes características:

Parâmetros: Endereços IP das máquinas de destino (envio de Agentes de Vigilância), ou Nome do Serviço a ser fechado e o IP Remoto (envio de Agentes de Reação), Resultados de Notificação;

Função: Interface com o Administrador, Controle de Envio e Recebimento de agentes, Criar e Editar perfis de usuários;

Agente ativador: Administrador da rede;

Agente a ser ativado: Agente de Vigilância ou Agente de Reação.

Outra característica importante é o ID do agente de controle, este é o identificador único do agente, como se fosse o C.P.F dos brasileiros. Este identificador é enviado através de todas as camadas da arquitetura proposta (Figura 4), para que possa ser feito o controle.

Na Figura 8, apresenta-se a interface do agente de controle com o administrador.

Figura 8: Interface do Agente de Controle. Na interface, temos a interação entre administrador e

Figura 8: Interface do Agente de Controle.

Na interface, temos a interação entre administrador e agente. Em “Rede Local” temos a faixa de endereços IP para ser realizada a verificação (Agentes de Vigilância). No campo “Fechar Processo” é efetuado o envio do Agente de Reação. O botão “Limpar” limpa os resultados da tela, “Salvar” tem a finalidade de salvar os resultados obtidos. Dentre as funcionalidades do agente de controle deve-se destacar o Gerenciamento de Perfis, cuja função é a edição e criação de novos perfis de usuário, onde constam os serviços permitidos a este.

6.1.1 Gerenciamento de perfis

No decorrer do projeto, nota-se a necessidade de ter um gerenciamento de perfis, pois o perfil de usuário tem papel importantíssimo para funcionamento do sistema, uma vez que este é usado como parâmetro para a identificação dos serviços não permitidos.

A seguir é apresentada a interface do gerenciamento de perfis.

permitidos. A seguir é apresentada a interface do gerenciamento de perfis. Figura 9: Tela Inicial do

Figura 9: Tela Inicial do Editor de Perfil.

O editor do gerenciamento tem como funcionalidade a criação, edição a remoção de usuários. Sendo selecionado “Novo Perfil”, será permitido ao administrador introduzir os serviços permitidos a um novo usuário, conforme Figura 10.

serviços permitidos a um novo usuário, conforme Figura 10. Figura 10: Novo Perfil. Os processos listados

Figura 10: Novo Perfil.

Os processos listados na Figura 10 são os processos utilizados pelo sistema para sua execução, logo estes deverão ser permitidos a todos os usuários. São eles java.exe (Máquina Virtual Java), cmd.exe (Prompt de comando do Windows), tasklist.exe (Gerenciador de tarefas), taskkill.exe (Fecha determinado processo em execução).

Novos aplicativos podem ser instalados nas máquinas, então a edição do perfil torna-se essencial, a edição pode ser vista na Figura 11.

Figura 11: Edição de Perfil Existente. Depois de selecionado o usuário e a opção de

Figura 11: Edição de Perfil Existente.

Depois de selecionado o usuário e a opção de “Abrir”, temos a lista de serviços permitidos ao usuário, sendo possível editar (remover, adicionar determinados serviços). É possível apagar o perfil inteiro, removendo assim o usuário.

Como visto o editor de perfil torna-se peça fundamental para execução do sistema, uma vez que o perfil é base para o funcionamento do sistema.

6.2 AGENTE DA CAMADA DE VIGILÂNCIA

Agentes de Vigilância têm a função de trafegar pela rede nas máquinas que irão monitorar, e capturar uma lista com informações dos usuários.

O Agente de Vigilância tem as seguintes características:

Parâmetros - Identificador do Agente de Controle, IP da máquina a ser monitorada;

Função - Capturar nomes de serviços em execução relacionados aos usuários “conectados” em determinada máquina;

Agente ativador - Agente de Controle;

Agente a ser ativado - Agente de Tomada de Decisão.

Os parâmetros são passados pelo agente de controle. Conforme Figura 6, tem-se em “Rede Local” a faixa de endereços IP para os quais serão emitidos os Agentes de Vigilância. Foi implementada uma verificação “offline”, ou seja, uma verificação na máquina local, sem a presença de conexão de rede, tendo como parâmetro o IP 127.0.0.1 (Localhost).

Para realizar sua função, foi utilizado um comando do próprio sistema operacional (Windows XP Professional): o agente executa o comando tasklist.exe, obtendo informações dos serviços executados pelo usuário que está “on-line” no sistema. Estas informações são armazenadas em arquivos texto, os quais serão parâmetros para o agente de tomada de decisão.

6.3 AGENTE DA CAMADA DE TOMADA DE DECISÃO

O Agente de Tomada de Decisão tem as seguintes características:

Parâmetros - Identificador do Agente de Controle, IP do servidor, IP do destino, Nome do usuário, Perfil do usuário, Arquivo de Verificação;

Função - Identificar os serviços suspeitos em execução relacionados ao usuário “conectado” em determinada máquina;

Agente ativador - Agente de Vigilância;

Agente a ser ativado - Agente de Notificação.

Através do IP do servidor e do nome de usuário, o agente de tomada de decisão busca no servidor (máquina do administrador) o perfil do usuário para realizar a comparação com o resultado do agente de vigilância. Assim são identificados os serviços suspeitos, armazenando os resultados em arquivo texto. Depois de realizar sua tarefa, o agente da camada superior é ativado, Agente de Notificação.

6.4 AGENTE DA CAMADA DE NOTIFICAÇÃO

O Agente de Notificação tem as seguintes características:

Parâmetros - Identificador do Agente de Controle, Arquivo de Decisão, IP do servidor;

Função - Notificar o administrador;

Agente ativador - Agente de Tomada de Decisão;

Agente a ser ativado - Comunica-se com o agente de controle.

Este agente é responsável pelo retorno ao servidor de origem. O agente carrega o arquivo com os resultados finais do processo, passando assim a notificação para a interface do agente de controle.

A Figura 12 apresenta uma notificação ao administrador sobre possíveis serviços suspeitos.

ao administrador sobre possíveis serviços suspeitos. Figura 12: Notificação ao Administrador. Com base na

Figura 12: Notificação ao Administrador.

Com base na notificação cabe ao responsável pela rede tomar as medidas cabíveis, sendo possível solicitar uma reação ao Agente de Reação.

6.5 AGENTE DA CAMADA DE REAÇÃO

O Agente de Vigilância tem as seguintes características:

Parâmetros - IP da máquina de destino, Nome do Serviço;

Função - Fechar serviço suspeito em determinada máquina;

Agente ativador - Agente de Controle;

Agente a ser ativado – Comunica-se com o administrador.

Os parâmetros são enviados pelo agente de controle (Figura 12), na interface temos

o campo “Fechar Processo”, estes são os parâmetros necessários para efetuar a reação (Nome do serviço suspeito e o IP da máquina remota).

Para realizar sua tarefa, foi utilizado um comando do próprio sistema operacional (Windows XP Professional). O agente executa o comando taskkill.exe que efetua o fechamento do processo em execução.

Este agente é o único que se comunica com o usuário conectado ao sistema, uma vez que este não tem permissão para executar determinado serviço, sendo necessário que o mesmo fique ciente que está sendo monitorado. Esta comunicação pode ser vista na Figura 13, onde o usuário não tinha permissão para executar o aplicativo iexplore.exe (Browser Internet Explorer).

tinha permissão para executar o aplicativo iexplore.exe ( Browser Internet Explorer ). Figura 13: Mensagem ao

Figura 13: Mensagem ao usuário

O agente de reação retorna ao servidor e informa ao administrador, se obteve êxito na sua tarefa, vide Figura 14.

se obteve êxito na sua tarefa, vide Figura 14. Figura 14: Mensagem ao administrador. Como visto

Figura 14: Mensagem ao administrador.

Como visto o agente de reação não tem a função de bloquear o serviço ao usuário, dando a liberdade ao administrador tomar a decisão cabível que atenda a sua política de segurança.

7 CONCLUSÕES E TRABALHOS FUTUROS

7.1 CONCLUSÃO

Neste trabalho foi desenvolvido um sistema multiagente de verificação, notificação e reação contra aplicativos não permitidos como apoio a segurança do ambiente de rede. Adotou-se uma arquitetura modular baseado em agentes móveis.

A arquitetura modular para desenvolvimento, trouxe benefícios para o sistema desenvolvido, como fácil configuração, escalabilidade e capacidade de extensão. Uma vantagem encontrada foi quanto a ataques de negação de serviço (DoS). Apesar do agente de controle ser centralizado, a tecnologia de agentes móveis possibilitou que o sistema fosse utilizado em qualquer máquina da rede, sendo assim menos suscetível a ataques DoS.

Conforme descrito na seção 2.2 ataques podem ser ocasionados por execução de aplicativos de origem suspeita e não permitidos. Em testes realizados no ambiente de rede adotado o sistema atendeu de forma satisfatória, identificando os processos suspeitos, notificando o administrador e, quando solicitada uma reação, o mesmo cumpriu com sua tarefa.

Através dos resultados, o administrador pode gerar relatórios sobre o comportamento dos usuários atribuindo a estes as devidas responsabilidades, além de propor melhorias na gestão de incidentes de segurança e na política de segurança conforme norma ISO/IEC 27001:2005.

Em questões de desempenho do sistema na rede, problemas com tráfego de dados não afetaram o sistema, pois os agentes possuem um tamanho muito pequeno se comparado à taxa de transmissão da rede. Além do tamanho dos agentes, o sistema foi construído visando minimizar estes problemas. O único agente que depende do fluxo da rede e dos resultados dos demais agentes é o agente de controle. Sendo assim, se uma estação deixar de funcionar o sistema não é afetado de maneira a comprometer sua execução.

7.2 TRABALHOS FUTUROS

Durante o desenvolvimento deste projeto foram identificados alguns pontos visando melhor desempenho, flexibilidade e a introdução de novos recursos ao sistema, bem como o estudo de alguns aspectos relacionados à metodologia de agentes e ao ambiente adotado. Sugere-se para trabalhos futuros:

Introdução de novos agentes - por exemplo, agentes de chat visando dar ao administrador controle e comunicação com o usuário;

Gerenciamento de perfis - propor melhorias no gerenciamento de perfis, via banco de dados, arquivos binários, arquivos criptografados, visando maior segurança e mobilidade ao sistema, sendo possível a introdução de um agente de edição de perfil;

Adaptação do ambiente servidor - visando maior segurança e melhor desempenho melhorias no ambiente servidor podem ser introduzidas, pois o mesmo possui código aberto;

Técnicas de segurança ao ambiente e ao sistema - com base no trabalho de Uto (2003), avaliar as técnicas que se adequariam ao sistema proposto;

Testes de impacto - realizar testes deste tipo de sistema em organizações de médio a grande porte, com grande tráfego de rede e muitos usuários;

Integração do sistema - integrar o sistema aos mecanismos de segurança existentes, tais como, firewall, sistemas de detecção de intrusão, etc;

Introduzir módulo de estatísticas - visualização gráfica dos resultados, visando maior controle e facilidades de administração;

Adaptação para outros sistemas operacionais - o protótipo atual adota apenas o sistema operacional Windows XP Professional, no entanto, é possível propor alterações ou até mesmo a introdução de agentes específicos para cada plataforma;

Proteção das máquinas em “tempo real” - tornar o sistema capaz de executar suas funções a partir da inicialização do sistema operacional de cada

máquina, assim dando a possibilidade de identificação dos serviços suspeitos quando inicializados pelo usuário.

8 REFERÊNCIAS

1

BERNARDES, Mauro César. Avaliação do uso de agentes móveis em segurança computacional. Dissertação de mestrado apresentada ao ICMC/USP em dezembro de 1999. Disponível em:

<http://www.teses.usp.br/teses/disponiveis/55/55134/tde-04022002-103542/>

Acesso em: 22 de abr. de 2008.

2

ISO/IEC 27000:2005, Norma. Código de Boas Práticas da Gestão de Segurança da Informação. Disponível em

<http://www.sinfic.pt/SinficNewsletter/sinfic/Newsletter92/ISO17799.html>

Acesso em: 27 de mai. de 2008.

7

KNYCHALA NETO, Adalberto. Agentes Móveis. Monografia apresentada ao Centro Universitário do Triangulo – Unit, em dezembro de 2003. Disponível em <

computacao.unitri.edu.br/downloads/monografia/97651129128112.pdf>

Acesso em: 1 de out. de 2008.

8

LOBO, Ana Paula. Segurança da Informação movimentou US$ 370 milhões no Brasil. Texto disponibilizado em 11 mar. 2008. Disponível em:

<http://www.convergenciadigital.com.br/cgi/cgilua.exe/sys/start.htm?infoid=12772

&sid=18> Acesso em: 26 de nov. de 2008.

9

NAGAMUTA, Vera. Coordenação de Agentes Móveis através do Canal de Broadcast. Dissertação de mestrado apresentada ao IME/USP em novembro de 1999. Disponível em: <http://www.teses.usp.br/teses/disponiveis/45/45134/tde- 11102005-123304/ > Acesso em: 19 de abr. de 2008.

dezembro de 2001. Disponível em:

<http://www.teses.usp.br/teses/disponiveis/55/55134/tde-08022002-173805/>

Acesso em: 19 de abr. 2008.

11 SILVA, Edna Lúcia da; MENEZES, Estera Muszkat. Metodologia da pesquisa e elaboração de dissertação. 3. ed. Florianópolis 2001 Disponível em:

<projetos.inf.ufsc.br/arquivos/Metodologia%20da%20Pesquisa%203a%20edicao.

pdf> Acesso em: 27 mai. 2008.

12 TAVARES, Dalton Matsuo. Avaliação de técnicas de captura para sistemas detectores de intrusão. Dissertação de mestrado apresentada ao ICMC/USP em dezembro de 2002. Disponível em:

<http://www.teses.usp.br/teses/disponiveis/55/55134/tde-02122002-015238/>

Acesso em: 16 de abr. 2008.

13 UTO, Nelson. Segurança de Sistemas de Agentes Móveis. Dissertação apresentada ao Instituto de Computação, UNICAMP. Disponível em:

<www.las.ic.unicamp.br/paulo/teses/trabalhos-relacionados/NelsonUto.pdf> Acesso em: 19 de abr. 2008.