IA368F - Tópicos em Engenharia de Computação V

Professores: Ivan Luiz Marques Ricarte & Léo Pini Magalhães

Aluna: Luciana Meneghel - R.A.: 973271

 

Segurança - Overview

 

 

Resumo

Abstract

 

Introdução

 

Conceitos Básicos sobre a Segurança

 

Métodos de Ataque

Conclusão

Bibliografia

 

Resumo

Esta monografia tem o objetivo de introduzir o tema Segurança, dando maior ênfase sobre os métodos de ataque mais comuns às informações.

Em primeira instância, são apresentados alguns conceitos básicos sobre Segurança: Integridade dos Dados, Confidencialidade, Identificação, Autenticação, Autorização, Controle de Acessos, Não Repudiamento e Rejeição de Serviço.

Em seguida, são descritas as características dos seguintes métodos de ataque: Vírus, Cavalo de Tróia, Trap Doors, Password Cracking, Spoofing e Sniffing.

Palavras chave: Segurança, Métodos de Ataque, Vírus, Cavalo de Tróia, Trap Doors, Password Cracking, Spoofing, Sniffing.

 

 

Abstract

This monograph has established the goal of introducing the subject Security, giving more emphasis on the most common attack methods to information.

In a first sight, there are some basic concepts presented about Security: Data Integrity, Confidentiality, Identification, Authentication, Authorization, Access Control, Non Repudiately, and Service Rejection.

Following, some characteristics are described about the attack methods: Viruses, Trojan Horses, Trap Doors, Password Cracking, Spoofing e Sniffing.

Key words: Security, Attack Methods, Viruses, Trojan Horses, Trap Doors, Password Cracking, Spoofing, Sniffing.

 

 

Introdução

À medida que os computadores vão se tornando imprescindíveis, é necessário ter consciência do que está em risco, de onde vêm as ameaças, e como preveni-las.

Atualmente há uma grande necessidade de confidencialidade da informação que é privada, proprietária, e crítica para certas operações. Para o processo da tomada de decisão em determinados assuntos importantes, o risco de não utilizar a informação correta ou de qualquer informação ser capturada por uma pessoa não autorizada deve ser minimizado ao máximo.

Os usuários de empresas e mesmo os particulares não podem esquecer que, quando utilizam o computador como uma ferramenta de auxílio, devem ter o cuidado de investir em algum método de defesa contra os ataques que os dados podem sofrer, seja, se conectando à Internet, numa rede local ou em um computador stand alone.

No próximo gráfico, podemos ver quais os acontecimentos que normalmente provocam maior prejuízo nas empresas.

 

 

Figura 1 – acontecimentos relacionados com segurança que motivaram prejuízos

Fonte: Sondagem Information Week/Ernst & Young

 

Na sondagem aqui mostrada feita em 1995, à 1.320 empresas, 25% delas responderam que tinham sido vítimas de ataques externos, que provocaram danos financeiros. Com isso, concluímos que além da segurança interna dos dados, há uma grande necessidade de os proteger do exterior.

O próximo gráfico, mostra quais os ataques mais comuns e qual a sua origem. No ano de 1995, que porcentagem de empresa tiveram problemas, e que tipo de problemas. Só parte dos problemas do total da sondagem Information Week/Ernst & Young são aqui mostrados.

 

 

Figura 2 – ataques mais comuns

Fonte: Sondagem Information Week/Ernst & Young

 

Considerando esses dados, a necessidade de se conhecer os métodos de ataque é imprescindível para nos proteger, e esta monografia tem o objetivo de apresentar alguns destes métodos mais comuns à violação dos dados.

 

 

Conceitos básicos sobre a segurança

Existe uma série de conceitos, que são essenciais para a segurança de dados em redes de computadores. Esses conceitos, de uma forma geral, tornaram-se uma espécie de requisitos dos novos mecanismos de segurança associados à problemática da segurança. Existem certos conceitos básicos que permitem normalmente definir o nível de segurança de um sistema, os quais serão definidos em seguida:

 

Integridade dos dados

A integridade dos dados permite a detecção de modificações não autorizadas nos dados. Vulgarmente, a integridade dos dados permite detectar se os dados foram modificados ou corrompidos durante a transmissão. Esta modificação pode ser resultado de um ataque ou de um erro na transmissão. A integridade dos dados pode ser conseguida através da implementação de uma função one-way hash.

 

Confidencialidade

É o processo utilizado para proteger informações secretas de serem reveladas por pessoas não autorizadas. Os dados secretos devem ser protegidos quando são guardados ou transmitidos pela rede. Claramente, essa proteção recorre ao uso da criptografia. A tarefa da implementação da criptografia também requer uma distribuição segura das chaves de criptação para o remetente e para o receptor dos dados cifrados.

 

Identificação

Os usuários são identificados perante uma aplicação através de sua identificação ou userid. É o modo como o usuário se identifica ao sistema, por exemplo, através de seu "login".

 

Autenticação

É o processo usado para verificar a identidade reivindicada por um usuário ou programa. A autenticação pode ser feita através do uso de passwords por parte do usuário ou através da troca de chaves e poderá eventualmente envolver uma terceira entidade de confiança.

 

Autorização

É o processo de atribuir os acessos permitidos para o usuário. A permissão de acessos inclui uma especificação, tal como, se o usuário possui permissão para ler, escrever, ou alterar um dado diretório ou arquivo.

 

Controle de acessos

O controle de acessos, concede ou recusa, a permissão a um usuário para ter acesso a um recurso, limitando os acessos para os usuários autorizados. O controlo de acessos, é frequentemente especificado pelo administrador do sistema ou pelo dono do recurso.

 

Não repudiamento

É a capacidade de provar tecnicamente a origem dos dados e provar a distribuição dos dados, ou seja, demonstra-se que a transmissão ocorreu de fato, entre o remetente e o receptor. Desta forma, impede o remetente negar o envio dos dados, ou o receptor negar a recepção dos dados, e também impede que as entidades envolvidas possam alterar o conteúdo dos dados.

 

Rejeição de serviço

O ataque de rejeição de serviços, é um ataque do qual, o atacante toma posse, ou consome recursos, de forma a que ninguém mais possa usá-lo. Exemplos desses ataques, incluem um vírus, que consome a memória do sistema, ou um ataque na Internet, onde o host atacante toma posse do host legítimo.

 

 

Métodos de Ataque

Os ataques, às redes de computadores, podem gerar alguns tipos de irregularidade, como:

Os ataques podem ser acidentais, ou intencionais, podendo ser ambos ativos ou passivos.

Ataques Acidentais são os que não estão associados à intenção premeditada.

Exemplo: Descuidos operacionais; Bugs de Software e Hardware.

Ataques Intencionais são os que estão associados à intenção premeditada.

Exemplos: Observação de dados com ferramentas simples de monitoramento da redes; Alteração de dados, baseados no conhecimento do sistema.

Ataques passivos são aqueles que não alteram a informação, nem o seu fluxo normal, no canal sob escuta.

Ataques ativos são os que intervêm no fluxo normal de informação, quer alterando o seu conteúdo, quer produzindo informação não fidedigna, normalmente com intuitos de atentar contra a segurança de um sistema.

Quanto mais desprotegido se encontrar um sistema mais são as formas de o atacar sem necessidade de se ser um hacker experiente.

São muitos os métodos de ataque, aliás eles só são limitados pela imaginação, aqui serão somente referenciados alguns dos mais frequentes. Não pense que só pessoas com mentes de gênio são capazes de o fazer, hoje em dia existe muita informação que está disponível livremente na Internet acessível a qualquer curioso.

A seguir, serão mostrados os ataques mais comuns:

 

Vírus

Um vírus de computador é uma sequência de código que é inserida em outro código executável, então quando o programa regular for executado, o código do vírus é também executado. O código do vírus gera uma própria cópia para ser inserida em um ou mais programas. Os vírus não podem ser considerados como programas, pois não podem ser executados sem ter um programa hospedeiro.

Para o público em geral, qualquer programa que apague dados, ou atrapalhe o trabalho pode levar a denominação de vírus. Do ponto de vista de um programador, o vírus de computador é algo bastante interessante. Pode ser descrito como um programa altamente sofisticado, capaz de tomar decisões automaticamente, funcionar em diferentes tipos de computador, e apresentar um índice mínimo de problemas ou mal-funcionamento. Stephen Hawking se referiu ao vírus de computador como a primeira forma de vida construída pelo homem.

De fato, o vírus é capaz de se reproduzir sem a interferência do homem e também de garantir sozinho sua sobrevivência. Como a auto-reprodução e a manutenção da vida são para alguns cientistas, o básico para um organismo ser descrito como vivo. O vírus Stoned é um exemplo que resiste até hoje, anos depois da sua criação.

Sendo o vírus um programa de computador sofisticado, ainda que use técnicas de inteligência artificial, ele obedece a um conjunto de instruções contidas no seu código. Portanto é possível se prevenir contra seu funcionamento, conhecendo seus hábitos.

Características:

Os vírus não danificam a parte física do computador, como o disco rígido, o monitor, ou o pente de memória. Eles alteram a parte lógica da máquina, ou seja, os programas instalados na máquina.

Não se pega vírus pelo navegador de Internet, pela conexão a BBS e a sites FTP ou por fazer um download. Um vírus só ataca e se dissemina em um micro quando o usuário executa um programa capturado infectado sem antes verificar se ele está limpo.

Não se pega vírus apenas lendo mensagens de correio eletrônico. O perigo está nos arquivos anexados às mensagens, que podem conter códigos executáveis e sempre devem ser desinfetados antes de abertos.

A principal característica de um vírus é a disseminação, e isso só é possível por meio de programas executáveis ou de arquivos que contêm códigos executáveis.

Não é preciso conhecimento técnico para desenvolver um vírus. Estudos mostram que os efeitos mais danosos são provocados por erros na programação de vírus.

Discos flexíveis protegidos contra gravação não podem ser contaminados se colocados em um micro infectado. No entanto, se algum arquivo do disco flexível protegido estiver infectado, o vírus pode ser transmitido para o micro quando o arquivo for executado.

Arquivos compactados podem conter vírus. Para assegurar a integridade de seu sistema, primeiro copie o arquivo compactado em um diretório próprio, faça a descompressão dos dados e cheque-os com a ajuda de um programa antivírus. Só depois execute o arquivo que estava compactado.

 

UNIX x PC

Os vírus são usualmente encontrados em computadores pessoais com sistemas operacionais sendo executados sem proteção, como os Apple Macintosh e os IBM PC. Embora, os vírus tenham sido escritos por sistemas UNIX, vírus tradicional, normalmente não causam muita ameaça a comunidade UNIX. Basicamente, qualquer tarefa que pode ser executada por um vírus, como por exemplo, conseguir o acesso ao diretório root para destruir arquivos, pode ser executada por outros meios mais fáceis. Embora os vírus de UNIX terem sido escritos como uma curiosidade intelectual, eles estão se tornando uma grande ameaça.

O aumento da popularidade da WWW (World Wide Web), adicionado ao aumento do mercado de plataformas compatíveis a produtividade de ferramentas de escritório, levou a um ambiente onde vírus de macro e Cavalos de Tróia (serão explicados no decorrer da monografia), podem difundir.

O ambiente UNIX inclui:

Há também, casos de interesse, de versões de UNIX que executam em hardware PC. Alguns vírus baseados em PC, e em particular, vírus de setor de boot, podem atualmente infectar PCs executando UNIX, embora a infecção não irá se difundir muito. O computador torna-se infectado normalmente, quando um usuário insere um disco flexível infectado no drive e reinicializa a máquina. O disco flexível é acionado e o vírus executado, se instalando no disco rígido da máquina. O efeito usual desses vírus é fazer o PC UNIX falhar na inicialização, pois, esses vírus são escritos para serem executados em PC e não em UNIX.

Para se proteger contra esses vírus pode-se utilizar algumas técnicas, como:

  1. Verificar a integridade de seu sistema regularmente, esta prática ajuda a detectar vírus bem como outros ataques;
  2. Não incluir diretórios sem um padrão no path de execução;
  3. Não deixar diretórios comuns, por exemplo, /bin, /usr/bin, sem proteção;
  4. Fazer com que em seu diretório de trabalho, somente você tenha acesso de escrita (write) sobre ele.

Se você estiver utilizando UNIX numa máquina PC, esteja certo de reinicializar a máquina com um disco flexível confiável. Pois, a maioria do vírus mais comuns e que podem infectar um UNIX PC, são os vírus que infectam o setor de boot da máquina. Esses vírus tornam-se ativos durante o processo de boot de um disco flexível infectado, e alteram o setor de boot do disco rígido, prejudicando o desempenho da sua máquina. A melhor defesa é verificar se não há um disco flexível no drive de seu PC quando for inicializar a máquina, procurando sempre inicializá-la pelo disco rígido.

Se seu UNIX PC está infectado com um vírus, então, você pode desinfectá-lo reinicializando a máquina com um disco flexível que não esteja infectado e então, alterar o setor de boot.

Nesta monografia, classificaremos os vírus de PC, com relação ao local de infecção e com relação a forma de atuação.

 

Com relação ao local de infecção, podemos citar os seguintes vírus:

Vírus de Arquivo

Infectam arquivos executáveis ou de extensão .SYS, .OVL, .PRG, etc. Estes vírus se copiam para o inicio ou fim do arquivo. Dessa forma, ao se chamar um programa infectado, o vírus se ativaria, executaria ou não outras tarefas e depois ativaria o verdadeiro programa.

 

Vírus de Macro (DMV)

Enquanto que criadores de vírus concentraram-se em código que funcionasse em nível de sistema operacional, eles, no entanto, negligenciaram aplicativos. Muitas aplicativos de negócios, tais como planilhas eletrônicas, processadores de texto e banco de dados, vem com poderosas linguagens de macro. Muitas aplicações tem a habilidade de auto-executar macros. Essa combinação fornece um sério perigo para usuários de computadores que pensavam que arquivos de dados não prejudicam seu sistema. O termo Document Macro Viruses (ou DMV) descreve esse tipo de código malicioso. Algumas características de um DMV incluem:

Um DMV é escrito na linguagem macro de uma aplicação. Ele explora a habilidade da aplicação para automaticamente executar a macro em algum evento, tal como abrindo ou fechando um documento. Uma vez que esse evento ocorre em um documento que possui o DMV, o vírus se espalha.

 

Vírus de Disco

Infectam o BOOT SECTOR de um disco. Esta é a parte do disco responsável pela manutenção dos arquivos. Da mesma forma que uma biblioteca precisa de um fichário para saber onde se encontram os livros, um disco precisa de ter uma tabela com o endereço dos dados armazenados. Qualquer operação de entrada e saída (carregamento ou salvamento de um arquivo, por exemplo), precisaria do uso dessa tabela. Salvar ou carregar um arquivo num disco flexível infectado possibilitaria a ativação do vírus, que poderia infectar outros discos flexíveis e o disco rígido.

 

Vírus Multi-partite

Infectam discos e arquivos executáveis.

 

Vírus Companheiros

Criam um arquivo com o mesmo nome de um arquivo .EXE presente no disco, só que com extensão .COM. Quando é digitado um nome de um programa no prompt do DOS sem a extensão, primeiro o sistema operacional vai procurar por um programa cuja extensão seja .COM, se não achar, ele tentará achar um com extensão .EXE e, caso não encontre, procurará por um com extensão .BAT. Conclusão, o vírus será executado primeiro e depois de executar alguma tarefa, o vírus chamará o programa original.

 

Vírus que infectam a Entrada dos Diretórios

Este tipo de vírus não infecta arquivos e nem setores de boot. Ele altera a entrada de diretórios (a FAT), ou seja, toda vez que um arquivo é executado, o vírus é executado primeiro.

 

Com relação a forma de atuação, podemos citar os seguintes vírus:

Residentes e Não residentes

Os vírus do tipo residente são aqueles que permanecem na memória após a execução de um programa infectado. Enquanto ele estiver carregado na memória, todos os programas executados durante este período serão infectados. Não residentes atuam apenas quando executados.

 

Residentes Temporariamente

Permanecem na memória principal por um determinado tempo (ou até infectar um ou mais arquivos) e depois retira-se da memória passando a agir como um vírus não residente.

 

Sealth

Este tipo de vírus infecta arquivos e altera a data de gravação para a mesma data de criação original do arquivo. Ele esconde o tamanho original do arquivo após a infecção, alterando o tamanho do mesmo para o tamanho antes da infecção.

 

Polimórficos (mutantes)

O aparecimento deste tipo de vírus prevê dias negros para os detectores existentes, já que a pesquisa de uma determinada assinatura do vírus deixa de se poder efetuar. Estes vírus produzem uma cópia diferente de si mesmos (no entanto funcional!) através de chaves de encriptação (codificação) variadas e substituindo o seu código por instruções diferentes mas fazendo a mesma coisa (ex.: A=0 é equivalente a A=A-A). Alteram seu formato à cada nova infecção, dificultando sua detecção.

 

Retrovírus

O objetivo principal deste tipo de vírus é a infecção do próprio antivírus. Para tanto, ele procura por nomes de arquivos que começam com AV, AN, SC, etc.

 

Vírus Antivírus

Infectam arquivos que já se encontram infectados por vírus menos sofisticados, podendo ou não tentar removê-los.

 

Como saber se tem um vírus?

Os vírus tentarão difundir-se ao máximo até que comecem a dar sinais de vida. Mas podem ser, as vezes, detectados certos sintomas de uma infecção antes disso e é importante usar esta oportunidade para detectar o vírus, antes que este comece a sua fase de destruição.

Há vários tipos de sintomas que os autores dos vírus escolheram e que passam por mensagens, sons, ou gráficos. No entanto, a principal indicação é a alteração do tamanho dos diretórios e o seu conteúdo, a mudança de interrupção e o redirecionamento dos recursos do sistema. A diminuição da memória disponível é um bom indicador, pois o vírus poderá estar alocado em algum lugar.

 

Quantos vírus há?

Não é possível fornecer um número exato porque novos vírus estão literalmente sendo criados todos os dias. A definição de novos vírus varia bastante e frequentemente os vírus são apenas classificados como variantes de outros conhecidos, dentro de um mesmo grupo. Tomando uma estimativa feita em Outubro de 1992, eram conhecidos cerca de 1.800 vírus para IBM PC, cerca de 150 vírus para Amiga, cerca de 30 para Macintosh e muito poucos para outros sistemas.

Atualmente este número deve ser bem maior, mas terá de se ter em conta que apenas muito poucos dos vírus existentes são difundidos.

 

Detecção de um vírus

A detecção mais corrente é feita através da pesquisa de determinadas assinaturas, que não passam de simples sequências de letras, e que são próprias de cada tipo de vírus. Muitas vezes este tipo de pesquisa resulta em resultados falsos porque pode haver a coincidência de outro programa ter esta sequência na sua estrutura.

Outros são detectados pelo modo anômalo, pois estão residentes em memória ou utilizam os recursos da máquina, por exemplo, redirecionando interrupções.

 

 

Cavalo de Tróia

Cavalo de Tróia não é um vírus, porque não tem a capacidade de se replicar.

É um programa que ativa uma função indesejada pelo usuário em uma data e hora predeterminadas.

Uma de suas funções pode ser a captura de uma senha digitada e posterior transmissão via modem ao fabricante do programa.

Recentemente com o aparecimento dos Cookies, Agents ou Applets, por exemplo, todos os tipos de programas interpretados, próprios para a Internet, os Troians voltaram a ser um perigo considerável. Algumas empresas tiveram que proibir os seus empregados de usarem programas feitos em Java (Java Applets) vindos da Internet, receando o aparecimento de Troians feitos em Java.

O Cavalo de Tróia se assemelha mais a um artefato militar como uma armadilha explosiva ou "booby-trap". O princípio é o mesmo daquele cigarro-explosivo ou de um daqueles livros que dão choque.

Um Cavalo de Tróia inteligente não deixa marcas da sua presença, causa nenhum mal detectável, pode ficar residente em software insuspeitável e pode ainda ser programado para auto-destruir antes de ser detectado.

Um Cavalo de Tróia começa a agir enquanto um programa qualquer, executado pelo usuário, parece estar fazendo somente o que realmente o usuário quer que ele faça, mas, na verdade, ele está executando outras funções, determinadas por ele, sem que o usuário tenha conhecimento do ocorrido.

Por exemplo, o usuário adquiri um software, via Internet, que anunciava ser um jogo. Enquanto o programa está mostrando na tela a mensagem como, "Qual o nome que você quer para o seu jogo?" e "Qual o nível de dificuldade você quer jogar?", ele pode estar apagando arquivos, formatando o disco rígido, ou alterando qualquer outra informação.

A melhor maneira de evitar Cavalos de Tróia é nunca executar programas sem ler, com cuidado, o arquivo por completo. Quando você for ler o arquivo, use um programa ou editor que mostre o código de controle do arquivo de maneira visível. Se você não entender o que o arquivo diz, não execute-o até que seu domínio no conhecimento esteja completo.

 

 

Trap Doors

É uma função construída pelo criador do sistema, que lhe permite a entrada ultrapassando todo o sistema de segurança, mesmo que ele tenha sido melhorado.

Estes programas também podem ser utilizados para testar o sistema, para verificar algumas operações (permitindo o acesso sem comprometer as medidas de segurança), também são utilizados no caso de haver um problema com as rotinas de acesso.

Geralmente são retiradas antes de enviadas para o cliente, as vezes, não são apagadas por esquecimento ou por design, ou outros motivos.

Os Holes(Buracos) abrangem as Trap Doors mais aquelas que podem ser erros (Bugs) no funcionamento sistema. De fato, essas capacidades são uma porta aberta, provocando momentos de vulnerabilidade em termos de segurança.

Talvez, a maior das Trap Doors UNIX foi, a opção DEBUG, adicionada ao programa sendmail. Infelizmente, a opção DEBUG tinha uma Trap Doors, que permitia acesso remoto do computador sobre a rede sem um login inicial. A opção DEBUG foi acidentalmente deixada habilitada na versão do programa que era distribuído pela Sun Microsystems, Digital Equipment Corporation, e outras.

As vezes, um hacker insere uma Trap Doors num sistema, depois ele consegue entrar naquele sistema com sucesso, ou até ter acesso como um supervisor. As Trap Doors dão ao hacker uma maneira de retornar ao sistema. Trap Doors suportam muitas formas. Um hacker consegue:

Com algumas dessas mudanças, o atacante poderá executar modificações no sistema, as quais o administrador não conseguirá detectar.

 

 

Password Cracking

Atividade de descobrir passwords. O método mais comum é o das tentativas, de nome técnico Brute-Force Atack. Passa por arranjar um dicionário de palavras possíveis para passwords com a sua respectiva palavra cifrada e o programa que tenta encontrar cada password desconhecida no dicionário. Estes dicionários e programas costumam já existir em sites especiais para hackers. Dois dos mais conhecidos programas do gênero é o Crack e o CrackJack.

O processo consiste em deixar o programa a procurar no dicionário cada password cifrada, para obter a sua forma original, ou seja, não cifrada.

Um estudo feito por Klein (1990) para 15,000 passwords revelou que 4% são nomes comuns e 7.4% existem no dicionário normal. Isto mostra que existem razoáveis hipóteses para se ser tentado, afinal numa organização pode haver centenas de usuários.

 

 

Spoofing

É um programa com o objetivo de falsificar o remetente de um pacote de transmissão de dados, para que o receptor o trate como se fosse de um outro usuário. É considerado um ataque grave.

A seguir, serão apresentadas algumas formas de ataque através do spoofing:

 

Hardware address

O endereço de hardware de uma interface, composto por 48 bits, é atribuído pelo fabricante, com base num prefixo de 24 bits definido pelas comissões de normalização e nos restantes 24 bits definido pelo próprio fabricante, para cada interface que fabrica. O fato do endereço de hardware poder ser alterado numa fase posterior, permite que seja realizado um spoofing do endereço de origem (source address). Este ataque engana o destino quanto à proveniência da informação, pelo que a garantia de segurança deverá ser efetuada ao nível da aplicação. Contudo, em determinadas situações este spoofing não só é necessário, como fundamental para o funcionamento de um equipamento. Esse é o caso, por exemplo, de uma bridge, onde o endereço de origem tem que ser mantido à saída das interfaces.

 
ARP

O protocolo ARP permite realizar uma equivalência entre os endereços IP e os endereços de hardware. Quando um pacote IP se encontra pronto para ser enviado para a rede, é necessário associar-lhe um endereço de hardware de destino, e nesta altura duas situações podem ocorrer:

Cada host mantém uma tabela ARP com as equivalências correspondentes aos outros hosts com os quais manteve contato recentemente. Cada entrada nesta tabela tem um tempo de vida (TTL - Time To Live) de alguns minutos, findos os quais um novo pedido ARP é enviado para revalidar a equivalência. Se alguém pretende receber indevidamente pacotes que tenham como destino um determinado endereço IP, poderá atribuir à sua própria máquina esse endereço IP e esperar alguns minutos, durante os quais deverá interromper a ligação da rede ao computador com o endereço verdadeiro. A interrupção poderá ser provocada de diversas formas, consideradas acidentais, ou mesmo sem que tal seja notado. Desta forma, a tabela ARP passou a ter um diferente destino para os pacotes enviados para o endereço IP sob ataque. Como evitar este ataque A melhor forma de evitar este ataque é através da utilização de tabelas ARP estáticas. As equivalências estáticas não possuem um TTL.  

 

Rotas IP

As rotas IP são mantidas pelos roteadores. Com base nas configurações locais e na troca de informação entre roteadores, estes mantêm tabelas que lhes permitem decidir qual a interface e para onde deve ser enviado um determinado pacote. Um protocolo utilizado com frequência para trocas de tabelas de roteamento entre roteadores é o RIP (Routing Information Protocol). Este protocolo envia, cada 30 segundos, a sua tabela de roteamento, utilizando broadcast em UDP na port 520. Os roteadores que recebem estes pacotes reorganizam a sua tabela de roteamento dinâmico de acordo com a informação recebida. Se um roteador for um participante passivo do RIP, ou seja, apenas recebe os broadcast e atualiza as tabelas dinâmicas, torna-se simples introduzir entradas falsas nessas tabelas. Portanto, basta que qualquer computador as envie através da port 520.

Como evitar este ataque

As principais formas de evitar este tipo de ataque são:

 
Domain Name System (DNS)

Através do DNS podemos converter nomes em endereços IP. Sendo o DNS uma base de dados distribuída, ou seja, em cada servidor apenas se encontra uma parte de toda a informação da base de dados, um pedido de conversão pode ser satisfeito de duas formas:

No caso de a resposta não ser encontrada localmente, existem duas formas de a obter, mediante especificação do cliente:

Sempre que um pedido é servido, tem associado um TTL, durante o qual ele permanece válido nas caches dos servidores. Este TTL é configurado pelo gestor do domínio e tipicamente pode ser de várias horas. Devido ao âmbito desta base de dados, encontrando-se espalhada por todo o mundo, a probabilidade de um servidor de um domínio ficar sob o controle de um atacante, não é desprezível. Nesse caso, as respostas authoritative obtidas desse servidor podem ser falsas e manterem-se ativas, devido ao TTL, durante um período de tempo suficientemente grande para permitir com facilidade outros tipos de ataques. Como evitar este ataque Para evitar ataques deste tipo ao serviço DNS não existe nenhuma medida totalmente eficaz. Uma forma de tentar evitar o ataque é através de uma contraprova, ou seja, uma vez obtido o endereço IP desejado, efetuar um novo pedido ao DNS para conversão do IP no nome. Este tipo de pedido designa-se reverse lookup, e só é efetivo se o atacante do servidor apenas alterar um dos dois diretórios que compõem cada base de dados local de DNS. Uma boa medida de segurança será manter em diferentes máquinas os servidores primários para os diretórios de name lookup e reverse lookup.

Outra forma de minimizar os efeitos de um ataque ao DNS será manter em exploração uma versão recente do programa servidor de DNS.

 

 

Sniffing

Atividade de escutar a comunicação alheia, isto é, ter acesso à comunicação entre o usuário e a máquina. O sniffing é geralmente utilizado para caçar passwords. É feito através de um programa que vai monitorando, através de um ou mais buracos do sistema, o que todos os usuários escrevem no teclado, gravando em média, os primeiros 300 bytes de transmissão, o suficiente para captar o que lhe interessa. Quando certas palavras como ftp ou telnet são escritas, o programa grava as que vierem imediatamente a seguir ficando com o nome e a password do usuário.

O sniffing é um ataque passivo, mediante o qual uma máquina diferente do destino pretendido consegue ter acesso à informação que percorre a rede. Trata-se de um ataque praticamente impossível de detectar.

Contudo, a ação de sniffing de uma rede pode não ser um ataque. Com efeito, é amplamente utilizada para diagnosticar problemas na rede, existindo no mercado diversos equipamentos com esse objetivo, designados analisadores de rede.

 

Como se faz o sniffing?

Os conceitos básicos para entender o sniffing são os seguintes:

Num meio partilhado, como é a ethernet, todas as interfaces de rede têm acesso à informação que passa num determinado segmento, recebendo todos os pacotes que outras interfaces enviam para a rede.

Cada interface possui um endereço de hardware, o qual deverá ser único na rede (e mesmo em todo o mundo). A rede possui também o que se designa por endereço de broadcast, o qual corresponde a todas as interfaces existentes nessa rede (ou sub-rede).

Numa situação normal, uma interface de rede apenas considera a informação cujo endereço de destino contenha o seu endereço de hardware ou um endereço de broadcast. Nesse caso, a interface gera uma interrupção na CPU da máquina, e entrega ao sistema operacional a informação correspondente ao pacote lido da rede.

O sniffing é provocado explorando a capacidade que a maioria das interfaces de rede possuem de serem colocadas num modo promíscuo. Neste modo, é gerada uma interrupção para a CPU sempre que a interface recebe um pacote da rede, independente se o endereço de destino contiver o seu endereço de hardware ou não.

 

Quais são as ameaças provocadas pelo sniffing?

O sniffing provoca uma perda de segurança a diversos níveis:

 

 

Conclusão

Fica claro que segurança é um assunto vasto, onde não existem soluções universais mas apenas soluções relativas a um determinado contexto.

Ainda estamos longe de termos uma rede de comunicações absolutamente segura, talvez até nunca venhamos ter, por haver sempre pessoas interessadas em criar novos métodos de ataque.

O fenômeno da expansão dos serviços de redes como a Internet e a World Wide Web obrigam que a segurança e a encriptação se tornem cada vez mais importantes. Haverá um aumento das transações computadorizadas e do comércio eletrônico. O dinheiro eletrônico necessitará de encriptação para proteger o anonimato e a privacidade dos usuários.

À medida que cada vez mais bases de dados e serviços são informatizados, os dados pessoais dos indivíduos necessitaram de ser protegidos bem como a sua privacidade, na era eletrônica a forte criptografia e a liberdade de a usar permitiram essa privacidade.

Até ao dia em que as transações seguras sejam uma realidade é necessário ter cuidado no envio de dados pessoais pela rede, pois é muito fácil apanhar números de cartões de crédito (pela sua sintaxe é muito fácil de distingir de outra informação) e outros dados pessoais.

Em conclusão, não há nenhum sistema que esteja 100% seguro contra os ataques.

 

 

Bibliografia

Livros

[1] CHESWICK, Willian R.; BELLOVIN, Steven M. - Firewalls and Internet Security: repelling the wily hacker - 1ª edição - 1994.

[2] GARFINKEL, Simson; SPAFFORD, Gene - Practical UNIX & Internet Security - 2ª edição - 1996.

[3] TANENBAUM, Andrew S. - Redes de Computadores - 3ª edição.

 

Teses/Monografias

[4] PINTO, Ana Clara - SegRede: Mecanismos para Gerência de Segurança em Redes - Universidade Federal do Rio Grande do Sul - 1995.

[5] CRUZ, Marcos Roberto da - Aspectos de Segurança nos Meios de Transmissão de Informação - Faculdade de Tecnologia de Americana - 1998.

[6] PACHECO, José Pinto - Segurança na Internet - Faculdade de Tecnologia de Americana - 1998.

 

Periódicos

[7] PC Magazine Brasil - Volume 7 - Número 12 - Você Está Seguro? - Dezembro de 1997.

[8] LAN TIMES - Volume 3 - Edição 7 - Segurança é item vital para a rede - 21 de julho de 1997.

[9] LAN TIMES - Volume 3 - Edição 21 - Segurança na Web a baixo custo - 25 de fevereiro de 1998.

[10] LAN TIMES - Volume 3 - Edição 22 - Acesso virtual seguro à Internet - 16 de março de 1998.

 

Sites

[11] ftp://ftp.cis.ohio-state.edu/pub/cops

[12] ftp://info.cert.org/pub/cert_advisories/CA-95%3A01.IP.spoofing

[13] ftp://rtfm.mit.edu/pub/usenet/news.answers/kerberos-faq

[14] http://alfa.di.uminho.pt/sm/Grupo2/mesrg/segur.htm

[15] http://iss.net/prod/products.html

[16] http://novaware.cps.softex.br/internet.htm

[17] http://nucc.pucsp.br/~ericg/virus/viruspage.html

[18] http://penta.ufrgs.br/gr952/segurint/segur8.html

[19] http://students.si.fct.unl.pt/users/clsc/gsi/ataque1.htm

[20] http://students.si.fct.unl.pt/users/clsc/gsi/ataque2.htm

[21] http://students.si.fct.unl.pt/users/clsc/gsi/ataque3.htm

[22] http://students.si.fct.unl.pt/users/clsc/gsi/conceito.htm

[23] http://web.eecs.nwu.edu/~mack23/skey/skey_eecs.html

[24] http://www.bellcore.com/SECURITY/skey.html

[25] http://www.bellcore.com/SECURITY/training.html

[26] http://www.cecom.ufmg.br/~iremar/dissertacao/dissert_html/

[27] http://www.cert.dfn.de/eng

[28] http://www.dns.net/dnsrd/servers.html

[29] http://www.gta.ufrj.br/gta/pesquisa/mobseg.html

[30] http://www.inf.ufsc.br/v_eri/rcursos.htm

[31] http://www.isecure.com/faq.htm

[32] http://www.isecure.com/ispfyi.htm

[33] http://www.merseyworld.com/techwatch/standards/rfcs/rfc1240-1259.html

[34] http://www.nic.br/book/node65.html#2533

[35] http://www.nic.br/book/node67.html

[36] http://www.nic.surfnet.nl/surfnet/security/cert-nl.html

[37] http://www.pop-rs.rnp.br/cert/docs_html/autentic.html

[38] http://www.redeminas.br/~mjunior/internet/seguranca/define.html#confid

[39] http://www.redeminas.br/~mjunior/internet/seguranca/define.html#fire

[40] http://www.redeminas.br/~mjunior/internet/seguranca/define.html#fisica

[41] http://www.redeminas.br/~mjunior/internet/seguranca/define.html#integr

[42] http://www.redeminas.br/~mjunior/internet/seguranca/etapas.html

[43] http://www.redeminas.br/~mjunior/internet/seguranca/princ.html

[44] http://www.redeminas.br/~mjunior/internet/seguranca/secure.html

[45] http://www.ua.pt/cicua/netsurfer/ns1/virus.html