Aula 4
Emerson Wagner
Principais Ataques
Um ataque pode ser dividido em algumas fases distintas, cada uma delas possuindo suas
próprias características:
1. selecionar um alvo
2. coletar informações sobre ele
a. utilizar serviços como finger e rpcinfo
b. usa ferramentas administrativas
c. DNS, sendmail e ftp são outros serviços que oferecem informações.
3. lançar um ataque sobre o alvo. O invasor utiliza vários métodos que exploram
vulnerabilidades conhecidas de serviços, servidores e SOs ou simplesmente tenta
identificar senhas
4. destruir evidencias da invasão
a. destruir vestígios em arquivos de log
5. obter senhas de outras contas. Em linux um ataque ao /etc/passwd consegue obter
um considerável numero de senhas
6. obter senha do administrador
7. instalar ferramentas para captura de senhas (cavalo-de-troia)
8. criar caminhos secundários de entrada na máquina invadida
9. utilizar a máquina invadida para outros ataques
Alguns tipos de Ataques:
Engenharia Social
É o método que consiste em enganar as vitimas através do emprego de informações
adquiridas por pesquisa. O atacante se vale destas informações para induzir pessoas de boa
fé a executarem ações indevidas e perigosas.
Exemplo
Julho 1997: um dos mais conhecidos provedores Internet nos EUA -- http://www.webcom.com --
teve o seu domínio "cancelado" durante 12 horas, causando prejuízos a mais de 5.000 sites que
são hospedados pela webcom. Este "cancelamento" foi efetuado pela ação ilegal de uma pessoa
não identificável, que aparentemente enviou um e-mail e um fax falsos para a InterNIC, solicitando
o cancelamento do registro Internet da webcom, como se fosse uma ordem da própria webcom.
Um relato do caso está disponível em http://www.techweb.com/wire/news/jul/0716internic.html.
Denial-of-Service
Este ataque tem como objetivo impedir o uso legítimo do sistema. Para isto um intruso
inunda o sistema ou a rede com mensagens, processos ou requisições de modo que nenhum
trabalho possa ser realizado.
IP Spoofing
O atacante utiliza o endereço IP de uma máquina confiável juntamente com algum
protocolo que faz autenticação baseada em endereços. Deste modo, este ataque permite que
pessoas utilizando qualquer máquina se passem por usuários legítimos de uma máquina que
é confiável em determinada rede.
Exemplo:
Sejam três hosts, X, S, C. O atacante está lançando o ataque a partir de X em S,
personificando C, em quem S confia.
1. X retira de operação C, enchendo a porta 21 (FTP) com requisições de conexão.
2. X estabelece uma conexão real em S e grava o numero de seqüência retornada por
S.
3. X envia um pacote SYN tendo como origem a porta 21 e destino a porta 514
(servidor de execução remota). O endereço fonte contido no cabeçalho deste pacote
é alterado para conter o endereço IP de C.
4. S faz a autentificacao da requisição de conexão baseada em endereço. S envia um
pacote de resposta para C, que é ignorado, pois está fora de operação.
5. X envia um pacote ACK para S, com o numero de seqüência “adivinhado”, ou seja,
o numero previamente adquirido somado com 64.
6. X tem uma conexão legítima com S na porta 514
7. X envia dados contendo um comando a ser executado em S.
8. S “pensa” que recebeu um comando rsh de C, executando.
Como se defender:
A geração do numero inicial de seqüência pode ser randômico
Colocar barreiras (firewall) que impeçam a entrada de pacotes cujo endereço IP
origem sejam de máquinas internas ao site.
Colocar barreiras (firewall) que impeçam conexões externas em serviços que
realizam autenticações baseada em endereços .
Source Routing Attack
Este ataque se utiliza dos mecanismos de roteamento disponíveis e da opção losse source
route do protocolo IP para induzir a máquina alvo a acreditar que o ataque é uma operação
legítima proveniente de uma outra máquina confiável. A opção loose source route
disponibiliza um mecanismo para que a origem de um datagrama possa fornecer
informações de roteamento usadas pelos gateways para direciona-los. Deste modo um
processo pode iniciar uma conexão TCP fornecendo um caminho explicito para o destino,
sobrescrevendo o processo usual de roteamento.
Exemplo:
Sejam três máquinas, X, A e B. Seja a situação em que o intruso em X lança um Source
Routing attack em A que confia em B.
1. O intruso, com algum tipo de ataque, desestabeliza B, ou espera que ela seja
desligada
2. o intruso configura X para que contenha o endereço IP de B. Neste momento o
atacante esta personificando a máquina confiável
3. O intruso utiliza rlogin ou rsh para acessar A . Para isto deve utilizar pacotes IP com
opção loose source route ativada e corretamente configurada, contendo um caminho
válido de X para A.
4. A aceita as requisições de X, pensando que elas são de B. A partir deste momento X
detem uma conexão legítima com A
5. As respostas de A são enviadas para X através do caminho inverso descrito na
operação loose source dos datagramas recebidos por ª
Como se denfender:
Utilizar versões dos servidores rlogin e rsh que não aceitam conexões com a
opção loose source route ativada
Configurar o firewall sendo um único ponto de entrada com a rede externa,
utilizando filtros de pacotes que não permitam que pacotes com a opção ativada
entrem no site.
Sniffers
Este tipo de ataque ocorre em redes onde os pacotes são transmitidos para todos os
computadores conectados ao mesmo meio físico. Onde uma máquina pode ser programada
(interface de rede) para que ela possa capturar todos os pacotes que circulam pelo meio, não
importando o destino.
Um exemplo de programa sniffer é o esniff.c, desenvolvido para operar no sistema SunOS,
e que captura os primeiros 300 caracteres de toda conexão telnet, ftp e rlogin.
Como se proteger:
Analisar o trafego de toda a rede
Procurar arquivos gerados por ele
Verificar o trafego dos superusuarios, pois, sniffer normalmente requer recursos
somente disponíveis a superusuarios.
Utilizar recursos de hardware, como hubs que enviam pacotes somente para as
maquinas destino.
Criptografia e autenticação
Ataque do Dicionário
O atacante compõe um dicionário e, dispondo de suficiente poder de processamento,
experimenta todas as palavras deste dicionário contra o texto cifrado armazenado no
arquivo /etc/passwd.
Para impedir este ataque, os usuários devem ser conscientizados para não usarem palavras
fáceis, ou seja, que tenha grande probabilidade de constar em um dicionário.
Exemplo de Ataque em CGI
Imagine que um usuário chamado Sr. esperto tenha o seguinte formulário na web :
Formulário de resposta para Sr. esperto
Este é um formulário simples onde o usuário entra com uma mensagem para ser enviada para um
script chamado resposta.pl. Dentro do script resposta.pl vamos encontrar a seguinte linha
(suponha que as variáveis já tenham sido passadas):
system("/usr/lib/sendmail -t $meu_endereco
Invadindo algum.lugar.com.br !
Os pontos-e-vírgulas no campo hidden são um delimitador para separar comandos UNIX,
possibilitando a execução semelhante à uma linha de comando shell. A chamada de sistema em
Perl gera um shell UNIX, e neste caso, executa os comandos do campo value, removendo os
arquivos do diretório corrente e enviando um e-mail com o arquivo de senhas para o hacker.
A primeira lição: você não deve confiar nas informações passadas via script CGI. A segunda lição:
evite usar chamadas de sistemas promíscuas em Perl, ou em qualquer outra linguagem.
Exemplo de vírus que se propaga pelo email
O vírus BubbleBoy, uma referência a um personagem do seriado Seinfeld, não traz sérios danos
ao computador contaminado, mas se propaga de forma muito fácil. Na versão actual, o maior
problema que a praga causa é alterar o nome do proprietário do software para "BubbleBoy" e o da
empresa para "Vandelay Industries".
BubbleBoy utiliza códigos em VBS inseridos dentro de uma página HTML. O Outlook Express e o
MS Outlook permitem a execução desses códigos sem que o usuário perceba. Além disso, a maior
falha explorada pelo vírus é a definição incorrecta de "safe for scripting" no controle ActiveX
"scriptlet.typelib" do Internet Explorer. Com esta definição é possível a escrita de arquivos no
Windows.
Ao ser activado, o BubbleBoy grava o arquivo "UPDATE.HTA" no directório c:\windows\start
menu\programs\startup ou c:\windows\menu inicio\programas\inicio, alterando as chaves na
registry referente aos nomes do proprietário e da empresa ao se reinicializar o computador (isto
caso o formato .HTA esteja registrado como uma aplicação HTML). Também será verificada a
existência da chave HKEY_LOCAL_MACHINE\Software\OUTLOOK.BubbleBoy\ com o valor
OUTLOOK.BubbleBoy 1.0 by Zulu, evitando a dupla exposição do vírus em um mesmo
computador.
Para realizar a sua autoprocriação pela Internet, o BubbleBoy utiliza uma chamada MAPI enviando
E-mail para todos os participantes da lista de endereço do Outlook. No campo "subject" do E-Mail
propagado aparece o texto "BubbleBoy is Back!", com as características da figura abaixo:
O novo vírus foi criado pelo hacker argentino Zulu, e só infecta as versões em inglês e espanhol do
Windows. Os sistemas Windows 95 (com o "Windows Scripting Host" instalado), 98 e 2000 que
possuem Outlook e Internet Explorer 5 estão suscetíveis ao ataque. A Microsoft já disponibilizou a
correcção do scriptlet.typelib em http://www.microsoft.com/Security/Bulletins/ms99-032.asp que
remove as permissões de escrita do controle ActiveX citado.
Ataque pelo Telnet
Execute um TELNET para a porta do soquete do servidor de correspondência (geralmente 25).
TELNET 25 (por exemplo, TELNET
www.meudominio.com.br 25).
Tal comando irá abrir uma sessão de comunicação via TELNET para o endereço especificado (deve
ser o endereço do servidor de mail), para a porta 25 do mesmo (porta do serviço de mail SMTP).
O servidor de mail do outro lado, irá simplesmente responder ao seu pedido e aguardar seus
comandos. Fácil não ?!? Claro, desde que voce saiba os comandos necessários para interagir com
o servidor de mail SMTP.