Negação de Serviço, Negação de Serviço Distribuída e Botnets


2. Ataques

  • 2.1: Formas de ataque

    Existem 3 principais formas de ataque, e inúmeros tipos. Geralmente, um ataque é de mais de um tipo e/ou forma.

    • Ataques por Inundação (Flood Attacks)

      Ataques por inundação são caracterizados por causar um grande volume de tráfego no sistema da vítima primária, de maneira que sua banda fique congestionada, por meio da utlização de pacotes UDP[1] (User Datagram Protocol) ou ICMP[2] (Internet Control Message Protocol). Esta forma de ataque pode tanto deixar o sistema lento quanto derrubá-lo por completo.

      [1]O UDP é um dos principais protocolos de rede da Internet, e permite que aplicações enviem mensagens de tamanho fixo(neste caso chamadas de datagramas, especificamente) encapsuladas em pacotes IPv4 ou IPv6 a um destino escolhido. Neste tipo de protocolo não há garantia da chegada do pacote.

      [2]O ICMP é um dos principais protocolos de rede da Internet, e é utilizado para o envio de relatórios de erro à fonte original. Mensagens ICMP costumam ser enviadas automaticamente quando um pacote não consegue chegar a seu destino, por exemplo.

    • Ataques por Amplificação

      Ataques por amplificação são caracterizados pelo envio de requisições mascaradas para um endereço IP de broadcast[1] ou para um grande número de computadores, que por sua vez responderão a essas requisições. Esta forma de ataque adultera informações de forma que o endereço de IP do alvo passe a ser reconhecido como o endereço de IP de origem, fazendo com que todas as respostas sejam direcionadas para o mesmo.

      [1]Um endereço de IP de broadcast é um recurso encontrado em roteadores que, quando escolhido como endereço de destino, faz com que o roteador efetue um broadcast, ou seja, replique o pacote e o envie para todos os endereços de IP pertencentes a um intervalo determinado (intervalo de broadcast). Em ataques por amplificação, endereços de broadcast amplificam o tráfego de ataque, o que leva à redução da banda do alvo.

    • Ataques por Exploração de Protocolos

      Ataques por exploração de protocolos são caracterizados pelo consumo excessivo dos recursos do alvo por meio da exploração de alguma característica ou falha de implementação específicas de algum protocolo instalado no sistema do alvo. Os principais ataques por exploração de protocolos se dão pela utilização indevida de pacotes TCP SYN[1] ou de PSH+ACK[2].

      [1]O SYN é o primeiro pacote enviado através de uma conexão TCP e indica a intenção de conexão.

      [2]O PSH é um flag que indica que os dados devem ser transmitidos imediatamente, mesmo que o buffer não esteja totalmente preenchido, e o ACK é um flag que indica que o endereço de destino recebeu corretamente os dados.


    • Alguns tipos de ataque

      • Inundação por ICMP (ICMP Flood)

        Também conhecido como inundação ping, ou ping flood, este tipo de ataque se baseia no envio constante a partir de um endereço IP mascarado de uma grande quantidade de pacotes echo request (ping) até que o limite de requests por segundo seja ultrapassado.

        Para tal, o atacante necessita de certos privilégios no sistema alvo, além de precisar de uma vantagem de banda significativa em relação ao alvo para ter sucesso (por exemplo, um sistema dial-up seria alvo fácil para um atacante que possuísse um sistema com conexão DSL de alta velocidade, mas o contrário não teria sucesso).

        Se o ataque for bem-sucedido, a banda do alvo é, rapidamente, completamente consumida pelos pacotes ICMP que chegam e os pacotes de resposta que envia, impedindo que echo requests legítimos sejam atendidos.

        Figura 1: Comportamento normal (ping)

        Figura 2: Comportamento sob ataque (ping)

      • Inundação SYN (SYN Flood)

        Neste tipo de ataque, o atacante inunda a rede com pacotes TCP SYN, frequentemente com um endereço IP de origem mascarado. Cada um desses pacotes representa uma intenção de conexão, o que leva o servidor alvo a alocar, para cada um deles, uma determinada quantidade de memória para a nova conexão a ser criada e enviar de volta um pacote TCP SYN-ACK, para o qual espera uma nova resposta (TCP ACK) que permitirá efetivamente estabelecer a nova conexão.

        Como os pacotes ACK esperados nunca são enviados pela origem, quando a memória do servidor é completamente alocada os pedidos legítimos de conexão são impedidos de ser atendidos até que o ataque acabe. Além disso, as conexões parciais resultantes possibilitam ao atacante acessar arquivos do servidor.

        Figura 3: Comportamento normal

        Figura 4: Comportamento sob ataque

      • Ataques peer-to-peer

        Este tipo de ataque difere dos ataques baseados em botnet, mais frequentes. Nele, não há botnet e o atacante não precisa se comunicar com os clientes sabotados; em vez disso, ele trabalha enviando instruções a clientes de grandes redes peer-to-peer (p2p) para compartilhamento de arquivos. Tais instruções fazem com que esses clientes se disconectem da rede peer-to-peer e se conectem ao alvo. Como resultado, uma grande quantidade de novas conexões com o alvo tentam ser iniciadas, parando o servidor ou levando a uma queda significativa do seu desempenho.

        Figura 5: Comportamento normal de uma rede p2p

        Figura 6: Comportamento de uma rede p2p usada para ataque de negação de serviço

      • Ataques distribuídos (DDoS)

        Neste tipo de ataque, múltiplos sistemas (e não apenas um) inundam a banda ou os recursos de rede de um alvo, frequentemente pelo uso de botnets, e impedem a formação de novas conexões. As vantagens, para o atacante, de um DDoS em relação a um ataque de negação de serviço feito a partir de um único sistema são a maior facilidade para gerar um tráfego de ataque mais intenso e a maior dificuldade para o alvo anular o ataque.

        Este tipo de ataque pode ser feito por malware, por exemplo. Um dos mais conhecidos malwares para DDoS é o MyDoom, que possui um endereço IP alvo hardcoded, e seu mecanismo de ataque de negação de serviço é ativado em uma data e uma hora específicas. Assim, não é necessário mais nenhum tipo de interação por parte do atacante para que o ataque ocorra.

        DDoS também pode ser feito por meio de um trojan, que contém ou faz download de um programa que transforma o sistema em um "zumbi". Ou seja, é estabelecida uma botnet. Diferentemente do ataque que utiliza malware, a utilização de um trojan permite que o endereço IP alvo seja alterado após a infecção.

        Figura 7: Ataque distribuído de negação de serviço

  • 2.2: Ferramentas

    Existem diversas ferramentas disponíveis para a execução de ataques de negação de serviço, e nesta seção apresentamos brevemente algumas delas.

    • Stacheldraht

      Stacheldraht é um clássico software escrito em C para execução de ataques DDoS por meio do uso de botnets, escrito para sistemas baseados em Linux ou Solaris, e utiliza vários tipos diferentes de ataque de negação de serviço, incluindo inundação por UDP, inundação por ICMP e inundação SYN. Esta ferramenta detecta e automaticamente possibilita a geração de endereços IP de origem mascarados.

    • Trinoo

      Trinoo (ou trin00) é um conjunto de programas de computador que executam um ataque DDoS. Esta ferramenta é famosa por permitir que os atacantes deixem um arquivo auto-replicante em uma pasta chamada cry_baby e modifiquem-no regularmente, contanto que a porta 80 esteja ativa.

      O atacante, por meio de um host afetado, automaticamente compila uma lista de máquinas que também podem ser afetadas. Com essa lista em mãos, executa scripts para afetar tais máquinas e convertê-las em trinoo masters ou trinoo daemons. Um master pode controlar diversos daemons, que são quem lançam efetivamente o ataque quando o atacante executa um comando para tal a partir dos masters.

  • 2.3: Como fazer um ataque

    Esta seção explica brevemente os passos para a execução de um ataque de negação de serviço.

    • 1. Alvo

      Primeiramente, deve-se, obviamente, determinar o alvo do ataque. Leva-se em conta, para tal, a motivação do atacante e a possibilidade real de executar um ataque efetivo contra o alvo desejado por meio dos recursos dos quais se dispõe.

    • 2. Planejamento

      Então, o atacante deve determinar, com base nos recursos de que dispõe e nas características do alvo, qual forma de ataque será executada, assim como tipo de ataque específico será feito. Por fim, determina-se a(s) ferramenta(s) a ser(em) utilizada(s), dependendo de qual ataque específico foi escolhido.

    • 3. Estabelecimento da rede de ataque

      Por último, o atacante inicia o preparo para o ataque, o que significa que ele determina de que maneira, especificamente, ele utilizará a ferramenta escolhida para executar seu ataque. Se o ataque exigir o estabelecimento de uma botnet, por exemplo, primeiro deve-se criá-la e, feito isso, partir para o ataque.