Denial of Service - Negação de Serviço
EEL878 - Redes de Computadores I
Profº Otto Carlos Muniz Bandeira Duarte

02. Ataques

2.1: Como os ataques são feitos

2.2: Controlando DDoS

2.3: Classificação dos ataques

2.4: IP Spoofing

2.5: Ferramentas de ataque

Capítulo 02: Ataques

2.1: Como os ataques são feitos

Ataques DDoS precisam ser planejados pelo atacante. Primeiro, conseguindo domínio sobre as máquinas que efetuarão a negação. Busca-se computadores vulneráveis que são invadidos e têm os códigos de ataque instalados neles. A seguir, o atacante estabelece laços de controle entre as máquinas sob seu comando, geralmente através de ferramentas IRC. Quando a rede de ataque (rede agente) está pronta, pode ser usada como bem se entender contra variados alvos.

As máquinas para a rede podem ser ora conseguidas através de bots de IRC (programas cliente que dão aos usuários de IRC permissões nos canais), permanentemente escaneando máquinas vulneráveis e remetendo suas informações ao atacante; ora por worms, que se propagam de um computador vulnerável a outro, procurando também outras máquinas vulneráveis, estabelecendo domínio sobre a máquina infectada e realizando o payload (um código que é executado para conseguir funções de ataque).

 

2.2: Controlando DDoS

Estabelecida a rede agente, o atacante pode controlá-la, especificar os comandos de ataque e recolher estatísticas do comportamento da rede.

Ferramentas DDoS constroem uma hierarquia operador (handler) / agentes, nas quais o atacante controla a rede agente através de comandos diretos impostos ao operador, que os repassa aos agentes, às vezes usando um conjunto de comandos e semântica diferentes. Os operadores guardam em arquivos as identidades dos agentes, e este era o grande ponto fraco deste modelo de comandos diretos, esquematizado abaixo:         

 

Como os agentes por vezes acabavam por guardar também as identidades dos operadores, uma investigação podia revelá-los, e com eles todos os demais agentes, desmantelando assim a rede DDoS.

Com grande parte das batalhas de negação de serviço tendo já como campo o IRC, e bots sendo já programados para encontrar agentes para ataques, os atacantes passaram a desenvolver bots de IRC também para desempenhar funções de DDoS. As vantagens eram inúmeras: o servidor já estava disponível e era mantido por outros; seria difícil encontrar o canal de chat no qual atua o operador do atacante e seus agentes. Mesmo que seja estranho que um canal repentinamente ganhe dezenas de milhares de usuários, seria difícil encontrá-lo dentre tantos outros canais do servidor – e, mesmo quando encontrado, é necessário contatar os administradores do servidor para alertar a farsa, o que pode também levar tempo. É comum transformar computadores em servidores forjados de IRC, em geral usando outra porta que não a padrão (6667/TCP) do protocolo, ou usar bots como proxies TCP para conectar-se a servidores reais na porta padrão. Este controle da rede de agentes, feito de forma indireta, está esquematizado abaixo:

 

2.3: Classificação dos Ataques

2.3.1: Ataque por Inundação

É dos tipos de ataque de DoS mais comuns. Ocorre inundação de tráfego TCP SYN, explorando a abertura de conexões do protocolo de TCP, utilizado em serviços que necessitam de entrega com confiável de dados, e que se inicia com a negociação de determinados parâmetros entre o cliente e o servidor.

O cliente envia um pacote SYN para o servidor, pedindo abertura de conexão. O pacote leva um parâmetro chamado número de seqüência inicial, que permite que o receptor reconheça dados perdidos, repetidos ou fora de ordem. Após o recebimento do pacote SYN, o servidor processa o pedido de conexão e aloca memória para armazenar informações do cliente. A seguir, um pacote TCP SYN/ACK é enviado como resposta ao cliente, notificando que o seu pedido de conexão foi aceito. O cliente envia então um pacote ACK, para completar a abertura da conexão. Esse procedimento é conhecido como aperto de mão de três vias (three-way handshake).

A partir deste tipo de ataque, os recursos da vítima podem ser explorados de diversas formas.

2.3.2: Ataque Reflexivo

Variação de um ataque de inundação, que visa exaurir recursos da vítima. Todavia, neste há a presença de um agente intermediário entre o atacante e a vítima. Utiliza-se este intermediário para espelhar o tráfego de ataque em direção à vítima, o que dificulta ainda mais a identificação dos atacantes, pois o tráfego que chega à vítima é originado no intermediário, e não no próprio atacante. Para este ataque, é necessário que o atacante envie uma requisição (REQ) ao agente intermediário, forjando o endereço da vítima (IP Spoofing, seção 2.4) ao invés de usar seu próprio endereço. Ao receber o REQ, o agente não consegue verificar a autenticidade da origem da requisição (que de fato não é autêntica) e envia uma resposta (RESP) diretamente para a vítima.

Entretanto, como o objetivo do ataque é usar os recursos do refletor e não inundá-lo, é preciso que o agente consiga processar as requisições em tempo, que deve ser menor ou igual ao intervalo entre pacotes de ataque, ou seja, tempo de resposta menor ou igual ao tempo de ataque . Caso contrário, o processamento do agente não será suficiente, e o tráfego excedente será descartado, e não atingirá a vítima. Este tipo de ataque não é restrito a determinado protocolo. Qualquer protocolo que envie pacotes de resposta ao atender a requisições pode ser usado, como o próprio TCP, quando o atacante enviaria diversos pacotes SYN para o agente, que os responderia pacotes ACK direcionados para a vítima. Poder-se-ia ainda usar UDP (User Datagram Protocol) associado ao DNS, quando o atacante enviaria diversas requisições ao DNS do agente, que enviaria respostas para a vítima.

2.3.3: Ataque à Infra-Estrutura da rede

Sobretudo usado contra os grandes sites da Internet como Yahoo, Amazon e Microsoft, que em geral possuem grandes recursos de processamento e de memória. Contra eles, DDoS de pequena escala não conseguem exaurir os suficientemente rápido para que a vítima tenha o serviço negado a usuários legítimos. Pode-se ainda concentrar esforços em algum elemento vital para o fornecimento do serviço, mas que não dependa da vítima, como por exemplo consumir toda a banda passante da vítima com o tráfego de ataque, o que causaria  perda de requisições na infra-estrutura de rede. O ponto onde ocorrem as perdas seria algum roteador entre o atacante e a vítima, e onde o tráfego direcionado à vítima (entrada) é maior do que o de saída. Como precisarão disputar o mesmo recurso com o tráfego enviado pelo atacante, o tráfego legítimo eventualmente pode ser descartado. É um tipo de ataque de difícil combate, já que os pacotes não precisam ter nenhum padrão semelhante que possibilite  filtrá-los.

Contra os mesmos tipos de alvos, usa-se inundação aos seus servidores DNS. Este ataque não atinge a vítima diretamente, mas estes servidores são responsáveis por traduzir nomes dos sites - que é o que os usuários usam para acessá-los - em endereços IP. Um ataque ao serviço de resolução de nomes acaba por negar serviços. Como vimos no capítulo 1, um destes ataques ocorreu contra a Microsoft.

2.3.4: Ataque de Vulnerabilidade

Obejtiva deixar a vítima inoperante. Uma das maneiras conseguir o intento é explorar alguma vulnerabilidade na implementação da pilha de protocolos ou da própria aplicação da vítima. Ocorreu, por exemplo, na implementação do protocolo TCP em sistemas operacionais Microsoft Windows. O atacante precisava construir um pacote TCP particular e enviá-lo para a vítima. Ao receber o pacote, o sistema operacional da vítima abortava, causando congelamento total do processamento.

2.4: IP Spoofing

Spoof significa forjar, ou seja, falsificar. É exatamente esta a tática no IP Spoofing: fornecer um falso endereço IP. Todo pacote de comunicação IP contém em seu cabeçalho o endereço do remetente e o do destinatário.

Programas maliciosos podem forjar cabeçalhos falsos, fazendo assim crer que o pacote veio de outro endereço. Isto pode ser usado por atacantes para quebrar medidas de segurança, como autenticações baseadas em endereço IP.

Este tipo de ataque é mais comum quando existe relação de confiança entre máquinas. Por exemplo, não é incomum que computadores dentro de uma mesma rede local confiem uns nos outros, aceitando conexões vindas dos outros sem exigência de login e senha. O mesmo pode ocorrer com a aceitação de pacotes, e isto se torna uma ferramenta muito útil para ataques de negação de serviço.

IP  Spoofing pode ser feito por:

·  Geração aleatória de endereços IP, quando um endereço dentro da faixa IPv4 (0.0.0.0 – 255.255.255.255) é forjado. Embora possam surgir endereços reservados, como os da faixa 192.168 ou inválidos, como os da faixa 0, a maior parte dos endereços simulará um IP válido e roteável. A forma mais comum de combater este tipo de spoofing é com filtragens de ingresso e egresso, técnica através da qual compara-se o endereço-fonte do pacote com o intervalo de endereços IP designado às redes da fonte e do destino, dependendo da localização do roteador de filtragem, descartando pacotes cujas fontes parecem ter IP forjado.  

·  Forja de subrede: Se uma máquina está em uma subrede de faixa pré-determinada e conhecida, é fácil forjar um endereço que esteja dentro desta faixa e fazê-lo passar-se por um integrante da subrede. A filtragem de ingresso e egresso neste caso deve ser feito apenas na faixa de IPs compreendida pela subrede. Todavia, mesmo assim ainda é difícil filtrar o IP forjado e identificar a máquina responsável pelo congestionamento de tráfego.

·  Forjar o IP da vítima: Coloca-se o IP da vítima nos pacotes de pedidos de serviços para provocar uma inundação de pacotes não requisitados sendo a ela enviados.

Forjar IPs é uma tática que gera sucessos em DDoS, embora não seja imprescindível. Oculta os endereços reais dos agentes em ataques DoS de agente único, permite ataques reflexivos (nestes, é realmente essencial forjar o IP como sendo o da vítima), nos quais a vítima recebe pacotes não requisitados de fato por ela, mas sim pelo IP que se fazia passar pelo seu; Por fim, IP Spoofing é uma arma para trespassar defesas contra DDoS. Algumas destas defesas criam listas de clientes legítimos, aos quais será dada preferência. Forja-se o IP dos pacotes de ataque como sendo de um destes clientes, que receberá tratamento preferencial – ou seja, um pacote falso não só será aceito, como terá preferência sobre outros.

Mas no cenário atual da negação de serviço, não é raro ter redes de agentes com dezenas de milhares de máquinas. É razoável que elas tenham pouca ou nenhuma relação entre si, estando geograficamente espalhadas. Com IPs diversos, passam-se por clientes legítimos dos serviços com pouca dificuldade.

2.5: Ferramentas de Ataque

Embora haja atacantes que cheguem ao ponto de escrever seus próprios códigos para ataques de negação de serviço, há uma série de programas facilmente encontrados na Internet:

·        Trinoo: Arquitetura operador / agentes. Atacante se comunica com o operador via TCP; O operador se comunica com os agentes via UDP. Permite senhas para operadores e agentes, e gera pacotes UDP para portas aleatórias para múltiplos recipientes.

·        Tribe Flood Network (TFN): Usa uma arquitetura diferente da do Trinoo. O atacante não precisa se logar ao operador. Os agentes podem atacar via UDP ou TCP.

·        Stacheldraht (Arame farpado): Combina características do Trinoo e do TFN, com comunicação encriptada via TCP entre atacante e operador.

·        Shaft: Combina características dos três anteriores. Permite mudança de portas de comunicação entre operador e agentes durante a conexão e tem recursos de coleta de estatísticas.

·        Tribe Flood Network 2000 (TFN2K): Versão melhorada do TFN, adiciona características para dificultar detecção do tráfego e controle remoto da rede de agentes.

·        Mstream: Gera inundações com tráfego TCP; Operadores podem ser controlados remotamente por mais de um atacante, e a forma de comunicação entre operadores e agentes é manipulável em tempo de compilação;

·        Trinity: Primeira ferramenta DDoS controlada via IRC. Cada agente, após infectado pelo Trinity, conecta-se a um canal e espera comandos.

·        Agobot & Phatbot: Congestionamentos de tráfego SYN, UDP e ICMP.