Técnicas do Hackerismo

Autor: Cesar Boff

Introdução

O objetivo desta pesquisa é buscar informações sobre algumas das técnicas de hackerismo mais utilizadas no mundo, por pessoas mal-intencionadas, que visam prejudicar usuários de computadores interconectados, quer estejam estes computadores ligados em redes locais ou não.

Definições de ataque

- Conjunto de ações que tentem a comprometer a integridade, confiabilidade ou disponibilidade de um recurso computacional.

- Violação da política de segurança de um sistema.

- Exploração de vulnerabilidades visando a obtenção de acesso privilegiado.

- Uso malicioso que pode levar à negação dos serviços de um sistema.

Classificação quanto à severidade

Anatomia de um Ataque

ATAQUES DDos

Os ataques DoS são bastante conhecidos no âmbito da comunidade de segurança de redes. Estes ataques, através do envio indiscriminado de requisições a um computador-alvo, visam causar a indisponibilidade dos serviços oferecidos por ele.

Fazendo uma analogia simples, é o que ocorre com as companhias de telefone nas noites de Natal e Ano Novo, quando milhares de pessoas decidem, simultaneamente, cumprimentar, à meia-noite, parentes e amigos no Brasil e no exterior. Nos cinco minutos posteriores à virada do ano, muito provavelmente, você simplesmente não conseguirá completar a sua ligação, pois as linhas telefônicas estarão saturadas.

Ao longo do último ano, uma categoria de ataques de rede tem-se tornado bastante conhecida: a intrusão distribuída. Neste novo enfoque, os ataques não são baseados no uso de um único computador para iniciar um ataque. No lugar, são utilizados centenas ou até milhares de computadores desprotegidos e ligados na Internet (amplificadores) para lançar coordenadamente o ataque. A tecnologia distribuída não é completamente nova, no entanto, vem amadurecendo e se sofisticando de tal forma que até mesmo vândalos curiosos e sem muito conhecimento técnico podem causar danos sérios.

Seguindo na mesma linha de raciocínio, os ataques Distributed Denial of Service nada mais são do que o resultado de se conjugar os dois conceitos: negação de serviço e intrusão distribuída. Os ataques DDoS podem ser definidos como ataques DoS diferentes, partindo de várias origens, disparados simultânea e coordenadamente sobre um ou mais alvos. De uma maneira simples, são ataques DoS em larga escala.

Os Personagens de um Ataque DDos

Atacante : Quem coordena o ataque.

Master : Máquina que recebe os Parâmetros do ataque e comanda os agentes.

Agente : Máquina que concretiza o ataque.

Vítima : Máquina que é atacada.

Ferramentas e métodos de ataque

Smurf

O ataque smurf é o mais conhecido ataque que se beneficia do sistema de endereços broadcast de uma rede, e é um ataque baseado em negação de serviço, ou seja, também é um Denial of Service. O seu funcionamento é simples, porém, o resultado de um ataque smurf pode ser bem impressionante.

Esse tipo de ataque não tem intenção de parar um computador, mas sim uma rede inteira. É realizado enviando contínuas stream (cadeias) de pacote ICMP modificadas para a rede alvo. Tudo funciona da seguinte forma:

1. Um usuário malicioso cria uma lista de endereços broadcast de rede.

2. Ele envia pacotes "spoofados" com o IP da vítima para cada um desses endereços.

3. As máquinas das redes que receberam os pacotes respondem, mandando mais pacotes para a vítima, e não para o computador do agressor.

Dependendo da quantidade de endereços utilizados e da quantidade de máquinas dentro das redes, o ataque pode ser realmente devastador.

Logo após a liberação do código do smurf, começaram a surgir variações, tais como o papasmurf, fraggle e o smurf4. O fraggle é um smurf baseado em UDP.

Em vez de enviar pacotes de ICMP ECHO_RESPONSE, ele envia pacotes UDP "spoofados" para os endereços de broadcast. As máquinas da rede, ao receberem o pacote UDP, respondem à vítima. A vítima, em certas circunstâncias, envia mais uma resposta, gerando uma grande quantidade de tráfego na rede. O smurf4 é somente uma revisão do smurf. O papasmurf (também conhecido como smurf5) foi criado para "celebrar" o 1º aniversário do smurf. O autor do exploit resolveu então reescrever o código-fonte, deixando-o mais limpo, e juntando os dois ataques de broadcast (smurf e fraggle) num só programa.

Esse tipo de ataque tem sido usado para parar vários Provedores de Acesso à Internet e todos os seus usuários. Efetivamente, é muito difícil proteger-se de um ataque de broadcast bem planejado. Se a pessoa que está atacando conseguiu elaborar uma grande lista de endereços de broadcast vulneráveis e se a vítima não possui a proteção de um firewall, sua conexão com certeza ficará congestionada.

Em muitos casos, firewalls também são ineficientes. Os administradores de rede podem evitar que suas redes sejam utilizadas como amplificadores. Podem ser instalados firewalls que evitem a entrada de pacotes ICMP/UDP que tenham destino o endereço de broadcast. Podem ainda tomar precauções simples, como desativar serviços que não estão sendo utilizados pelos computadores de rede.

O site http://www.netscan.org está permanentemente procurando por redes que amplificam pacotes UDP/ICMP, mantendo uma lista de redes que fazem esta amplificação. O site http://www.powertech.no/smurf/ verifica na hora se uma rede pode ser utilizada como amplificadora ou não.

Nos últimos meses, as redes brasileiras cuja configuração de roteadores permitem este tipo de ataque têm sido utilizadas, com intensidade cada vez maior, criando prejuízos tanto para as vítimas quanto para as redes amplificadoras.

Funcionamento

Os pacotes são modificados de modo que o endereço da máquina que envia os dados é idêntico ao endereço do alvo (spoofing). Além disso, os pacotes são enviados para os chamados endereços broadcast, o que resulta em os pacotes modificados serem enviados para todos os computadores de uma rede. Os computadores dessa rede irão responder enviando uma mensagem de ICMP ECHO_RESPONSE para o computador que eles assumem ter enviado a mensagem (o computador-alvo da rede). Se o atacante tiver uma conexão rápida, não é preciso ser um grande matemático para saber que a quantidade de dados gerados pode parar a rede atacada. A rede irá parar até que o atacante pare de enviar os pacotes ou o tráfego seja bloqueado.

Anexo código fonte do ataque Anaxo-Smurf

SPOOFING ou Bind Cache

É a técnica de se fazer passar por outro computador da rede para conseguir acesso a um sistema. Esta técnica não é um ataque e sim parte de um, visando dificultar o rastreamento do agressor.

Para executá-lo, o invasor usa um programa que altera o cabeçalho dos pacotes IP de modo que pareçam estar vindo de outra máquina (vítima). Por exemplo, dizendo ao sistema que ele vai atacar, que ele é confiável. Isto ocorre porque as comunicações entre computadores em uma rede (Internet) se baseiam nestes endereços "confiáveis" para trocarem informações. Uma máquina A pode manter uma comunicação com a máquina B de forma que não seja necessário verificar a toda hora se a informação vinda é autêntica entre elas. O hacker, então, põe uma espécie de disfarce na sua máquina, dizendo para a máquina A que "ele" é a máquina B. Assim, a máquina A vai aceitar todos os seus comandos. Então, o intruso pode fazer o que quiser nela. Os tipos mais comuns de spoofing são: IP-spoofing, DNS-spoofing, Web-spoofing, mail-spoofing, entre outros.

Em uma conexão entre dois computadores existem três etapas que agem como se fosse um diálogo. A primeira ocorre quando o cliente diz ao servidor que quer fazer uma conexão; depois, na segunda etapa, o servidor pergunta qual é a máquina que quer se conectar; e, na última etapa, o cliente responde com o seu endereço IP. É neste momento que ocorre o ataque.

Funcionamento

Imagine uma rede local com três estações, A,B e C. Neste caso, a máquina que será invadida será a máquina A e o invasor será a máquina C. O ataque ocorre com base na máquina B, já que o endereço IP dela será roubado para fazer a invasão. Na prática, o invasor da máquina C simplesmente tira a máquina B do ar, usando uma técnica de ataque, que pode ser um DOS, e depois engana a máquina A, dizendo que é a máquina B. Isso é possível porque, na grande maioria dos serviços, não é necessária uma senha no momento em que é realizada a conexão.

Prevenção

Uma forma de detectar o IP spoofing é monitorando pacotes com algum software de monitoração de redes, tal como o netlog, por exemplo. O objetivo é verificar um pacote na interface externa da rede que tenha direções IP de origem e destino pertencentes ao domínio local.

Com a atual tecnologia de protocolo IP, é impossível eliminar pacotes IP-spoofed. Sistemas provedores de serviços Internet baseados em TCP podem ver-se inabilitados de administrar tais serviços quando estão sobre um ataque e por algum tempo depois de que o mesmo já tenha cessado. Para evitar um ataque desse tipo, várias medidas podem ser tomadas para reduzir o número de pacotes IP-spoofed que entram na rede.

A melhor forma de prevenir o problema de IP spoofing é reduzir a probabilidade de que um site seja objetivo de algum destes ataques, instalando um roteador que filtre a entrada da interface externa da rede (conhecido como um filtro de entrada), não permitindo que um pacote o atravesse, se o mesmo tem como direção de origem um que não corresponda ao da rede interna. Isto preveniria que um agressor não pertencente à sua rede lhe envie pacotes pretendendo ser uma máquina de sua rede. Esta à uma boa solução, se nós unicamente confiarmos em máquinas locais. Se cofiarmos em máquinas externas, esta solução topológica falha.

Neste caso, deve-se bloquear todos os protocolos que usem TCP e autenticações baseadas em direções. Ainda que este ataque específico esteja dirigido a sistemas Unix, qualquer sistema que autentica hosts ou usuários baseados em endereços IP é vulnerável a um ataque de spoofing.

TFN - Trible Flood Network

O TFN é uma ferramenta distribuída usada para lançar ataques DoS coordenados a uma ou mais máquinas-vítima, a partir de várias máquinas comprometidas. Além de serem capazes de gerar ataques do tipo UDP flood como o Trin00, uma rede TFN pode gerar ataques do tipo SYN flood, ICMP flood e Smurf/Fraggle.

Neste tipo de ataque, é possível forjar o endereço origem dos pacotes lançados às vítimas, o que dificulta qualquer processo de identificação do atacante.

No caso específico de se fazer uso do ataque Smurf/Fraggle para atingir a(s) vítima(s), o flood de pacotes é enviado às chamadas "redes intermediárias" que consolidarão o ataque, não diretamente às vítimas.

O controle remoto de uma master ( Máquina que recebe os parâmetros para o ataque e comanda os agentes) TFN é realizado através de comandos de linha executados pelo programa-cliente. A conexão entre o atacante e o cliente pode ser realizada usando qualquer um dos métodos de conexão conhecidos, tais como: rsh, telnet, etc. Não é necessária nenhuma senha para executar o cliente; no entanto, é indispensável a lista dos IPs das máquinas que têm os daemons (Processo que roda no agente, responsável por receber e executar os comandos enviados pelo cliente.) instalados. Sabe-se que algumas versões da aplicação-cliente usam criptografia (Blowfish) para ocultar o conteúdo desta lista.

A comunicação entre o cliente TFN e os daemons é feita via pacotes ICMP_ECHOREPLY . Não existe comunicação TCP ou UDP entre eles.

Tanto a aplicação cliente (comumente encontrada sob o nome de tribe) como os processos daemons instalados nas máquinas agentes (comumente encontrados sob o nome de td) devem ser executados com privilégios de usuário root.

TFN2K - Trible Flood Network 2000

A ferramenta Tribe Flood Network 2000, mais conhecida como TFN2K, é mais uma ferramenta de ataque DoS distribuída. O TFN2K é considerado uma versão sofisticada do seu predecessor TFN. Ambas as ferramentas foram escritas pelo mesmo autor, Mixter. A seguir são mencionadas algumas características da ferramenta:

Da mesma forma que ocorre no TFN, as vítimas podem ser atingidas por ataques do tipo UDP flood, TCP flood, ICMP flood ou Smurf/fraggle. O daemon pode ser instruído para alternar aleatoriamente estes quatro tipos de ataque.

O controle remoto do master é realizado através de comandos via pacotes TCP, UDP, ICMP ou os três de modo aleatório. Estes pacotes são criptografados usando o algoritmo CAST. Deste modo, a filtragem de pacotes ou qualquer outro mecanismo passivo torna-se impraticável e ineficiente.

Diferentemente do TFN, esta ferramenta é completamente "silenciosa", isto é, não existe confirmação (ACK) da recepção dos comandos, a comunicação de controle é unidirecional. Em vez disso, o cliente envia 20 vezes cada comando confiando que, ao menos uma vez, o comando chegue com sucesso.

O master pode utilizar um endereço IP forjado.

ICMP Flood

O pacote do tipo ICMP (Internet Control Message Protocol) não é exatamente igual a um pacote PING, como muita gente diz. Os pacotes TCP/IP e UDP são gerados por programas do tipo FTP, Telnet e outros. Porém, o ICMP é gerado diretamente pelo Kernel da máquina para nomear erros e controlar o fluxo de informações entre duas máquinas diferentes que estejam se comunicando.

O ICMP Flood (inundação) é o ato de enviar o número máximo de pacotes no menor espaço de tempo possível a fim de tornar a conexão de um usuário lenta (lag), desconectando-o da rede. O ataque ICMP Flood pode ser dividido em duas categorias: usuários de modem e usuários de rede.

Um usuário que esteja conectado via modem a 14.400bps de sua casa dificilmente conseguirá atacar alguém com um ICMP Flood, pois não tem velocidade para o envio de pacotes suficientes para derrubar alguém, e, ao mesmo tempo, pode ser um alvo para um outro usuário que esteja conectado a 28.800bps, por exemplo.

Para se entender mais facilmente como funciona, basta pensar assim: quanto maior o link da conexão, mais poderoso será o ataque. Usuários com conexão mais veloz e maior banda (bandwidth) derrubam os usuários que têm link menor. Seguindo essa lógica, um usuário em uma Shell T3 derruba uma Shell T2, que derruba uma T1, que derruba um Modem de 56Kbps, que derruba um de 28,8Kbps e assim sucessivamente.

Para proteger-se do ataque ICMP Flood deve-se usar um programa de ICMP Check que irá lhe dizer de onde estão vindo os pacotes, pois o ICMP não estabelece conexão e, por esse motivo, programas como o netstat, não conseguem identificar a origem do ataque. Também um bom firewall para bloqueio de pacotes ICMP vindos de qualquer lugar é uma possível proteção. Um bom programa é o Conseal PC Firewall, da Signal9, que também atua no caso de ataques utilizando outros protocolos, como TCP, UDP e SYN.

Anexos

Abaixo, código-fonte referente ao ataque Smurf e Spoof

Link para o Anexo-Smurf.

Conclusão

Através desta pesquisa, constata-se que invasões e ataques de negação de serviços vêm se tornando um problema cada vez mais grave, pois novas técnicas de ataque surgem a cada instante e as existentes ficam cada vez mais eficientes.

É um grande desafio para os administradores de redes impedirem tais ataques, já que muitas máquinas ligadas à grande rede não têm nenhum tipo de proteção e, ainda pior, atuam como amplificadoras para que esses ataques se tornem mais poderosos.

Referências

http://sti.br.inter.net/hackacio/frames/
wp_smurf.htm#
Sobreosataques

http://seguranca.brasirc.net/ataques/
a_broadcast.htm

http://www.cg.org.br/acoes/invasoes.htm

http://www.cirp.usp.br/secoes/screde/seg_redes/
seg_inv.html

http://seguranca.brasirc.net/ataques/a_icmp.htm

http://www.darkocult.cjb.net/

www.acme-ids.org/~marcelo