Pr0teus

Mais homem do que máquina, mais Deus do que homem.

24 Aug 2016

Ataques explicados D.O.S (denial of service)

A primeira postagem da série "Ataques Explicados". Vamos definir ataques de negação de serviço:
Toda e qualquer forma de ataque cujo objetivo é dificultar o acesso, impedir ou negar um serviço a um usuário legítimo.
A principal característica, justamente é a falta de serviço para um usuário. Temos vários exemplos destes ataques na mídia {Ex1, Ex2 e Ex3}. Como podemos efetuar estes ataques: Eles podem ser efetuados de diversas maneiras, a que nos interessa hoje em dia é através de meios cibernéticos(Internet), mas podem ser executados de diversas outras maneiras, bastando negar o serviço para um usuário legítimo. Objetivo: Derrubar a internet do seu amigo. Como? : Desligando a chave geral da residência. Impacto : Após o término da bateria do no-break para o modem ADSL, indisponibilidade do acesso a internet e perda da amizade.
Como vistos, ataques de negação de serviço podem ser bem simples e rápidos de serem efetuados. Mas se não temos acesso a meios físicos, como podemos derrubar um serviço através da Internet? Na Figura 1, temos o esquema de um Servidor conectado a internet.
Figura 1 - Esquema minimalista da rede. Neste ponto, o objetivo do Atacante, grifado em vermelho é negar o acesso normal ao grupo de "usuários regulares". Ao olhar na Figura 1 , podemos identificar quais locais poderíamos atingir para negarmos o serviço. Como já podem imaginar, interromper a conexão de todos os possíveis usuários com a Internet é muito difícil, o ponto vulnerável é a conexão do servidor com a internet. Se pudermos desligar ou sobrecarregar este link, o acesso a internet deste servidor ficará tão lenta e instável que negará serviços para outros usuários.
A grande pergunta é Como?
Aqui entram os detalhes técnicos que quero apresentar, a maioria dos kiddies atualmente apenas baixam uma das ferramentas já desenvolvidas e ataca um alvo qualquer sem nem ao menos saber como funciona a ferramenta ou a técnica. O que proponho a vocês é subirem um nível na "hierarquia hacking".
Camada de Transporte.
Sabemos que a internet utiliza basicamente dois protocolos na camada de transporte, UDP e o TCP. Ambos com características únicas. Podemos utilizar destas características para sobrecarregar os links de conexão entre o servidor e a internet.
Flooding (Inundação):
Consiste basicamente em enviar mais dados do que o link pode suportar, inundando a conexão com dados irrelevantes e causando o congestionamento da rede. Para este ataque dar certo, é necessário que o atacante tenha mais banda do que a vitima. Suponhamos a seguinte possibilidade no cenário acima: O Atacante possui uma banda de 1Gbps, o Servidor alvo possui um link de 3Mbps. Observem que a diferença entre as larguras de banda é enorme, e portanto o atacante consegue enviar mais dados para o servidor do que a banda dele consegue suportar... deixando o canal de comunicação(Rede) tão cheio que impossibilita o grupo de usuários regulares de se conectar ao servidor.
Sublinhei a palavra congestionamento. Dos protocolos mencionados acima o TCP prevê um controle de congestionamento da rede. Esta característica pode ser utilizada para ataques de negação de serviço, se durante um fluxo TCP o atacante conseguir manipular o RTO (Retransmission Time Out) para um valor muito baixo, forçando o TCP Thoughput para um valor muito baixo.O Protocolo UDP não implementa qualquer tipo de controle de congestionamento, e portanto é possível enviar tantos pacotes quanto a sua conexão permitir. Vale lembrar que o sucesso deste ataque está em sobrepujar toda a largura de banda do servidor alvo. Se a sua banda não for maior que a do servidor alvo, e em geral, não é. Você pode utilizar as técnicas de LowRate D.O.S. explorando as características dos protocolos. Ou como diz o ditado, a união faz a força. Se o alvo possui um link de 10Mbps, um Atacante com a posse de 20 links de 2 Mbps em teoria pode derrubar o alvo. É o chamado D.D.O.S.
Syn Flooding:
Ao criar uma conexão, o TCP utiliza um método chamado de 3-way handshake. Podemos ver o funcionamento na Figura2;
Figura 2 - TCP 3-way handshake. Um cliente ao conectar em um servidor envia uma requisição. Isso é, o campo SYN do TCP ativado. O servidor entende que está sendo criada uma nova conexão e aloca os recursos necessários para ela (Socket). Supondo que, o número de sockets seja limitado, podemos facilmente impedir que novas conexões sejam criadas se utilizarmos todos os recursos possíveis. O legal desta técnica é que o handshake não precisa ser completado, o cliente não precisa responder com o ACK, então é possível forjarmos o endereço IP do cliente.
Camada de Aplicação.
Até agora falamos de ataques que acontecem na camada de transporte. Existem diversos protocolos que são utilizados na camada de aplicação, a questão é utilizar as fraquezas destes protocolos para negar serviço. Cada tipo de serviço implementa o seu próprio protocolo Ex; a Web utiliza o HTTP.O SlowLoris por exemplo, utiliza o Protocolo HTTP para negar o serviço. Como? Quando é enviado uma requisição HTTP, o servidor espera que toda a requisição seja enviada para então poder processar. Se o atacante atrasa o envio do CLRF(Indica o fim do cabeçalho HTTP), o servidor aloca recursos e fica esperando para processar. Milhares de requisições destas poderão utilizar todos os recursos que o Servidor dispõe para o servidor Web causando lentidão e a negação do serviço.
Existem diversas ferramentas que fazem ataques de D.O.S ou StreesTesting. Cada uma implementa uma ou mais técnicas descritas acima.
Ferramentas: