Tenho recebido algumas perguntas de como funcionam os ataques realizados contra os sites brasileiros e esse post vem, de forma simples, tentar esclarecer os acontecimentos recentes.
Em primeiro lugar o CooperaTI sabe que existem algumas coisas que acontecem em nosso país que estão fora do que se chama correto, mas não concordamos com este tipo de procedimento pois sabemos que “com grandes poderes vêm grandes responsabilidades” ;-), e que poderia ser usado esse grande conhecimento dessas pessoas para algo mais nobre.
Esses constantes ataques tem tirado do ar os sites de órgãos do governo no intuito de obter informações tidas como sigilosas, entre outras coisas. A forma que os ataques são feitos a partir de redes chamadas “botnets” , redes zumbis que são controladas por uma pessoa ou grupo, é que será foco de nosso artigo.
Primeiro vamos entender como essas redes funcionam, máquinas comuns são infectadas de algum modo, esse modo pode ser por um vírus, por um link em um site, por um link ou arquivo em um e-mail. Todos sabemos que o usuário comum não está atento a alertas de segurança, que ele nunca tem certeza sobre a origem de uma mensagem, mas mesmo assim clica no links da suposta foto ou outra coisa assim, sempre clica em sites de banco que vêm pedindo recadastramento dados por e-mail, que todo mundo sabe que não é procedimento dos bancos, ahhh usuários sempre eles…
Mas voltemos rede em si, após conseguir uma máquina infectada por um bot ou worm, ou qualquer programa de controle remoto o invasor pode utilizá-la, e geralmente faz isso, para infectar outras máquinas, seja por clicarem em links enviados pela lista de e-mail da vítima ou por tentar acesso à outras máquinas, explorar vulnerabilidades de navegadores Web ao exibir uma página, ou de backdoors. Não se vangloriem meus amigos do Linux pois estamos sujeitos à máquinas mal configuradas e a senhas fracas, programas de força bruta que utilizam dicionários de nomes e de senhas com uma lista imensa de IP para combina-los para fazer as tentativas de acesso, muitas dessas com sucesso. Eu mesmo já me deparei com várias máquinas infectadas por rootkits que se aproveitaram de contas com senhas fracas e ganharam acesso à maquina. Ganhando acesso dessa forma a várias máquinas com Windows/Linux/MacOS ou qualquer outro sistema, temos uma rede de bots(robots) prontos para atender as ordens do mestre… podem rir mas é assim que vamos chamá-los.
Temos ciência que um cracker, o nome correto é esse, esloveno possuia uma botnet com mais de 12 milhões de computadores infectados, e a estimativa de que cerca de 25% de todos os computadores no mundo estejam fazendo parte de uma botnet, muitos nem sabem disso e utilizam suas máquinas sem saber que fazem parte de uma rede do mal.
Tendo a rede pronta o cracker utiliza redes de IRC e outros protocolos de comunicação semelhantes para acionar seus bots, ele faz isso utilizando uma máquina que é chamada de command-and-control server , o comand-and-control server é acionado pela máquina principal do cracker, o bot herder. Feito isso os bots começam a fazer o que seu mestre mandou, pode ser enviar spam ou no caso brasileiro fazer cada bot enviar milhares de solicitações por segundo para os sites que eles desejam atacar. Veja na figura abaixo um exemplo de uma botnet.
Quando em funcionamento a botnet começa a enviar, cada máquina, milhares de solicitações para iniciar uma conexão com o servidor, como se fossem clientes verdadeiros. O servidor que não desconfia de nada até o momento e começa a alocar recursos para atender os chamados dos “clientes”, mas o cliente não continua a requisição para obter o serviço, ele faz uma nova chamada para nova conexão, assim o servidor precisa alocar recursos para essa nova chamada, ou seja, verificar os dados da conexão, alocar memória para atender ao pedido, acionar o processador para atender a futura solicitação do cliente, abrir espaço no disco para criar arquivos para o serviço se comunicar com outros serviços nas mesma máquina, entre outras coisas. Assim em vez de fornecer o serviço para o qual foi planejado a máquina fica atendendo a cada pedido de nova conexão até não conseguir mais fazer o seu serviço alvo, no caso dos servidores atacados fornecer páginas Web. Como o servidor não consegue mais atender os milhões de chamados feitos a ele, para de fornecer páginas e o site para por negar o serviço.
Se este fosse o único problema com isso seria simples, o problema maior é que quando derrubamos um serviço é possível, nem sempre, ganhar acesso aquele sistema através da brecha deixada pelo serviço que foi derrubado. Veja como funcionam os serviços como o Web por exemplo: Ao receber uma conexão feita pelo browser de um cliente na porta padrão do serviço, ele redireciona o pedido através de um socket (arquivo criado para troca de dados entre processos de máquinas diferentes, browser <=> servidor web) para o processo do servidor web que está sendo executado na memória RAM, e geralmente esse processo é executado com direitos administrativos ou de um usuário de sistema.
O servidor Web processa a requisição e entrega a página para o cliente e este a exibe para o usuário no browser. Mas um servidor cujo serviço foi derrubado nem sempre dá para o sistema identificar a tempo que o serviço foi derrubado e fechar a porta e a memória, assim o cracker utiliza a porta do servidor Web que ainda está aberta para enviar um pacote modificado para executar algum comando no servidor com o direito de quem era possuidor daquela área de memória, geralmente o administrador. Ele pode pedir para abrir para ele um acesso remoto, pode pedir acesso ao banco de dados como se fosse o servidor Web pedindo, pode até mandar apagar conteúdo da máquina. Muitas vezes o cracker apenas instala seus próprios programas para mais tarde controlar a máquina em questão.
Assim é possível que ao derrubar um dos sites do governo o cracker tenha conseguido obter algum dado que aquele servidor possuia ou de algum outro servidor com o qual a máquina vítima se comunicava.
O órgão do governo responsável por estes sites poderia ter tomado algumas providencias, que se não evitassem pelo menos diminuiriam o poder dos ataques. Talvez por não prever que esse tipo de atitude seria tomada contra sites de órgãos menos visados do governo, pois o STE(Superior Tribunal Eleitoral) em dia de eleições recebe massivos ataques desse tipo e não costuma ser derrubado, não se resguardou.
O que ele poderia ter feito, e aparentemente não ocorreu, é:
-
Utilizar a técnica de syncookie para detectar ataques de synflood e evitar atender milhares de solicitações falsas de um bot, ou seja o servidor quando recebe uma solicitação de conexão de um cliente pede que o mesmo confirme ela antes de alocar recursos, se não confirmar o servidor esquece a solicitação;
-
Utilizar regras de controle de quantidade de conexão por segundo, evitando assim a multiplicidade de requisições de um mesmo cliente;
-
Monitoramento ativo do tráfego do site, para que quando o tráfego for fora do normal ele tomar as devidas providências, desde bloquear os endereços de origem do ataque, quanto interromper o serviço a fim de resguardar os dados que estão nele;
Esses procedimentos são medidas locais no órgão ou no servidor, mas mesmo que impeça a chegada do ataque no serviço, não impede que os pacotes usados no ataque cheguem até o servidor, assim o link de internet fica comprometido, fica cheio e ainda assim impede que clientes verdadeiros consigam acessar o serviço. Por ser um órgão do governo, deveria entrar em contato com a operadora de internet a fim de solicitar que o tráfego originado da rede comprometida seja bloqueado ou desviado, clientes como nós que estamos na última milha dificilmente têm essa prerrogativa, mas eu se trabalhasse nesse órgão com certeza ao detectar qualquer evento anormal ligaria de imediato para operadora e solicitaria o bloqueio desses endereços.
Espero que tenhamos ajudado a elucidar as dúvidas que nos foram passadas por clientes, leitores e alunos sobre como os ataques estão acontecendo e porque tem sido tão devastadores aos servidores do governo.