1. Conceitos Básicos sobre Segurança - Parte II
Por: Elias Barenboim ( 20/04/2001 )
Estamos por aqui novamente, espero que tenham gostado da semana passada.
Vamos voltar um pouco na história, a Internet que foi originada pela ARPANET (1969) não tinha preocupações
quanto a questões de segurança, seus protocolos ("idioma" que fazem as máquinas se falarem, com se fosse
a mesma "língua" digamos assim) tinham como meta a disponibilização dos serviços, a flexibilidade. Os dados
tinham que estar lá, independente da situação. Existiam mecanismos para que mesmo perante um ataque
nuclear, por exemplos, os dados chegassem a seu destino (roteamento dinâmico é a palavra, a ser discutido).
Essa era a grande "sacada" dos protocolos da ARPANET.
As pessoas que estavam interligadas por esta rede não tinham qualquer tipo de problema com relação a
segurança. Resumindo, a rede em si foi criada com intuito de manter os serviços sempre disponíveis, de
forma aberta e irrestrita. Era uma rede que interligava pessoas com fins estritamente acadêmicos ou
governamentais e se confiavam acima de tudo.
Durante todos esses anos não houveram problemas grandes e que preocupassem com relação a segurança.
Em 1988 a ARPANET sofreu seu primeiro grande incidente de segurança chamado "The Morris Worm".
Um estudante da Universidade de Cornell(NY/EUA), Robert T. Morris, escreveu um programa que conectava
em outro computador através de uma vulnerabilidade que ele procurava, utilizava-o e fazia isso para outro e
outro indefinidamente. Isso aconteceu por diversos computadores, até que causou um loop infinito(laço de
repetição) que fez com que 10% da ARPANET parasse.
Para corrigir isso vários computadores se desligaram da ARPANET e trabalharam em seus sistemas para
tirarem o tal "programa" e, posteriormente, se conectaram novamente.
O tal Morris comunicou a DARPA(o novo nome de ARPA) para criar um time de respostas a emergências
computacionais. agora chamado de CERT(CERT Coordination Center), um lugar de excelência do assunto e
ponto de referência para incidentes eletrônicos para todo mundo.
Em 1989 a ARPANET tornou-se oficialmente a Internet e moveu-se de um projeto de pesquisa governamental
para uma rede operacional comercial; já havia mais de 100 mil computadores. Os problemas de segurança
continuaram com técnicas tanto de ataques mais agressivas quanto de defesa mais sofisticadas.
Outro grande incidente ocorrido em 1989 foi conhecido como WANK/OILZ Worm, um ataque automatizado
sobre o sistema VMS através da utilização de um exploit(código para explorar um erro de um programa) para
o programa Sendmail é um programa de e-mail. Vocês ainda vão ouvir falar muito dele. Ele é bastante
complexo e já consagrado por falhas de seguranças.
Atualmente um grande risco que se encontra em geral são as linguagens de programação para Web(lado
servidor lógico) e que tentaremos abordar a fundo em futuras colunas da área de programação ou por aqui
mesmo.
Bom, chegamos a conclusão que a Internet foi desenhada e concebida com fins de pesquisa e educação. De
10 anos para cá esse foco tem mudado radicalmente e sua utilização em massa agregando valores financeiros
como comércio eletrônico, propaganda além de serviços públicos, tornando a formação de especialistas em
segurança e a preocupação com o tema um fator essencial.
Um incidente de segurança de redes é qualquer atividade relativa a rede com implicações de segurança
negativas. Isso significa que a atividade violou uma explícita ou implícita política de segurança(será explicado
2. a posteriori). Tais incidentes podem ser de qualquer forma ou dimensão, podem vir de qualquer lugar da
Internet, contudo alguns devem ter algum sistema específico como origem além de privilégios especiais em
tal sistema. Podem envolver pequenos servidores ou mesmo dezenas deles interligados.
Um ataque típico consiste em ganhar acesso a contas de determinados usuários, ganhando acesso privilegiado
e utilizando o sistema da vítima como ponte para sistema de terceiros, dificultando rastreamento e evidências
de identificação .
Fontes de Incidentes:
É muito difícil caracterizar quem realmente causou o incidente. O intruso pode ser um adolecente curioso, um
estudante universitário, uma pessoa tentando ganhar algo através do ataque ou mesmo um espião
procurando informações privilegiadas em seu sistema.
Uma característica da comunidade que costuma efetuar esse tipo de atividade é a comunicação. Existem
diversos newsgroups, listas de discussão e publicações escritas que descrevem várias técnicas para invasão de
sistemas, números de cartões de crédito, exploits, informações privilegiadas e tudo que você possa imaginar.
Os incidentes podem ser classificados por grupos, vamos vê-los :
Probe: Um "probe" é carcaterizado como uma forma não usual de obter acesso ao sistema ou
descobrir informacões sobre ele. Um exemplo é tentar logar numa conta não utilizada de forma
simples.
Varredura ( scan em inglês): Um "scan" é uma sequência de probes usada por uma ferramenta que
automatize isso. Por exemplo, varrer todas as portas para descobrir quais serviços estão disponíveis na
máquina e poder explora-los. São mais caracterizados como ameaças do que probes, que podem ser
casuais.
Comprometimento de Conta: Significa a utilização não autorizada de uma conta por alguém que não
seja o seu verdadeiro dono, sem envolver níveis administrativos de privilégios. Isso pode signifiar no
mínimo perda de privacidade, dados e serviços que você disponibilize. O roubo de uma conta com
níveis administrativos podem causar danos irreversíveis ao sistema. Lembre-se, o uso de uma conta
não administrativa é o primeiro passo para obtê-la.
Comprometimento da Conta Root: O termo Root vêm historicamente do Unix que quer dizer super-
usuário, ilimitado, permissões irrestritas. Caso aconteça esse tipo de situação o sistema deve ser
imediatamente restaurado para um estado anterior garantidamente seguro pois caso isso não aconteça
pode significar paralização de serviços, prestação irregular de tais ou coisas piores para outros sistema
correlatos.
Packet Sniffer: Um Sniffer de pacotes é um programa que "escuta" os dados que trafegam pela rede.
Tais dados podem incluir nomes, senhas, informações secretas como contas bancárias e dados mais
pessoais e não público.
Negação de Serviço (Denial of Service): Quando há ataques de negação de serviço não é
necessariamente com objetivo de ganhar acesso privilegiado a máquina ou acesso a dados
pessoais(necessariamente) mas para evitar que usuários que podem usar serviços oferecidos por tais
máquinas o utilizem. Podem acontecer de várias formas, mandando uma grande quantidade de dados
pela rede(lixo, flood), causando a exaustão do número de processos através da requisição intensa de
serviços ou mesmo causando danos físicos a partes da rede.
Explorando "Confiança" (Exploiting of Trust): Componentes da rede sempre criam uma relação de
confiança entre eles. Por exemplo, antes de executar algum comando, um computador checka em
outro se determinado atributo está setado para poder continuar sua tarefa. Aparecendo como sendo
esse segundo computador e "simulando" seu comportamento você pode obter acesso não privilegiado
ao sistema.
Código Malicioso: É basicamente a utilização de resultados não esperados de programas para obter
alguma coisa. Por exemplo, negação de serviço, deleção de dados, obtenção de dados/acesso não
autorizado etc ...
Ataque a Infra-Estrutra Internet: Ataques a servidores de nomes principais, serviços que muitas
3. pessoas utilizam e tudo que tenha relação com servidores chaves da Internet. Tais incidentes podem
atingir porções grandes da rede.
Referências (servem para muitas situações da área) :
Internet : http://www.cert.org
Livro : Practical Unix & Internet Security
Bem, por enquanto é só pessoal, agradeço todos emails que tenho recebido e espero continuar contando com
o feedback de vocês.
Abraços,
Elias Bareinboim
Copyright (C) 1999-2000 Linux Solutions