UM SISTEMA DE DETECÇÃO DE INTRUSÃO BASEADO NO SISTEMA IMUNOLÓGICO HUMANO Kátia Regina L. Jucá [email protected] João Bosco Mangueira Sobral [email protected] Universidade Federal de Santa Catarina Curso de Pós Graduação em Ciências da Computação Caixa Postal 476 – 88040-900 Florianópolis SC Brasil Resumo: Este artigo apresenta uma técnica de análise de dados inspirada pelo sistema imunológico natural. Foram empregadas metáforas imunológicas para criar uma técnica de análise de dados. Este trabalho baseou-se em trabalhos prévios, extraindo características do sistema imunológico e em software que foi projetado para identificar nos registros de atividades os registros que relatam violações de segurança e atividade não usuais. Este artigo propõe um trabalho para monitorar programas privilegiados em sistemas UNIX, respeitando suas especificações, utilizando o registro de atividades gerado pelo sistema operacional. 1 INTRODUÇÃO As aplicações e os sistemas operacionais estão repletos de falhas de segurança nos mais diversos níveis. Caso não haja mecanismos de verificação e monitoração, os serviços de segurança tornam-se ineficientes. As políticas de segurança definem os requisitos e normas de uso das facilidades computacionais. Os serviços de segurança fornecem medidas preventivas para evitar que as políticas de segurança sejam violadas. Uma intrusão é definida como um conjunto de ações que atentam contra a integridade, confidencialidade ou disponibilidade de um recurso. O propósito deste artigo é apresentar um modelo de segurança para sistemas de computadores observando características do sistema imunológico humano e utilizando um sistema de detecção de intrusão baseado na monitoração dos registros de atividades. 2 IMUNOLOGIA O sistema imunológico é uma complexa rede de células e órgãos que estão envolvidos na defesa de um corpo dos ataques de invasores estrangeiros. Uma das características principais do sistema imunológico é a capacidade de distinguir entre self e nonself. Todas as células presentes no corpo possuem moléculas que as caracterizam como self. Nas células dos organismos estrangeiros, as suas moléculas são caracterizadas como nonself. Genes e Características Self – As moléculas que marcam uma célula como self, são codificadas por um grupo de genes que estão contidas em seções de um cromossomo específico conhecido como Major histocompability complex (MHC). O MHC é essencial para as defesas imunológicas, pois são suas características que determinam a quais antígenos um indivíduo pode responder e qual a intensidade da resposta. As características 2.1 dos genes MHC permitem que as células imunológicas se reconheçam e comuniquem-se entre si. Antígenos MHC de classe I - Alertam as céluas T-killer que um célula do corpo foi infectada e precisa ser eliminada. Antígenos MHC da classe II – Os produtos dos antígenos da classe II expõem os antígenos e chamam a atenção das células T-helper. Anatomia do Sistema Imunológico Os órgãos que compõem um sistema imunológico estão distribuídos pelo corpo e são referenciados como linfóides. Entre suas funções estão as de crescimento, desenvolvimento e utilização de linfócitos. Os linfócitos são pequenas células de glóbulos brancos cuja responsabilidade é a de especifica as atividades do sistema imunológico. Suas duas maiores classes são as Células-B, que segregam anticorpos dentro dos fluídos corporais, e as Células-T, que atacam as células do corpo que tenham sido contaminadas. Cada Células-B produz um anticorpo específico, que combinará com um dado antígeno da mesma maneira que uma chave combina com uma fechadura. As Células-T contribuem ao sistema imunológico de duas formas importantes. A primeira é a de juntar-se às Células-B na defesa de algumas substâncias específicas. A segunda é a de atacar diretamente células do corpo que estão infectadas. O sistema imunológico possui duas formas de imunidade. A imunidade natural, que está presente no corpo do indivíduo desde o seu nascimento e também é adquirida de forma passiva através de sua mãe e a imunidade adquirida, que se estabelece com o tempo. Na medida que o sistema vai se deparando com novos agentes patogênicos, algumas células retêm uma memória da moléstia e quando o organismo encontrar o mesmo antígeno, irá reconhecê-lo e destruí-lo rapidamente. 2.2 2.3 Propriedades do Sistema Imunológico O sistema imunológico apresenta quatro propriedades importantes que são: Detecção – Ocorre quando ligações químicas são estabelecidas entre receptores da superfície de uma imunológica e epítotes, que estão localizados na superfície de uma patogenia. Diversidade – O corpo precisa produzir uma diversidade suficiente de receptores linfócitos para assegurar que ao menos alguns deles possam reagir ao elemento patogênico. Como existem muito mais variedades de antígenos, o corpo adota uma solução de proteção dinâmica, onde os linfócitos são renovados constantemente. Aprendizado – O sistema imunológico incorpora princípios que possibilitam ao linfócito aprender ou adaptar-se às estruturas de proteínas estrangeiras e de recordar-se destas estruturas rapidamente. Tolerância – Os genes MHC e suas moléculas assinalam a variedade de estruturas de um indivíduo para o outro. Esta diversidade é conhecida como polimorfismo. As moléculas do MHC determinam quais antígenos um indivíduo pode reagir e com que força. Segurança de Computadores e Sistema Imunológico Analogamente, o sistema imunológico enfrenta os mesmo problemas de um sistema de computador. Existem diversos aspectos de segurança de computadores que podem ser enumerados, tais como: confidencialidade, integridade, disponibilidade, corretismo e contabilidade. O sistema imunológico detecta a quebra de uma determinada regra e responde a este abuso contra-atacando a fonte. Somente alguns aspectos de segurança são importantes, tais como: disponibilidade, corretismo, integridade, contabilidade e confidencialidade. O sistema imunológico e a segurança em sistemas de computador possuem um ponto em comum: proteger o sistema contra ataques e intrusões que violem a política de segurança estabelecida. 2.4 Detecção de Intrusão Uma intrusão é uma violação às políticas de segurança estabelecidas em um sistema. A prevenção de todas as possíveis quebras de segurança é irrealizável, entretanto, é possível identificar as violações ocorridas e então tomas atitudes para reparar os danos. Este campo de pesquisa é denominado de detecção de intrusão e suas técnicas podem ser divididas em dois tipos: detecção por anomalia e detecção por abuso. Detecção por anomalia: Esta técnica assume que toda atividade de intrusão é necessariamente anômala. Isto só é possível se pudermos estabelecer um conjunto de atividades que caracterizam a operação normal em um sistema. Detecção por abuso: Baseia-se nos rastros deixados por um ataque efetuado contra o sistema e explorando uma fraqueza conhecida. Esta técnica possui a limitação de somente observas as intrusões em pontos fracos e que são conhecidos no sistema, podendo não ser útil para a detecção de uma intrusão futura. 3 SISTEMA IMUNOLÓGICO ARTIFICIAL Este trabalho faz uso de alguns conceitos biológicos e os aplica na especificação de um sistema para detecção de intrusão em um sistema de computadores em rede. Os princípios de um sistema de detecção, observando os conceitos imunológicos, são os seguintes: Proteção Distribuída, Diversidade, Robustez, Adaptabilidade, Memória, Flexibilidade, Crescimento e Detecção de Anomalia. 3.1 Arquitetura do Sistema Imunológico Artificial As possíveis arquiteturas resultantes da combinação dos conceitos biológicos e as arquiteturas existentes de sistemas de computadores são: Proteção de dados estáticos – Nesta visão, a proteção deve englobar todos os dados armazenados. Os componentes self são os dados que não sofreram corrupção e os componentes nonself são aqueles dados self que foram corrompidos. Proteção de processos ativos em um computador – Cada processo em um computador é uma célula e cada computador pode ser visto como um organismo multicelular. Nesta arquitetura, os componentes do conjunto self serão definidos pelo conjunto de registros do sistema coletados em uma situação normal e nonself são os registros observados em situação de intrusão. Protegendo uma rede confiável de computadores – Em outra abordagem possível é que cada computador corresponda a um órgão de um organismo. Cada processo será considerado como uma célula, mas agora um indivíduo é uma rede de computadores mutuamente confiáveis. Protegendo uma rede de computadores mutuamente disponíveis e confiáveis – Fazendo outra analogia, podemos considerar cada computador como uma célula, e a rede de computadores como sendo um indivíduo. 4 REGISTRO DE ATIVIDADES E AMBIENTE OPERACIONAL Muitos trabalhos de detecção de intrusão estão focados na análise dos registros dos logs, os quais são produzidos pelo sistema operacional e por outros aplicativos. O sistema operacional UNIX utiliza o syslog para gerar, armazenar e registrar suas atividades. Os programas criam um registro de suas atividades utilizando funções especiais que fornecem categorias de eventos, graus de severidade para os eventos e mensagens que descrevem o evento. A verificação diária do sistema de mensagens é crucial para a segurança do sistema de computadores. O montante da informação contida nestes registros varia e está diretamente relacionada aos tipos de serviços oferecidos pelo host e ao número de acessos. As mensagens são classificadas em categorias, indicando sua severidade. A existência destas categorias permite uma filtragem seletiva das mensagens. O trabalho foi montado em cima de um ambiente composto de máquinas com o sistema operacional UNIX, conectadas em rede. Cada um dos host neste ambiente possui um conjunto de serviços que são disponibilizados para sua rede local e também para a internet. No sistema imunológico artificial consideraremos que cada processo de um serviço em um host é uma célula. Este host é visualizado como um organismo multicelular, onde existe um processo que atua como linfócito no reconhecimento de elementos nonself. A arquitetura da defesa do sistema imunológico é multinivel e oferece mecanismos de proteção nos diversos níveis. O nível mais extremo é representado pelos mecanismos de controle e monitoração da rede, que atuam como pele e as mucosas, estabelecendo uma barreira física. Os mecanismos tradicionais de segurança, tais como o sistema de arquivos, permissões de arquivos e controle de acessos são considerados como o sistema imunológico nato. O sistema imunológico adquirido é implementado pó um programa que atua como um linfócito e também pelos patches e pelas atualizações que são consideradas como as vacinas. 4.1 Anatomia do sistema imunológico artificial O sistema imunológico artificial é constituído pelos componentes básicos e complementares do sistema operacional, os aplicativos que possibilitam o fornecimento de serviços pelo host e os aplicativos relacionados com a administração e a segurança do host. O sistema imunológico computacional nato é constituído pelos componentes do sistema operacional UNIX que fazem parte do root filesystem, assim como as permissões aos arquivos e os modos de acesso aos arquitos, diretórios e devices que são estabelecidos durante a instalação do sistema. A imunidade passiva existente nos sistemas computacionais modernos dura somente algumas horas; ao contrário do sistema imunológico humano que protege o recém-nascido por alguns meses. Por esta razão é necessário que o sistema computacional receba a imunização (atualizações de segurança) complementar logo após a sua instalação. O grau e a duração da imunidade em um sistema computacional irá depender de certos itens que caracterizam a segurança do host e da rede na qual o host está conectado. Os itens caracterizados são os seguintes: corretismo da instalação, estabilidade do sistema operacional e estabilidade dos softwares complementares. Dentre os serviços oferecidos, foram escolhidos os seguintes como os sujeitos de observação: SMTP, FTP, POP3 e DNS. As células-T aprendem no timo a distinguir as células self das células nonself. Esta característica é transposta para o sistema computacional pelo uso do software LogCheck, que filtra os registros das atividades em um host, gerando relatórios ao administrador dos logs das atividades que possuam porções de códigos que são considerados perigosos, suspeitos e que merecem uma análise mais apurada. 5 IMPLEMENTAÇÃO E RESULTADOS OBTIDOS Para o desenvolvimento do presente trabalho foi instalado o software LogCheck em dois hosts com sistemas operacionais distintos e serviços de registros de atividades também distintos. As atividades nos servidores escolhidos foram monitoradas pelo intervalo de tempo de cinco meses. O ambiente operacional não sofreu nenhuma interferência nas características de suas atividades básicas; de maneira que estes registros podem ser considerados fidedignos, pois refletem uma situação normal. No conjunto de registros gerados não ocorre a distinção entre o registro de uma atividade self e nonself. Com a utilização do software LogCheck o número de registros é reduzido aos itens que representam algum risco e que merecem uma análise apurada. Os resultado dos dados monitorados estão dispostos nas tabelas abaixo. Meses março abril maio junho julho 6 Total Reg. 14696 14606 19437 24682 22620 nonself 12691 8293 8749 20978 11985 Meses março abril maio junho julho Total Reg. 15137 33904 69249 114030 36548 nonself 8430 20867 30818 24198 29653 CONCLUSÃO Durante o processo de seleção dos registros, o software LogCheck classifica-se em: ataque, violações de segurança e eventos anormais, entretanto, durante o período de monitoração e coleta dos registros, obtivemos somente relatos que assinalam violações de segurança e eventos anormais (conjunto dos nonself). Com a implementação demonstrada neste trabalho, o processo de monitoração e observação das atividades dos hosts se mostrou muito mais fácil e eficiente.