um serviço. Os ataques DoS na sua grande maioria usam buffer overflows para conseguir obter sucesso. Contudo, qualquer forma de tirar um computador, serviço ou rede do ar é considerado um ataque DoS. Por exemplo, a maioria dos servidores que possuem alguma segurança possuem também logs de acesso (arquivos de sistema onde são armazenadas informações críticas, como acesso, autenticação e etc). Imagine que o administrador coloque os logs no mesmo espaço em disco do sistema. Assim, se gerarmos milhares (talvez milhões) de entradas no log, o arquivo irá crescer até ocupar todo o disco. Outro tipo de ataque DoS comum: várias redes possuem programadas uma ação, caso um login tente por diversas efetuar logon e erre suas credenciais. Esta ação geralmente é o bloqueio indeterminado da conta (login), que apenas pode ser restaurado com a intervenção do administrador. Forçar o travamento de uma conta destas é considerado um ataque DoS, principalmente quando esta conta é a usada por algum serviço (se a conta for bloqueada, o serviço sairá do ar). Já ataques que visam tirar do ar uma rede, ou um servidor através de tráfego excessivo, ou enviando pacotes inválidos também são possíveis. Em meados de 1997, foi lançada na Internet uma vulnerabilidade em pilhas TCPIP de computadores Windows. Consistia em enviar para um determinado serviço, pacotes TCP com uma sinalização de “urgência”. Contudo, o conteúdo do pacote era composto de caracteres inválidos. Este ataque DoS ficou conhecido como OOB (Out Of Band data). Hoje em dia, a grande maioria das pilhas TCPIP é protegida contra este tipo de ataque, e variações. Porém, como no velho ditado “água mole em pedra dura tanto bate até que fura”, se a quantidade de informação inválida for realmente muito grande, ainda existe a possibilidade de tirar do ar o computador. Para se obter a quantidade suficiente de pacotes, o ataque do tipo DoS foi extendido, para o que conhecemos hoje como DDoS (Distributed Denial of Service). Entretanto, devemos observar o fato de que o ataque DoS OOB, apesar de ter sido descoberto originalmente para a plataforma Windows (serviços NetBIOS / SMB), provou-se eficaz contra uma gama de protocolos e plataformas, incluindo diversos UNIX, e até equipamentos de rede. DDoS (Distributed Denial of Service) http://staff.washington.edu/dittrich/misc/ddos/ http://www.research.att.com/~smb/talks/nanog-dos/index.htm Os ataques do tipo DDoS consistem geralmente em enviar para uma única máquina ou rede, milhões de pacotes de rede ou requisições de serviço, em um dado momento. Obviamente, não existe maneira de gerar este tráfego todo de um único ponto. Romulo Moacyr Cholewa – http://www.rmc.eti.br, agosto de 2001. Vide “Distribuição / Cópia” neste material para maiores detalhes. Romulo Moacyr Cholewa – http://www.rmc.eti.br, agosto de 2001. Vide “Distribuição / Cópia” neste material para maiores detalhes. Imagine que um computador, que chamaremos de “atacker”, deseje derrumar o computador “vítima”, com tráfego. Agora, de forma simples, imagine que nosso “atacker” está conectado via modem (50 Kbps) enquanto a “vítima” está conectada via ISDN (64 Kbps). Neste Exemplo típico, podemos entender de forma fácil a dificuldade: por mais pacotes de rede que “atacker” envie para a “vítima”, o canal de comunicação da vítima nunca ficará saturado. Por sua vez, se os pacotes enviados utilizarem como transporte TCP, “atacker” corre o risco de “se derrubar”, visto que para todo tráfego que ele gerar, a vítima tentará estabelecer uma conexão TCP (three way handshake). Daí, concluimos que praticamente todos os ataques do tipo DDoS utilizam UDP como transporte (se forem ataques direcionados). Concluimos então como surgiu a idéia do DDoS: várias máquinas espalhadas por toda a Internet, enviando tráfego simultaneamente, para um mesmo servidor, estação ou rede. Assim, não importa o tamanho da conexão do servidor, estação ou rede, ela ficará potencialmente saturada. O DDoS ficou conhecido a partir dos ataques realizados contra sites populares na Internet, como yahoo.com, amazon.com, zdnet.com, entre outros. Contudo, utilitários que exploram ou criam ataques DDoS, apesar de difíceis de obter, já existiam desde meados de 1999. A lógica de um ataque DDoS é bem simples. Imagine um servidor de páginas web, que normalmente recebe 100.000 acessos por dia. Agora, imagine que 200 ou 300 computadores espalhados pela Internet, ao mesmo tempo, e continuamente, enviem requisições de acesso à página. Dependendo do número de requisições, o servidor poderá deixar de responder simplesmente porque chegou ao seu limite de conexões. Existem outros tipos de pacotes ou requisições de conexão que têm uma eficácia muito maior do que uma simples requisição de acesso web. Contudo, o segredo está em como gerar este tráfego ou requisições, de várias máquinas espalhadas pela Internet. Isto é feito através de dois componentes de software: o agente ou server (software, programa ou “daemon” que é executado nas máquinas espalhadas pela Internet), e o cliente (componente que “controla” a ação dos agentes). Os agentes ou servers são colocados para rodar em servidores espalhados pela Internet por hackers, que invadem os sistemas. Existe uma ferramenta de ataque DDoS chamada trin00 onde o agente é um vírus para a plataforma Windows (é colocado em execução em computadores como um trojan ou cavalo-de-tróia). Uma vez disseminados os agentes, o “hacker” através do cliente, envia um comando de ataque para os agentes, ao mesmo tempo, atacarem uma determinada rede ou máquina. Trin00, TFN (Tribe Flood Network, Schaft) Estes são três exemplos clássicos de ferramentas de ataque DDoS. O trin00 já foi portado para a plataforma Windows, enquanto o TFN é o mais usado. Já o Schaft, apesar de relativamente antigo, é bem mais raro de ser achado. Atualmente, existe uma forma do agente do trin00 que infecta computadores como um cavalo-de-tróia. Já o TFN possui uma versão chamada TFN2K, com várias melhorias, incluindo até criptografia da conversação entre o cliente e os agentes, de forma a burlar a detecção destas ferramentas. Em ambientes corporativos ligados à Internet, a forma mais comum de detecção é através da quantidade de tráfego. Na maioria das redes que possuem monitoração de tráfego, a característica será uma série de tentativas de conexão, ou tráfego, gerado de diversas máquinas da rede interna, paraum único Romulo Moacyr Cholewa – http://www.rmc.eti.br, agosto de 2001. Vide “Distribuição / Cópia” neste material para maiores detalhes. Romulo Moacyr Cholewa – http://www.rmc.eti.br, agosto de 2001. Vide “Distribuição / Cópia” neste material para maiores detalhes. endereço na Internet. Tráfeo abundante utilizando como transporte o UDP também é sinal de um ataque DDoS, caso os pacotes tenham o mesmo destino, sejam saindo de sua rede, ou tentando entrar nela. Contra estes tipos de ataques, existem poucas medidas, principalmente se o objetivo do “hacker” for realizar um ataque DDoS por ocupação de banda. Contudo, um bom firewall pode dificultar bastante a eficácia de um ataque destes. Algumas regras básicas de filtragem em firewalls para evitar ataques DDoS: 1. Filtrar qualquer tráfego ICMP entrando ou saindo da rede 2. Filtrar qualquer tráfego entrando na rede, em portas (serviços) que não estão em uso 3. Filtrar qualquer tráfego saindo da rede, a partir de computadores que fiquem 24 horas no ar, e que NÃO precisem emitir tal tráfego 4. No firewall, configurá-lo de forma a impedir conexões a partir do localhost (127.0.0.0) 5. De qualquer máquina que possua filtragem de pacotes (Windows 2000, Linux, etc.) impedir conexões a partir de interfaces internas e / ou localhost (127.0.0.0) A regra básica é impedir tráfego não autorizado, não só “entrando”