terça-feira, 27 de outubro de 2009

Ataques de negação de serviço (DoS)

Um dia desses um membro da comunidade Conhecimento Hacker requisitou métodos para derrubar um GAME. Isso me levou a lembrar do velho, querido, amado, descarado e infalível, ataque DoS.
Se existe uma técnica 100% eficiente quando se trata de derrubar servidores (quaisquer tipos de servidores, não só de GAMES), certamente esta se chama: negação de Serviço (Denial of Service, DoS).

O que vem a ser um DoS?

Estes ataques são famosos no âmbito da comunidade de segurança de redes. O envio de uma quantidade indiscriminada de pacotes a um determinado servidor, causa a paralisia de seus serviços.
Deixando a linguagem técnica de lado, analisemos um exemplo prático: Imagine que você, de algum modo, possui controle sobre uma grande quantidade de telefones, e resolve fazer com que todos estes telefones façam ligações ao mesmo tempo. Resultado: a operadora não conseguirá dar conta de todos os telefonemas, causando um congestionamento no serviço, e, por conseqüência, nenhuma ligação poderá ser completada.Esses casos são bem comuns em datas comemorativas, tais como natal e virada de ano.


Até aqui falamos sobre telefones, mas o DoS é praticado usando um único computador (“jura?”). Os ataques que utilizam mais de 1 computador são os chamados DDoS (Distributed Denial of Service), que nada mais é, do que se não, um ataque de negação de serviço em grande escala. Ou seja, máquinas são invadidas e comprometidas, assim se obtém acesso root (super usuário) e são instalados clientes e daemons; que por sua vez são as aplicações que possibilitam o ataque – veremos mais adiante.
Fazendo uma analogia simples, o atacante, através de máquinas controladas por ele, envia uma grande quantidade de pacotes a um determinado servidor, o alvo (como você sabia que eu ia dizer isso?). Desse modo o servidor atacado não consegue responder por todos os pacotes, e passa a não prestar serviço, ficando incomunicável sem quaisquer outros meios de conectividade (claro que ele ainda por optar por Palm’s, celulares, sinalizadores, sinais de fumaça, pombo correio, etecétera).


Familiarizando com a técnica:




Na época da comunidade GH, desenhei essa estrutura, e vamos usá-la para imaginar o ataque.

Conheçamos os personagens:

Atacante = É, obviamente, aquele que aplica o ataque (juro que não sou eu!).

Master = Esta é a única máquina que o atacante terá acesso direto. Ele enviará os comandos ao Master, que por sua vez enviará os comandos aos Agentes (veremos a seguir).

Agente = Consolida o ataque. Estes são os que recebem ordens de ataque do Master, que as receberá do atacante; assim enviando os pacotes ao(s) servidor(es) da vítima.

Existem mais dois personagens que não estão na figura, mais fazem parte de todo o processo:

Cliente = O cliente é o aplicativo que se encontra instalado no Master e que efetivamente controla os ataques enviando comandos aos daemons.

Daemon = Este é um processo rodado no agente e é responsável por executar os comandos do cliente.

Como pudemos analisar na imagem, o atacante, após comprometer as máquinas, escolhe a que deve ser o Master e os agentes. O Master geralmente é aquela máquina que é pouco acessada e pouco monitorada, já o agente tem de ser uma máquina conectada a Internet por link relativamente rápido, muito comum em Universidades, escolas de informática e provedores de acesso.Depois de feita a escolha, o atacante deve instalar um cliente em seu Master, e os daemons em seus agentes.Quando o daemon se encontra ativo, ele manda uma mensagem de “Hello” para o Master, que contém a lista de IP’s de todos os agentes.A comunicação entre o Atacante e o Master, depende muito da ferramenta escolhida por ele. Algumas se comunicam por portas TCP, UDP, rsh e até telnet (mais adiante veremos algumas ferramentas e suas propriedades).

As ferramentas mais conceituadas nos dias de hoje são:

1. Fapi (1998)

2. TFN (ago/99)

3. TFN2K(dez/99)

4. Blitznet

5. Stacheldraht(set/99)

6. Trank3. Trin00 (jun/99)

7. Shaft

9. Trin00 win version

Em uma pesquisa pela Wikipédia encontrei explicações de algumas de maior valor:

TRIN00 O Trin00 é uma ferramenta distribuída usada para lançar ataques DoScoordenados, especificamente, ataques do tipo UDP flood.Para maiores informações a respeito de ataques deste tipo, veja em: http://www.cert.org/advisories/CA-96.01.UDP_service_denial.html Uma rede Trinoo é composta por um número pequeno de masters e um grande número de agentes.O controle remoto do master Trin00 é feito através de uma conexão TCP via porta 27665/tcp. Após conectar, o atacante deve fornecer uma senha (tipicamente, "betaalmostdone").A comunicação entre o master Trin00e os agentes é feita via pacotes UDP na porta 27444/udpou via pacotes TCP na porta 1524/tcp. A senha padrão para usar os comandos é "l44adsl" e só comandos que contêm a substring "l44" serão processados.A comunicação entre os agentes e o master Trin00 também é através de pacotes UDP, mas na porta 31335/udp.Quando um daemon é inicializado, ele anuncia a sua disponibilidade enviando uma mensagem ("*HELLO*") ao master,o qual mantém uma lista dos IPs das máquinas agentes ativas, que ele controla.Tipicamente, a aplicação cliente que roda no master tem sido encontrado sob o nome de master.c, enquanto que os daemons do Trin00 instalados em máquinas comprometidas têm sido encontrados com uma variedade de nomes, dentre eles: ns, http, rpc.trinoo, rpc.listen, trinix, etc. Tanto o programa cliente (que roda no master) quanto o daemon (que roda no agente) podem ser inicializados sem privilégios de usuário root.

_____________________________________________________

TFN – TRIBE FLOOD NETWORK O TFN é uma ferramenta distribuída usada para lançar ataques DoS coordenados a uma ou mais máquinas vítimas, 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. Maiores informações a respeito deste tipo de ataques podem ser encontradas em:http://www.cert.org/advisories/CA-96.21.tcp_syn_flooding.html http://www.cert.org/advisories/CA-98.01.smurf.html 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 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 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.

_____________________________________________________


STACHELDRAHT Baseado no código do TFN, o Stacheldraht é outra das ferramentas distribuídas usadas para lançar ataques DoS coordenados a uma ou mais máquinas vítimas, a partir de várias máquinas comprometidas. Como sua predecessora TFN, ela também é capaz de gerar ataques DoS do tipo UDP flood, TCP flood, ICMP flood e Smurf/fraggle.Funcionalmente, o Stacheldraht combina basicamente características das ferramentas Trin00 e TFN, mas adiciona alguns aspectos, tais como: criptografia da comunicação entre o atacante e o master;e atualização automática dos agentes.A idéia de criptografia da comunicação entre o atacante e o master surgiu exatamente porque uma das deficiências encontradas na ferramenta TFN era que a conexão entre atacante e master era completamente desprotegida, obviamente sujeita a ataques TCP conhecidos (hijacking, por exemplo). O Stacheldraht lida com este problema incluindo um utilitário "telnet criptografado" na distribuição do código.A atualização dos binários dos daemons instalados nos agentes pode ser realizada instruindo o daemon a apagar a sua própria imagem e substituí-la pó ruma nova cópia (solaris ou linux). Essa atualização é realizada via serviço rpc (514/tcp).Uma rede Stacheldraht é composta por um pequeno número de master sonde rodam os programas clientes (comumente encontrados sob o nome de mserv, e um grande número de agentes, onde rodam os processos daemons (comumente encontrados sob o nome de leaf ou td). Todos eles devem ser executados com privilégios de root). Como foi mencionado anteriormente, o controle remoto de um master Stacheldraht é feito através de um utilitário "telnet criptografado" que usa criptografia simétrica para proteger as informações que trafegam até o master. Este utilitário se conecta em uma porta TCP,comumente na porta 16660/tcp.
Diferencialmente do que ocorre com o Trinoo, que utiliza pacotes UDP na comunicação entre os masters e os agentes, e do TFN, que utiliza apenas pacotes ICMP, o Stacheldraht utiliza pacotes TCP (porta padrão 65000/tcp) e ICMP (ICMP_ECHOREPLY).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 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 entre 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. Ao invés disso, o cliente envia 20 vezes cada comando confiando em que, ao menos uma vez, o comando chegue com sucesso. O master pode utilizar um endereço IP forjado.

Até a próxima galera! Obrigado pela visita.


0 Pessoas comentaram:

Postar um comentário

Não deixe de comentar. O seu comentário é o meu pagamento.

Compartilhar

Twitter Delicious Facebook Digg Stumbleupon Favorites